Exploring No Man’s Sky, A Computer Game Forged by Algorithms
technologyreview.com
technologyreview.com
I'd be really interested in learning about any work in the "interestingness" of procedural content. Is it possible to quantify that sort of emergent complexity that happens in life, or in a work or story with artistic direction that takes on a life of its own? Can a system make a billion compelling and unique stories without solving the issue of Strong AI and just making a superintelligent DM?
Edit: to add an additional distinction, I am referring to the generation of visual content here. You can do much more in an emergent (AI-driven, state-based, or chaotic) system and produce surprising results, although you still fall into the dilemma of making sure that all resulting permutations look/function correctly.
As you mention, the challenge then becomes to define this sort of chaotic system in such a way that the resulting worlds are not 'nonsense'. Nonsense states could be culled using some fitness functions... sounds like fun :-)
1) Generating the layout of the world, placement of entities, and other world states (such as available quests or plot devices).
2) The generation of the actual content itself (NPCs, items, terrain, flora, fauna, etc).
Here, I'm mostly referring to the second type. :)
As far as the first type, there is a LOT more you can do with chaotic systems because they are often AI-driven, and AI-driven things can (potentially) have emergent results (although even an AI-less system, like Conway's game of life, can produce many interesting results).
That's exactly what I was thinking when I saw the gazelles, the diplodocus, and that oversized rhinoceros plowing through the purple forest. This is meant to be a one of infinite worlds to explore, and it's just Earth with a few tweaks.
Yes. It's easy for a developer to say "trillions of possible combinations" or "every x is unique with a high degree of certainty" but those statements mean very little without seeing the end product.
Creating vast numbers of combinations is completely trivial. E.g. http://jsfiddle.net/JpZ7s/3/ which has ~10 million possible combinations but most are garbage and they're all very samey.
> I'd be really interested in learning about any work in the "interestingness" of procedural content.
Given that selecting "interesting" content from a pool of procedurally generated content is essentially a curation problem, I imagine any such method might also be applied to select potentially interesting content from a pool of human-generated content. As publishing in all media grows easier and easier, curation is going to increase in importance and difficulty.
> I'd be really interested in learning about any work in the "interestingness" of procedural content.
Some of the AI research on PCG goes in that direction. Instead of writing a constructive algorithm, you instead try to specify what content you want in some formal way, and then use a solver to generate content meeting the description (a genetic algorithm, constraint solver, etc.). I.e. start from the goal rather than from the algorithm. It is still difficult to quantify "interesting content" though! Instead it usually needs to be something more specific, like "a level with the following properties: A, B, C". As a shameless plug, two colleagues and I are working on a book that surveys the current research: http://www.pcgbook.com
This is basically the difference between imperative programming and logical programming. Each has advantageous domains (basically which ever way is easier to implement).
There is nothing same-y about a game where you can't hit a bogeyman with a hammer because he's too fast, but you can kick his ass with cranberry leaves because they're lighter and let you hit faster.
Or, how about the elephants roosting in trees? Or the vampirism that can take over a fortress? Of the possible were-versions of most creatures, with infections, meaning were-swallows, were-frogs, and plague-like invasions of were-spiders?
Dwarf Fortress is built to generate stories, not just monsters and treasure. Every dwarf has likes and dislikes, friendships, pets, belongings, all driven by a fairly simple AI that just takes these preferences into account when deciding whether or not the dwarf is drunk enough to actually do some work, or whether it's so depressed it wants to sit in its room and cry.
Start at Chapter I and don't spoil it, it isn't yet fully played out and the community anticipates the next installment
http://www.reddit.com/r/dwarffortress/comments/2b6up6/roomca...
Yes, the elephants have taken to their emergent treenests, and that's beautiful. But that's a single bug (feature) that makes us say 'wow' once, after which we've seen it. The possibilities of were-spiders and were-alpacas and reanimated spleens and rains of dwarf blood are just more evidence of those sliders he mentioned. Urist likes tigermen for their stripes, and you can care about it, but Tosid likes cows for their mooing and Tovist prefers to consume purring maggot cheese and at a certain point we've seen it all.
That doesn't mean that Dwarf Fortress is flawed. It's easily the most involved story generator out there, and I'm really glad to live at a time when I get to read about it. But it's still not immune to the issues that the grandparent post raised.
You could say the same about movies, or literature. There are many repetitive plot choices, tropes, and cliches that are repeated, but little nuances and tweaks here and there make it interesting. In the Sims, if you think about it there's very little variation in the "sliders", pick a job, have nonsensical conversations, woohoo, and then lock everyone in a room and burn them alive, but the game draws you in because there is enough detail that the human mind can draw a narrative. You've seen the landscapes in Minecraft before, but that makes it no less fun to try and dig to the bottom to find the big caves and pits.
So yes, this game will be really dull if they do sort of a breadth first procedural generation. But if they succeed in adding features that make every interaction deep, I think it could be very absorbing. Sure, maybe it's just another variation of CrocodilePerson, but this particular one has a monogomous mate and 4 children, has scars from a fight with a WereRabbit, grew up without a father and sometimes thinks about it, is well known for his tracking abilities, ect.. I think that kind of depth really adds to the experience.
Dwarf fortress also benefits from completely simplified UI. Meaning it can go really deep without worrying about how the rocks are generated. Does magnetite look like pyrite?
It already looks like the scope of No Man's Land has gotten out of hand, maybe it will offer some of the joys of dwarf fortress, but not if it's purely visual.
I'm sure someone's cleaned it up some now, but it made me wonder if that (unpredictable spaghetti code) is what's required for truly dynamic behavior, the kind that you see in DF and (to a lesser extent) LCS.
It's HARD to make beauty happen algorithmically. Nigh impossible. Frankenstein hard. Also, the intersection between people who code and people who possess a sharp aesthetic sense is minescule.
Nonetheless, many of the old demo-scene pieces, which are entirely algorithmic, are occasionally beautiful, I'd argue. (A lot of the newer demos just look like music visualizers though...for dubstep songs :/ )
It is a deck-building game, where players play cards to generate cash to buy cards that go into the deck that they are playing out of (which cycles endlessly). There are 6 boring and fundamental cards that are present in every game, and 10 'kingdom' cards which do interesting and clever things. The 10 kingdom cards that are present in any given game are randomly selected from a set of 25 (around 170 in the expansions), without constraint.
The variations are extreme. Some games have fast drawing and high power curves, some are slow slogs. Some games progress linearly, others build slowly and then explode, and some have stair-shaped power curves because there just aren't any cards at certain price-points. Some games have ways of attack other players. Some games have alternate victory conditions. Some games have multiple paths to victory, other are won by fine-grained control over normally-minor details. In short, the variation is immense and novel experiences have continued, even years after I first started playing.
Can we extrapolate from this? I think so. The two conclusions I would draw are: qualitative variation, and combinatorial traits. Differences in game worlds that are the most interesting may not fit into a slider, and binary or enumerated traits should be considered. Also, the interaction between random variables is what allows for a combinatorial explosion of situations. Stemming from that, it must be the case that multiple variables are meaningful.
I would probably call it emergent, in that the designers likely could not test the entire state space of all strategies.
What's impressive, in light of that, is that the game ends up balanced, or at least not fundamentally broken.
To your point though, is that the "content" (cards) introduces mechanics. Most procedural gameplay content doesn't necessarily introduce mechanics. That's why it's easy to feel "boring".
If you played "a game like Dominion, except each player had their own independent set of Kingdom cards," it would be big-time not balanced. Like, kingdom sets aren't balanced against each other.
Or perhaps you meant that it's balanced like "a given card tends to be about as good as a given other card." But that's just... not very true. In any Kingdom, there are typically a few must-buys and a few must-not-buys, and there are cards that are almost never good buys and cards that are almost always good buys.
Source: played a few thousand games of Dominion on isotropic back when that was a thing.
Disclaimer: Haven't played Dominion since Hinterlands, so this may not still be accurate.
To make this interesting, you need both a very wide pool of potential actions, and the mechanics of each action need to be designed such that feedback loops arise naturally.
Dominion gets off easy here, as the "medium" through which different cards interact is the very simple system of resources: actions, gold, and buys. You can create an enormous selection of cards just by having any given card grant some unique combination of these three resources, and then attempt to balance the card by dialing up or down its cost. It's all very abstract, and that eases the burden on the designers.
But how do you do such a thing in a video game, where actions are usually not abstract, but specific (and as a result, limited in number)? What medium of interaction do you exploit to create the game-breaking feedback loops that are the delight of a Dominion player? Better still, how do you make it so that the interactions between actions are subtle enough that game-breaking strategies are non-obvious, making them a joy to discover?
Off the top of my head, you could start with a game that already has a huge number of actions and create a replayable game mode where you limit the number of available actions. Let's use MMOs as a concrete example. You could just take World of Warcraft, assemble four five-man parties, and then present each party with the same randomly-reduced selection of the game's classes, where each class is limited to only one or two of the three talent trees, the class' usable abilities are pared down, and the talents within each talent tree have been shuffled randomly. Each group then races to assemble a functioning party and see who can down the most bosses in a non-randomized dungeon. And instead of instancing each party, you could just pseudo-instance them: for instance, downing a boss makes that boss unavailable to kill for any other group, rewarding groups who made hasty party selections (but punishing them if their hasty selections slowed their ability to deal with the trash mobs leading up to the boss).
I dunno, I suppose it could be fun with enough effort.
But since even our best RNG algorithms eventually converge, the resulting systems would start converging as well. So the issue of same-yness is an inherent issue of CS.
Imagine a tactical warfare game that drew from actual military upsets. I think this would avoid the same-yness problem.
For the past few years, I've been working on an alternate system, which is to use a goal-oriented design based around the player experience. Each element in the world is placed purposefully, instead of randomly. I do this by emulating the traditional level design process. I think about every action and intention that goes in creating a level manually, and reduce it to rules for my system. The goal is that the end result feels crafted to guide the player through an experience, rather than to rely on the player to create a experience for themselves.
Examples of the generation behavior:
- Lights are placed in areas to guide the players attention towards the primary path, or treasures and dangers.
- Geometric features are generated based on spatial aesthetic rules (eg. a pleasing amount of symmetry and repetition), as well as gameplay rules (eg. jump distances based on player capabilities, corridor widths based on desired feeling of claustrophobia and combat difficulty).
- Unique color palette for each seed.
- Parameters of room construction have emotional analogues (high density -> claustrophobia; harsh angles -> tension; high symmetry -> order; sweeping vistas -> a moment to take a break; gradually lowering elevation -> an unsettling descent).
- The curve of emotional parameters over time have varying mathematical relationships to other parameters' curves, so every seed feels like there is a unique consistency to it.
This was always the feeling I got from games like Daggerfall / Arena Scrolls, which procedurally generate dungeons. Sure, it's technically a different dungeon each time, but in reality it's just the same set of blocks in a different order. Even the mob spawning was based on the block type, so there were few surprises by the end.
Genuine procedurally generated architecture sounds like an awesome challenge - good luck!
We even have generators that make tiny little stories out of the props - a campfire might have candles and tomes next to it (signs of a ritual), or maybe utensils and dishes (signs of a traveler's meal). Not to mention, the actual gameplay of movement and combat is intended to be its own world of intricacy (the other guys are working on that).
I'm not aiming to explicitly generate narratives of characters and dialogue and words. Rather, the system generates the feeling of narratives. Rising action, conflicts, an interesting flow of emotions, pacing the intensity, etc. The player can fill in the details themselves, as they (not their character) are the protagonist, exploring the world and going on a journey of discovery and mastery.
My thinking is that what it lacks in human touch, it makes up for in mystery. Knowing that it's a unique world that no human has ever set foot upon before is genuinely exciting, and gives a real desire to explore. It's like that feeling you got the first time you played Minecraft, and found some amazing outdoor environments and knew your eyes were the first to see it - but then as you played over and over you saw the patterns and it lost the magic. My goal is to capture the first feeling, and to hide the second effect with not patterns but processes, generating things based on a thematic goal in mind.
The secret seems to be a mix of a meaningful possibility of failure with 'fair' gameplay. Basicly, I did something stupid, so something happened, which I responded to by doing X which worked or almost worked but failed.
Think dangerous enemies with vary low HP. Or useful but not nessisary NPC's that can die.
http://www.gamesbyangelina.org/2013/05/the-saturday-paper-du...
He does interesting things with fitness functions that try to vary the entropy across different regions.
Unless you are Dwarf Fortress.
A grammar that generates every possible squence of symbols is boring. What makes it interesting is contraints, that only some subset of all possibilities is generatable. Even the Chomsky hierarchy relates to characterists of the subset defined.
So, you don't need more elements, but more constraints. e.g. a novel is a sequence of a small number of symbols...
This would make each section of a game have a certain style or character. For gameplay elements, figuring out the constraint could be part of the puzzle.
Generating interesting constraints then would be the difficulty...
The basic idea was that there were two different machine learning algorithms competing against each other. One was searching for configurations in the parameter space (I forget what type of learning algorithm the first one was), and the other was an unsupervised learning algorithm (a Kohonen self-organizing map (SOM), IIRC) which tried to model/predict the output of the model with the parameters chosen by the first one.
So there was a parameter space being explored by some search/learning algorithm. These parameters, when fed into a model (I forget what kind, I think it was a procedural graphics formulas of some kind) produce an output image. This image (not the parameters) is then fed into the SOM (which is doing online learning, so it's training and classifying at the same time), which slowly adapts to what sorts of images it sees, creating a sort of internal model.
The parameter-configurations found by the first algorithm were then scored against how well the SOM could fit/represent the output image of those parameters (IIRC, in the SOM algorithm you can calculate a score for how well it's doing).
So if the first algorithm would find something novel, something unexpected, the SOM would have more trouble fitting that output with its internal model.
From what I remember, it worked relatively well. The output images definitely had more "variety" in them than purely randomly chosen parameter values.
I'm not at all sure how to apply these ideas to planet/ecosystem-generation, though.
Apologies for the super-vague description, but it must have been at least 10 years since I read that paper :)
--
BTW another completely different approach to this problem might be found by using constraint solvers. Check out this site: http://www.gamesbyangelina.org/2013/06/the-saturday-paper-go... (if you're interested in procedural content generation, there's a lot of cool articles there, bringing together scientific research and game development).
I'm not entirely sure why, but from most examples I've seen, generally when you add constraints to a random generator, it tends to produce more variety. Variety is really all about restricting the randomness, anyway. White noise all looks the same, but it's the most random from an entropy point-of-view.
From what they have demoed, they have not proven that anything actually is being generated. My best guess is that they randomly vary colors and textures (and generate the atmospheres, as they say), and randomly place models about the planet, which is a far cry from actually generating all of the models and animation for everything. A lot of it just looks modeled by an artist (and they do have an artist on their team). Anyhow, I don't think this will necessarily detract from the game, just a nitpick on choice of words...
An additional concern is how quickly this game came out of nowhere (I think?). The Inovae (formerly Infinity) engine took many years to develop - it was one of the first of its sort to allow seamless planet to space transitions with tons of terrain detail. If you look in close detail at the differences between the two, you can tell that No Man's sky does not have a very good sense of scale when flying into a planet (unless the planet were incredibly tiny). Also, note the angle of the fly-in is straight on; its much harder to prevent detail popping when flying in tangentially to the planet and I wonder if they have yet addressed this. Again, just another nitpick. :)
No Man's Sky (2:00 in for the planet fly in): http://www.youtube.com/watch?v=nLtmEjqzg7M
Inovae/Infinity: http://www.inovaestudios.com and http://www.youtube.com/watch?v=a6a69dMLb_k
Mmmmm, somehow, no.
There has to be some level of abstraction, otherwise they'd be recreating the actual universe, and I don't think the PS4 could handle that.
http://anynowhere.com/bb/layout/html/doors/local/frameset_no...
Are there any articles about how an engine like this is built? It is an extreme level of procedural generation (apparently), but the graphics aren't blocky and as abstract, but rather pretty impressive.
In a similar vein is Eskil Steenberg's Love [1], but this is on another level entirely.
A bit (but just a little) more information can be found here: http://www.thesixthaxis.com/2014/06/25/crafting-the-endless-...
At its core, procedural engines are built on generating different kinds of noise and then filtering and combining them to produce the types of values that you want.
The values you are looking for depend on how you model the different elements of your world.
As an example, in my game I wanted to generate regions consisting of different types of terrain. I ended up using voronoi noise (http://en.wikipedia.org/wiki/Voronoi_diagram) to split the terrain into regions and then used the cell value as a multiplier for how bumpy the terrain was. The bumpy terrain was generated from smoothing regular white noise. The amount of smoothing was random too so you could have smooth hills or jagged mountains.
As you can see, you can kinda go wild with it.
It isn't that different, the only real change is how you handle edge conditions, as you can have finer detail so need to filter less.
Minecraft doesn't use blocks to simplify world generation, it uses blocks to simplify world modification by the user. The blocks restrict you making it easier (oddly enough) to create things.
http://procworld.blogspot.com/
A couple of quick hints to get you going in the right direction is that there are ( I believe ) a couple of generalized tricks involved to pull this off well. The first is using the 'correct' method to tesselate your voxel geometry. Minecraft literally uses cubes and you are familiar with the result. Another 'classic' method is the application of marching cubes/tetrahedra. This gives you fairly good organic-ish shapes but suffers from the inability to render sharp edges. Everything looks blobby. I believe the method used by EQN makes use dual-contouring, or a variant, which allows you to create organic shapes and also preserve sharp edges. A second factor is the ability to use different levels of resolution or scale for your voxels situationally. This allows you to craft human-scale things like cups and swords and whatnot, with human-scale details, and still craft houses and mountains and trees, without the need for storing extreme resolution in those items as well. It can be very tricky to patch together various bits of geometry tessellated from different voxel resolutions like this, and not end up with ugly visual artifacts. There is also the thorny issue of applying textures or materials to everything I have mentioned previously, which I have never investigated :)
We will probably never know, but I wonder if the reality of our own universe is that any life on other habitable planets will look remarkably similar to that here on Earth; given the parameters within which a sustainable biosphere are possible quite narrow. There might be some local variation but nothing that would be particularly mind-boggling to biologists (e.g. non-carbon lifeforms).
I think Brian Greene suggested that in a sufficiently large (i.e. approaching infinite) universe, if you travel far enough you will eventually encounter a multitude of 'Earths' that are the same as our own but subtly different in various ways.
In which case, if its a criticism of procedurally-generated worlds that they tend to have a lot of repetition, then the models are probably quite accurate!
I agree with most that you need a certain dimensionality to the generation in order to get something credible. Definitely going to check this one out when it comes out.
Indeed planetary landings (and walking within a space station) requires as much work, if not more than, the space-flight stuff, so it's understandable that they don't want to just tack it on.
Frontier and First Encounters games all had seamless planetary landings so the goal has always been to include them in Elite: Dangerous as well. Everything the developers have promised so far has been realized (although some things a little later than initially scheduled), so thus far it's a good bet that they are not overselling their capabilities.
“If you were to visit one virtual planet every second,” he says, “then our own sun will have died before you’d have seen them all.”
...
"The tens of millions of planets that comprise the universe are all unique."
Instead of:
> No, what would be interesting is everything that you said with the addition of...
How about:
> Yes, what would be interesting is everything that you said with the addition of...
I think this is officially the silliest thing I have ever felt compelled to type.
http://www.achrongame.com/site/achron-and-the-grandfather-pa...
I'd play it when they'll release a Linux version.
The alternatives are a publisher (historical a pretty mixed bag, gaining control of your IP, changing the focus or name - see Divine Divinty) or crowd-funding (usually not enough to fund the entire project, unless you're Star Citizen :)).
How exactly? You can say that releasing for a single platform reduces costs. But how can it give you more funds? Marketing isn't really bound to limiting platforms (only expenses wise, same as development). However covering more platforms gives games more exposure, so more potential sales.
Cross platform tools are quite good these days (SDL2, etc.) so overhead of cross platform releases while still present is going down. A lot of the independent games of interest that come out these days are cross platform to my knowledge.
But I concur - as someone who can't afford to buy a PS4 or other current consoles (especially given how there's just a couple of exclusive games coming out for them), I won't be playing this unless it comes on PC.
I suppose it's the natural evolution after "programs" and "apps" became mundane things and data science became more prominent, but the way these articles talk about them with no detail makes me think that they might as well describe algorithms as some mysterious fairy-like substance that causes magical things to happen.
I suspect--or hope, at least--that they've built meshes that can be combined in a myriad of ways, so by combining the hundreds or thousands of combinations you can get millions of animal or plant types.
http://www.reddit.com/r/truegaming/comments/28cddf/im_worrie...
That is, procedurally-generated worlds are one thing, but an engaging environment (Minecraft) or story or purpose are other things entirely.
I have a flat game concept involving procedurally-generated concept but just can't think of what might tip it over into super-engaging territory.
Planets looks a little better this time around:
http://img4.wikia.nocookie.net/__cb20140618220148/elite-dang...
http://img2.wikia.nocookie.net/__cb20140618220220/elite-dang...
http://i1242.photobucket.com/albums/gg522/frobitz/ed-rings-8...
Only about a week to go till the next update to the Beta and I'm looking forward to it - oh and premium beta entitles me to lifetime expansions so I reckon it's good value for money.
Go for it - you won't regret it ;)
This game looks impressive in terms of generating fauna and flora etc. but the planet to space flight and procedural generation in itself is hardly new.