This week is Emily Short’s Bring Out Your Dead semijam, described as “an event for sharing dead WIPs and experiments that you don’t expect to finish, but that you’d like to show to someone anyway”.
In that spirit, I present Five Gods Exiled, my successful procedural generation experiment that completely failed at becoming a game.
This game will run in a browser – I tested it on Firefox and Chrome – but your browser will report a freeze while the game is loading. (I received two “Continue the script?” checks in Firefox, and one in Chrome.) If you’d prefer to download the game instead, here’s the gblorb link and here are some interpreters that can run a glulxe file (I personally use Windows Glulxe.)
Skip to the chase: Five Gods Exiled
In November of 2010, fresh off the success of my first complete IF release (One Eye Open, with Caelyn Sandel), I wanted to make the most replayable IF game ever. And I wanted to release it just five months later.
As I described it to Greg Boettcher, the 2011 Spring Thing organizer:
“The working title of my current project is Five and Five. It’s a game about a world where part of reality has been divided away from itself, leaving neither plane of reality whole. The PC can move between the two halves of reality under certain circumstances, and the PC’s goal is to save reality by reuniting the Blight and the Exile. This game will be an experiment in replayability. Almost everything in it (map layouts, terrain, major NPCs, the PC’s history, etc.) will be randomly generated, and any given playthrough will give you only a fraction of the content available. Winning the game will rely not on puzzle-solving, but on tactics (there is a combat system) and a certain amount of luck. Instead of being a crossword at war with a narrative, it’s a board game at war with a narrative.”
In the letter above here, you can see the vagueness of my pitch. After I withdrew from Spring Thing (having bitten off far more than I could chew), I set the project aside. I was learning more about game design, which forced me to see all the project’s problems. I was very excited about my procedural generation tech, but as for the actual story – or the player experience, or what made any of this fun – I didn’t have any good answers. (More about this in “Recognizing Fun Through Elevator Pitches”.)
Lacking answers, I moved on to other projects. Five Gods Exiled went first to a temp backburner, and then to the permanent backburner, where it has remained until now.
To learn about the procedurally generated landscape, see “A Procedurally Generated Wilderness”. Alternately, see volumes 2 through 4 (and subheadings) in the source.
The second-most-complex procedural generation system is the one used to build NPCs. While your birth nation is never identified in game, the characteristics used to build characters were intended to be generically appropriate to random Americans. I wanted to create procedurally generated characters that would seem visually believable. I wanted players to look at the name and physical description and think, “Yeah, I could imagine that person walking past on the street.”
I won’t go into detail about how it works – see Volume 5 (and subheadings) in the source – but in retrospect, while the system works, it’s not so great behind the scenes. In the source code, the entire system hinges on ethnicities (the ethnicity categories used at Mongabay – Non-Hispanic White, Non-Hispanic Black, Hispanic, Native American/Alaskan, Asian/Pacific Islander). While those ethnicities are never mentioned in game, they are used to adjust the names and traits available to various characters, and I made some poor choices in setting up that system. Aside from that, there’s some weight shaming in the source code, and gender is treated as a binary. I’m leaving all of this code as-is, but that doesn’t mean I stand by it now. I think it’s a good idea to illustrate mistakes.
If I were going to complete this game, I would revisit procedural character generation and look for ways to accomplish the overarching goal (believable random people) in a way that avoids drawing artificial lines or conveying hurtful things. I’d also discuss the system with other game devs (particularly people of color) and listen to their feedback. These things matter, even when the player can’t see them.
My primary inspiration was the board game Arkham Horror. My play group uses every expansion there is simultaneously, which means that I’ve seen a bare fraction of the content available. I wanted players to have that kind of experience, and I understood in advance that a procedurally generated game would involve a certain amount of stylization. The plot could contort within certain boundaries, but coming up with an entirely new plot each time was out of the question. And fully fleshed NPCs were out of the question, too.
The actual plot (and associated gameplay) metamorphosed significantly during development, but here’s the last incarnation of the plot and associated gameplay.
In a near-future world, scientists discover definitive proof of the Gods. They are absolutely terrifying, and their powers can be drawn upon by anyone who knows how to do it. Their existence is like handing a firebomb to every person in the world.
There’s a worldwide scientific and religious effort to take that firebomb away, which means shunting the Gods into another part of existence. Somewhere humans can’t reach them.
The effort is successful, but unfortunately misguided. These are the Gods. It’s not possible to push the Gods out of existence without pushing everyone else out of existence. Which is exactly what has happened.
The human race has Exiled itself into a different plane of reality. It is not stable.
You were recruited into a circle of people seeking to return humanity to the real world. The Gods may be dangerous, but they’re still less dangerous than this dream world and its disintegrating laws of physics and society.
As a group, you are damaged, confused and frightened. One of your group is murdered, threatening your mission, but through meditation, prayer, and ritual, your circle successfully opens a portal back to the real world.
Only one person can cross back. You are the one chosen.
The information is revealed to the player through flashbacks and memories. These memories are custom-tailored to the procedurally generated identity of the player and the other people in the player’s circle.
There are ten shrines in the Blight, each belonging to a different God.
Five of these shrines belong to the exiled Gods. These shrines can be invoked to phrase the player temporarily into the Exile. The player needs to invoke all five shrines to summon the Gods home, but monsters are created whenever the exiled Gods connect with the real world (also referred to as the Blight).
The other five Gods are still connected to the Blight. Their shrines can be invoked for special powers: restoring the player’s health, restoring the player’s attunement, removing debuffs, identifying items, and locating monsters.
Health indicates the shadow self’s health. If a monster enters combat with the shadow self, the shadow self may lose health. If the health drops to zero, the shadow self will be destroyed.
Attunement indicates whether the player is correctly attuned to the Blight, or whether the player’s consciousness is torn across the worlds. It indicates how long the player can stay in the Exile on any given visit, and if the player’s attunement is too low, the player becomes disoriented (reflected by receiving location-appropriate messaging from the Exile while in the Blight, or vice versa). If a monster enters combat with the player, the player may lose attunement. If the attunement drops to zero, the player will be destroyed and the game will end.
After the player’s first trip to the Exile, the player will be joined by the shadow self, which is an echo of the player’s former reality within the Blight. The shadow self handles all combat, which is carried out deterministically.
Under some circumstances, the player can receive mementos upon phasing back into the Blight. Mementos are projections of Exiled energy upon the Blight, and they provide temporary or permanent boosts to the player’s stats (strength, stamina, will, and knowledge) or derived stats (attack, speed, defense, health, attunement, awareness, and stealth). As more shrines are invoked, the monsters created will be more numerous and powerful, and mementos help even up the playing field.
After the player invokes all five shrines, a portal appears in the first room of the game. The portal leads Between Worlds, where the player’s mentor (the person who assembled their circle) gives the player a talisman, which cannot be dropped. As long as the player carries the talisman, they lose permanent health (in the Blight) or permanent attunement (in the Exile) every turn.
To finish the game, the player must enter the Exile and give the talisman to someone. It’s a lethal gift, but if the player chooses someone from their circle, then the worlds will be reunited (the good ending). If the player has pieced together enough memories to find the murderer, that would be an excellent person to choose (the very good ending). If the player gives the talisman to someone who isn’t from the circle, that person will die and humanity will remain Exiled for now (the bad ending). And if the player fails to give the talisman away before dying, then their consciousness will be torn across the worlds and humanity will be permanently Exiled (the very bad ending).
Significant chunks of the gameplay described above are still unimplemented or include placeholder messaging only. It’s possible to die to a monster, but none of the true endings are available.
My primary inspiration was the board game Arkham Horror, and… the game still behaves like a board game. Apart from the text-based procedural generation systems, there’s no reason why IF is the correct medium for this game. The narrative is vague and gigantic at the same time, while the gameplay focuses on movement through space (a particularly poor choice for IF) and RPG-style combat.
At a rough guess, this game is two-thirds implemented and one-quarter written. It won’t see daylight as a finished project, but I don’t regret the time I spent on it. I learned Inform while working on One Eye Open and Beet the Devil, but I learned the sheer power of Inform while I worked on Five Gods Exiled.
How the sausage was made: Five Gods Exiled source code
Please note the source code only compiles under Inform 7 6G60. Also, it’s essentially uncommented. Sorry about that.