Fixed Camera Game Prototype

This is a small prototype I made for a college assignment, where I implemented some mechanics inspired by classic survival horror games such as Resident Evil and Silent Hill. You can check out the project’s codebase here.

The camera setup was created with Unity’s Cinemachine, and the character movement was implemented so that the input direction was interpreted as the direction relative to where the camera was looking, instead of using tank controls, which can work better for gamepads with analog controls.

However, a problem that this approach can lead is that, when the camera cuts to a new position, the directions will change, and the character starts moving to a direction that the player doesn’t want. To mitigate that, the movement system only updates the directions in relation to the camera when the character stops moving.

I also implemented a small screen animation for when the player goes to different rooms, using the Shader Graph to create a screen effect based on a gray scale image and a cutoff variable, creating a unique fade animation determined by the image.

There’s also a very rudimentary inventory system, where the player can interact with items to store them and use those items to apply different effects, although there wasn’t time to implement many practiocal effects with the exception of a health potion.

The project also contains an prototype state-machine based enemy AI, that basically searches for the player based on different sensors that detect aggravators, that could be both visual or sound based. Currently, it follows a simple path until it detects the player, and then it starts chasing it.

I have the intention of creating a small game using those mechanics, but I’d like to try to implement those in the Godot game engine as well due to the recent licensing issues Unity users faced in the last months, and also to have the opportunity to experiment a game engine that I have a very timid contact with.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *