Doomenstein
Doomenstein represents the third game developed with the personal C++ game engine and the first to leverage three-dimensional graphics. The project demonstrates technical proficiency across multiple rendering and physics systems, including custom shader implementation, 3D rendering pipelines, 3D physics simulation, and raycasting mechanics. Additional features include sprite-based animation systems and user interface elements.
GitHub Link: https://github.com/student-danielhe/Doomenstein
Collision and Raycast
All actors within the game utilize cylindrical collision geometry and employ retroactive collision detection methodology. Two weapon archetypes were implemented: pistols, which utilize raycasting hit-scan mechanics to determine hit registration, and plasma projectiles, which apply damage upon collision with target actors.
Rendering
Enemy models utilize flat texture mappings, with directional rendering determined by the enemy's orientation vector relative to the player. The animation state is dynamically selected based on the enemy's movement or attack status, with appropriate animations played according to the current action phase.
Definition File
XML-based definition files were implemented for characters and maps, encapsulating metadata such as name, texture assets, faction affiliation, health parameters, and attack definitions. Configuration data is parsed and loaded into the game engine during program initialization. This architecture decouples game content from source code, enabling designers and artists to modify game parameters without requiring code changes or recompilation cycles.
Level Loading
Levels are pre-generated using a paired definition file and tilemap image. The image encodes the level layout at a 1-pixel-per-tile resolution, with each pixel’s color corresponding to a specific tile type. The accompanying definition file contains structured data specifying enemy spawn locations, initial orientations, and other entity configurations required for level initialization.
Gameplay Feature
A distinctive feature implemented for this project is an alternate gameplay mode enabling players to assume the role of a Pinky demon. Upon defeating marine enemies, they drop meat items that function as recruitment mechanics. Players can target meat items at other Pinky demons, similar to capture mechanics in Pokémon Go, to recruit them into their team. Recruited demons follow the player in single-file formation and automatically engage any entities that damage the player, creating a cooperative combat dynamic.
