The project consists of recreating the basic mechanics of Superhot in Unreal Engine to then create levels.
The purpose of this project is to improve skills with Unreal Engine blueprints, show a small game design analysis of the game elements and create a level design portfolio.
Superhot is a FPS created by Superhot Team where time moves only when you move.
Small analysis of the game design
- CONTROLS AND MECHANICS
- MOVEMENT AND TIME
- COLOR CODE
- GAMEPLAY UI
CONTROLS AND MECHANICS
Is a game with an entry level accessible to almost any player, because the actions are clear and not very complex and there are not many different inputs.
The relationships between input and actions are as following:
By clicking the left mouse button:
- If the player has a fire gun with ammo, then shoot.
- If the player has a fire gun without ammo, then the first click shows a message (“Out of ammo”) the second throws the weapon.
- If the player has a weapon to melee, then he strikes.
- If the player doesn't have a gun, then punch.
- If the player doesn't have a gun and is looking at a nearby gun, then he takes it.
By clicking the right mouse button:
- If the player has any weapons, then he throws it.
By pressing the keys WASD:
- The player moves.
By pressing the key Space:
- The player jumps.
By pressing the key E:
- Hotswitch. The player changes his body with the enemy he is aiming at. The old body dies and the new one discards the weapon in case he carries one. this skill is not available from the beginning of the game and requires a cooldown.
By holding the key R:
- The level restarts.
MOVEMENT AND TIME
This is the relationship between time and movement mechanics:
The movement speed of the player and the enemies is similar.
The time can run in three different speeds: Normal, slow and very slow.
- If the player doesn´t move the time will run very slow (approx. x0.005).
- If the player only moves the view (by moving the mouse) the time will run slow (approx. x0.05).
- If the player moves the time will run at normal speed (aprrox. x0.9).
- If the jump is performed by holding the jump button, the time will run slowly during the jump. In other case, the time will run at normal speed. In both cases the jump height and distance are the same.
Throughout the game there is a color code that helps a better understanding of the environment and the interactions that the player can make.
The game only uses three different colors very contrasted with each other:
- White: Used on the environment.
- Red: Used on enemies and bullet trails.
- Black: Used on bullets and weapons. Can be destroyed.
There are two different types of weapons, fire guns and melee weapons
- Katana: It kills with a stroke both when it is thrown and when it is hit with it.
- Baseball bat type: It kills with one hit and on the fourth hit it breaks (you can throw it anyway). When you throw it, it stuns the enemy and it breaks.
- Throwable objects: Stunts the enemies.
- Fists: Stuns enemies and eliminates them on the third stroke.
There's only one kind of enemy and they all behave the same by following this tree of behavior:
Besides, the enemies also have these characteristics:
- Can see and shoot through glass.
- They can't jump.
- They have infinite ammo.
- Are spawned by predefined waves.
- They have spawn points. This spawn points are doors that look like this:
It lights red when an enemy is almost spawned.
Like the rest of the game, the UI is tremendously minimalist.
The UI of the gameplay is composed only by the crosshair that allows us to know where we are pointing and what kind of interaction we can do.
The feedback of this crosshair is reinforced by shaders that highlight the nearby interactive elements.
All crosshairs are white with a small black shadow on the back. There are five different types:
- Dot: When the player doesn´t have a weapon and isn’t looking to an enemy. Is the default state.
- Take: When the player is looking to a weapon.
- Classic crosshair: When a fire gun or a throwable object is equipped.
- Punch: When the player doesn’t have any fire weapon and is near and looking to an enemy.
- Katana cut: When a katana is equipped.
There are two different types of animations for the crosshairs, one is exclusive to the classic crosshair and the other is shared between the others.
The classic crosshair animation gives feedback to the player about when he can shoot again.
The shared animation takes place as a transition between the change of the possible action to perform.
These are some fx of the game that help boost the gamefeel:
- Post processing lines: Are thin diagonal and parallel lines that are shown for aesthetic purposes. Are almost imperceptible (does not influence gamfeel but I mention it because it enhances the following effect).
- Highlight shader: this effect is shown when there is a weapon at a distance that can be caught or an enemy that could be hit. The lines are disposed in the opposite direction of the previously mentioned effect.
- Bullet trails: Help to visualize the path of the bullets.
- Enemy kill effect: When killing an enemy the ragdoll is activated and some triangular particles are emitted simulating the blood. The enemy breaks into pieces as if it were crystal (weapons have this same effect when they are destroyed). When the enemy finally falls to the ground it dissolves.
- Enemy spawn: The enemy appears with an inverse effect to dissolve.
- Bullet collision (except enemies): The bullet dissolves and spark particles are emitted.
- Shoot effect: A subtle screen shake is produced and flash particles are emitted.
- Jump effect: Touching the ground after jumping produces an effect that pumps the image in a short and subtle way simulating a squash and stretch.