Un article pour les devs
Alors là, on entre dans un concept purement technique par rapport aux deux précédents articles dédiés au game design et au tooling. Le domaine, c’est le cœur de Tales Of Chaos. Cet article est clairement destiné à un public averti en développement : on parle ici de design patterns et de code.
Si tu n’as jamais touché à du Java ou à de l’architecture logicielle, tu risques d’être un peu perdu. Mais si le sujet t’intéresse, reste quand même : on va essayer de garder ça accessible.
L’architecture hexagonale
Afin de sortir sur Hytale le plus rapidement possible, on voulait absolument avoir le cœur du jeu écrit en Java et fonctionnel au plus vite. Cette fois-ci, c’est du sérieux. On ne peut pas se permettre de vibe coder tout ça et de se retrouver avec une codebase inmaintenable.
La solution qu’on a trouvée, le compromis entre vélocité et code propre, c’est l’architecture hexagonale.
Concrètement, l’architecture hexagonale consiste à créer un module peu couplé à l’extérieur. L’avantage principal : on devient agnostique de la technologie. Notre logique métier ne dépend pas d’Hytale. Elle ne dépend de rien, en fait.
Le principe en pratique
Dans notre architecture, on isole tout le domaine du jeu dans un dossier core. Ce dossier contient toute notre logique propre à Tales Of Chaos : tout ce qu’Hytale ne nous fournira pas nativement.
Ensuite, on a des gateways. Ce sont des interfaces qui simulent ce qu’Hytale devrait nous fournir : spawn d’un joueur, gestion des inventaires, interactions avec le monde… Ces interfaces définissent le contrat entre notre domaine et le monde extérieur.
Le jour où Hytale sort, il nous suffira d’implémenter ces interfaces pour être compatibles avec le jeu. Notre logique métier reste intacte.
Pour les données de jeu qui constituent notre game design, elles sont stockées dans des repositories en dehors du domaine. On y accède via des fichiers JSON. Typiquement, c’est là qu’on définit les stats des classes, les items, les événements du Taleweaver…
La CLI : notre faux Hytale
Comme expliqué dans le précédent devlog, la CLI permet de simuler le jeu sans avoir accès à Hytale. En bref, c’est un faux Hytale qui implémente exactement tout ce que le vrai jeu devrait fournir à notre gamemode.
Quand on spawn un joueur, on fait un faux spawn dans la CLI. Quand on envoie un message, on l’affiche dans le terminal. Quand on déclenche un événement, on log ce qui se passe.
C’est tout. Et c’est suffisant pour tester notre logique métier sans attendre la sortie du jeu.
Une architecture risquée mais assumée
On ne va pas se mentir : cette architecture est assez complexe pour un projet de mod. Je cherchais vraiment à faire quelque chose de nouveau et à prendre de l’avance sur les autres serveurs RP Hytale.
Si ça se trouve, c’est de la merde et on aurait dû faire plus simple. Mais en tout cas, j’aurais essayé de faire en sorte que Tales Of Chaos soit parmi les premiers serveurs à fournir un service de qualité dès le lancement d’Hytale.
Le pari, c’est que cette complexité initiale nous fera gagner du temps sur le long terme. On verra bien.
— Prakkmak