Mobbers

Mobbers is a chaotic 4 player co-op dungeon crawler game, where you have to collect as much loot as you can until the heroes arrive.

I work as the Tools/Engine programmer and Rendering engineer on this project.

The major systems I have developed for this project (so far) are the Input/Movement System, Entities/Player Management System and the Item System.

Fully Modular Entity System

Mobbers features a fully modular Entity system, in which both the players and NPCs within the game can all be controlled and utilise all of the same systems.
This firstly drastically increases the ease of maintenance from the cutting down of duplicate code. Though, this also has the advantage of enemies being able to use the same items as the player, along with the enemies acting in the same way as the player.

This entity system is the framework of which all the other player-oriented systems (such as the Input and Item System) are built around.

Input System

The Input System was designed from the start of the project to handle 4 player co-op, though has seen many iterations throughout the development of the project.

Originally, this system was designed around the old Unity input system, which worked well but was a nightmare to extend and didn't support haptics.

The rewrite then used the new Unity input system, using the built-in components. This somewhat worked but was buggy and didn't have the features we wanted for drop-in, like being unable to customise how players were added.

After this, the rewrite ended up using custom components built around the InputUser system on the new Input System. This ended up being the best solution for the project. The rewrite allowed for easy controller binding changes, along with decoupling players from IDs. Now the InputUser tracks the player with their bound devices and can handle issues such as controllers re-connecting.

Item System

Mobbers also features a modular and extensible item system.
This was designed from the ground up to allow for many weapon variations, along with items to be able to interact with the player and other items.

Weapons

Weapons within Mobbers utilise swappable modules, which allow for items to be added quickly and easily. This also allows for items to change weapon behaviour via swapping / replacing the module.

Currently, these modular parts of the weapon include trajectories, collision behaviour, fire trigger behaviour and spray patterns.

Modifiers

Modifiers are a special type of item that allow for the addition, multiplication or replacement of any attribute-marked variable on any component on the entity which picks it up.

This system allowed for simple item creation with minimal extra code per-modifier, though it currently has a performance penalty from JIT compilation per modified value type / operation.
This system most likely will be revamped in the future to remove this limitation and to increase user-friendliness.

2D Animation System

Mobbers partially utilises a custom 2D animation system built around sprite sheets. This system was designed to cut down on the bloat from the Unity animation system, whilst providing more flexibility.