Role: Gameplay, Animation & UI Programmer
Genre: Third Person Puzzle Shooter
Engine: Unreal Engine
Team Size: 12
Platform: PC
Time: 7 weeks
Rouse is a 3rd-person physics-based puzzle platformer. You play as Rose who finds herself trapped inside the dream of her little brother. The game's main mechanic is a gun that the player can use to shoot and physically affect elements in the map (freezing, inverting gravity or levitating and sticking).
The projectile will always land where the player is aiming. The max height a projectile will reach (H) is the only variable that can be tweaked in this system where R is the distance to the point that's being aimed at. If we solve the following system of equations for Initial Velocity (v0) and Initial Angle (ϴ), we'll know the necessary impulse and direction to exert on the projectile to reach the point that is being aimed. I made this solver into a blueprint function library so that we could easily prototype it in BP aswell.
Property: | Function: |
---|---|
Height (H) | Projectile's max. height |
Distance (R) | Distance from projectile origin (gun) to aimed point |
Initial Angle (ϴ) | Necessary initial angle to reach aimed point |
Initial Velocity (v0) | Necessary impulse to reach aimed point |
The behaviour for this mechanic is mostly inspired by Little Nightmares' dragging system where the player needs to interact with an object to grab it and only then can drag it around. The object will be dropped if that same button is pressed or if it goes out of range.
Two actor components are used on this system. One on the object that can be pushed and another one on the entity that can push objects. This pattern allows for a modular system where new objects could be very easily added and be pushed around by the existing or new characters.
Little Nightmares' Drag System
The behaviour is inspired by an AND processor where all the output responses will get triggered if all buttons are pressed. The processor’s behaviour is easily customizable to work like a NAND, OR, XOR, etc.
Each button’s behaviour is very open to customization. Levers and sticky timed buttons were prototyped but didn’t make it to any puzzle in the final game.
An event is called on each response component being triggered which allows for a modular system. Multiple and diverse events can be called: Opening doors, UI prompts, particle effects, etc. These were exposed to BP and mostly worked on by designers.