Mon développement avance lentement, j’ai tendance à souvent chercher des moyens de rendre mon code plus flexible que le strict nécessaire.
Par exemple, pour éviter de répéter les mêmes boucles sur les chargement des tuiles et des unités de chaque joueur, j’ai créé un système qui me permet de lire un fichier CSV pour savoir quelle tuile/unité placer, et où les placer (en fait il s’agit de simple chaînes de caractères, dans lesquelles chaque « case » est représentée par des caractères séparées par des virgules). Voilà à quoi ça ressemble:
const battlemap = {
terrain: `
2,3,2,3,2,3,2,3,2,3,2,3,2,3,2
3,2,3,2,3,2,3,2,3,2,3,2,3,2,3
2,3,2,3,2,3,2,3,2,3,2,3,2,3,2
3,2,3,2,3,2,3,2,3,2,3,2,3,2,3
2,3,2,3,2,3,2,3,2,3,2,3,2,3,2
3,2,3,2,3,2,3,2,3,2,3,2,3,2,3
2,3,2,3,2,3,2,3,2,3,2,3,2,3,2
3,2,3,2,3,2,3,2,3,2,3,2,3,2,3
2,3,2,3,2,3,2,3,2,3,2,3,2,3,2
3,2,3,2,3,2,3,2,3,2,3,2,3,2,3`,
units: [
`
...,...,...,...,...,...,...,...,...,...,...,...,...,...,...
...,ARC,...,KNT,...,SPR,...,...,...,...,...,...,...,...,...
...,...,...,...,...,...,...,...,...,...,...,...,...,...,...
...,SWD,...,SPR,...,...,...,...,...,...,...,...,...,...,...
...,...,...,...,...,...,...,...,...,...,...,...,...,...,...
...,...,...,...,...,...,...,...,...,...,...,...,...,...,...
...,...,...,...,...,...,...,...,...,...,...,...,...,...,...
...,...,...,...,...,...,...,...,...,...,...,...,...,...,...
...,...,...,...,...,...,...,...,...,...,...,...,...,...,...
...,...,...,...,...,...,...,...,...,...,...,...,...,...,...`,
`
// etc...
}
Les codes de trois lettres sont ensuite comparés à un « dictionnaire » tiré d’un fichier JSON:
{
"KNT" : {
"name" : "Knight",
"img" : {
"blue" : 115,
"red" : 122,
"yellow" : 129,
"green" : 136
}
},
"SWD" : {
"name" : "Swordsman",
"img" : {
"blue" : 114,
/* etc... */
}
Et les numéros qui suivent les couleurs indiquent le numéro de la tuile du tileset de Toen qui correspond au sprite de l’unité.
J’ai bon espoir que cette structure me permette de facilement modifier les stats de mes unités, d’en ajouter de nouvelles et de pouvoir charger différentes maps… Mais il me faudra bien entendu finir le gameplay de base en premier lieu!
Comments (6)
salut, tu codes avec quel langage ?
C’est du Javascript. 🙂
Pareil je me complique souvent la vie pour rien !
en gamejam faut pas se poser ce genre de question mais coder comme un viking à fond les ballons
Sinon tu fait avec Phaser en JS ?
C’est possible oui… Oui c’est avec Phaser, mais les tutos de Gamecodeur ne sont plus à jour (on est en version 3 maintenant), heureusement la doc est plutôt bien fichue.
T’en as peut-etre plus besoin mais voilà un lien qui est moins outdaté que les cours de Phaser sur GC
https://github.com/flashjaysan/memo-phaser/blob/master/memo-phaser.md