Bonjour, après avoir fait plein de test et essayé de faire un RPG avec Irrlicht, je me suis aperçu que coder à l'arrache n'était vraiment pas une solution...
J'ai donc fait appris à utiliser Qt en créant de petits logiciels pour mon usage personnel et j'ai des test d'intégration d'Irrlicht dans Qt. Et me voici donc parti pour réaliser un éditeur de RPG en 3D.
Afin de rester simple (dans mes capacités quoi...), j'ai décidé de partir sur le principe de RPG Maker XP (et VX) et de l'adapter à la 3D.
Voici le principe :
1/ On a une scene, divisée en Map de 32x32 tiles.
2/ Les tiles sont des éléments 3D formant le terrain (le mesh de la Map). Lorsque l'on écrit un tile, on créé une forme 3D et on intègre le tile (dessin 2D) dans la texture. On a donc un terrain modulaire dont le maillage est optimisé à chaque modification afin de limiter le nombre de triangles.
3/ Une Map peut contenir des éléments statiques. Chaque élément statique possède un shader qui est capable d'instancier le mesh. Il suffit alors de lui passer en argument des tableaux d'instances afin de multiplier grâce à la carte graphique les éléments.
Voici des photos du logiciel ainsi que du projet que je réalise avec:
Galerie de photos
Je ferai évoluer le post en fonction de mon avancement. Je ferai certainement une vidéo pour montrer l'utilisation du logiciel.
Prochains objectif:
- intégration de la passabilité des tiles avec génération automatique des triangles sélectors (semi-automatique avec optimisations);
- intégration des "sauts" lorsque l'on arrive sur les petits murets de terre (les joueur sur pokemon comprendront .
Dernière modification par johnplayer (05-06-2016 20:57:23)
Hors ligne
pas mal du tout, ça semble bien avancer ton tool
je verais bien zelda ou ff tactics comme ça !
il y a le support des scripts ?
le chargement des interieur ?
animations des textures (eau) ?
frustumculling des tiles ?
voir chargement/dechargement + cache en dynamique ?
il manque peut-être un lightmapping
Hors ligne
Pour l'instant, il n'y a que les maps (avec un texturing sans gestion de lumière) ainsi que l'ajout d'éléments statiques (avec un texturing simple + instancing par geometry shader). Je ferai évolué les shaders plus tard, je galère trop là-dessus. Pour l'eau, j'y ai pensé mais je ne sais pas comment gérer l'animation avec les différents type de tiles sans faire une usine à gaz (reste aussi à voir l'impact sur les performances).
Je ne prévoie pas de frustum culling des tiles, j'ai opté pour une fusion des tiles de la map avec optimisation du maillage, du coup, ce sera un frustum culling de map (node) avec une distance limite de visibilité (réglable par le joueur).
J'ai passé énormément de temps à trouver une architecture dans mon code afin de ne pas "mélanger" Qt et Irrlicht. De plus, il fallait que l'ajout de fonctionnalité se fasse le plus simplement possible, du coup, j'ai structuré mon code en conséquence et pour un amateur comme moi, c'est pas chose aisée.
Pour en revenir au fonctionnalités, là faut que je mette en place un système de gestion de ressources dans l'éditeur. Je modifie le fichiers xml à la main pour la liste des objets statiques mais il va falloir que je structure ça pour limiter au maximum de mettre des infos "système" dans le fichier de projet.
Pour les scripts, ils seront accessibles pour personnaliser les events. Les events seront des box placées sur la map avec des déclencheurs divers et éxécutant une "action type" ou un script. Les PNJ seront aussi considérés comme des events.
Les intérieurs sont bien évidemment prévus mais pour l'instant je me concentre sur l'extérieur. J'ai des idées pour l'implémentation mais c'est pas assez mûr dans ma tête. De plus, il me faut implémenter d'autres fonctions avant pour avoir toutes les infos nécessaires à la réalisation d'un intérieur.
Le "chargement/dechargement + cache en dynamique" c'est pas d'actualité, ce sera dans le moteur de jeu et à l'heure actuelle, ce n'est pas dans mes cordes. Ceci dit, l'idée reste dans le topic et je me pencherai dessus le moment venu. Je suis toujours preneur d'idées .
Dans tout les cas, je noterai ma progression qui est plutot lente (je suis dessus de puis janvier) et entre le boulot, les soirées et le fait que je vais faire construire, je n'ai plus autant de temps à consacrer à la prog. Mais fonctionnalités après fonctionnalités, ça donnera quelque chose de sympa.
Hors ligne
Salut tout le monde, (enfin si on peut dire, vu l'activité du site -_-')
Je reviens avec la V2 de mon éditeur.
- Toujours un Monde composé de map 64*64*64.
- Chaque map est édité en Tiles
- Possibilité d'ajout d'éléments statiques instanciables
- Possibilité d'ajout d'éléments dynamiques instanciables
- Ainsi que des sons BGM(2D) et BGS(3D)
Les ajouts et sélections peuvent se faire via une liste dans le dock ou à la souris directement.
Tout les éléments objets statiques, dynamiques et sons sont utilisables une fois importés dans la bibliothèque de l'éditeur.
Galerie de photos
Hors ligne
Hey si y'a encore des survivants !!! Je viens pas souvent mais de temps en temps je passe toujours voir si une lumière est pas resté allumé .
Pas mal ton tool, bonne continuation
Hors ligne
Salut salut ! Idem je passe de temps en temps avec l'espoir d’avoirs quelques nouvelles, donc merci à toi !!
Je n'ai plus beaucoup de temps pour bricoler sous irrlicht mais j'ai toujours des idées dans un coin ...
En tout cas je reste dispo pour des conseilles ou donner un coup de patte !
Bon sinon, qu'est ce que tu as prévue de rajouter bientôt ? que reste-t-il à faire ?
système de quest/évènement/png et combat je suppose ?
Hors ligne
Salut les gars! Je suis content de ne pas être seul ^^
Je réfléchis à la suite, je pense faire une partie scénario dans le dock. J'y mettrais des variables globales, des scripts (LUA) et des variables de sauvegarde. Mais ce n'est pas clair dans mon esprit pour le moment. Je dois aussi penser aux PNJ, je ne sais pas s'il seront affecté à une map ou au monde (dans le 2ème cas ils pourront bouger d'une map à l'autre).
Du coup, le scénario serait un ensemble de scripts (comportement PNJ, déclenchement d'événements...). Les scripts posséderaient des conditions de déclenchement, et des actions associés. Restes donc à mettre en place un système d'ID uniques à la création pour chaque map et élément pour pouvoir exercer des actions dessus.
Du coup, la prochaine étapes consiste à mettre le système d'ID uniques en place. Pour le reste, il faut que ça murisse un peu encore dans ma tête ^^
J'avais oublié de préciser mais l'éditeur possède un bouton permettant de générer les "options de map". C'est à dire qu'il incruste sur la shadow texture de la map les ombres des objets et créé les quads de collision.
Hors ligne
Salut,
Je reviens donner des nouvelles vu que j'ai un peu avancé sur mon éditeur.
On peut maintenant ajouter des PNJs, leur attribuer une trajectoire à effectuer en boucle.
Ingame, la collision est gérée avec le sol et le joueur, par contre rien ne l'empêche de traverser les murs s'il est mal configuré.
Il y a eu aussi des améliorations et des corrections de bugs. Ainsi que l'ajout d'ID unique afin de pouvoir appeler et agir sur les éléments dans les scripts qui seront prochainement disponibles .
Galerie de photo
Hors ligne
Super merci de donner de tes nouvelles !!
C'est chouette de voir l'avancer du projet
Bientot un système de script pour les pnj et/ou interaction ?
Hors ligne
Salut, Magun.
Oui, je commence à voir pour créer des events. Je pense que je vais m'inspirer de RPGMaker. J'aurais "juste" à l'adapter à ma structure de jeu.
J'avais pensé à mettre des scripts lua mais plus de liberté veut dire plus de complexité. En plus, pas besoin de faire une documentation si tout est accessible facilement.
Après, le temps que je peux consacrer à la programmation est restreint depuis un peu plus d'un an donc je préfère viser la simplicité afin de voir mon travail avancer et ne pas laisser tomber 😉.
Hors ligne