DeepDecent : The Abyss

A survival-action submarine game built in C using the Raylib framework. Navigate the crushing depths, manage critical life-support systems, and survive random deep-sea emergencies to reach the bottom of the ocean This is my first project using C language and was created as a beginner friendly exploration of GUI and game making environment in C.


Features

  • Dynamic Pilot HUD (Heads Up Display) : Features a custom-built dashboard for monitoring critical submarine vitals ($Fuel$, $O_2$, $Hull$) and a real-time depth/pressure gauge
  • Active Dodging Mechanic : Use Arrow Keys to navigate the submarine’s view-port and avoid falling sea life and underwater hazards
  • Deep-Sea Events : Encounter 8+ unique emergency scenarios (Giant Squids, Hull Breaches, Engine Overheating) with a 3-choice decision system
  • Pressure System : Difficulty increases with depth; hull damage becomes more lethal the deeper you dive
  • High Score Tracking : Automatically saves your deepest dive to a local file (highscore.txt) to track your progress

Project Structure

  • DeepDecent -> main project folder
  • src/ -> Contains main.c (Core game logic)
  • Makefile -> Build script for easy compilation
  • .gitignore -> Excludes executables and temp files from the repository
  • highscore.txt -> Generated file to store your records

Installation and Setup

  1. Download the repo
    git clone https://github.com/yourusername/DeepDescent.git
    (Creates a local copy of the project on your computer)
  2. Go into the repo folder
    cd DeepDecent
    (Switches your terminal into the project folder so you can run the build commands)
  3. Install Dependencies (Raylib)
    brew install raylib
    Installs the Raylib graphics library required to compile and render the game)
  4. Build and Run the app
    The project includes a Makefile to handle the complex Raylib flags automatically
    - To compile and run the game immediately : make run
    - To just compile the executable : make
    - To clean up the project (delete the executable) : make clean

Controls

  • ENTER : Navigate menus / Restart game
  • ARROW KEYS : Move the submarine reticle in the porthole to dodge obstacles
  • 1, 2, 3 : Select choices during Emergency Events

Winning Condition

Reach a depth of 10,000 meters without letting any of your vitals drop to 0% or letting the submarine flood completely.


Requirements

  • C Compiler (Clang or GCC): Required to translate your C code into a playable machine executable
  • Raylib 5.0+: The graphics library used to render the submarine, HUD, and ocean animations
  • Make: The build tool used to process the Makefile and automate compilation

Future Improvements

  • Sound Effects & Music: Integrating raylib audio modules for sonar pings, hull-creaking noises, and an atmospheric deep-sea soundtrack.
  • Upgradable Submarine: A shop system where players can spend "research points" gained from deep dives to increase maximum Fuel or Oxygen capacity.
  • Save/Load System: Moving beyond just a high score to allow players to save their current depth and inventory status.
  • Procedural Hazards: Introducing more varied obstacles in the dodging phase, such as moving jellyfish swarms or sudden thermal vents.
  • Visual Effects: Adding particle systems for bubbles, light-flickering during low power, and a "cracked glass" overlay when the hull integrity is low.

Built With

Share this project:

Updates