Pages: [1]   Bas de page
Imprimer
Auteur Fil de discussion: Ogmo Editor et script  (Lu 2216 fois)
0 Membres et 1 Invité sur ce fil de discussion.
Valryon Hors ligne
Sr. Member
****
Messages: 331


Voir le profil WWW
The World ends with you !

« 01 Juin 2011, 15:55:55 »

Salut !

Je bidouille actuellement un peu quelques bouts de code, avec XNA toujours.

Cette fois j'essaye de faire un moteur de jeu de plate-formes 2D compatible avec l'éditeur de niveau Ogmo Editor(http://ogmoeditor.com/).

Cet éditeur pas mal fait et gratuit génère des fichiers XML pour les niveaux. Un parseur XNA qui s'intégère au ContentPipeline est disponible (http://ogmoeditor.com/forum/index.php?topic=14.0 si ça intéresse quelqu'un) et j'arrive donc à afficher le niveau Ogmo d'exemple dans ma fenêtre de jeu :

Le code est très simple, très très générique (Ogmo se charge de loader les textures, les paramètres, tout. Y'a plus qu'à piocher), je suis content quoi Smiley

Maintenant nouvelle étape : ajouter un comportement aux objets/éléments de ma scène.

Quelle serait, à votre avis, la meilleure méthode pour lier ce code XML généré (dans lequel je peux rajouter des paramètres, genre "(int) numeroEnnemi = 42, pour chaque item) à un bout de script / de code. Idéalement cette solution serait générique.

Pour mieux comprendre et si jamais ça peut aider, le code source est en ligne, à l'adresse suivante :
-> http://www.valryon.fr/telechargements/?did=9

Ce n'est pas super bien documenté et BlueCatGirl est un nom de code, mais ça marche Smiley

Donc pour résumer :
- Niveaux XML compatibles avec OgmoEditor
- Pipeline OgmoXNA4
+ Mes classes qui copient les données chargées par le pipeline
+ Ce que je cherche à avoir : des données métiers, IA, scripts, etc

Les solutions que j'envisage :
- Ajouter des paramètres à mes objets de la scène (genre IA = classe.methode_statique). Simple mais limité
- Ne pas chercher la généricité pour les objets. Si le Pipeline me fournit "ogmo", j'ai quelque part un simple if qui transformera ça en une classe Ogmo, ou joueur. Simple mais non générique, cela rend l'ajout de nouveaux objets pénible puisqu'il faut ajouter autant de conditions.

Je sèche un peu, j'aimerai trouver une solution élégante compatible avec au moins 2 jeux de plate-formes différents tant que je suis dans l'expérimentation...
« Dernière édition: 01 Juin 2011, 16:00:07 par Valryon » Journalisée

Développeur professionnel et passionné de jeu vidéo, auteur de The Great Paper Adventure (PC/X360) :
-> http://www.thegreatpaperadventure.com
archipel Hors ligne
Full Member
***
Messages: 181


Voir le profil WWW
« Réponse #1 : 01 Juin 2011, 17:09:53 »

En C#, il y a un truc qui s'appelle "reflection" qui m'a sorti de quelques problemes : http://msdn.microsoft.com/en-us/library/ms173183(v=vs.80).aspx

je me fous pas de ta gueule hein, ca existe vraiment. par contre, je ne trouves plus l'adresse du tutoriel ou j'avais appris (parce que c'est quand meme chaud)
Journalisée

DevBlog --------------->  Aanaa
Minishlink Hors ligne
Mega Member
***
Messages: 1441


Voir le profil WWW
Quand on veut, on peut !

« Réponse #2 : 01 Juin 2011, 18:00:24 »

OgmoEditor sort des xml au format TMX comme Tiled ou bien ?
Journalisée

Valryon Hors ligne
Sr. Member
****
Messages: 331


Voir le profil WWW
The World ends with you !

« Réponse #3 : 01 Juin 2011, 18:40:00 »

La reflection (réflectivité en FR ?), j'y ai pensé, mais elle n'est pas disponible sur Xbox 360 / WP7, ça serait trop facile sinon Wink

Ogmo génère du XML tout simple. Tu écris un fichier XML de configuration de projet, et tous les niveaux respecterons la structure que tu paramètres.

C'est tout simple quoi Smiley Le seul problème c'est qu'il faut écrire le fichier de projet à la main, ça manque d'un outil.
Journalisée

Développeur professionnel et passionné de jeu vidéo, auteur de The Great Paper Adventure (PC/X360) :
-> http://www.thegreatpaperadventure.com
archipel Hors ligne
Full Member
***
Messages: 181


Voir le profil WWW
« Réponse #4 : 08 Juin 2011, 16:56:31 »

tu as trouvé une solution alors ?
Journalisée

DevBlog --------------->  Aanaa
Zipler Hors ligne
Full Member
***
Messages: 106


Voir le profil
« Réponse #5 : 08 Juin 2011, 17:47:09 »

Je sais pas si c'est la meilleure des méthodes, mais j'ai un truc qui fait à peu près la même chose que ce que tu veux. J'en profite pour partager, et si vous avez un avis sur la méthode je suis aussi preneur Smiley .

(Bon la différence c'est que c'est pour des fichiers TMX chargés par TiledLib (voir sur codeplex).)
Vu que pour des *.tmx il y a la notion de couche d'objet, je traite chaque objet de la carte comme suit.
Je dispose d'une classe MapObjectTranslationManager qui gère la conversion de chaque "objet" de la carte en un objet du gameplay (ennemi, objet). Pour cela chaque objet du fichier *.tmx possède un attribut Type contenant le nom de la classe vers laquelle convertir ainsi que tous les paramètres de construction.
Comme mon MapObjectTranslationManager dispose d'un dictionnaire de convertisseur (implémentant chacun la conversion d'un type d'objet), il pioche dedans et l'utilise. C'est rapide, demande quasiment aucun code.
C'est le convertisseur qui gère les paramètres par défaut etc. C'est pratique car on peut les modifier à la volée si l'on veut (difficulté IA, constantes de compilation d'un script etc...).

Après ce que je fait, c'est que j'ai un content pipeline modifié qui compile les fichiers référencés dans le tmx en faisant un travail équivalent pendant la compilation (scripts, infos des personnages nécessaires, tilesets/spritesheet nécessaires). ça évite de devoir se taper l'ajout des fichiers dans la solution VS.

Donc adieu généricité dans un sens, mais en fait ça donne beaucoup d'avantages.
J'ai pas eu d'autre idée. Si quelqu'un en a une  Wink ...

ps: c'est quoi le concept des fichiers projets de Ogmo?
Journalisée
Valryon Hors ligne
Sr. Member
****
Messages: 331


Voir le profil WWW
The World ends with you !

« Réponse #6 : 08 Juin 2011, 20:33:40 »

Je sais pas si c'est la meilleure des méthodes, mais j'ai un truc qui fait à peu près la même chose que ce que tu veux. J'en profite pour partager, et si vous avez un avis sur la méthode je suis aussi preneur Smiley .

(Bon la différence c'est que c'est pour des fichiers TMX chargés par TiledLib (voir sur codeplex).)
Vu que pour des *.tmx il y a la notion de couche d'objet, je traite chaque objet de la carte comme suit.
Je dispose d'une classe MapObjectTranslationManager qui gère la conversion de chaque "objet" de la carte en un objet du gameplay (ennemi, objet). Pour cela chaque objet du fichier *.tmx possède un attribut Type contenant le nom de la classe vers laquelle convertir ainsi que tous les paramètres de construction.
Comme mon MapObjectTranslationManager dispose d'un dictionnaire de convertisseur (implémentant chacun la conversion d'un type d'objet), il pioche dedans et l'utilise. C'est rapide, demande quasiment aucun code.
C'est le convertisseur qui gère les paramètres par défaut etc. C'est pratique car on peut les modifier à la volée si l'on veut (difficulté IA, constantes de compilation d'un script etc...).

Après ce que je fait, c'est que j'ai un content pipeline modifié qui compile les fichiers référencés dans le tmx en faisant un travail équivalent pendant la compilation (scripts, infos des personnages nécessaires, tilesets/spritesheet nécessaires). ça évite de devoir se taper l'ajout des fichiers dans la solution VS.

Donc adieu généricité dans un sens, mais en fait ça donne beaucoup d'avantages.
J'ai pas eu d'autre idée. Si quelqu'un en a une  Wink ...

ps: c'est quoi le concept des fichiers projets de Ogmo?

Merci pour tes idées, a priori les TMX font la même chose que les levels Ogmo.
Et le content pipeline pour lire tout ça c'est quand même sacrément bien.

Tu as donc en dur quelque par la classe / le type à utiliser... je crois que ça reste la meilleure chose à faire, même si c'est pas top pour la portabilité Langue

Fichier projet = tout ce qui est commun aux niveaux (tilesets, layers, objets disponibles, etc)
Journalisée

Développeur professionnel et passionné de jeu vidéo, auteur de The Great Paper Adventure (PC/X360) :
-> http://www.thegreatpaperadventure.com
Valryon Hors ligne
Sr. Member
****
Messages: 331


Voir le profil WWW
The World ends with you !

« Réponse #7 : 22 Juillet 2011, 15:52:18 »

J'ai en parti répondu à mon problème, j'ai écrit un long pavé sur le sujet Wink

Au final je peux utiliser Ogmo pour générer mes niveaux, et mes types d'objets instanciables dans le jeu sont définis dans un XML. Seule l'interaction et la mise en mouvement du niveau est dans le code.

C'est par là pour ceux que ça intéresse : http://www.valryon.fr/reflexions-sur-larchitecture-dun-jeu-video/
Journalisée

Développeur professionnel et passionné de jeu vidéo, auteur de The Great Paper Adventure (PC/X360) :
-> http://www.thegreatpaperadventure.com
Zipler Hors ligne
Full Member
***
Messages: 106


Voir le profil
« Réponse #8 : 22 Juillet 2011, 16:44:12 »

Post très intéressant, ça donne des bonnes idées Smiley !!
Journalisée
Pages: [1]   Haut de page
Imprimer

Aller à: