Project

Custom engine | Nakon

Custom PlayStation 5 and DirectX 12 engine where I worked on abstracting the PS5 rendering pipeline and implementing various rendering, engine and gameplay features.

💻 PS5/PC 🚀 University 🔧 C++ | Custom engine 👤 12 people

Description

Nakon is a round-based horde shooter inspired by Call of Duty, built in a custom C++ engine targeting PC and PlayStation 5. The player fights through waves of enemies and needs to activate the ritual site to earn upgrades. The player can unlock new areas to increase the difficulty and progress through the map. The project shipped on itch.io where we got feedback and iterated on the project to make it better.

The renderer is a modified version of an engine me and 6 others created in our second year at BUAS to fit the new style of the game. We fully abstracted away the DirectX 12 and PlayStation 5 renderer APIs, so that features we create work for both APIs. This really helped the development process.

My contributions

Storing G-buffer Data On PS5

Created the deferred rendering pipeline for PS5 with G-buffer passes storing albedo/roughness, normal/metallic, and emission in separate render targets. World position is reconstructed from the depth buffer to save memory.

Tone Mapping & Post Processing

Created a post process pass with Reinhard, ACES and filmic tone mapping options, exposure slider and gamma correction all controllable via ImGui settings.

PBR & HDR Rendering

Added PBR shading to the deferred renderer and enabled HDR output on the PS5 by using high precision output render targets when HDR is enabled on the system/monitor.

PS5 Build Pipeline

Set up the PlayStation 5 devkit deployment, and did platform-specific bug fixing (crashing of the animation pass, crashes when shooting too many bullets and shader alignment issues).

Depth Fog System

Implemented a depth fog post-process with configurable density, color, start/end falloff ranges, and optional skybox support. The settings are exposed so that the artists can tweak the feature.

Foliage Rendering

Added foliage support to the forward renderer in collaboration with an artist, including shadow pass integration.

GPU Particle Randomization

Extended the compute shader particle system with randomized spawn positions, cone-angle direction, and optional rotation for more organic ambient effects.

PS5 Performance Profiling

Profiled the PS5 build identifying the forward pass and shadow pass as bottlenecks, identifying that we need to minimize the amount of draw calls being issued through culling techniques.

PS5 Pipeline State Abstraction

Helped designing the PS5 pipeline settings system where you set a PipelineSettings struct in each pass and it automatically applies depth, stencil, culling, winding order and blending on the PlayStation via the abstracted command list.

Directional Shadow Mapping

Implemented directional shadow maps by capturing the scene depth from the light's perspective and reconstructing the shadow position in the light pass with a box blur filter for soft edges, works on both DX12 and PS5.

Ritual Soul System

Built a soul accumulation system where enemy kills spawn color-matched particles that interpolate towards the ritual altar, giving clear visual feedback for the objective.

Health & Vignette System

Created a health system with timed regeneration and a dynamic vignette post-process effect that intensifies as health drops, with configurable intensity, color, and recovery speed.

Bullet Damage Falloff

Implemented distance-based damage falloff with pierce damage reduction, all values are exposed via ImGui so they can easily be tweaked.

Particle VFX

We had no VFX artist so I worked on creating the hit particles (body, headshot, ground dust), ritual soul particles that track to the altar, door unlock effects, perk machine effects, and ambient firefly particles.