3D FPS Game: Roar of War Machines

The goal of this project was to make any game we wanted, using Unity, starting from the end of september 2020 to the end of december 2020 (a duration of 3 months) and in a team of 3.

Since this project was made in a team of 3, each one had their own responsabilities regarding the game. I was responsible of:

  • The core game structure: connecting each part of the game (via a GameManager for example) and making all the parts worked together
  • The enemies: artificial intelligence, weapons, effects (ragdoll, disconnecting body parts on death, dissolving effect, ...)
  • The post processing
  • Creating the first map
  • The wave system
  • The money system
  • Some of the particle effects (medical kit)
  • Health bar when looking at an enemy and damage indicator when shooting it
  • Some elements of the HUD (wave text, money text, action text when interacting)

I also developed custom inspectors in Unity especially for our game and more precisely for the wave system.

Being in a team also involves communicating and developing features at the same time. To make this work, we used Git and the platform Gitlab hosted at our university to collaborate efficiently on the project. I was responsible of handling the project on Gitlab, which includes:

  • Making sure each one of us developed a feature on a separate branch
  • Handling pull requests
  • Merging changes to the main branch
  • Resolving conflicts

Features

Here are the main features of our game:

  • First person shooter
  • 4 weapons: 2 hand guns, a shotgun, and a rifle
  • 2 enemy types: a humanoid robot and a big mecha robot
  • 2 maps
  • Ragdoll and "body disconnect" effect when killing the humanoid enemies
  • Artificial intelligence, pathfinding using Unity's Nav Mesh system
  • Player animations: walking, running, jumping, aiming
  • Procedural animation of the enemies: looking at the player while aiming and walking
  • Infinite wave system with increasing difficulty
  • Money system to purchase new weapons and/or magazine, with inspiration from Call of Duty: Black Ops II's mystery box
  • Damage scaling depending on the distance to the enemies
  • Health bar and damage indicator
  • HUD showing money, current wave, minimap, health, current weapons and bullets remaning
  • Hit overlay
  • Music and sound effects
  • Post processing
  • Particle effects

Gameplay

The game starts with the main menu. After clicking on Start, the player can choose between two maps. Loading one of the map makes the game loop start.

The game loop consists of the following: the player appears in the map with one basic weapon, and has a few seconds to get ready before the first wave of enemies appear. The player can carry only two weapons at the same time, meaning that he has to make a choice when opening the weapon crate as to which weapon to replace. Then, the player has to face infinite waves of enemies, each wave being more difficult than the previous one (enemies have increasing hp and damage and the number of enemies increases after each wave). The goal is to survive the longest.

A medical kit will spawn from time to time in order to heal the player. There is also one weapon crate per map allowing him to get a new weapon for a cost of 100$. He can also purchase gun magazines for a cost of 50$ each.

Controls

  • ZQSD: basic player movement (forwards, left, backwards, right)
  • SPACE: jump
  • LEFT MOUSE BUTTON: fire
  • RIGHT MOUSE BUTTON: aim
  • E: interact
  • R: reload weapon
  • 1 and 2: select weapon
  • MOUSE SCROLL: switch weapon
  • ESCAPE: pause menu

Note: the game was developed using an AZERTY keyboard and we did not make it universal.

Gallery

Below is some preview of the two maps we made for our game:

Source code

The source code of this project can be found on Gitlab. The Unity version used is Unity 2019.4.18f1.

#c##unity#3d#game#school‑work#team#fps#ai#singleplayer#ragdoll#procedural‑animation#post‑processing#vfx#git