[ C-Engine ] n°5: Créer votre propre décor
Posté le 24/03/2016 08:50
Bienvenue dans ce tutoriel pour apprendre à créer votre propre décor. Si vous n'avez pas encore appris à ajouter une map au C-Engine c'est
-ici-
Etape 1 : Création du tileset.
Un tileset doit être constitué d'un ensemble de briques ( tiles ) de taille fixe. De plus le tileset ne doit être qu'une seule image, il est donc primordial que les tiles soit placés l'un en dessous de l'autre, sans espace pour économiser de la place.
Pour apprendre à créer un bon tileset voici le tutoriel de Siapran qui nous montre une bonne méthode pour créer des tiles.
Tuto de Siapran
Une fois que votre tileset est terminé, il devrait ressembler à ce format :
Etape 2 : Création de la map.
Vous êtes tout excité pour avoir créé votre tileset que vous ne voulez pas en restez la. J'aurai très bien pu vous montrer la méthode de l'âge de pierre pour créer la map mais je ne suis pas sadique ( enfin pas trop, surtout que je n'ai pas envie de le rédiger ). Bref, nous somme en 2016 et la technologie a beaucoup évolué, et il existe le logiciel "Tiled".
Voici un lien pour télécharger ce logiciel :
http://www.mapeditor.org/ .
Après que vous aurez appris à utiliser ce logiciel avec
ce tutoriel , vous voudrez enregistrer votre map et l'insérer dans le C-Engine.
Etape 3 : Conversion de la map.
Dans Tiled, exporter votre map au format ".csv" , ensuite télécharger le convertisseur csv -> C-Engine qui se trouve dans le recoin du C-Engine.
Décompressez le fichier puis coller votre .csv généré dans le dossier convertisseur. Ensuite renommé le "????".csv en "map.csv".
Ensuite exécuté le .bat, il générera un fichier texte du nom de "map.txt".
A l'intérieur du fichier texte se trouve le code à insérer dans le C-Engine pour implémenter sa map comme dans le tuto n°3.
Merci d'avoir suivi ce tutoriel, le prochain portera sur l'ajout d'objectif à votre jeu.
Fichier joint
Citer : Posté le 01/05/2016 15:32 | #
Effectivement le C-Engine peut gérée plus de 250 tiles différents, cependant il va falloir que je modifie un petit peu le code.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".
Citer : Posté le 01/05/2016 17:37 | #
Ok, merci beaucoup.
Voici un petit aperçu de la map :
Il y a la forêt Kokiri, la plaine d'hyrule, le désert et la montagne Goron.
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Citer : Posté le 01/05/2016 17:38 | #
Pas mal , c'est du 8*8 ?
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".
Citer : Posté le 01/05/2016 17:49 | #
Merci
En effet, c'est du 8*8, j'avais commencé un projet en 16*16 (taille des tiles des zelda originaux), mais on ne pouvait afficher que 4*8 tiles à la fois.
Avec des tiles en 8*8, j'en affiche autant que sur gameboy et gameboy color.
Ajouté le 04/05/2016 à 14:13 :
J'ai un petit problème : j'ai appliqué le tuto 3 à la lettre, et j'obtiens ça :
(dans les paramètres de Tiled, pour la numérotation, j'ai indiqué : haut gauche, au lieu de bas droite par défaut, le problème vient peut-être de là)
int Jeu()
{
const unsigned char I_Perso1_1[]={0xe, 0x3f, 0x11, 0x3f, 0x60, 0xff, 0x51, 0x7f, 0x32, 0xbf, 0x1b, 0xff, 0x25, 0x7f, 0x20, 0xff, 0x3f, 0xbf, 0x1b, 0x3f, };
const unsigned char I_Perso1_2[]={0xff, 0xff, 0xf1, 0xff, 0xe0, 0xff, 0xd1, 0x7f, 0xf2, 0xff, 0xfb, 0xff, 0xe5, 0x7f, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, };
Sprite S_Perso1_1( I_Perso1_1 , 10 , 10 );
Sprite S_Perso1_2( I_Perso1_2 , 10 , 10 );
Sprite S_Perso1[]={ S_Perso1_1 , S_Perso1_2 };
Animation A_Perso( S_Perso1 , 2 , 20 );
Object Perso;
const unsigned char tileset[]={
0x3f,
0x60,
...
0xf9,
0xff,
};
bool tileprop[]= { false , false ,false ,false ,false ,false ,false ,false ,false ,false ,false ,false ,false ,false ,false ,false ,false ,false ,false ,false ,true, false ,false ,false ,false ,false ,false ,false ,false ,false ,false ,false ,false ,false ,false
...
false, false, false, true, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, true};
const unsigned char * map[]={
"788686868686868686868686868686868686868686868686868686868686868686868
...
686868686868686868686868686868686868686868686868686868686868686868686868686841<1>\`\`Z_\`_ZZZ_Z\`\`_Z1<1>Z_1<1>1<1>1<1>1<1>ZZ1<1>1<1>1<1>1<1>1<1>1<1>1<1>1<1>Z",
};
Map Niveau;
Niveau.SetMap(tileset , map , tileprop , 8 , 8 , 100 ,64);
Perso.GetTransforms()->SetXY( 50 , 25 );
Perso.GetRender()->SetRender( A_Perso );
Engine Game;
Game.AddObject( &Perso);
Game.AffectMap( &Niveau);
Game.Game();
return 1;
}
extern "C"
{
int AddIn_main(int isAppli, unsigned short OptionNum)
{
Jeu();
return 1;
}
#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum)
{
return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Citer : Posté le 04/05/2016 14:14 | #
Aragorn : awesome. Ta map est juste magnifique !
Citer : Posté le 04/05/2016 14:18 | #
Merci, j'y ai passé pas mal de temps.
Et cette fois ci, je pense bien finir ce zelda dès que j'aurais fini mon bac.Je me suis accordé une semaine de repos après l'épreuve, avant d'attaquer le programme de prépa et les révisions. Du coup j'aurais pas mal de temps libre pour coder pendant cette semaine.
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Citer : Posté le 04/05/2016 14:21 | #
Aragon, tu peux réduire le tileset ? Y'a pas besoin de toutes ces lignes.
Citer : Posté le 04/05/2016 14:25 | #
Je sais, mais le sprite coder ne propose que 2 options : 1ligne= 1rangée de pixel ou toute l'image sur une seule ligne.
Or, en copiant le code de toute l'image sur une seule ligne, soit le sdk crash, soit il n'enregistre que le début du code.
Du coup, je dois prendre la 1ère option.
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Citer : Posté le 04/05/2016 14:39 | #
Ce que je veux dire, c'est que là dans ton code tu peux remplacer pas mal de lignes par un unique …
On s'en fout complet des 150 lignes de sprite, c'est pas ça qui fait bugguer
Citer : Posté le 04/05/2016 14:52 | #
Je ne connaissais pas cette instruction "...". Je vais me documenter pour voir où je peux l'insérer et si cela optimise mon code.
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Citer : Posté le 04/05/2016 15:02 | #
C'est pas une instruction, c'est juste pour pas que le spoiler soit énorme ><
Ajouté le 04/05/2016 à 15:05 :
Ex : char sprite[] = {1, 2, 3, …, 253, 254};
Ça n'empêche pas la compréhension du code, mais ça évite de foutre le bordel sur le forum
Citer : Posté le 04/05/2016 15:07 | #
Ok, je modifie tout de suite.
Ajouté le 04/05/2016 à 15:09 :
That's done !
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Citer : Posté le 04/05/2016 16:31 | #
Bien mieux. J'ai rajouté la balise code, elle sert à ça
Citer : Posté le 04/05/2016 17:14 | #
@Aragorn : Tu n'as rien fait de mauvais , c'est juste que le C-Engine ne gère pas encore 150 tiles, il ne peut supporter que 255 - le code Dec de 0. En effet, c'était pour simplifier l'écriture des maps que j'avais fait cela. Cependant je m' aperçois que le nombre de tiles est devenu trop important et donc qu'il faut que je recode cette partie du C-Engine.
J'aurait aussi besoin du dossier qui contient ton projet car si l'erreur ne vient pas du C-Engine, je vais pouvoir plus facilement t'aider. Ensuite l'erreur que tu as avec ton tileset et sprite coder, c'est un bug de l''editeur de code du SDK, je te conseille d'utiliser un IDE pour écrire ton code.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".
Citer : Posté le 04/05/2016 17:19 | #
Merci de ta réponse rapide.
Pour ce qui est du dossier de mon projet, il ne contient que les fichiers habituels d'un projet + Zelda.cpp, qui contient tout mon code (présent dans le spoiler).
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Citer : Posté le 04/05/2016 17:20 | #
Oui mais j'ai besoin du tileset et de la map, et ça m'évite de devoir créer un projet avec le SDK pour tester ton code.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".
Citer : Posté le 06/05/2016 14:59 | # | Fichier joint
Ok, voici le fichier compressé en pièce jointe.
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Citer : Posté le 08/05/2016 09:50 | #
Aragon tu pourrait me donner le tileset et la map Tiled, pour que je puisse faire des tests ?
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".
Citer : Posté le 08/05/2016 17:04 | # | Fichier joint
Les voilà.
Merci beaucoup pour tout le temps que tu passes à travailler sur le C-engine.
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Citer : Posté le 09/05/2016 09:37 | # | Fichier joint
La map est corrigé, l'encodage est différents, il va falloir que je met à jour le tuto.
Le code est en pièce jointe. Par contre il va falloir que tu modifie ton tileprop car il est mal fait ( à moins que ne pas pouvoir traverser les cases blanches est normal), au lieu de mettre true et false, tu peux aussi mettre 1 pour true et 0 pour false.
- Kirby's DreamLand : Gobe , Gobe , Gobe !!!
- L'invasion Seanchans : Détruit la flotte ennemis a bord du "Danseur des vagues".
Citer : Posté le 09/05/2016 20:03 | #
Merci beaucoup Fife !
Pour ce qui est du tileprop, il est possible que j'ai sauté 1 ou 2 sprites créant ainsi un décalage. Je vais le retravailler.
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun
Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.