Projects Resume Contact

Hell's Janitors


A multiplayer zombie shooter. I wrote this during my junior year of high school in C#, XNA. This is still available on Game Jolt.

Players try to survive endless waves of zombies. They can set and activate traps, spend points, use abilities, and place entities in the world that attack zombies or assist allies.

I submitted this game to my high school science and engineering fair in junior year (2014) and won first place at states and received an award from the Navy.

Pathfinding

The zombies need to be able to find a path to the player(s) from the dirt holes they crawl out of. To accomplish this, each tile in the world is treated as a node linked to its neighboring tiles. An A* search is performed until the zombie can freely move towards the player without bumping into anything. An additional constraint is that certain areas are unreachable by the player until those areas are unlocked. For the spawn system to account for this, each time a door is opened or glass gets broken, the dirt holes perform a search to the player to see if they should activate.

The game can be played with up to four players in split-screen mode. Each zombie finds a path to the nearest alive player (euclidean distance). If a zombie happens to catch line of sight with a closer player, it will begin to chase them instead.

Level Editor

The game shipped with an editor for players to make and share levels. Every level in the game was built using this editor. Tools are valuable!

Polishing the user experience of building levels was important. I built out custom graphical interfaces and attempted to keep the process as streamlined as possible. Adjusting the prices, spawns, and placements are easy, and users never have to mess with the pathfinding system. Furthermore, because tiling an entire grass field by hand or placing wood throughout an entire building was both an annoyance for me and not something users should be expected to do, I implemented an optional flood fill, where right-clicking will replace all neighboring tiles of the same type with the selected tile.