So “No Man’s Sky” came out this week and I’m sure that many developers like us who are working on similar procedurally-generated games are carefully reviewing the feedback it’s been getting from journalists and the public.
Most agree that, as a technical achievement, NMS is undeniably impressive. However, as a game, it has been received somewhat less favourably. While its proc-gen algorithms may be able to create a near-infinite number of planets for the player to explore, many have found the experience somewhat souless and unsatisfying, and what should be a wondrous voyage of discovery becomes a monotonous (and ultimately insurmountable) chore – trudging from one world to the next, repeating the same limited tasks, superficially masked by randomly shifted colour palettes of the environment.
We’ve long been aware of the potential risks of relying on procedural-generation – while it may be a convenient way to create a limitless quantity of content for the player to experience, if none of those experiences have sufficient quality, your players aren’t going to stick around for very long. And, however advanced your proc-gen algorithms are, they’re unlikely to come close to matching the fine-tuned experience made possible by a game designer.
So how does this relate to Nome? Well, we’re working on a hybrid solution: within each “world”, we hand-place a number of key areas allowing us to control exactly how the gameplay plays out in those sections. But, between and around those set areas, we use proc-gen to “fill in the gaps” – joining hand-crafted sections together, and creating an infinite surrounding expanse. So, each reseeded world is new, and the player is not constrained – if they want to continually walk into the wilderness, nothing will stop them. But, at the same time, we can influence the key gameplay moments.
It’s still relatively early in development, but the screenshot below shows an example of the system in action on the terrain of one of Nome’s environments – the two sections to the left and right outlined in red are “pinned” sections of the level – they’re edited by hand and remain the same on every playthrough. The other sections outlined in blue are procedurally-generated at runtime, but blended to the existing terrains so as to create a seamless level.
Given a different seed, different procedurally-generated sections are created to fit around the pinned sections, which remain the same, like this:
Or like this:
I still want to work on better algorithm to blend the sections together, but hopefully this technique will allow us to get the benefit of infinite, always unique proc-gen levels, and also hand-crafted moments of level design.