Skip to content

Latest commit

 

History

History
146 lines (110 loc) · 6.47 KB

README.md

File metadata and controls

146 lines (110 loc) · 6.47 KB

Game Engine & Maze Runner

Table of Contents


Game Engine Features 🎮

Physics ⚛️

  • Full Collision System: Implementing a robust collision detection mechanism based on bounding boxes. Bounding boxes are axis-aligned rectangular prisms that encapsulate the geometry of game objects. This approach efficiently determines intersections between these boxes, providing accurate detection of mesh collisions.
  • Collision Handling: Integrates comprehensive collision detection across physical components, enabling border handling and object picking mechanisms.

Lighting 🔦

  • Light Sources:

    1. Directional Light: Uniform light emitted in a specific direction with consistent intensity across the entire scene.
    2. Point Light: Emulates a light source originating from a point, with intensity decreasing with distance from the source.
    3. Spotlight: Mimics a focused beam of light emitted within a defined cone angle, with intensity attenuating both with distance and angle from the center of the cone.
  • Lit Materials 🎨: Each material integrates 3 texture inputs to implement the Phong lighting model:

    1. Albedo: Defines the diffuse color and texture properties of the material.
    2. Specular and Roughness: Controls the metallic properties of the material, specifying its specular reflection and surface roughness.
    3. Ambient Occlusion: Enhances shading by simulating areas where light is occluded or scattered, adding depth and realism to textures.
    4. Emissive: Allows materials to emit light, enhancing their appearance and enabling the simulation of glowing or emissive surfaces.
  • Lighting Shaders 🖥️: Utilizes vertex and fragment shaders to calculate pixel intensity based on material properties. These shaders ensure accurate color representation for lit materials, incorporating diffuse, specular, ambient occlusion, and emissive effects as defined by the material textures.

Sound 🎵

  • Sound System Implementation: Utilizes the miniaudio.h header-only library to implement a comprehensive sound system.
    • Handles playback, stopping, integration, and concurrent management of multiple sound sources.

Text Rendering 📝

  • Dear ImGui Integration: Implements text rendering using Dear ImGui for displaying text on small windows above the main game window.

Post-Processing 🖼️

  • Vignette Effect: Applies a vignette effect to enhance the focus on the center of the screen by darkening the edges.

  • Color Saturation Enhancement: Improves the saturation of pixel colors to make visuals more vibrant and vivid.

  • Fog Effect Addition: Introduces a fog effect to simulate atmospheric conditions, enhancing depth and atmosphere in the game environment.

Game 🎲

Controls 🕹️

  • W: Move forward.
  • A: Move left.
  • S: Move backward.
  • D: Move right.
  • F: Toggle flashlight.
  • M: Control music.
  • Left Mouse Click and Move: Rotate view.

Game Scenario 🎯

  1. Collect all normal keys.
  2. Obtain the master exit key.
  3. Open the exit door.
  4. Collect coins to enhance score (optional).
  5. Gather power-ups to aid your progress.
  6. Complete objectives before the timer runs out.

Create Custom Mazes 🧩

Go to assets/mazes and create a maze of your choice using the following symbols:

  • p : Portal
  • k : Key
  • m : Master key
  • | : Vertical wall
  • - : Horizontal wall
  • o : Coins
  • r : Rocket
  • s : Speed boost
  • . : Empty space

Powerups

  1. Speed Powerup: Increases player speed.
  2. Portal Powerup: Enables passage through walls.
  3. Gravity Powerup: Provides a higher view of the maze.

Game Video 🎥

Watch the Game Video

Technologies Used 🛠️

  • GCC GCC: GNU Compiler Collection for compiling C++ code.
  • OpenGL OpenGL: Graphics library used for rendering 2D and 3D vector graphics.
  • C++ C++: Programming language used for game engine development.
  • CMake CMake: Cross-platform build system used to manage the build process.
  • Dear ImGui: GUI library used for text rendering and UI elements.
  • miniaudio miniaudio: Header-only library used for sound playback and management.

✍️Contributors

Omar Said
Omar Said
Ebram Atef
Ebram Atef
Ibraam Nashaat
Ibraam Nashaat
Michael Ehab
Michael Ehab