Versus Purgatory is a shoot-em-up roguelike made in Unity, with an active development time of approximately 4 months. The game features a novel and experimental control scheme in which the player controls two characters at the same time, leading to brain-twisting gameplay which challenges the player in unconventional ways. This game is designed and programmed by me, originally made as a class project, I decided to expand upon the idea for a commercial release. It is available for sale on Steam and Itch.io.
Published Independently March 2025.
Play on Steam Play on Itch.ioStephen Kerschbaumer: Game Design, Programming, Art
Jamie Garcia: Playtesting
S. Yip: Playtesting
Gameplay has been designed to highlight and explore the game's novel control scheme. The player characters are both controlled with one of the two control sticks, and their weapon's aim is determined by the relative position of the other player character. This results in situations where the player must manipulate both in tandem as to simultaneously dodge attacks and aim for enemies. The game then becomes about positioning, and the player's ability to juggle their cognitive load.
Versus Purgatory was directly inspired by the game Libble Rabble, created by Toru Iwatani, inwhich the player controls two planchettes who wrap-up enemies with a rope tied between them. I am a big fan of retro games, and often pull inspiration from them. I have found many novel concepts created decades ago with latent potential that have since gone unexplored.
From the beginning of this project, one of my key goals was finding the fun in confusion, using the obstuse control scheme as a means to create moments of intense action, as well and comedy as the player's brain is overloaded. While this was at the forefront of my design, I still found it crucial to maintain fairness and satisfaction through-out the experience. For instance, enemy AI was made to be very predictable and reactable, and hazards such as spike traps and projectiles were made with wide timing cushions that afford players long periods to dodge incoming damage. The cognitive load during gameplay was so high just from the core interactions navigating your characters that quick reaction times were not necessary for the player to exectute in order to feel a sense of mechanical satisfaction.
Gameplay takes place within three phases; exploration, combat, and looting. The three phases weave between one another as to give varied gameplay through-out the experience and relieve the player of the cognitively taxing gameplay. Each phase feeds into one-another, with exploration leading to loot, loot enhancing combat, and combat allowing for further exploration.
As the player has two characters to upgrade through-out, the game is balanced to encourage various combinations of weapons, allowing for a unique twist on roguelike character progression. My goal for character progression was to allow for player expression through character customization as seen in other popular roguelikes, having players work towards different kinds of 'builds' all while keeping the actual process very simple and digestable as to not distract from the core gamplay. The power-ups and equipable weapons are simple in premice, with brief summaries displayed upon pick-up. The real nuance comes from how the player chooses to allocate them between their two characters. For instance, they might allocate speed-boosting items for their angel and give it a high-powered but precise weapon such as the rocket launcher, meanwhile they allocate power-boosting items for their devil and give it a spread weapon such as the uzi. By doing this, they've built two synergistic characters that play very differently, with the angel being able to chase-down and pick-off high priority enemies, while the devil deals high damage to all of the weaker enemies of the board.
Weapons were implemented using scriptable objects, making rebalancing and fine-tuning across iterations convenient.
Weapon properties were balanced initally using Excel spreadsheets, allowing for me to caluclate damage-per-second for each weapon, accomodating for aspects such as fire rate, bullet count, and individual damage per bullet. Following this, they were further refined based on feel, for instance spread weapons were given a decreased damage multiplier as in playtesting they were frequently overpowered, allowing for players to ignore the aiming aspects of the game. This also incentivized the use of precision weapons, rewarding players for more skilled exectution of aiming, and further differentiating the various weapon classes. Immediate understandability was prioritized; each weapon has a distinct appearance and fire pattern, weapons were assigned different rarities to help indicate to the player their scaling power, and short blerbs were written describing weapons' individual traits, including downsides.
Levels are generated procedurally, using a pathfinding algorithm with multiple branches as to create cohesive but varied layouts. After intital generation, the level is poplauted with key rooms such as the exit, weapons, and power-up rooms. These rooms are programmed to skew towards being populated towards the outer reaches of the level to motivate the player to explore the entirety of the level. As the player progresses, the way the level generates will change. For instance, in the 3rd level of the game, there are less generated branches, but they are much longer, leading to a wider but less dense level construction.
A dungeon being procedurally generated from the editor perspective. Certain UI elements have been hidden for the sake of clarity in demonstration.
The levels themselves are made-up of over 150 individual room which I designed. As the game progresses, new types of room are introduced, bringing with them new enemies and mechanics. These new mechanics are primarily meant to test the player's adpetness with the control scheme, specifically focusing on postional awareness and multi-tasking. In early stages of the game, levels are made with simple obstacles such as boxes and pillars for the player to maneuver around, and as the game progresses, levels are designed more and more to test their movement and positioning. For instance, in the sencond level, spike traps are introduced which don't allow for the player to stand idly over them, and in the fourth level, moving sawblades are introduced which force the player to keep their characters in constant motion.
In testing, I observed that often players would wedge their two characters into opposing corners of the room instead of moving throughout the space. The game was balanced in such a way that the players were always faster than the basic enemies in early levels, and their damage output was high enough that they would be able to run to corners and kill the enemy before it ever got in range to damage them.
This was notable amoungst novice players and lead to bad habits, inwhich these players would not learn how to properly control their characters in the early-game, and then struggle in the late-game as a result. In other words, there was not sufficient skill-gating.
My gut reaction was to simply increase the enemies' health and speed. If they were simply dying before they could even touch the player, this would be the simplest and most obvious solution.
Problems quickly would arose from this proposed solution though. The slow and fragile nature of these basic enemies was necessary, as if they were found to be overly persistent, the cognitive load on the player as they try and sort-out the controls would be too extreme. In early levels, rooms with any sort of obstacle, such as boxes or pillars within the space became too challenging for players to navigate before being harmed. In later levels, when players were faced with multiples of these enhanced enemies, they became overhwelming, especially with the mechanics introduced later-on layered on top.
Another idea was to implement traps which would restrict movement via the threat of damage. In the final game, these elements are present across much of the game. For instance, there are spike traps which pop-out to attack the player shortly after they step on them, and there are spinning saw-blades which move along a track.
These are effective tools in the late game, but in early levels they proved to be an issue. Players were on the verge of being overwhelmed as-in, so to introduce a new mechanic besides the most basic of enemies was too drastic. In testing, I found players would wander into these traps and not even realize, as their attention was focused elsewhere.
Projectile enemeies could work to prevent this issue. They are functionally very similar to fast enemies and moving traps, in that they momentarily control a space, though in this case the space controlled is directly related to the player characters' positioning. This is something that has positive implications in challenging the player once their skills are more developped, but again would be counter-productive in early stages of the game.
This idea eneded up being one of the simplest but also most effective solutions. Adding diagonal walls to the corners made it so that the player's range of movement is restricted exactly enough that some form of movement is required beyond running into the corner. As an additional benefit, the slanted nature of the added geometry makes it so that moving out of the corner space is much easier for the player whilst still learning the controls. If the player character is moved in a cardinal direction into the slant, their movement will continue along the slope of the wall, rather than have them halt in place as they would in a regular corner. This promotes movement, and ingrains in the player that the intended and optimal way to play the game is to have both characters in constant movement.
Within these 150 pre-constructed rooms, elements such as enemies and minor obstances like boxes and vases are randomized as to bring further variety to the game, and not make every dungeon feel the same.
Overall, I am very proud of this game. This is my first ever commercial release, and with that, I have learned a lot about user testing, marketing, and what it takes to build a product that meets user demands while still maintaining my own original vision. The unique nature of this game's design brought with it many challenges that I was excited to overcome. I am especially proud of the control scheme I implemented, and believe the solutions I found to accomodate it have been a resounding success.
The game can be downloaded at the below links. If you are a recruiter, please contact me at my email stephenkerschbaumer@gmail.com and I will send you a free Steam code.