Chef-d'œuvre - Programmation Multimédia Par Diarra Konte (12310522)
Fade To Dark est un jeu de survie en 2D développé en Python avec la bibliothèque Pygame. Le joueur évolue dans un donjon généré en pixel-art (vue de dessus). La mécanique centrale du jeu repose sur la dégradation progressive de l'image : l'écran s'assombrit peu à peu autour du joueur, simulant une perte de champ de vision et augmentant la difficulté.
L'objectif est de survivre le plus longtemps possible en maintenant son champ de vision. Le joueur doit collecter des objets spécifiques (boules rouges) pour ralentir la dégradation de l'image, tout en accumulant des points via la collecte d'étoiles.
- Flèches directionnelles : Déplacement du personnage
- Entrée : Lancer la partie
- Échap : Retour au menu principal
- R : Rejouer (depuis l'écran de Game Over)
Gestion de la dégradation Une vignette noire se referme progressivement sur le joueur. Si cette dégradation atteint 100% (écran totalement noir), la partie est terminée (Game Over).
Les objets
- Boules Rouges : Réduisent le niveau de dégradation de 20%. Elles sont vitales pour la survie. Le système assure qu'une boule rouge apparaît toujours si aucune n'est présente sur la carte.
- Étoiles : Rapportent 100 points au score. Cependant, la collecte d'étoiles accélère le jeu : toutes les 3 étoiles ramassées, la vitesse de dégradation augmente de 30%.
Environnement Le jeu se compose de 4 salles interconnectées. Le joueur peut naviguer librement entre elles via des portes. Les décors sont générés procéduralement mais ne comportent pas de collisions pour ce prototype.
Ce projet a été réalisé dans le cadre du cours de multimédia pour mettre en pratique la manipulation d'images et de pixels.
L'intégralité des assets graphiques n'a pas été dessinée dans un logiciel externe, mais générée par code (Python + Pillow) pixel par pixel :
- Salles : Générées en 384x384 pixels.
- Sprites : Personnage (32x32) et objets générés programmatiquement.
- Format : Les images sont sauvegardées en PNG pour gérer la transparence (canal Alpha).
- Mise à l'échelle (Scaling) : Les images basse résolution sont agrandies (Facteur x2) à l'affichage pour conserver un style "Pixel Art" net sans flou.
- Alpha-Compositing : La vignette de dégradation utilise la superposition de surfaces avec transparence (canal Alpha) pour créer l'effet d'obscurité progressive.
- Opérations par blocs : L'effet de dégradation est calculé par blocs de pixels pour renforcer l'esthétique "rétro" et optimiser les calculs.
main.py: Entrée principale et boucle de jeu.gestion_objets.py: Logique de spawn et de collision des entités.player.py: Script de génération du sprite du joueur.Salle/: Scripts de génération procédurale des salles.UI/: Gestion des interfaces (Menu, Aide, Game Over).
Prérequis : Python 3.10 ou supérieur.
-
Cloner le dépôt :
git clone https://github.com/DiarraKonte/PixelDonjon.git cd PixelDonjon -
Installer les dépendances :
pip install pygame pillow
-
Lancer le jeu :
python main.py
Ce projet a été réalisé sous une contrainte de temps d'environ 10 heures.
- Génération Bitmap : La création d'images pixel par pixel via le code a demandé une gestion rigoureuse des coordonnées.
- Équilibrage : La gestion de la vitesse de dégradation par rapport au spawn des objets a nécessité plusieurs ajustements pour rendre le jeu jouable mais exigeant.
- Simplifications : Pour respecter les délais, les collisions avec les éléments du décor ont été désactivées et les variations entre les salles limitées.
Projet universitaire - Université Sorbonne Paris Nord