Shock;Gate
Project Status

On hold

Project Type

University / group project (3 person)

Project Duration

~october 2019 - february 2020

~may 2023 - september 2023

Software Used

Unity Engine, Audacity

Primary Role(s)

Lead programmer / Level designer / Game designer

About Shock;Gate

Shock;Gate is project that started at the end of 3rd year at Collegium Da Vinci. The team is consistend of two programmers and 3D graphic designer. My roles in team were a lead programmer, level designer and game designer. I have implemented most of the game's funcionality and for creating levels in Unity. This project is my first "profesiona" take on Unity, working on it helped me to develop better skills in Unity and C#.

The game can be player alone or with second player, there are 3 diffrent missions in game and completing the last one will unlock two new weapons. In addition there is a shooting range where you can test all weapons that are in game. During playthrough you can meet 6 types of enemies.

In May 2023, I decided to improve the project. Started by rewriting the entire code, which helped to optimize the experience and fixed many bugs. All scenes now have baked lighting and improved collisions for mission checkpoints and the environment. I also added a death screen after the player dies, previously a pause screen was launched, and after a successful mission completion, we will see a summary that shows our statistics (number of kills, shots, skill uses, and dodges). I also redesigned the entire weapon selection panel to be more readable and show what the player currently has.

My contribution:
Enemy AI

As seen in the attached picture, enemy have two spheres, first one which is green , shows his eyes range and second yellow shows his weapon range. In addition opponent has an view angle shown by two red lines. When player enters his first sphere, enemy check if player is in his view angle, then use raycast to determine, if there is object between him and the player. If nothing is between, he switch his state to "Follow" and go towards player. Enemies have four states:

  • Patrol - they stand still or are patroling around, the color of their indicator is green.

  • Follow - when the player is noticed, they will approuch him, till he is in weapon range. Indicator color will change to yellow.

  • Fight - if player is in the weapon range, opponents stops and begins to shoot or throw grenades. When player goes out of range, enemy will change to "Follow" state. Indicator color is red.

  • Alarmed - enemies got a signal form their group member and will head towards place where player was noticed. Indicator color change to orange.

Alarm

On the gif, you can see how opponent takes damage from the player, he takes from information bullet who shoot him and makes him a target, then switch his state to "Follow". Additionaly he will alarmy his group members an play sound to let the player he was noticed. Enemies cannot shot at player, if he is not in enought angle for them to shoot.

Animation controller for sidearm

The picture shows the connections between the animations for player, if he holds a sidearm. In game player have two Animation Controllers, one for pistols (sidearms) and other for rifles and rest (primary weapons). When player is switching weapons, player controller switch between those controlers. On the left you can see parameters, which triggers transitions between animation. Some parameters control how much animations are blend.

Blend Tree for run

Here i combine five animations for character run with a pistol in Blend Tree. I use the VelX paramteter, which is responsible for the X axis on controller analog or A/D, if player use keyboard and mouse. VelY is used for Y axis. On the right side in Motion window, you can see values which triggers the appopriate animation.

Dash

It's one of the core mechanics that allows, player to avoid bullets, grenades and enemies.

Manual grenade explosion

You can trigger grenade to explode faster, than wait when he will explode.

Reviving second player

When a player falls during the game, you can go to him and bring him back, but be careful, because it takes some time.

Healing second player

If second player will be on low HP, you can pass to him some of your health, unless you have less than 50%.

Ammo box

When players run out of ammo, they can refill they ammo using ammo box.

Power Up

During game session players can pick from killed enemies boosters. Every booster boost diffrent things like increasing movement speed, bullet damage or shield instant recharg. In case of gif, player got a damage booster.

Bike Controls

In the second mission there are bikes waiting for players. Bikes have two modes, first one allow bike to aim and shoot to enemies, but at the expense of speed. Second mode increase bike speed, but is less manoeuvrable and is harder to aim.

Gallery
Main Menu - 2019
Main Menu - 2023
Mission select - 2019
Mission select - 2023
Weapon select - 2019
Weapon select - 2023
Loading screen - 2019
Loading screen - 2023
Mission 1 - 2023
Mission 2 - 2023
Shooting range - 2019
Boss cutscene - 2023
Boss fight 1 - 2023
Boss fight 2 - 2023
Defence mission - 2019
Defence mission 1 - 2023
Defence mission 2 - 2023
Unfinished mission
Death screen - 2023
Mission summary - 2023