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
- Download the repo
git clone https://github.com/yourusername/DeepDescent.git
(Creates a local copy of the project on your computer) - Go into the repo folder
cd DeepDecent
(Switches your terminal into the project folder so you can run the build commands) - Install Dependencies (Raylib)
brew install raylib
Installs the Raylib graphics library required to compile and render the game) - 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.
Log in or sign up for Devpost to join the conversation.