5 ms·
One could take the Dwarf Fortress mechanism of generating a complete history and take it to the extreme: simulate the formation of entire solar systems based on
by biot 10y ago
One could take the Dwarf Fortress mechanism of generating a complete history and take it to the extreme: simulate the formation of entire solar systems based on seed values that effect randomly generated planetary masses (and resulting gravity), atmosphere, tectonic events, ice ages, warming periods that carve valleys/lakes/rivers into the landscape, biological events influencing the creation of life based on the planet's properties and the landscape, insect swarms that ravage an area, and so on. Simulate meteor impacts which might destroy life, visits from alien species, etc. Then simulate the effects of any emergent properties on the landscape. So instead of:
p(tree_goes_here) > random()
And then randomly placing various tree models according to the RNG output, your random events produce a story. You should be able to look at a series of mountains and trace it back to tectonic events, then if one mountain has a patch of trees missing, you should be able to see that there were various events that either removed the trees (eg: some local civilization) or a Tunguska-like meteor strike cleared a path and made the soil infertile for growing more trees.
If one did this, such a game would have value not only from the game itself but it might open up a whole subculture of archaeologists who go from planet to planet studying the evidence to piece together the events that led to the planet's present state.
Otherwise, you're right. Each world would end up being different much in the same way that listening to static noise is different each time you hear it.
- stcredzero 10y agoOne could take the Dwarf Fortress mechanism of generating a complete history and take it to the extreme I'm going to do something like this, but for one specific class of enemies: The dire "it's time to do your best to survive" encounter. Specifically, I'm going to see if I can't use genetic algorithms to evolve "kill the crap out of the player" combat groups. You can't write a fitness function for fun or player involvement. But you can write a fitness function for "kill the crap out of a player" -- even equalized for level. So the trick is to hand-balance the timing/opportunities for a player to encounter the dire situation. I'm going to let players post-mortem the genetic algorithm tuned AIs and ship/item configurations. So instead of archaeologists, there would be hackers and xenobiologists.
- saulrh 10y agoRandom brainstorm: Introduce a Dark Souls type async-community aspect: Players can come across the wrecks/corpses of other players and are rewarded somehow for figuring out what happened and why; their analysis becomes feedback/evaluation function output.
- stcredzero 10y agoActually, I have ship corpses right now. All I have to do is to make them persistent past the player "logging out." Of course, this seems rife for griefing.
- happyslobro 10y agoDo you mean that the detective player's analysis would be, say, an input to the fitness functions of a genetic algorithm? That sounds super interesting. Would you care to elaborate on what form the analysis would take, in order to be both parsable by the system and writable by a player? I have an idea for a fairly simple possibly: The user just declares that certain features of the scene are interesting and relevant, maybe by "taking a sample", so that the algorithm can boost the weight of inputs that have a relationship to those features. But, I suspect that you have something much more interesting in mind...
- saulrh 10y agoSo the question is how to complete the feedback loop. The Adversary needs something causally coupled to its victory or defeat that it can use to improve its monsters. I think that the most straightforward way to do this is to have the Archaeologist player indicate features of the combatants or the scenario that led to victory/defeat, like you said. The Adversary then uses those to guide its optimizer. For example, you might indicate something like "The Monster won because: Monster had high armor, Player had low jump height, this platform in the middle of the room". The system then knows to put those features together more often. Hmm, now that I think about it, there's actually a metagame issue here: Players will tend to support each other by trashing the AI. It'd be more effective to set players against each other somehow. Or we need a better way to reward players. So what we want to do is tie the monster's success to the player's success. A simple answer is "I want this": The player gets to choose something to take from the monster's ship and add to their own. The Adversary might be able to use that somehow, but there's a little bit of a mismatch there because the player's ship and style will be different than the monster's, and a feature might be selected to shore up something about the player's ship rather than to point out a useful bit of the monster. Maybe have the investigator player redo the fight with tweaks. The player's job might be to change the monster until it loses a rematch. Could do this by having the player take over the past player's ship and fight "in simulation", or could just do it automatically. Player gets a better reward the less they have to change the enemy to win, which encourages efficient changes. The Adversary then changes the monster in the opposite direction and sends it back out. Could split things up into teams and set players against each other on a grand scale? The player's job is to find battlefields where their team's monsters lost and then optimize the allied monsters. You never actually see another player - might do something asymmetric here, with a dimensional boundary or something that prevents players from interacting with other players except via salvaged guncam footage from allied monsters.
- dewarrn1 10y agoCoincidentally, this is exactly how Minds from Iain M. Banks's Culture books spend much of their free time: https://en.m.wikipedia.org/w/index.php?title=Mind_(The_Culture)§ion=8 https://en.m.wikipedia.org/w/index.php?title=Mind_(The_Cultu...
- fenomas 10y agoPlaying devil's advocate, I think this is a dangerous road to go down. I'm in my second year of making a procedural game, and I think the existential danger involved is that of making a game that's more interesting to develop than it is to play. That is, it's more challenging and rewarding to me to simulate tectonic movement than it is to generate terrain from random noise and tweak it until it feels okay. But the important question is, is the game noticeably more interesting either way? Do mountains affect gameplay in a way that gets more compelling if they're placed according to tectonic movement? There are certainly games where the answer is yes, but there are a hell of a lot more where it isn't. And if your game is one of the latter, then complicated simulations are a dangerous trap - not only do you waste time, you also hinder yourself by making your game's content harder to tune (in that you can't just, say, make the mountains 30% higher if mountain height is determined by a complicated process).
- hyperpallium 10y agoGames are simplified, stylized reality e.g. chess is war. So are some fps: using real locations as maps isn't as much fun as carefully balanced maps, taking sightlines into account, chokepoints, with interesting and complex strengths and vulnerabilities of positions within each section, and all sections close to each other. Similar to fiction: it's more dramatic and makes more sense than ordinary life. A simulation is akin to a tech demo, which can be impressive, but usually isn't a game. Switching gears, I'm interested in how you've done tectonics. I was thinking of doing it as a magma fluid simulation (very slow, only one timestep every few hundred frames) and using convection to move and rotate plates.... though it turns out, the cause of tectonic movement isn't nearly that well understood. My concern is that using a fixed direction/speed will eventually mess up the world. If tectonics really are governed by convection, movement must change at the end of that magma cycle. Maybe a bit over the top! How are you doing tectonics? One (expensive) solution to the 30% mountain height problem is monte carlo: rerun the simulation til it fits the parameters. What's nice is that you don't distort the generation probabilities, apart from the explicit constraint. Of course, not plausible for very unlikely constraints, esp. combinations thereof! If you just want the end-produce (not an ongoing, evolving world like mine), some people have used a more declarative approach. e.g. Instead of generating rivers by waterflow and erosion over a terrain, you can generate a hierarchy of rivers and tributaries first, work out the watersheds implied, then generate the terrain based on that constraint.
- elihu 10y agoAwhile back, I wrote a library[1] to wrap a hex grid around a sphere (technically, there are 12 pentagons so it isn't a true hex grid, but close enough) and perturbed the elevation via perlin noise and then wrote some cellular automata-type vegetation simulations. Several types of plants would grow, and randomly catch on fire and burn half the planet to the ground, and so on. I had a primitive water cycle, too; water flows to low points or gets absorbed by plants or evaporates. When plants burn, they release their moisture into the air, which rains back down on the ground. It's interesting how small changes to the cellular automata logic can cause major changes in emergent behavior. That was a very fun experience and I could imagine it being the basis of a game. And being a finite world (unlike Minecraft's practically infinite expanse) it's computationally tractable to simulate a complete ecosystem that's constantly changing; even the parts you haven't explored yet. [1] https://wiki.haskell.org/IcoGrid https://wiki.haskell.org/IcoGrid
- _petronius 10y agoYou've given me flashbacks to SimEarth, which I spend a good deal of time playing with as a kid. It was a weird "game", but a modern version I could play on current hardware would be a lot of fun, I think.
- maze-le 10y agoHave you ever heard of 'space engine'[0]? It is not a game, more something like static a simulation. But the generation of random planets works kind of like you just described. There are no rocks or living objects on the surface (yet) but I think the generated geography is pretty and rich in features. [0]: http://en.spaceengine.org/ http://en.spaceengine.org/