Entombed
- Made with: C++, PS5 SDK
- Created:: January 2024 - April 2024
About
Winner of Awards at the 2024 Games Republic Student Showcase for Level Design (2nd) and Game Tech (3rd).
Entombed is an FPS horror game set in the depths of an ancient tomb, based around the Viking mythos of the Draugr.
The player takes the shoes of a sceptic treasure hunter, who isn't afraid of the 'ghost stories' and goes in search of valuable goods in old historical sites, however as the game progresses you soon realize, that maybe those stories had more truth to them than expected.
The Team
Entombed Was created by a team of 5: 3 programmers Including myself, as well as an Artist & Designer Based on a brief of making a game related to Folklore.
Features
- Heavily stylized aesthetic akin to Ps1 era visuals through intentional design and shader techniques.
- Unity Level exporter for easy & remote level editing for designers.
- GJK Collision Detection / EPA generated Resolution implementation.
- Several Pre and Post-shaded Fx for unique visual style.
- Fully playable, completable game demo made in 3 months.
My Role
Collision Detection/Response
To keep the player within the bounds of the level, a collision resolver was needed to detect and react to player movement about objects in the game world.
My implementation made use of custom bounding volumes ( In this case OBBs & AABBs), GJK distance detection & Expanding Polytope Algorithms for detecting & resolving collisions respectively.
Sound Engine
Due to using Sony's libraries for our engine, much of the functionality implemented had to be using their systems which required lots of technical understanding and plenty of research & testing on
the limited documentation available. Because of this a robust system was needed to suit our game as many of the horror aspects rely heavily on visual/audio queues. The Audio Manager
system implemented is a Singleton class that manages a pool structure of audio sources allowing for dynamic allocation of voices and rendering/parsing of sound files from
anywhere in code it was needed. It takes into account the sound and player position to emulate 3D Audio further increasing immersion as well as supporting up to 64 simultaneous voice playbacks at any one time.
ImGui Scene Editor
For rudimentary level editing and debugging the dear ImGui library was used to implement an easy-to-use debug menu that allowed for lots of under-the-hood editing of different gameplay variables.
As well as providing lots of visual information useful for debugging, it also allowed for Objects to be spawned, manipulated, deleted, have components like the hitbox edited and more. Sound effects & In-Game Events could be called on
demand & Realtime editing of shader variables was accessible to adjust the look of the game on the fly.
Data-Driven JSON Serializer & Parser
Entombed was developed with a Data-Driven philosophy and due to the large number of assets used in the game, a suitable way to manage scenes, asset paths and many other data variables in the game was necessary Making use of the rapidJson
library to serialize data and read from JSON files for large sets of data. This was used for many things from scene loading,
hitbox bounds, Model, Texture & Sound file paths and info.
PSX/PS1 Shader Effects
Fitting in with Entombed's unique aesthetic, we wanted to bring out that retro horror feel with extra character, We achieved this by using low-poly and simplistic assets focusing heavily on post-processing and shader effects to create the visual style A large player in the visuals of Entombed is the Vertex warping & Affine texture mapping akin to the PlayStation 1's similar visual artefacts found in many titles. Which are emulated in the forward render pass to achieve that Silent-Hill Vibe.