A low poly western-dystopian top-down arena survival shooter with modular weapon/skill system and local coop
Mutineers is a coop top-down shooter, where two players act as characters from a small western town, struggling against invasion of evil machine army. Inspired by the fast pace of Hotline Miami, the tactical depth of Alien Swarm, and the style of Team Fortress 2 and Borderlands series, the game aims to appeal to both casual and seasoned players.
The game was developed in Unreal, utilizing both native C++ and its nonprogrammer-friendly Blueprint visual scripting system. As a sole developer on this project, I put extra effort to separate my roles as a programmer that works with C++ and as a designer that works with spreadsheet and visual scripting. Various custom Blueprint nodes, spreadsheet data binding and editor quality-of-life functions were developed in C++, which can be used at ease in Unreal editor interface or Excel.
Game control scheme/flow
Game control/flow chart
Title screen/Character selection/Game over
Game HUD Interface
Armor value (25 points per segment)
Health value (25 points per segment)
Dash ability charge
Overdrive ability (on cooldown)
Ammo left in magazine
Enemies left in current wave
Time left for breaks
Enemy's status; top: armor, bottom: health
Damage popup numbers
Each character has five slots of equipment: weapon, armor, active ability, passive ability and overdrive ability. Also, each character has an innate ability for dashing over a short distance. At the beginning of the game, each player only carries a pistol with infinite ammo.
Death and resurrection
When a character's health drops to zero, they lose the ability to move and fight, and must wait for the other character to come and revive them. A yellow circle will appear to indicate the area inside which the other character must stand for a period to revive the downed character. After successful resurrection, the downed character regains half of the health.
Reviving downed player
Kiosk (or shop)
After every wave of attack, players can have a little break time to find kiosks scattered around the map, which act as equipment shop and management system. A GUI will appear after both players are inside the kiosk.
Kiosk appearanceKiosk interface
In the kiosk GUI, players can see their own equipment, equipment currently on sell and equipment in their storage. Each player has their own cursor that can be controlled using gamepad navigation, and details of hovered object will be displayed in their respective detail panel.
Equipment rarity ranges from the lowest to highest: Common (white), Rare (blue), Exquisite (purple) and Legendary (orange). Higher rarity comes with better stats and higher cost.
Weapons are displayed with a rectangle frame in the kiosk interface.
Five different weapons are currently in the game:
Different weapons may have different fire mode. For example, pistol is semi-automatic, rifle is automatic, and energy rifle fires in 4-round burst. The game supports any arbitrary number of rounds per burst.
Every weapon shares a same ammo reserve, but the cost of each shot from different weapons may vary. For example, pistol does not consume any reserve, while shotgun and energy rifle, being rarer and more powerful, consumes a lot of reserve for each round. Ammo reserve can be replenished with pickups in the map.
Armors are displayed with a hexagon frame in the kiosk interface.
Armor has three attributes: maximum armor value, armor recharge rate and armor recharge delay. When a character receives damage, the armor recharge will pause and resume after recharge delay. With these attributes, armors can be categorized into three classes: normal armor with average, well-rounded attributes; heavy armor with high max armor value but low recharge rate and long delay; light armor with low max armor value compensated by fast recharge and low delay. Player can choose their armor based on their own playstyle.
Abilities are displayed with a circular frame in the kiosk interface. There are three types of abilities, each having their own dedicated slot for equipment.
Active abilities require player's spontaneous control over when and sometimes where to use it. The simpler ones may be activation of a temporary buff of stats, while others require targeting, for example, placing turrets or launching an explosive cannon.
Passive abilities activate themselves when certain criteria are met. For example, one ability increases damage based on the missing health of the player, while another one activates a fire-rate buff after dealing certain amount of damage.
Overdrive abilities are what we call "ultimate" in popular games. They are game changers and clutch makers, with tremendous power but high cooldown time.
Active and passive ability equipment always comes with Common rarity, but they can be upgraded to higher rarity by purchasing the same equipment from the kiosk. Various stats of abilities scale with the rarity, and when the Legendary rarity is reached, a bonus effect is unlocked. For example, the bullet from turret slows victims for a second when the turret ability is upgraded to Legendary.
However, unlike weapons and armors, ability equipment cannot be unequipped and sold or put in storage. When player attempts to purchase an ability equipment in an occupied slot, the existing ability is overwritten by the new one. Therefore, player must evaluate the cost of changing the abilities. Here, the storage may be useful for stacking abilities and only equipping them when they can be sufficiently upgraded.
Health and damage system
All player and enemy characters have armor points and health points. Upon receiving damage, the armor points are consumed before the health points. There are few ways to replenish health points in the game while armor points can be easily recharged, so players are advised to play safe when their armor points are depleted.
There are two damage types in the game: physical damage and energy damage. Physical damage deals the same amount of damage to armor and health points, while energy damage is half as effective against armor points, but doubled against health points. Players are encouraged to exploit this with different weapon/ability build to take down enemies more efficiently. Also, player must be extra careful against enemies that deals energy damage when they're out of armor points.
Two types of enemies were implemented: melee enemies charge towards the targeted player, and smack them with physical damage when close enough; ranged enemies keep a distance from the players, and shoot orbs that deal energy damage to players.
Melee enemy/ranged enemy
Enemies are spawned in spawn pods, which appear in a set of fixed location in the map at the beginning of each wave. After the wave, the spawn pods retreat while leaving some ammo reserve pickups.
Pod appearance/pod in action/pod spawn points (green dots)
Game core logic relationshipController/Character relationship
Character/Equipment/Ability system relationshipEquipment data sourcingData tables for managing stats and descriptions of equipment, which can be synced with external csvEnemy behavior treeCustom widget navigation blueprint to support separate cursors for each coop player, which Unreal built-in UMG system unfortunately doesn't support out of the box.
Future work aka Coming soon™
The game was initially planned for online coop experience. To support this, all the abilities in the game were implemented with Unreal's official Gameplay Ability System, which, although super convoluted and still in beta, has been field-tested in Fortnite.
More types of enemies were proposed during the development: elite enemies with player-like abilities, and bosses with unique skill sets.