Doomenstein
Overview:
Doomenstein is a 2.5D Doom and Wolfenstein clone made in my custom C++ game engine. In Doomenstein, you can play single-player or multiplayer to fight 2 different AI enemies on an enclosed map. There is an additional nightmare mode where the directional light is turned off and the player navigates the map with only point lights present in the level.
- Tools: C++, DirectX 11, HLSL
- Development Timeline: February 2023 – May 2023
Game Features:
Per-Pixel Lighting Effects
In Doomenstein, two different types of lighting models were used. The first lighting model used is a directional light that is represented as the sun light throughout the entire map. The second lighting model used is point lights. These point lights can be data-driven in the map definitions with attributes for a world position, range, and intensity.
Billboarded Sprite Animations
For the AI and player animations, an animation rendering system was created. In this system, the correct animation to render as defined by the actor definitions and actor sprite sheets, is based on two components. The first component is the result of the dot product of the camera forward vector and the direction to the viewable actor. The second component is the current time of the animation clock. Together these components define the correct animation to render per actor. Also, each sprite animation is rendered as a rounded billboarded quad containing normals associated with each vertex to allow for per-pixel lighting on the actors.
XML Data-Driven Gameplay
All gameplay constants were organized into an XML definition system. This system contained definition files for the overall game configuration, maps, tiles, actors, projectile actors, and weapons. By using this XML data-driving system, all gameplay variables became accessible to edit in any text editor while also providing an increase in human readability which is very helpful for level designers when adding new maps, weapons, and actors.



