DeepDiver
A downloadable DeepDiver Game
DeepDiver est un petit jeu 2D où le joueur contrôle un plongeur et doit naviguer parmi les dangers sous-marins et collecter des objets. Le but principal est de battre le meilleur score en plongeant dans les abysses.
| Status | Released |
| Author | DeepDiverTeam |
| Genre | Survival, Action, Adventure |
| Tags | 2D, Arcade, Difficult, diver, Painting, Pixel Art, Singleplayer |
| AI Disclosure | AI Assisted, Graphics |
Download
Install instructions
**DeepDiver — Jeu 2D libGDX**
- **Projet :** : Un jeu de survie de plongée de style arcade 2D construit avec Java 8 et libGDX.
- **Langage :** Java 8
- **Framework :** libGDX

**Aperçu**
** Description :**
DeepDiver is a small 2D game where the player controls a diver and navigates underwater hazards and collectibles. The main idea is to beat the best score by diving into the underwater abyss. The codebase follows a typical libGDX multi-module layout with game logic in the `core` module and a desktop/lwjgl3 launcher in the `lwjgl3` module.
**Caractéristiques**
- **Player mechanics:**: Diver control, spawning of enemies/obstacles, collectible coins.
- **Entities:**: Arrows, Bubbles, Coins, Enemies (sharks), Friendlies (fish, eel, turtle), Obstacles (jellyfish, octopus).
- **Screens & UI:**: Menu, Pause, Game Over, HUD, in `core/src/main/java/fr/deepDiver/UserInteface`.
- **Audio & Assets:**: Assets are under the `assets/` folder (graphics, sounds, music).
**Controls**
- **Keybinds:**: Key handling and default bindings are implemented in `core/src/main/java/fr/deepDiver/UserInteface/keybinds/KeybindManager.java`.
- **Notes:**: The exact key mapping can be inspected and customized in the `KeybindManager` class.
**Build & Run**
- **Requirements:**: JDK 8, Gradle wrapper (bundled), OS supported by libGDX.
- **Build (all modules):**
```bash
./gradlew build
```
- **Run (desktop/lwjgl3 module):**
```bash
./gradlew :lwjgl3:run
```
- **Run core module tests / compile:**
```bash
./gradlew :core:build
```
- If the `:lwjgl3:run` task isn't configured, open the project in your IDE (IntelliJ/Android Studio) and run the launcher class in `lwjgl3/src/main/java/fr/deepDiver/lwjgl3` (e.g. `Lwjgl3Launcher`).
**Tests**
- **Test (all modules):**
```bash
./gradlew test
```
- **Test (separated module):**
```bash
./gradlew :core:test --tests 'fr.deepDiver."PackageName"."TestName"'
```
**Project Structure**
- **Root:**: Project root contains the Gradle build files (`build.gradle`, `settings.gradle`), the Gradle wrapper (`gradlew`, `gradlew.bat`), and top-level `assets/` and module folders (`core/`, `lwjgl3/`, `lwjgl3/`).
- **Core module (`core/`) — game logic:**: Source for the game lives in `core/src/main/java/fr/deepDiver`.
- **Key classes:**: `Main.java`, `Diver.java`, `GameObject.java`, and module-level entities and spawners.
- **Entity packages:**: `Arrow/`, `Bubble/` (and `BubbleSpawner`), `Coin/` (and `CoinSpawner`), `Enemy/` (and `EnemySpawner`, `MakoShark`, `WhiteShark`), `Friendly/` (and `FriendlySpawner`, `Fish`, `Eel`, `Turtle`), `Obstacle/` (and `ObstacleSpawner`, `Meduse`, `Octopus`).
- **UI & screens:**: `UserInteface/` contains `UserInterface.java`, `MenuScreen.java`, `PauseScreen.java`, `GameOverScreen.java`, `MusicManager.java`, `ButtonFactory.java`, and the `keybinds/KeybindManager.java`.
- **LWJGL3 launcher (`lwjgl3/`) — desktop launcher & resources:**: Desktop launcher source is under `lwjgl3/src/main/java/fr/deepDiver/lwjgl3` (run `Lwjgl3Launcher`), and packaged resources are in `lwjgl3/src/main/resources` (used for shipping assets with the desktop build).
- **Assets:**: Shared runtime assets (textures, sounds, music) are in the top-level `assets/` folder. The launcher module also contains a resources copy for bundling.
- **Build outputs & tooling:**: Each module has its own `build/` folder for compiled classes and jars. Use the included Gradle wrapper (`./gradlew`) to build and run tasks consistently across environments.
- **Adding new entities:**: Follow the existing pattern: create an entity class under the appropriate package (e.g. `core/.../Enemy/`), add a corresponding spawner in the `Spawn/` package if needed, and include any new assets in `assets/`.
**Development Notes**
- The game targets Java 8; ensure `JAVA_HOME` points to a Java 8 JDK for consistent builds.
- Assets are required at runtime; when running from an IDE, ensure the `assets` folder is on the runtime classpath or copied to the working directory.
- Code is organized by entity types (e.g. `Arrow/`, `Bubble/`, `Enemy/`, `Friendly/`, `Obstacle/`, `Spawn/`) — add new entities by following existing patterns (entity class + spawner).
**Contributing**
- **How to help:**: Open issues for bugs or feature ideas. Create branches from the main branch and submit pull requests.
- **Coding style:**: Follow existing project conventions (package layout and naming). Keep changes focused.
**License & Contact**
- This project was created and developped as an Epitech learning project.
- For questions or collaboration, inspect the project files or contact the repository owner.
---
**Authors:**
- **Dmytro Sorokine :**
- https://dmytrosorokine.infinityfreeapp.com/
- https://github.com/SorokineDmytro
- https://www.linkedin.com/in/dmytro-sorokine-040536303/
- **Alexandre Crapanzano :**
- https://alex-crapanzano.netlify.app/
- https://github.com/A-Crapanzano
- https://www.linkedin.com/in/alexandre-crapanzano-89b856241/
- **Driss Costa :**
- https://kaleidoscopic-baklava-e8d693.netlify.app/
Leave a comment
Log in with itch.io to leave a comment.