Skip to content

0ZeYaD0/Snow_Doom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

96 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

โ„๏ธ Snow Doom

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.


๐ŸŽฎ Features

  • 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

๐Ÿ“‹ Requirements

Runtime

  • Windows OS (64-bit recommended)
  • OpenGL 4.0+ compatible GPU
  • Audio Device for sound output

Development

  • C++20 or later
  • GCC/MinGW compiler
  • ymk build system
  • GLFW3 (windowing)
  • OpenGL/GLAD (graphics)
  • OpenAL (audio)
  • GLM (mathematics)

๐Ÿš€ Quick Start

1. Clone the Repository

git clone https://github.com/0ZeYaD0/Snow_Doom.git
cd Snow_Doom

2. Build the Project

ymk build

Or use the VS Code task: Build and Run Snow Doom

3. Run the Game

.\bin\snow_doom.exe

๐ŸŽ›๏ธ Controls

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

๐Ÿ“ Project Structure

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

๐Ÿ”ง Build Configurations

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

๐Ÿšง Roadmap & TODO

UI Improvements

  • Dynamic crosshair
  • Better dash counter display
  • Gun information HUD
  • Screen effects (blood splatter, damage feedback)

Gameplay Features

  • Sound effects
  • Main menu & scene management
  • Cutscene & boss fight system
  • Door interaction system with keys
  • Weapon pickup mechanics

Enemy System

  • Multiple enemy types with unique behaviors
  • "Truck-kun" boss fight
  • Enemy spawn management

๐Ÿ› ๏ธ Development

Building from Source

# Debug build (default)
ymk build

# Release build
ymk build release

# Clean build
ymk clean

Project Configuration

Edit build.ymk to modify:

  • C++ standard (cpp_std)
  • Compiler flags
  • Linked libraries
  • Include/library directories

๐Ÿ“ฆ Dependencies

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 -

๐ŸŽจ Graphics & Assets

  • 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

๐Ÿ”Š Audio

The game uses OpenAL for spatial audio. Audio files are organized in res/audio/ by event type (death, impact, etc.).


๐Ÿ› Troubleshooting

Game won't start

  • 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

No sound

  • Check that your audio device is connected
  • Verify OpenAL is properly installed

Build errors

  • Ensure C++20 compiler support (g++ --version)
  • Verify ymk is installed and in your PATH
  • Check that vendor libraries are up to date

๐Ÿ“„ License

[Add license information here]


๐Ÿ‘ค Author

0ZeYaD0 โ€“ Game Developer
DeltaY0 - Game Developer


๐Ÿค Contributing

Contributions, bug reports, and feature requests are welcome! Feel free to open issues or submit pull requests.


Enjoy Snow Doom! โ„๏ธ๐ŸŽฎ