J'ai pas mal parlé des données du jeu dans les posts précédant, mais il reste quand même le principal à définir : la manière selon laquelle cela peut être organisé. Déjà, il y a plusieurs sortes d'informations à stocker :
- terrains (nom et image associée surtout)
- unités (caractéristiques, images associées)
- cartes (détail des terrains la composant)
- scénario (carte dans laquelle se déroule le scénario, et liste des unités de départ)
On pourrait mettre tout ça directement dans le code, mais c'est le mal absolu ! Devoir modifier le code à chaque modification du gameplay, c'est bof quand même ! Il faut donc stocker tout ça dans des fichiers, et là, pas mal de choix nous sont permis (texte brut ? xml ? et avec quelle organisation des données ?). Ça pourrait donner ça pour l'arborescence (pas joli à voir, je préviens) :
Donnees
___ Images
______ Unites
_________| fantassin_leger.png
_________| archer.png
______ Terrains
_________| plaine.png
_________| montagne.png
_________| pont.png
___ Unites
______| fantassin_leger.cfg
______| archer.cfg
___ Cartes
______| carte1.map
______| carte2.map
___ Terrains
______| plaine.cfg
______| foret.cfg
___ Scenarios
______| scenario1.cfg
______| scenario2.cfg
Et ça pour les fichiers qui la composent (exemples) :
plaine.cfg :
##################
id=Pl // Utilisé pour identifier le terrain au sein des fichiers .map, et de ceux décrivant les unités (pour connaître leurs capacités de déplacement)
nom=Plaine
image=plaine.png // Sous réserve que le programme sache que les images de terrains ne peuvent se trouver que dans le dossier Donnees/Images/Terrains
##################
fantassin_leger.cfg :
##################
id=Fl // Utilisé dans les fichiers .map pour reconnaître les types d'unités présentes
nom=Fantassin léger // le nom utilisé dans le jeu
image=fantassin_leger.png
HP=800 // Valeurs à la con juste pour l'exemple
ATQ=54545 // idem
DEF=146 // idem
pointsDeplacement=5 // Peut se déplacer de 5 cases au maximum
cout_Pl=1 // Un déplacement d'une case en plaine coûte 1 pt
cout_Mt=1.25 // Un déplacement d'une case en montagne coûte 1.25
[...]
##################
Note pour fantassin_leger.cfg : si le coût de déplacement sur l'un des terrains existants n'est pas renseigné, alors c'est celui par défaut qui doit s'appliquer, cad 1
carte1.map (exemple d'une carte toute pourrie avec 4x4 cases montagneuses au milieu de plaines)
##################
id=carte1
nom=Carte 1
largeur=12 // 10 cases utiles + 2 pour la bordure façon wesnoth sur les côtés
hauteur=12 // idem
Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Mt,Mt,Mt,Mt,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Mt,Mt,Mt,Mt,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Mt,Mt,Mt,Mt,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Mt,Mt,Mt,Mt,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl
##################
scenario1.cfg :
##################
nom=Scénario bidon
carte=carte1 // sous réserve qu'une carte ne puisse se trouver que dans le dossier /Donnees/Cartes
1,1,Cdt,1,1 // Dans l'ordre : position x, position y, id de l'unité (commandant ici), nombre d'unités, numéro de l'équipe la contrôlant
2,1,Ar,100,1 // 100 archers en (2,1), contrôlés par l'équipe 1
1,2,Ar,100,1
2,2,Fl,200,1
10,10,Cdt,1,2
9,10,Ar,100,2
10,9,Ar,100,2
9,9,Fl,200,2
##################
Bon bien sûr, c'est juste pour donner une idée générale à débattre...
- terrains (nom et image associée surtout)
- unités (caractéristiques, images associées)
- cartes (détail des terrains la composant)
- scénario (carte dans laquelle se déroule le scénario, et liste des unités de départ)
On pourrait mettre tout ça directement dans le code, mais c'est le mal absolu ! Devoir modifier le code à chaque modification du gameplay, c'est bof quand même ! Il faut donc stocker tout ça dans des fichiers, et là, pas mal de choix nous sont permis (texte brut ? xml ? et avec quelle organisation des données ?). Ça pourrait donner ça pour l'arborescence (pas joli à voir, je préviens) :
Donnees
___ Images
______ Unites
_________| fantassin_leger.png
_________| archer.png
______ Terrains
_________| plaine.png
_________| montagne.png
_________| pont.png
___ Unites
______| fantassin_leger.cfg
______| archer.cfg
___ Cartes
______| carte1.map
______| carte2.map
___ Terrains
______| plaine.cfg
______| foret.cfg
___ Scenarios
______| scenario1.cfg
______| scenario2.cfg
Et ça pour les fichiers qui la composent (exemples) :
plaine.cfg :
##################
id=Pl // Utilisé pour identifier le terrain au sein des fichiers .map, et de ceux décrivant les unités (pour connaître leurs capacités de déplacement)
nom=Plaine
image=plaine.png // Sous réserve que le programme sache que les images de terrains ne peuvent se trouver que dans le dossier Donnees/Images/Terrains
##################
fantassin_leger.cfg :
##################
id=Fl // Utilisé dans les fichiers .map pour reconnaître les types d'unités présentes
nom=Fantassin léger // le nom utilisé dans le jeu
image=fantassin_leger.png
HP=800 // Valeurs à la con juste pour l'exemple
ATQ=54545 // idem
DEF=146 // idem
pointsDeplacement=5 // Peut se déplacer de 5 cases au maximum
cout_Pl=1 // Un déplacement d'une case en plaine coûte 1 pt
cout_Mt=1.25 // Un déplacement d'une case en montagne coûte 1.25
[...]
##################
Note pour fantassin_leger.cfg : si le coût de déplacement sur l'un des terrains existants n'est pas renseigné, alors c'est celui par défaut qui doit s'appliquer, cad 1
carte1.map (exemple d'une carte toute pourrie avec 4x4 cases montagneuses au milieu de plaines)
##################
id=carte1
nom=Carte 1
largeur=12 // 10 cases utiles + 2 pour la bordure façon wesnoth sur les côtés
hauteur=12 // idem
Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Mt,Mt,Mt,Mt,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Mt,Mt,Mt,Mt,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Mt,Mt,Mt,Mt,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Mt,Mt,Mt,Mt,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl
Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl,Pl
##################
scenario1.cfg :
##################
nom=Scénario bidon
carte=carte1 // sous réserve qu'une carte ne puisse se trouver que dans le dossier /Donnees/Cartes
1,1,Cdt,1,1 // Dans l'ordre : position x, position y, id de l'unité (commandant ici), nombre d'unités, numéro de l'équipe la contrôlant
2,1,Ar,100,1 // 100 archers en (2,1), contrôlés par l'équipe 1
1,2,Ar,100,1
2,2,Fl,200,1
10,10,Cdt,1,2
9,10,Ar,100,2
10,9,Ar,100,2
9,9,Fl,200,2
##################
Bon bien sûr, c'est juste pour donner une idée générale à débattre...