Ethynd: Sofiane

Introduction

Présentation du Projet

Le projet est assez simple.
Le but "explicite" est de créer un RPG.
En realité il s'agit de s'immerger dans le développement du jeu vidéo.

Mon Rôle

Je suis le créateur de l'objet Map, ainsi que de l'objet Hitbox.
J'ai également introduit le groupe à la programmation orientée objet.

Composition d'une Map

Les Couches

Une Map est composée de 4 couches décoratrice et d'une 5ème couche de Hitboxs.
Les 4 couches décoratrices (= couches de tuiles) sont nommées respectivement 0, 1, 2, 3.
Les couches 0, 1, 2 constituent l'arrière plan. La couche 3 est le premier plan.

Stocker/Afficher une Map

Le CSV et le Tileset

Un tileset est un regroupement de plusieurs tuiles. (Tileset Complet)
Ces tuiles sont découpées et assignées à un identifiant.
Les maps sont modélisées à l'aide de fichiers CSV stockant sous forme d'un tableau l'identifiant et la position de chaque tuiles.
Chaque couche de tuile est stockée dans un fichier CSV différent.
Une map standard est donc composée de 4 fichiers. nom_0.csv, nom_1.csv etc.

Charger une Map pour l'afficher

On va donc parcourir chaque fichier CSV d'une map et stocker chaque valeur dans une matrice. Il y a une couche par matrice.
Ensuite, on va parcourir les matrices pour coller chaque tuile correspondant aux identifiants contenues dans cette dernière sur une surface pygame.
On utilise deux surfaces. Une surface arriere plan pour les couches 0, 1, 2 et une surface premier plan pour la couche 3.
Il suffit donc d'afficher ces surfaces pour afficher la map.

La Caméra

Une Map amovible

Il faut savoir que pygame manipule chaque élément a partir de son coin haut gauche.
La map bouge. En effet, c'est grâce à la camera (2 variables de l'objet Map) que cela est possible.
Une camera représente le décalage entre le point 0 du repère pygame et le point 0 de la map.

Les Animations

Des Matrices Dynamiques

Les Matrices changent au fil du temps.
En conséquence, les tuiles de la map changent: Il y a des animations.
C'est grâce à un dictionnaire que nous faisons cela.
Les Matrices sont parcourues sont changées avec un dictionnaire qui indique la tuile suivante.
Pour optimiser le tout, on regénère l'image des tuiles pour faire la map.

Les Collisions

Des Matrices Dynamiques

On va parcourir la matrice et vérifier si les tuiles ont des collisions.
Si c'est le cas alors on va créer un rectangle pygame et un masque à l'aide de l'objet Hitbox.
On pourra donc utiliser ces éléments pour vérifier si il y a collision entre deux hitboxs.

Conclusion

À propos du travail de groupe

J'ai bien aimé le travail de groupe en général.
Le travail a été partagé en fonction des capacités de chacun.
La création au niveau informatique en groupe est réélement satisfaisante.

Mon avis personnel

L'immersion dans la programmation fut "brutale", nous avons abordé des notions plus ou moins abstraites (Objets, Héritage).
Cependant, après s'être entrainé à maitriser ces éléments, la programmation en python parait beaucoup plus facile.
C'est un tout nouveau monde, une nouvelle facon de travailler qui me plaît, de plus internet propose énormément de ressources utiles.

Problèmes rencontrés

Comme dit au dessus, certains éléments abstraits ont pu nous perturber au départ, mais après maitrise de ces derniers tout est devenu plus facile.
Cependant certaines choses restent obscures. Par exemple, l'asynchrone et le multi-threading pour améliorer les performances, l'optimisation du code etc.

Retour au sommaire