| assets | ||
| camera | ||
| character | ||
| cmd | ||
| configuration | ||
| floor | ||
| floor-files | ||
| game | ||
| quadtree | ||
| .gitignore | ||
| consignes.pdf | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| README.md | ||
Jeu en Quadtree
Jeu 2D d’exploration développé en Go dans le cadre d’un projet du BUT Informatique.
Contexte
Ce projet a été réalisé dans le cadre de la SAÉ du Semestre 1 du BUT Informatique.
Le projet a été développé en équipe.
Présentation
L’objectif du projet était de développer un jeu d’exploration 2D utilisant une structure de données Quadtree.
Le joueur contrôle un personnage qui se déplace dans un environnement composé de tuiles. Le jeu intègre des obstacles, une caméra, une génération de carte et un système de téléportation.
Fonctionnalités
- Déplacement d’un personnage dans un monde 2D
- Affichage d’un environnement basé sur des tuiles
- Gestion des collisions avec certains éléments du décor
- Génération ou chargement de cartes
- Caméra suivant le personnage
- Portails de téléportation
- Mode debug
- Zoom dynamique
Stack technique
| Composant | Technologie |
|---|---|
| Langage | Go |
| Moteur de jeu | Ebitengine |
| Structure de données | Quadtree |
| Configuration | JSON |
| Tests | Go test |
Architecture
Le projet est organisé en plusieurs modules principaux :
game/: logique principale du jeucharacter/: gestion du personnagefloor/: gestion du terrain et des collisionsquadtree/: structure de données Quadtreecamera/: gestion de la caméraconfiguration/: lecture de la configurationassets/: ressources du jeu
Lancement
Prérequis
- Go 1.21 ou supérieur
- Dépendances nécessaires au fonctionnement d’Ebitengine
Commandes
git clone <url-du-repo>
cd Jeu_en_Go
go mod download
cd cmd
go run .
Pour lancer les tests :
go test ./...
Configuration
Le fichier cmd/config.json permet de modifier certains paramètres du jeu :
- taille de la carte ;
- taille des tuiles ;
- mode caméra ;
- génération de carte ;
- collisions ;
- zoom ;
- téléportation ;
- fichier de niveau utilisé.
Quadtree
Le projet utilise une structure de données Quadtree afin d’optimiser la gestion spatiale des éléments du jeu.
Cette structure permet de diviser l’espace de jeu en zones et de limiter les recherches ou vérifications aux éléments proches du joueur.
Remarque
Ce projet a été réalisé dans un cadre académique afin de mettre en pratique les bases du développement en Go, la gestion d’un jeu 2D et l’utilisation d’une structure de données spatiale.