Projet réalisé par Kenan Ammad et Gauthier Defrance
Lien du projet : https://github.com/For-The-Oil
- Présentation du projet
- Architecture générale
- Utilisation
- Serveur
- Client Android
- Architecture des activités
For The Oil est un projet de jeu vidéo Android multijoueur en 3D, développé dans le cadre d’un projet universitaire (SAE – 2025, CY Paris Université).
Le projet repose sur :
- Un client Android
- Un serveur applicatif Java TCP
- Une base de données PostgreSQL
- Une architecture client–serveur autoritaire
Le serveur est le seul détenteur de la vérité :
il valide les actions, synchronise les clients et empêche toute modification locale frauduleuse.
Toutes les communications entre joueurs transitent obligatoirement par le serveur.
La communication réseau est assurée par la bibliothèque KryoNET, permettant l’échange d’objets sérialisés de manière performante.
- Client Android
- Interface utilisateur
- Rendu 3D
- Envoi des actions joueur
- Serveur Java
- Validation des actions
- Synchronisation des états
- Gestion des parties et des joueurs
- Base de données PostgreSQL
- Comptes utilisateurs
- Decks
- Cartes débloquées
- Statistiques
La base de données est hébergée chez AlwaysData.
Un serveur applicatif doit impérativement être lancé pour pouvoir utiliser l’application.
Sans serveur :
- L’application ne pourra pas fonctionner correctement
- La connexion échouera systématiquement
Pour lancer votre propre serveur :
- Recréez une base de données à partir du dossier
Database - Modifiez le fichier de configuration du serveur
- Lancez le serveur Java
Une fois le serveur actif :
- Renseignez l’IP et le port dans l’application
- Connectez-vous avec vos identifiants
- Accédez au jeu
Message attendu au démarrage du serveur :
Liste des commandes disponibles côté serveur :
- Jackson – Sérialisation / désérialisation JSON
- PostgreSQL – Base de données
- HikariCP – Pool de connexions
- jBCrypt – Hashage des mots de passe
- Artemis-ODB – Architecture ECS (Entity Component System)
L’utilisation d’Artemis-ODB permet d’optimiser fortement les performances, aussi bien côté serveur que côté client.
Le client Android est structuré autour :
- De plusieurs Activities
- De nombreux Fragments
- De ViewPager2 pour la navigation horizontale
Cette organisation améliore la lisibilité du code et l’expérience utilisateur.
-
LibGDX
- Rendu 3D
- OpenGL ES
- Gestion des modèles et scènes
-
Lottie
- Animations vectorielles
- Écrans de chargement
- Fond animé du menu principal
Schéma simplifié des activités et fragments :
La SplashActivity est affichée au lancement de l’application.
Fonctionnalités :
- Tentative de reconnexion automatique
- Vérification des identifiants
- Redirection vers l’écran de connexion en cas d’échec
La LoginActivity est composée de trois fragments :
La HomeActivity correspond à la phase de préparation avant la partie.
Choix du mode de jeu et du deck actif.
Création, modification et visualisation des decks.
Affichage de toutes les entités du jeu.
Attente de joueurs avant le lancement de la partie.
La GameActivity gère le déroulement de la partie.
- LibGDXFragment : rendu 3D OpenGL
- Fragments UI : HUD, menus, interactions
-
Artemis-ODB (Entity Component System)
https://github.com/junkdog/artemis-odb -
Lottie (animations)
https://github.com/airbnb/lottie-android -
Jackson (JSON)
https://github.com/FasterXML/jackson -
PostgreSQL JDBC Driver
https://github.com/pgjdbc/pgjdbc -
HikariCP (connection pool)
https://github.com/brettwooldridge/HikariCP -
jBCrypt (hashage des mots de passe)
https://github.com/jeremyh/jBCrypt
-
Android Studio
https://developer.android.com/studio -
AlwaysData (hébergement base de données)
https://www.alwaysdata.com
-
Android Developers
https://developer.android.com -
OpenGL ES
https://www.khronos.org/opengles
Les captures d’écran et assets visuels présents dans ce dépôt ont été réalisés dans le cadre du projet For The Oil et sont utilisés uniquement à des fins pédagogiques et démonstratives.













