Mutineers | Portfolio | SH Liu | rarakasm

Mutineers

2020
A low poly western-dystopian top-down arena survival shooter with modular weapon/skill system and local coop
CourseworkGameUnrealC++

Introduction

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

Interface
  1. Character name
  2. Armor value (25 points per segment)
  3. Health value (25 points per segment)
  4. Dash ability charge
  5. Passive ability
  6. Active ability
  7. Overdrive ability (on cooldown)
  8. Weapon name
  9. Ammo left in magazine
  10. Ammo reserve
  11. Current wave
  12. Enemies left in current wave
  13. Time left for breaks
  14. Reloading progress
  15. Enemy's status; top: armor, bottom: health
  16. Damage popup numbers

Game Mechanics

Character

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
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 appearance
Kiosk appearance
Kiosk interface
Kiosk 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

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

Weapons are displayed with a rectangle frame in the kiosk interface.

Five different weapons are currently in the game:

  • Starting pistol
  • Rifle
  • SMG
  • Shotgun
  • Energy Rifle

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

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

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.

Enemies

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)

System design/architecture

Game core logic relationship
Game core logic relationship
Controller/Character relationship
Controller/Character relationship
Character/Equipment/Ability system relationship
Equipment data sourcing
Equipment data sourcing
Weapon data table Armor data table Ability data table
Data tables for managing stats and descriptions of equipment, which can be synced with external csv
Enemy behavior tree
Enemy behavior tree
Custom widget navigation blueprint to support separate cursors for each coop player
Custom 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™

Networking support

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.

Enemy variety

More types of enemies were proposed during the development: elite enemies with player-like abilities, and bosses with unique skill sets.