Skip to content

karimzakzouk/ULTRAHELL

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

145 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ”ฅ ULTRAHELL

A wave-based arena shooter built on a custom OpenGL game engine.

OpenGL C++17 CMake Bullet Physics OpenAL


๐Ÿ“– About

ULTRAHELL is a first-person arena shooter where you fight endless waves of zombies across handcrafted arenas. Built entirely from scratch using modern OpenGL and C++17, the project features a complete custom game engine with an Entity-Component-System architecture, a Bullet Physicsโ€“driven simulation, PBR lighting with multi-source shadow mapping, skeletal animation, a progression/power-up system, and a full audio pipeline powered by OpenAL.

Computer Graphics Course โ€” Cairo University, Third Year, Second Semester


๐ŸŽฎ Screenshots

Main Menu

Main Menu

Hell Arena (Area 1)

Hell Arena

Pika Island (Area 2)

Pika Island


โœจ Features

๐ŸŽฏ Core Gameplay

  • Wave-Based Survival โ€” Endless waves of zombies with progressive difficulty scaling (HP, speed, and damage ramp with each wave).
  • 6 Weapons Arsenal โ€” Kimber K6S revolver, Sig P365 XL, Simeon North 1826, AK-47, FAMAS, and Scar 20 โ€” each with unique fire rate, recoil, spread, reload animation, and sound design. Weapons unlock progressively as you survive deeper waves.
  • Melee Punch & Bullet Parry โ€” Press F to punch nearby enemies and parry incoming ranged projectiles, reflecting them back with doubled damage.
  • Advanced Movement โ€” WASD movement, multi-dash system (Shift) with cooldown and FOV punch, crouching, sliding (Ctrl while moving), ground-slam (Ctrl mid-air), and slam-jump combos for increasing jump height.
  • Hitscan Combat โ€” Physics-accurate raycasted shooting with headshot detection (2ร— damage), hit markers, camera recoil, procedural camera shake, and weapon sway/bob.
  • 4 Enemy Types โ€” Zombie Grunt (standard), Bulky Zombie (250 HP tank), Sprinter Zombie (fast, low HP), and Zombie Spitter (ranged projectile attacker) โ€” each with weighted spawn probabilities and unique stats.

โšก Progression & Powers

  • XP & Leveling System โ€” Earn XP from kills (type-weighted), wave completions, parries, slam combos, and style kills. Persistent progression saved to disk.
  • 6 Special Powers (activated with Q):
    Wave Power Effect
    3 โœˆ๏ธ Flight Soar above the arena for 8s
    5 ๐Ÿ”ฅ Berserker Damage ร—3, Speed ร—1.5 for 10s
    7 โณ Time Warp World slows to 25% for 6s
    10 ๐Ÿ’ฅ Bullet Storm Unlimited ammo, Fire rate ร—3 for 8s
    12 ๐Ÿ‘ป Phantom Invincible + ghost speed for 7s
    15 ๐ŸŒŸ God Mode All powers combined for 5s
  • Story Events โ€” Typewriter-style lore text appears at specific waves, building the narrative as you progress deeper.
  • Leaderboard โ€” Top 5 runs tracked by wave reached, kills, and time survived, with a "New Record" celebration on personal bests.

๐ŸŽจ Rendering Engine

  • Custom Forward Renderer โ€” Full OpenGL 3.3 rendering pipeline with opaque/transparent sorting, sky sphere rendering, and post-processing.
  • PBR Lighting (Cook-Torrance BRDF) โ€” Physically-based rendering with albedo, metallic, roughness, ambient occlusion, and emissive texture maps. Supports up to 16 dynamic lights (directional, point, and spot).
  • Multi-Source Shadow Mapping โ€” Directional light shadow maps (4096px), point light omnidirectional cube map shadows (up to 4), and spot light perspective shadows (up to 4), all with PCF soft shadow filtering.
  • Skeletal Animation โ€” FBX model loading with bone-driven vertex skinning and per-enemy animation blending (walk, attack, death clips at variable playback speeds).
  • Particle System โ€” GPU-friendly billboard particles with gravity, floor settling, additive blending, and automatic lifetime management. Used for muzzle flashes, blood splatter, bullet impacts, zombie spawn VFX, and blood drip puddles.
  • Post-Processing Pipeline โ€” Full-screen hell-fire shader with procedural FBM noise for dynamic scrolling fire overlay, warm color grading, and a red damage flash effect.
  • Bullet Trail Rendering โ€” Visual tracer rounds that travel from muzzle to impact point with proper 3D orientation.
  • Debug Overlays โ€” Collision wireframe rendering (F3), A* navigation grid visualization (F4), and Bullet Physics body/manifold debug panel (F8).

๐Ÿง  AI & Physics

  • A* Pathfinding โ€” 2D XZ navigation grid built from physics raycasts with obstacle inflation, slope rejection, diagonal corner-cutting prevention, and terrain-height-aware path queries.
  • Bullet Physics Integration โ€” Full rigid body simulation with capsule/box/sphere colliders, character controllers, kinematic body support, gravity, ground contact detection via manifolds, and step-up terrain traversal for enemies.
  • Enemy AI State Machine โ€” Chase โ†’ Attack state transitions with aggro ranges, animation-synchronized attack timing, line-of-sight checks for ranged enemies, and fall-off-the-world handling.

๐Ÿ”Š Audio System

  • OpenAL-Powered Audio โ€” Complete audio pipeline with WAV loading, one-shot and looping sound effects, and automatic cleanup of finished sources.
  • Per-Category Volume Control โ€” Independent Master, Music, and SFX volume sliders with settings persistence to disk.
  • Contextual Sound Design โ€” Footstep sounds (running, sliding), jump/land audio, dash whoosh, weapon-specific fire + 3-phase reload sounds (clip out โ†’ clip in โ†’ bolt pull), zombie attack sounds, hit damage feedback, and separate music tracks for menu, gameplay, and death screen.

๐Ÿ–ฅ๏ธ UI/UX

  • Animated Main Menu โ€” Procedural GLSL shader background animation with layered logo text effects, hover sounds, and smooth reveal transitions.
  • Map Selection Screen โ€” Card-based map picker with gradient preview thumbnails, hover glow, pulsing selection border, keyboard/mouse navigation, and a threaded background loading screen with animated progress bar.
  • In-Game HUD โ€” Health, speed, dash charges, ammo counter with reload state, wave indicator, crosshair with reactive hit markers, and 3D-to-2D projected enemy health bars.
  • Pause Menu โ€” Resume, Settings (audio sliders), Restart, and Exit options with stylized dark theme.
  • Death Screen โ€” Typewriter-reveal "SIMULATION OVER" with NEW vs BEST stats comparison, leaderboard display, and restart button.
  • Progression HUD โ€” XP bar strip, level badge, story text overlay, weapon unlock toast notifications, and a special power ring indicator with arc-based cooldown/duration display.
  • Onboarding Tutorial โ€” 7-step interactive tutorial (move, look, shoot, reload, dash, switch weapon, enter arena) that triggers on first play.

โš™๏ธ Engine Architecture

  • Entity-Component-System (ECS) โ€” Data-driven world with serializable entities and components loaded from YAML configuration files.
  • YAML-Driven Configuration โ€” Shared assets, per-feature entity files (player, weapons, zombies, lights, scoreboard), and per-map environment files loaded from a structured config/ directory. The engine auto-loads every .yaml file from the entities directory.
  • Hot Reload (F5) โ€” Live scene reload from disk while preserving the player's transform.
  • Multi-Map Support โ€” Map-specific entity directories with per-map spawn configuration (player spawn point, zombie spawn center/radius).
  • Threaded Asset Preloading โ€” Map entity YAML is parsed on a background thread while the loading screen animates, then consumed by the play state on the main thread.
  • Free Camera / Noclip (F6) โ€” Debug fly camera that decouples from the player physics body.

๐Ÿ› ๏ธ Technology Stack

Layer Technology
Graphics API OpenGL 3.3 Core
Language C++17
Build System CMake (minimum 3.10)
Physics Bullet Physics (btBulletDynamicsCommon)
Audio OpenAL (AL/ALC)
Windowing / Input GLFW (vendored)
GL Loader GLAD (vendored)
GL Extensions GLEW (system, Linux)
Math GLM (vendored headers)
Debug GUI Dear ImGui (vendored)
Serialization nlohmann/json
Model Loading Custom OBJ + FBX (via Assimp for skinned models)

๐Ÿš€ Getting Started

Prerequisites (Linux)

sudo apt update
sudo apt install cmake g++ libglew-dev libgl-dev libx11-dev libopenal-dev libbullet-dev gdb

Build

mkdir build && cd build
cmake ..
make -j$(nproc)

Run

From the project root directory:

./bin/GAME_APPLICATION -c config/app.yaml

Controls

Key Action
W A S D Move
Mouse Look
Left Click Shoot
R Reload
Left Shift Dash
Left Ctrl Crouch / Slide / Ground Slam (mid-air)
Space Jump
1 / 2 Switch weapon slot
F Punch / Parry
Q Activate Special Power
Escape Pause Menu
F3 Toggle collision wireframes
F4 Toggle A* nav grid overlay
F5 Hot reload scene
F6 Toggle free cam (noclip)
F7 Print physics body count
F8 Toggle physics debug panel

๐Ÿ“ Project Structure

Graphics-Project/
โ”œโ”€โ”€ assets/
โ”‚   โ”œโ”€โ”€ icons/              # Window/app icons
โ”‚   โ”œโ”€โ”€ models/             # OBJ meshes + FBX skinned models
โ”‚   โ”œโ”€โ”€ shaders/            # GLSL vertex & fragment shaders
โ”‚   โ”‚   โ”œโ”€โ”€ postprocess/    # Post-processing (hell fire overlay)
โ”‚   โ”‚   โ””โ”€โ”€ menu/           # Procedural menu background
โ”‚   โ”œโ”€โ”€ sounds/             # WAV audio (music, SFX, weapons)
โ”‚   โ””โ”€โ”€ textures/           # PBR maps, skybox, weapon skins
โ”œโ”€โ”€ config/
โ”‚   โ”œโ”€โ”€ app.yaml            # Engine config (window, renderer, shared assets)
โ”‚   โ”œโ”€โ”€ entities/           # Per-feature YAML (player, weapons, zombies, lights, scoreboard)
โ”‚   โ”œโ”€โ”€ maps/               # Per-map environment YAML
โ”‚   โ”‚   โ”œโ”€โ”€ arena/          # Hell Arena config
โ”‚   โ”‚   โ””โ”€โ”€ squid/          # Pika Island config
โ”‚   โ”œโ”€โ”€ leaderboard.json    # Persistent top-5 run history
โ”‚   โ”œโ”€โ”€ progression.json    # Persistent XP/level/kill stats
โ”‚   โ””โ”€โ”€ settings.json       # Audio volume settings
โ”œโ”€โ”€ source/
โ”‚   โ”œโ”€โ”€ main.cpp            # Entry point & state registration
โ”‚   โ”œโ”€โ”€ common/             # Engine core
โ”‚   โ”‚   โ”œโ”€โ”€ animation/      # Skeleton, AnimationClip, Animator
โ”‚   โ”‚   โ”œโ”€โ”€ audio/          # OpenAL AudioSystem & SoundEffect
โ”‚   โ”‚   โ”œโ”€โ”€ components/     # ECS components (Camera, Enemy, Weapon, Collider, etc.)
โ”‚   โ”‚   โ”œโ”€โ”€ ecs/            # Entity-Component-System framework
โ”‚   โ”‚   โ”œโ”€โ”€ input/          # Keyboard & Mouse abstraction
โ”‚   โ”‚   โ”œโ”€โ”€ material/       # Material & PipelineState
โ”‚   โ”‚   โ”œโ”€โ”€ mesh/           # Mesh & SkinnedMesh loaders
โ”‚   โ”‚   โ”œโ”€โ”€ physics/        # Bullet Physics integration
โ”‚   โ”‚   โ”œโ”€โ”€ shader/         # ShaderProgram wrapper
โ”‚   โ”‚   โ”œโ”€โ”€ systems/        # Game systems (renderer, player, enemies, weapons, HUD, etc.)
โ”‚   โ”‚   โ””โ”€โ”€ texture/        # Texture2D & Sampler
โ”‚   โ””โ”€โ”€ states/             # Game states (Menu, Map Select, Play)
โ””โ”€โ”€ vendor/                 # Third-party libraries (GLFW, GLAD, GLM, ImGui, etc.)

๐Ÿ‘ฅ Contributors

Mag-D-Anas
@Mag-D-Anas
tonynagyy
@tonynagyy
ZiadMontaser
@ZiadMontaser
karimzakzouk
@karimzakzouk
Computer Graphics Course โ€” Cairo University, FCAI โ€” Third Year, Second Semester

About

Wave-based arena FPS built from scratch on a custom OpenGL/C++17 engine with PBR rendering, physics simulation, and skeletal animation.

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors