Thank you for visiting! Here is a quick FAQ if you would like to learn more about me and my projects.
What is this site?
This is the home of Top Hat, a solo indie game developer with a computer and some big dreams. (Hello!) Here you will find blog posts, dev diaries, and news about the games I’m currently working on. I’m not incredibly regular about posting, as I work full-time as a software engineer and can be very busy during crunch time, but I typically make small update posts and dev diaries on a semi-regular basis.
Where else can I find you?
You can find me on:
Discord, in the official Top Hat Games server (Join ID: –)
The Case Study series is my mini-exploration of unique, complex and fun game mechanics and systems from other games that I enjoy, to act as inspiration and ideas for my own games. The series focuses particularly on clever (and not-so-clever) uses of procedural generation, since that’s what my games will focus on. I think an important part of being a good game designer is looking at what other games in my genre do right, so that’s what I’m going to do!
And in this episode, I’m looking at the big one. The Great Big One. The most popular and well-scrutinized example of procedural generation, and its pitfalls, in the history of video games.
You already know which one I’m talking about.
That’s right. Today, we’re talking about procedural generation in No Man’s Sky. And that should come with a big disclaimer right off the bat.
I enjoy this game. It isn’t a game I would call a favorite of mine, but I still really like it and I appreciate the developers and the work they put into it. However, it does have flaws, and today I am going to discuss those flaws. But I wanted to make clear that I do really love this game and I’m not trying to say it’s bad by discussing its weaker points. So please bear that in mind while you read.
And now, with that out of the way, let’s talk about the parts of this game that suck.
How can something so big feel so small?
No Man’s Sky has one of the most mathematically impressive uses of procedural generation in gaming, which is to say that it has some really show-stopping numbers. It boasts literally eighteen quintillion planets (did I stutter?) and a wide variety of procedural flora, fauna and environments. If you hadn’t played the game, you would think that this must be the biggest achievement ever – a literally infinite universe, with endless possibilities.
But then you actually play the game.
The first ten minutes are magical. I know mine were. Stepping out into my very first alien planet, and seeing all of the incredible plants and animals with all of their strange and alien shapes and colors, was truly astonishing. I remember putting down the controller and sitting back in my chair, just to have a moment to take it all in.
But gradually, as the game wore on and I visited a few more planets, I began to realize how truly limited the procedural generation really was. All of the plants and animals, while visually distinct, looked and acted just about the same. The animals in particular only seemed to have two AI scripts – either they ran away or tried to fight me, with nothing complex or interesting in between. They didn’t interact with each other organically, didn’t feed on the plants or attack each other or anything. The space stations and structures all looked and behaved the same, and were scattered about seemingly at random, rather than integrating naturally into their surrounding environments. And even the plants started to look the same after a while, once I had seen just about every remixed asset that went into them. It just felt so… empty.
Even the NPCs were generic and boring. They looked really cool and had funky names, but eventually I realized there were only a few hand-designed alien races with predetermined appearances, rather than a wide array of weird and wonderful procedural creatures. There was also a limited pool of names and titles to choose from, as Angry Joe hilariously demonstrated by continually running into Liquidator Amru. I couldn’t interact with them naturally in conversation, only solve their weird little dialogue puzzles.
So how does the procedural generation system even work? And why, despite being technically impressive with a lot of complex mathematics behind it, is the final product so shallow, plain and underwhelming?
There are a few reasons, I think, and all of them are good learning opportunities for how to implement a good procedural generation system into your own game. So let’s take a look at each one.
Not enough assets to choose from
The way the procedural generation system works is essentially the same as in our previous article on the Nemesis System in Shadow of War. In brief, the game has a bunch of premade assets for animals, plants and environments that it mixes together at random, using a random 64-bit seed – hence the quintillions of possible combinations.
But unlike the huge variety of assets in Shadow of War, this procedural generation system has slim pickings – only a handful of assets to choose from. This is probably due to the art team being so small, given that Hello Games, the maker of the game, is a very small studio indeed. To paraphrase the Internet Historian: “I’ve never seen a smaller team behind a Triple-A game.”
And I think that’s a big part of why the game feels so limited. It’s why you start to see the patterns in the generation system very quickly and become bored of them. There’s just not very much variety to choose from, and all of it is surface-level – none of the customized depth of the Nemesis System, which tailors its procedural generation to the player’s choices in a way that makes it feel much more organic and alive. In comparison, the procedural generation in No Man’s Sky is about as deep as a paddling pool.
It’s essentially like if you were tasked with procedurally generating a bunch of birds, but you only had two base bird models to mix together, bluejays and sparrows. You’d end up with a whole lot of technically different creatures, sure – maybe a bluejay with a sparrow’s tail, or a sparrow with a bluejay’s head – and you can claim all you want that there are “millions of possible combinations.” But in the end, they’re all really just a bunch of sparrows and bluejays.
Here’s what it looks like under the hood while generating a creature, in case you were curious.
But let’s get back to that second problem: the lack of depth.
Wide as an ocean, deep as a puddle
It’s been said a lot already, but I’m going to reuse this analogy: No Man’s Sky is a game with fantastic scope and basically zero depth.
For one thing, its systems don’t interact with each other. The animal system doesn’t interact with the plant system, the language system doesn’t interact with the ruins system, and so on. They’re all in their own little code silo, which prevents organic, systemic interactions from arising. In games like Far Cry, for example, the tiger AI system knows how to interact with the people AI system (flesh-mauling), and in Breath of the Wild, the fire AI system can interact with the wood and grass AI systems (by setting them on fire).
Imagine how much deeper and cooler the game would feel if, for example, each procedurally generated animal was placed on a food chain and was preyed upon by larger animals, and you could spot animals fighting each other, snacking on their preferred flora diet, maybe even nesting or having babies. Imagine if the aliens actually had dialogue trees and unique AI, and could give you information about the local wildlife, maybe giving you clues about how to deal with that rampaging raknar beast over there, and… etc. etc. In the end, you could think of a thousand ways for the procedural generation system in the game to feel more alive and dynamic, but what matters is that no matter what you think of, the game doesn’t do it. Hence why this world, so seemingly infinite, feels in practice like a static, dead wasteland where nothing truly interesting ever happens.
Yet there’s a bigger problem, and this one, I think, is what really kills the game for me and a lot of other players.
Where’s the fun?
The lesson that has been drilled into me by all of my computer science and game design professors, from the start of my schooling to the end, is that your game can have all the cool graphics and fun music you want, but at the end of the day, it won’t mean a thing if it isn’t fun. If the game doesn’t have a compelling gameplay loop, or a good mechanical hook, or a strong plot and characters, it just won’t be any fun for the player, regardless of the pretty package you put it in.
Similarly, visually plain games can be incredibly compelling if they focus on getting the gameplay, plot and characters right, or if they have so much substance and impact that it makes up for the somewhat plain packaging. Just look at games like Undertale and Thomas Was Alone. They have minimalistic graphics and don’t look like much at first, but they make up for it with the things they do amazingly well – in the case of Undertale, by being an incredibly strongly plotted and subversive game with well-designed characters.
In other words, all the advanced mathematics behind a system, all the huffing and puffing about millions of possible experiences, all the technical prowess in the world, doesn’t mean a thing if the player doesn’t enjoy it.
Don’t you want to interact with this majestic creature?
The procedural generation in No Man’s Sky doesn’t make the game more fun. It doesn’t fundamentally improve or deepen the experience, and while it makes sense in a game about exploration and discovery, it isn’t deep, complex or interesting enough to carry the entire game by itself, and it shows. It really shows.
If the game had a solid gameplay loop, or a good plot, it could have been a fun addition to a good game. But because the game lacks a solid gameplay loop and has nothing in the way of a compelling plot, the player’s focus goes to the procedural generation when looking for the fun, and because of this, the procedural generation looks all the more lacking. It just makes the game that much more disappointing.
I’ve seen some critics say even worse than that – that it’s just there as pretty window dressing on an otherwise boring and pointless survival game, something that the developers could brag about in the tabloids – and I don’t agree with that harshness. I don’t think the game developers are swindlers who set out to deceive people with their grand claims of the biggest, coolest procedural generation system ever made. If anything, I agree with the Internet Historian’s compassionate, well-designed analysis of Hello Games as well-meaning, but badly equipped developers who didn’t really know what they were promising and weren’t ready to make a Triple-A game on the scale that they did, and were unfairly attacked and scorned as a result. Anyone who was part of that initial release controversy should watch that video, because it paints a very affecting picture of Hello Games and Sean Murray that might surprise you – and hopefully give you a little empathy for them.
But I can’t deny that there’s honestly no point to there being procedural generation in this game, because it adds literally nothing to the experience and isn’t fun. And there’s absolutely no point to a game if the player isn’t having fun playing it. (Except for subversive games like Spec Ops: The Line, maybe. But those are the exceptions.)
There’s no point in having an incredibly advanced procedural generation system if it doesn’t mean something to the player, or add to their enjoyment. And that, for me, is what really sounds the death knell for No Man’s Sky.
A good game with flaws
I’d like to say again that this is, fundamentally, still a pretty good game. It’s not the game that was promised, but with recent updates it has become a lot more compelling and fun, and a lot of the issues discussed in this article have been improved upon over time, such as adding more diversity to the fauna and flora. I felt the need to dissect its issues today because I think there is a lot we can learn from them, but at the end of the day, I still recommend this game to my friends all the time, and I would recommend it to you, the reader, if you’re also interested in exploring how procedural generation can work (and also not work) on this massive of a scale. So definitely still check it out!
What can we learn from this?
The lessons I took away from No Man’s Sky are as follows:
Your procedural generation system should be fun for the player, and add to the experience of the game. It shouldn’t just be something you can brag about having.
The system needs to have enough fundamentally different assets to make the procedural generation varied and fun, even if the player has been playing with it for a while. It needs to still be able to surprise you. Don’t think about combinations – think about variety.
Procedural generation systems should have depth, rather than just being surface-level. They should interact with other systems and create organic interactions, and have rules that are fun for the player to learn and take advantage of.
And most importantly, it doesn’t matter how wide the ocean is or how much math went into making it. It’s all about the depth.
Next time, we’ll discuss a particular roguelike I really enjoy. It’s a dark sort of dungeon. You might be familiar…
The Case Study seriesis my mini-exploration of unique, complex and fun game mechanics and systems from other games that I enjoy, to act as inspiration and ideas for my own games. The series focuses particularly on clever (and not-so-clever) uses of procedural generation, since that’s what my games will focus on. I think an important part of being a good game designer is looking at what other games in my genre do right, so that’s what I’m going to do!
And today, the game I’d like to dissect is one that, while not one of my personal favorites, has an incredibly amazing and unique mechanic that saves the entire game for me. This week we’re going to look at the Nemesis System in the seminal title Middle-Earth: Shadow of War.
What is the Nemesis System?
Middle-Earth: Shadow of War has a plot, but it’s frankly not very good or interesting, so we’re going to completely ignore it and talk about the world instead. The setting of the game revolves around the war between the good races of Middle-Earth – the elves, mostly – and the evil orcs, controlled by the dark lord Sauron. (But if you’re nerdy enough to read this blog, you probably already know the plot of Lord of the Rings by heart.)
The orcs are their own unique faction in the game’s world, and every single orc has their own unique appearance, personality and name, all of which are procedurally generated, with a few exceptions for orcs that are part of the plot and will appear in every player’s game. Some of them even have unique voices and voice actors, like the Agonizer, who is voiced (somewhat not convincingly) by Kumail Nanjiani. The voices can be especially entertaining, particularly ones that speak in limericks or sing you a song about how they’re going to kill you. Yes, I’m serious.
You thought I was kidding, didn’t you? I wasn’t kidding.
But the real showstopper of the game is the Nemesis System, which is tied into the orcs’ behavior and gives them so much more spice than just a random video game enemy for you to tear apart. You see, one of the major things about the protagonist of the game – who is honestly so generic that I completely forgot his name, and frankly I don’t even think it matters – is that he is resurrected whenever he dies. He can be killed, but he always comes back. And that is what allows the Nemesis System to work its magic.
This time, it’s personal
The Nemesis System means that when any random orc grunt kills you, is killed by you, or defeats you in combat, there’s a chance for something unique to happen: it becomes your personal nemesis. It gains a unique title and appearance, levels up, acquires new abilities, and may even have some new trait that depends on how you fought it and what happened in the battle. It hunts you down, taunts you by name, remembers your previous battles, and always seeks to exact revenge on you personally. And the more times you encounter that nemesis from then on, the more it changes, and the more powerful it becomes – even being able to eclipse you.
And trust me when I tell you that there are so many possibilities for your own unique Nemesis, so much so that even after playing the game for days and encountering upwards of a hundred different Nemeses, I never got bored of them and was always delighted to encounter a new one. Even when I was killed by my Nemesis, I still enjoyed seeing how the orc reacted and changed, and hunting it down later became more entertaining to me than the actual plot of the game, which honestly pales in comparison to the wild fun of the randomly generated Nemesis stories. I didn’t even finish the first level of the game for a week because I was so enamored with chasing down my customized orc antagonists and seeing what new ones appeared.
If you kill an orc by chopping off its arm, it might just come back with a cybernetic limb and the title “The Claw.” If an orc manages to outwit you three times, it becomes “The Uncatchable” and gains a nasty ego. If you poison an orc to death, it gains “The Blight” title and becomes physically deformed. Orcs that have the “Death Defying” ability will keep coming back even when you think you’ve killed them, and orcs can even be “Arrow Proof,” “Frost Proof” or have other incredibly nasty powers and perks. Orcs can even have phobias and weaknesses, such as a crippling weakness to poison or a fear of bees – which a clever player can learn to use against them. They can also have some incredibly hilarious appearances, voices and names. And they’re all so different that it never gets old.
In my own game, for example, I once encountered, in the span of a single play session:
A stealthy poison rogue orc who snuck around in the shadows, taunted me from afar, and shot venomous arrows at me.
A really nice and friendly orc who just wanted to be buddies, and legitimately sounded bummed out that he had to try and kill me. I felt a little bit bad about lopping his head off, can’t lie.
A sensual creepy orc with a high voice who loudly proclaimed that he wanted to desecrate my corpse. Yeah, I’m serious about that too. And the worst part is, he actually managed to kill me. So, y’know. My poor resurrecting ranger’s corpse may have suffered a much worse fate than death.
This guy, for example, is a prick. And a Poisonous Dark Destroyer, but, y’know. Being a prick is the important part.
Telling your stories
The biggest strength of the Nemesis system, in my opinion, is how perfectly it enables organic storytelling. I honestly would claim that it does storytelling better than the actual plot of the game. The developers of the game even admit that they designed the Nemesis system so that you could tell your friends stories about it, tweaking dialogue so that it would make for funnier tall tales of your orcish antagonists.
There are so many games that claim to produce “stories you can tell your friends,” but what point is there in telling your friend about a cutscene in a game that literally everyone who plays the game will experience? How can I turn a boring raid battle into an exciting story or a “unique personal narrative”?
Picture unrelated.
The Nemesis system, on the other hand, is positively ripe for storytelling. Everybody will have their own unique Nemeses, and encountering them is always memorable, even the small ones. I don’t remember my favorite moments from Destiny or Warframe, and I couldn’t tell you any long-winded personal stories about Anthem or Fallout 76, but I remember almost every one of my Shadow of War Nemeses, even the minor ones that only lasted a few fights, and I could tell you about all of the adventures and follies that went with them.
There are so many stories that can arise from your clashes and duels with your Nemesis, and so many potential Nemeses that can result from the choices you make – which is what makes them so unique and effective as storytelling devices. I’ve heard my friends talk about orcs who were scarred when they dealt them poison damage, becoming twisted mutant monstrosities who hunted them down for revenge; orcs who were shamed by their clan for letting the player defeat them and later came back covered in tattoos to regain their honor; and so many more. The possibilities are incredible, and functionally almost endless. Even now, researching for this post, I keep finding new potential Nemeses, all with their own unique traits and chances to occur.
Which brings me to my own Nemesis story.
The story of my favorite Nemesis
In my first Shadow of War playthrough, back when I first bought the game and hadn’t yet gotten through the story or acquired the domination ability, I was killed by a random orc minion in the first world. He got a lucky shot on me after I’d been softened up by fighting an ambusher Nemesis, and oh boy, did it suck to get killed by a complete nobody. I remember staring in horror at my bloody body on the screen as the orc gloated over my corpse, saying how his kill would finally bring him glory among his brethren, and then he was promoted and became a fire-wielding orc who wore a flaming crown and used flame weapons in combat. He even got a new title: “The Tark Slayer.” (I guess since I’m a Tark? I never did figure that part out.)
I never got a screenshot of him, so just pretend this is him.
Since he was the first orc who had ever killed me at that point, I decided to hunt him down and get my revenge. At this point I was still new to the game and didn’t fully understand the Nemesis system – I just knew that this random orc had killed me and that he was really fucking smug about it, and that if I didn’t stop him now he might get more powerful later on.
I finally got my sweet revenge when I tracked him down on the castle ramparts and cut off his arm, figuring that would kill him for sure. He fell down and seemed to die, and since I was, again, new to the game and didn’t know that beheading is the only way to guarantee a permanent kill, I figured that was the last I would ever see of the Tark Slayer.
But later on, right in the middle of a giant horde battle that wasn’t going my way, I heard a trumpet blaring and got a nasty surprise. My old friend had come back as a big nasty brute called “The Machine,” with a prosthetic metal-forged arm and a vendetta, ready for revenge. He became my recurring nemesis eight or nine times throughout the game, always showing up at the absolute worst time and gaining new annoying powers, and each time I would wound another part of his body and he would become more and more mechanical and cyborg-looking, even gaining metal implants on his face.
Our grand rivalry finally ended when, after many failed attempts to thwart this increasingly terrifying orc, I figured out his weakness, chopped off his head and finished him off for good. But even then, I was so paranoid of him coming back and crashing one of my orc-killing parties that I braced myself to hear his taunting monologue every time I got into a horde battle from that point onward. Just in case he had survived.
That’s how effective and incredible the Nemesis system can be. It’s amazing, and I still tell that whole saga to my friends as one of my favorite gaming stories. Because the big strength of the system is that it lets you tell these unique personal narratives, ones that will be unlike anybody else’s. And I love when games do that. I think that’s so special.
How does it work?
So how did the developers accomplish this system? What are the parts that make it work?
The answer, in brief: A mix of procedural generation, tons of hard work, and very clever mathematics.
First, there’s the Player Interaction Score, or PIS. This score measures your relationship with every single orc in the game, and the higher an orc’s PIS score – that is, the more the player interacts with them and seems interested in them – the more likely that orc is to “cheat death” and become your next recurring Nemesis. This way, the act of an orc becoming your Nemesis is more rare and special, because it only happens to a few select orcs that the player cares about, not every single random orc grunt in the game.
However, a high PIS doesn’t guarantee that an orc has permanent Plot Armor so that it can keep coming back, and eventually, if the player has just fought that orc too many times, the immunity gets turned off under the hood and the player is allowed to kill the orc and put a stop to the Nemesis for good. That way you can finally get the satisfaction of murdering them after all the development they’ve gone through and all the times they’ve thwarted you, but they still get to terrorize you a few times and feel like a powerful antagonist.
There’s also orc memory, which enables each orc to remember things like whether you fled from them in combat – enabling them to taunt you about it on your next encounter. This also allows them to “remember” you cutting off their limbs, burning them, poisoning them, or whatever else you do to them, so that they can incorporate that into their appearance and personality from that point onward. This is what makes the orcs feel organic and alive, like they’re living creatures who have memories and thoughts of their own, rather than just a bunch of numbers and dice rolls.
Finally, there’s the procedural generation. Like I said earlier, every orc gets their own unique generated appearance, voice, name, titles, abilities, and weaknesses. But how does this work under the hood? How many possibilities are really available?
Turns out it’s exactly how you would expect. The game simply has a crapton of premade assets – costumes, hats, voices, behavior scripts – and then it randomly mixes them together for each orc, adjusting them whenever a unique thing happens to that orc. There’s not much more to it than that, and I have to really admire the dedication of the game designers to making so many possible assets to choose from, because holy crap, that must have taken a lot of work! Kudos! To make every single orc feel so differentiated, even after multiple playthroughs when you start to see the patterns, is a truly monumental task.
I am INCREDIBLY glad I never ran into this guy, though.
Conclusion
I would kill for any of the procedural generation systems I’m working on for my games to turn out as incredible as the Nemesis System. It’s probably the second-best example I’ve seen of really clever, well-implemented and innovative procedural generation in video games. It enriches the game, meshes with the narrative and feels completely natural – and it adds true meaning to the mechanic of Talion being able to resurrect himself after being killed, instead of having that just be handwaved away as a “video game thing.”
But wait. What’s the best example of well-implemented procedural generation in video games, you ask? What is this mysterious other game of which you speak?