A modern C++ first-person action game built from scratch with a custom game engine. Survive the frozen wasteland, battle enemies, and uncover the mysteries of Snow Doom.
- Custom Game Engine โ Built in C++ with OpenGL for rendering
- 3D Graphics โ Real-time rendering with GLSL shaders
- Physics System โ Collision detection and physics simulation
- Audio System โ OpenAL-based sound effects and music
- Dynamic UI โ Player HUD with weapons, health, and interactions
- Map System โ Level loading and generation with collision data
- Enemy AI โ Intelligent enemies to battle
- Weapon System โ Multiple weapons with different mechanics
- Player Movement โ Smooth camera and movement controls
- Windows OS (64-bit recommended)
- OpenGL 4.0+ compatible GPU
- Audio Device for sound output
- C++20 or later
- GCC/MinGW compiler
- ymk build system
- GLFW3 (windowing)
- OpenGL/GLAD (graphics)
- OpenAL (audio)
- GLM (mathematics)
git clone https://github.com/0ZeYaD0/Snow_Doom.git
cd Snow_Doomymk buildOr use the VS Code task: Build and Run Snow Doom
.\bin\snow_doom.exe| Action | Key |
|---|---|
| Move Forward | W |
| Move Backward | S |
| Strafe Left | A |
| Strafe Right | D |
| Jump | Space |
| Dash | Shift |
| Look Around | Mouse |
| Fire/Attack | Left Click |
| Switch Weapon | 1-9 or Scroll |
| Interact | E |
| Menu | ESC |
Snow_Doom/
โโโ src/ # Source code
โ โโโ main.cpp # Entry point
โ โโโ engine/ # Core engine systems
โ โ โโโ graphics/ # OpenGL rendering
โ โ โโโ audio/ # OpenAL sound system
โ โ โโโ physics/ # Collision & physics
โ โ โโโ map/ # Level loading
โ โ โโโ window/ # GLFW window management
โ โ โโโ ui/ # UI system
โ โ โโโ core/ # Input & utilities
โ โโโ game/ # Game-specific code
โ โโโ core/ # Game logic & entities
โ โโโ player/ # Player & camera
โ โโโ enemies/ # Enemy AI
โ โโโ ui/ # Game HUD
โโโ include/ # Header files (mirrors src/)
โโโ res/ # Game resources
โ โโโ shaders/ # GLSL shader files
โ โโโ textures/ # Texture assets
โ โโโ models/ # 3D models
โ โโโ maps/ # Level files
โ โโโ audio/ # Sound effects & music
โโโ vendor/ # Third-party libraries
โ โโโ glm/ # Math library
โ โโโ GLFW/ # Window management
โ โโโ OpenAL/ # Audio
โ โโโ glad/ # OpenGL loader
โ โโโ stb/ # Image loading
โ โโโ tiny_obj_loader/ # Model loading
โโโ lib/ # Compiled libraries
โโโ build/ # Build artifacts (generated)
โโโ bin/ # Executable output
โโโ build.ymk # Build configuration
โโโ tools/ # Development utilities
The project supports multiple build configurations:
- Debug โ Includes debug symbols and no optimization (
-g -O0) - Release โ Optimized build (
-O3)
Build in release mode with:
ymk build release- Dynamic crosshair
- Better dash counter display
- Gun information HUD
- Screen effects (blood splatter, damage feedback)
- Sound effects
- Main menu & scene management
- Cutscene & boss fight system
- Door interaction system with keys
- Weapon pickup mechanics
- Multiple enemy types with unique behaviors
- "Truck-kun" boss fight
- Enemy spawn management
# Debug build (default)
ymk build
# Release build
ymk build release
# Clean build
ymk cleanEdit build.ymk to modify:
- C++ standard (
cpp_std) - Compiler flags
- Linked libraries
- Include/library directories
| Library | Purpose | Version |
|---|---|---|
| GLFW3 | Window management | 3.x |
| OpenGL/GLAD | Graphics rendering | 4.0+ |
| OpenAL | Audio system | 1.x |
| GLM | Math operations | Latest |
| stb_image | Texture loading | - |
| tiny_obj_loader | Model loading | - |
- Shaders โ Located in
res/shaders/, includes vertex and fragment shaders for 3D rendering and UI - Textures โ Organized by category (Brick, Stone, Wood, Tiles, Doors, etc.)
- Models โ OBJ format models with MTL materials
- Maps โ Custom map definitions with collision data
The game uses OpenAL for spatial audio. Audio files are organized in res/audio/ by event type (death, impact, etc.).
- Ensure your GPU supports OpenGL 4.0+
- Check that all DLLs (glfw3dll, OpenAL32dll) are in the
lib/directory - Verify the executable is in
bin/snow_doom.exe
- Check that your audio device is connected
- Verify OpenAL is properly installed
- Ensure C++20 compiler support (
g++ --version) - Verify
ymkis installed and in your PATH - Check that vendor libraries are up to date
[Add license information here]
0ZeYaD0 โ Game Developer
DeltaY0 - Game Developer
Contributions, bug reports, and feature requests are welcome! Feel free to open issues or submit pull requests.
Enjoy Snow Doom! โ๏ธ๐ฎ