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.

Download

Download
DeepDiver.exe 56 MB

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

 
![Logo DeepDiver](lwjgl3/src/main/resources/diverLogo.png)

**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/

- https://github.com/Driss2003costa

- https://www.linkedin.com/in/driss-costa

Leave a comment

Log in with itch.io to leave a comment.