Details
Contribution
I have worked mostly as a Lead Programmer in this project. I have planned out and built the backend of the game which consists of managing all resources and systems from the entry point that is starting the application to the moment the game is running. I have also worked on all the gameplay features of the game which include the physics interactions, Combat, AI, 3C, cutscenes and Inventory. I have contributed briefly as a game designer as well, participating in design meetings and offering input regarding level design and system design.
Play as one of the brothers Grimm, quickly losing grip on your sanity while trying to escape from your own home. Interact with a rich physics simulation that allows you to approach each problem in your own way. But beware of making too much noise in the process: you are not alone in there. Uncover the secrets of your home as you try to find a way out. Use the limited supplies at your disposal to handle any danger that tries to deter you - internal or external. The mind is a fragile thing, make sure to find your way out before it shatters to pieces.
The Transition Tool plugin is created by me and used in Grim for creating transitions for many different purposes. The tool allows the user to easily create and customize multi-purpose 3-Steps transitions. These transitions can be visual such as a fade to black, and can also be loading screens that remain active until all assets and levels have been loaded.
Grim takes advantage of the sound system plugin that I have made. The sound system is used to manage any audio resources and operations in a project. It provides a wide selection of audio related features such as Volume and Pitch Randomization, Fade In/Out, Dynamic Audio Settings and 2D/3D audio.
Since immersion is a high priority in Grim, the interactable types needed to physically with the world. GrabPhysics is a system that compliments the interaction system's interface. The GrabPhysics system allows the user to easily create different GrabPhysics data assets that describe to the system how an object should behave physics wise. It allows for a lot of variety when it comes to physics objects interactions.
Due to the nature of the archetecture, it is possible for objects to be of multiple types at the same time. For an example a box is a Destructible but it is also a Grabbable than can be lifted up and thrown. Sliddables are complex as well since they are Grabbables, Destructible and have their own unique phyiscs interaction that allows them to behave in specific manner, like a movable padlock or a sliding door.
The interaction system in Grim is the heart of most systems in the game. It serves as a context free interface that allows the player to interact with different objects in the environment. The details of this interaction are left for interpretation which is why many systems in Grim take advantage of the interface and build upon it.
These systems create the different interactable types which are Pickups, Grabbables, LightSources, NoiseMakers, Sliddables and Desctructibles. Each system builds upon the interface and defines interaction in its own way whether its objects you can grab, pickups to collect, candles you light up, doors to drag open or objects that can cause noise on interaction.
Destructibles are the most complicated of the interaction types. Any interactable object can be turned into a destructible through a specific pipeline. It involves creating a fractured version of a mesh using Unreal Engine's Chaos system and storing that in a Destructible Prop class. This class is then referenced inside a DestructibleData asset that allows the user to control how a mesh should fracture and fall apart upon impact.
The DestructibleData asset also allows the user to control other aspects such as health, damage, noise and whether it should spawn a Pickup type interactable upon fracture. Any interaction type can then be turned into a destructible type as well by simply checking a box and selecting the correct DestructibleData asset.