Title: Monster Madness Online
Engine: Unreal Engine 3
Description: Monster Madness Online is an online cooperative game that has players fighting through waves of zombies, werewolves, and other monsters to overcome challenges and gain powerful gear. While combat is essential to the game, a variety of puzzles, platforming, and timed encounters add complexity to the gameplay and give players objectives other than surviving. A deep loot and ability system provides incentive to repeat levels and attempt to get a high score.
Core Responsibilities:
• Designed and implemented combat, puzzles, and challenges across 3 campaign levels.
• Collaborated to balance PVP maps, including objective, weapon, and power-up placement.
• Created minibosses, including design, ability scripting, testing, and balance.
Dynamic Scripting My biggest challenge on the project was scripting dynamic puzzles that, alongside combat, served as one of the pillars for our levels. These included a pathfinding puzzle that used a Kismet implementation of A*, a large maze through steam tunnels where players could shut off valves to open new paths, a puzzle that had players finding dynamically placed weights to hit a target value on a scale, and a shell-game puzzle with Kismet scripting that randomply shuffled pieces. Of these, the shell-game presented the most problems to solve. I started by designing a set of moves – 2, 3, or 4 pieces would swap a single time in each. These moves were then randomly iterated through a number of times and at a speed dependent on player-selected difficulty. The big curveball came when, after the full algorithm was created, I discovered that my method for exchanging references to objects would not replicate properly – on a server, the piece that started in position 3 was always given moves as if it was still there, even if earlier moves had changed that. To solve the problem, I collaborated with a programmer to create a replicated object variable that would correctly update in these circumstances – from there, it was just creative scripting to ensure the footprint was kept low and replicated object variables were used a minimum number of times.
Interesting Minibosses One of the big challenges in creating this game was designing a collection of minibosses that would periodically appear to engage players. These had unique coloring, mesh attachments, and abilities. These served to provide large threats to players, as well as give greater rewards when killed. The addition of these enemies into the sandbox also turned regular enemies into more dynamic threats, as sub-bosses frequently had abilities that interacted with the core lineup.
Co-Op Fun, Not Necessary One of the key goals of the project was incentivizing cooperative play, without making it a requirement. This had a particularly large impact on challenge design. Puzzles could not require multiple players, but should always benefit from them. For example, one puzzle had players searching an area for barrels, each of which had a random weight. These weights corresponded with a large scale, which would reward the players with a key when the weight of the barrels matched the displayed weight. Individual players could find the correct barrels and push them, but would frequently need to take breaks to thin out enemies. To incentivize Co-Op, barrels moved faster when pushed by multiple players, and could still be pushed while one player was killing enemies.