On hold
Project TypeUniversity / group project (3 person)
Project Duration~october 2019 - february 2020
~may 2023 - september 2023
Software UsedUnity Engine, Audacity
Primary Role(s)Lead programmer / Level designer / Game designer
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 played solo or with a second player (supporting keyboard + mouse and Xbox controller). Players can complete three different missions, with the completion of the final mission unlock access to two new weapons. Additionally, players can use the shooting range, which allows them to test all available weapons in the game.
I designed and programmed six different enemies type, plus a boss fight with three distinct attack phases. Each enemy utilizes different kind of weapon. Ranging from pistols, rifles and snipers to miniguns. Additionally, there is a motorcycle vehicle that the player can mount at the end of the second mission. This was intended to be used in the "original" third mission, where the player was meant to traverse a highway to reach a building. There was also a fifth, more open mission planned where the player would have multiple objectives to complete.
In May 2023, I decided to refine the project. I started by rewriting the entire code, which significantly improved optimization and fixed numerous bugs. All scenes now feature baked lighting and improved collision detection for mission checkpoints and the environment. I also introduced several tweaks to the player's dashing ability and the overall gameplay feel. Additionally, I implemented a death screen allowing players to restart the level. After successfully completing a mission, screen now appears, showing metrics such as kills, shots fired, ability uses and dodges. I also redesigned the entire weapon selection panel to be more legible and clearly display the player's current loadout.
-
controls for two players
-
character control with keyboard + mouse or xbox controller
-
implementation of character abilities, weapons and granades
-
enemy design and AI programming
-
game design
-
implementing mixamo animations and Blend Tree for player character
-
weapon selection in HUB
-
creating levels in Unity
-
creating particles
-
sound editing and implementation
-
drawing wireframes
-
teamwork
-
running game tests
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.
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.
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.
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.
It's one of the core mechanics that allows, player to avoid bullets, grenades and enemies.
You can trigger grenade to explode faster, than wait when he will explode.
When a player falls during the game, you can go to him and bring him back, but be careful, because it takes some time.
If second player will be on low HP, you can pass to him some of your health, unless you have less than 50%.
When players run out of ammo, they can refill they ammo using ammo box.
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.
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.