A frenetic top-down shooter where you take on the Slayer's unending fight against the forces of hell.
Survive as long as possible by fending off endless waves of demons from the depths of hell. You'll be provided with some of the most lethal and iconic weapons from the franchise to aid in your crusade against unique hellborn monstrosities, each possessing different abilities and archetypes.
The game is an arcade-style, top-down spin on the established Doom formula, developed in C++ using the SFML graphics library. This project is built upon a robust Object-Oriented architecture, implementing a custom Entity Management System, dynamic enemy AI tracking, procedural loot generation, and fluid 360-degree mouse-aim combat mechanics.
- Entity Management System: A robust Object-Oriented Programming (OOP) architecture that efficiently handles the lifecycle of all game entities (Player, Enemies, Projectiles, Pickups). Updating and rendering are centralized.
- Dynamic Enemy AI: Enemies possess unique abilities and specific tracking/attacking behaviors, relentlessly focusing on eliminating the player.
- Complex Arsenal System: Equip iconic weapons (Plasma Rifle, Rocket Launcher, Chaingun, BFG9000), each featuring distinct firing mechanics, projectile types, fire rates, and ammo consumption.
- Custom Sprite Animation Engine: A delta-time-based animation system that dynamically binds frames to entity states. It is specifically tailored to faithfully imitate the iconic visual feedback and retro animation pacing of the original Doom source material.
- Mouse-Aim Combat: Precision 360-degree shooting directed exactly at the cursor's coordinates.
- Procedural Loot & Pickups: Upon death, enemies have a calculated chance to drop between 0 and 3 pickups (Health, Armor, Ammo) to reward aggressive play and keep the combat flow engaging.
- Game State Manager: Seamless handling of game states, ensuring smooth transitions between the Main Menu, Active Gameplay, Pause Menu, and Game Over screen.
- Integrated Audio System: Real-time, independent control over the dynamic soundtrack and sound effects (SFX).
- The Player: Spawns with full health, full armor, and maximum ammo for each weapon. Movement is constrained within the game window. The primary goal is to survive and rack up the highest score possible.
- The Enemies: Different enemy types yield varying points upon being killed, reflecting their threat level and abilities. They will attempt to eliminate the player making use of their abilities.
- Game Over Condition: The run ends when the player's health reaches 0. The final screen displays the total score achieved and offers the option to restart the crusade or exit to the desktop.
- Navigate to the Releases tab on the right side of this repository.
- Download the latest
.ziparchive for your operating system. - Extract the contents to a folder of your choice.
- Run the executable file to start the game.
- RIP AND TEAR
ENTER- Start the game (Main Menu) / Restart the game (Game Over)P- Pause / Unpause the gameESC- Exit the game (Game Over)
W- Move UpA- Move LeftS- Move DownD- Move Right
LEFT MOUSE BUTTON- Shoot (fires towards the cursor's position)1- Equip Plasma Rifle2- Equip Rocket Launcher3- Equip Chaingun4- Equip BFG9000
M- Toggle music On/Off-(Minus) - Lower music volume=(Equal) - Raise music volume
- C++ - Core programming language.
- CMake) - Cross-platform build system utilized to configure the project, manage dependencies, and streamline the compilation process.
- SFML 3.0.0 (Zlib) - Simple and Fast Multimedia Library used for rendering, window management, and input.
- OpenAL (LGPL) - Audio library (distributed as a shared library due to licensing).
While the codebase and logic are my own, this project utilizes community resources that I have edited and adapted (recoloring, resizing, etc.) to fit the game's vision.
Note: The image chaingun_proj2.png is my own creation.
- Main Sprite Database: Spriters Resource - Doom & Doom II
- Secondary Sprite Database: Sprite Database - Doom
- Main Menu Background: Reddit - Doom 1993 Upscaled
- Pause Screen Background: AlphaCoders Wallpaper
- In-Game Background: Generated by me using original textures from Textures Resource.
- Pickup SFX: Half-Life Health Charger
- Doom II SFX Archive: Sounds Resource
- Music: Soundtrack by RTPN (Official YouTube Channel).
- Amazdoom: Available on DaFont


