Les news

Moteur RPG - Refonte du code

Publié par Suisei le 24/11/2017 à 16h00

Bonjour tout le monde !

Je viens vous donner quelques nouvelles à propos de mon moteur de jeu RPG.
Depuis un peu plus d'un an je me suis lancée dans la refonte du code. L'idée, c'est de rendre le code plus propre et modulaire pour pouvoir ajouter de nouvelles fonctionnalités plus facilement. Je voulais aussi le fusionner avec une bibliothèque d'interface graphique que j'avais développée il y a plusieurs années pour Javascript. Ça, ça a bien avancé.

J'en ai aussi profité pour ajouter de nouvelles fonctionnalités et aussi pour opérer quelques gros changements techniques. Et ça, ça demande beaucoup plus de boulot. x)
J'ai incorporé un système de scripting d'animations 2D. C'est opérationnel et c'est désormais utilisé sur les cinématiques d'intro et de menu du jeu. Ho, rien de compliqué pour le moment, juste des fondus noirs et une translation sur le logo pour dire que ça marche. x) On peut même les mettre en pause ou les sauter avec la touche échappement.
J'ai modifié le système de chargement des zones de jeu pour pouvoir proposer un monde ouvert (pas d'écran de chargement entre 2 zones de jeu sauf si on passe de l'extérieur à l'intérieur et inversement ou si on se téléporte). Ça, ça marche aussi. :)
Et enfin, j'ai changé de système d'affichage. J'utilise webGL (la version pour navigateur d'OpenGL), qui permet d'exploiter la carte graphique. La balise canvas 2D de base du HTML5 commençait un peu à crouler sous la quantité de grandes images que je lui imposais. L'intégration de webGL, c'est fait, ça marche aussi. Là où le boulot n'est pas fini c'est pour la réadaptation de l'affichage de mon monde à cette technologie.

L'affichage de l'environnement de jeu, parlons-en.
En fait, s'il s'agissait seulement de réafficher le jeu comme avant, ce serait déjà fini. Seulement, j'ai aussi opéré un changement dans le mapping de mon monde et j'ai incorporé un système de dénivelé.
En fait, avant, il s'agissait d'un monde à plat, et maintenant il y a des collines, des montagnes, des falaises... Des dénivelés quoi. Là où ça pose problème, c'est que jusqu'à présent j'utilisais un affichage en projection orthogonale (en somme, sans perspective) comme dans les vieux RPG japonais (Final Fantasy I à VI par exemple).
Comme ceci.

Capture de la version 0.22 actuellement en ligne.

Notez : Pas de perspective sur la maison. Les lignes sont parallèles plutôt que de rejoindre un point de fuite.
Quand tous les éléments de décors affichés sont proches les uns des autres, ça fonctionne, ce n'est pas dérangeant.
Avec le système de dénivelé par contre, on risque de se retrouver sur le même écran avec des éléments proches, si notre personnage se balade sur une haute montagne, et des éléments très loin, dans la vallée. En projection orthogonale, tout reste à la même taille. Ce sera visuellement plus que dérangeant pour le joueur. Il va être complètement paumé parce qu'il ne peut plus jauger correctement les distances et ce sera anti-immersif et injouable.

J'ai donc essayé une autre solution.
Je suis passée à de la vraie 3D avec une vraie perspective.
J'avais dans l'idée de mélanger un environnement 3D avec des éléments 2D. Comme dans les vieux FPS du début des années 90 (comme DOOM ou Wolfenstein 3D) sauf que ma caméra regarde toujours dans la même direction. Il y a quelques tentatives de faire ce genre de mélange avec des graphismes moins pixélisés dans des projets indépendants.

J'ai fini de développer l'affichage du terrain et ça donne ceci.

Capture de la version 0.23 en cours de développement.

Ça peut peut-être donner des choses intéressantes à condition de rester dans des graphismes très stylisés.

Là où les problèmes vont arriver, c'est quand je vais devoir intégrer des bâtiments. Autant, les petits éléments comme les personnages ou les arbustes passeront bien en 2D, autant, les bâtiments, ça ne sera pas possible, il faut absolument qu'il soient en 3D. Déjà, ça, ça va demander beaucoup de boulot en plus.
Là où ça va être encore plus compliqué, c'est que je suis obligée de gérer l'ordre d'affichage des facettes de mes objets 3D (pour qu'une facette éloignée n'apparaisse pas devant une facette proche), parce que l'option de contrôle de la profondeur sur webGL est pétée (ça marche sur des scènes très simples, mais sur mon bout de terrain que je viens de vous montrer, ça part en sucette).
Autant pour le terrain décomposé en cases, c'était facile, autant avec des faces qui occupent plusieurs cases dont certaines en biais (pour les toits par exemple), ça va juste être un calvaire. Il y a 2 solutions pour ça, soit dès le début définir les objets 3D en facettes élémentaires, soit créer un système de découpe automatique de ces faces en facettes élémentaires. Dans un cas comme dans l'autre, il va y en avoir pour des semaines de développement.
Bref ! Je pense que si je continue sur cette voie je vais m'emmêler les pieds dans de la technique pure et je ne suis pas prête de m'occuper de la partie la plus intéressante, à savoir la mécanique de jeu et le contenu aussi bien narratif que visuel.

En fin de compte, je vais revenir sur de la 2D en projection orthogonale, comme avant. Les dénivelés, je vais les garder, mais pour qu'il n'y ait pas de problèmes visuels je ferai en sorte qu'ils soient toujours faibles et ne dépassent pas une ou deux cases de hauteur sur une même portion de carte.
Mieux vaut faire simple mais maîtrisé, ça n'empêche pas de faire des bons jeux. :D

Voilà pour les nouvelles sur mes projets de jeu.
Dorénavant j'essaierai de vous tenir au courant plus souvent sur ce projet là, même s'il n'y a pas de nouvelle version testable à chaque fois histoire que vous sachiez qu'il vit toujours. :)

Sur ce, je vous souhaite un bon week-end et à bientôt !

Suisei - Killfaeh

Voir les commentaires

Ouverture d'une section pour le prototype RPG

Publié par Suisei le 14/03/2017 à 14h57

Bonjour tout le monde !

Aujourd'hui, je vous annonce l'ouverture d'une nouvelle section sur suiseipark.com ! =D

Il s'agit d'un espace dédié à mon prototype RPG. Ce jeu avec le petit bonhomme qui marche et fouille dans des coffres et que je mets à jour aussi souvent que possible. Ce jeu qui me sert à développer un moteur RPG 2D (pour des jeux comme Baldur's Gate, Final Fantasy et compagnie).

Jusqu'à présent je vous tenais au courant de ses mises à jour via facebook en vous donnant un lien direct vers une page qui lance le jeu. Pas très confortable quand on souhaite le retrouver plusieurs jours plus tard.
Désormais, vous pourrez tout retrouver dans ce nouvel espace. :)
Pour y accéder, vous pouvez cliquer sur Prototype RPG dans le menu déroulant Jeux de la barre de menu en haut ou dans le pied de page ou encore en cliquant sur Jeux à l'accueil de suiseipark.com.
Vous tomberez sur une page d'accueil qui ressemble à ceci.

De là, vous pourrez accéder au jeu, à un fil d'actualité dédié, à une page de présentation du projet (dans A propos) ainsi qu'au manuel du jeu.
A l'avenir, je prévois aussi de développer un bug tracker. Un espace qui permettra de déclarer les bugs rencontrés, d'échanger et de suivre leur correction.

J'en ai profité pour apporter quelques petites modifications au jeu en lui même : des modifications nécessaires à son insertion dans le site, une correction d'un petit bug d'affichage dans le menu pause et l'ajout d'un bouton de retour au site dans les menus du jeu.

Je vous souhaite une bonne promenade dans ce nouvel espace et à bientôt ! :)

Suisei - Killfaeh

Voir les commentaires