URL: https://linuxfr.org/news/je-cree-mon-jeu-video-e15-j-arrete Title: Je crée mon jeu vidéo E15 : J'arrête... Authors: rewind Benoît Sibaud et palm123 Date: 2015年08月30日T14:08:25+02:00 License: CC By-SA Tags: gamedev Score: 46 «Je crée mon jeu vidéo» est une série d'articles sur la création d'un jeu vidéo, depuis la feuille blanche jusqu'au résultat final. On y parlera de tout : de la technique, du contenu, de la joie de voir bouger des sprites, de la lassitude du développement solitaire, etc. Vous pourrez suivre cette série grâce au [tag gamedev](http://linuxfr.org/tags/gamedev/public). Dans l'[épisode 14](http://linuxfr.org/news/je-cree-mon-jeu-video-e14-formats-de-donnees) (il y a trop longtemps), on a discuté des formats de données et de compilation croisée. Pour cet épisode, je vais expliquer pourquoi j'arrête. Il y a tout un tas de raison que je vais tâcher d'expliquer. ---- [Akagoria, la revanche de Kalista](http://www.akagoria.org/) [le tag gamedev](http://linuxfr.org/tags/gamedev/public) ---- Bon, allez, j'avoue : je n'arrête pas Akagoria ni cette série d'épisodes. Faut pas déconner non plus. C'était juste pour l'[aguiche](https://fr.wikipedia.org/wiki/Teasing). Mais j'arrête une expérience qui était à l'origine d'Akagoria : les systèmes à entités. Souvenez-vous, c'était le [premier épisode de la série](http://linuxfr.org/news/je-cree-mon-jeu-video-e01-les-systemes-a-entites). # Les systèmes à entités # Les limites Conceptuellement, les systèmes à entités, c'est vraiment satisfaisant. Dans la pratique, c'est très compliqué. Parce que dès qu'on sort des exemples [tarte à la crème](https://fr.wiktionary.org/wiki/tarte_%C3%A0_la_cr%C3%A8me#Locution_adjectivale), c'est très difficile de bien délimiter les composants et les systèmes. Et c'est encore plus compliqué quand on interagit avec des bibliothèques externes qui ne sont souvent pas prévues pour ça. Par conséquent, on passe beaucoup de temps à tâtonner à faire des gros composants, puis des petits composants, puis des gros systèmes, puis des petits systèmes. Et au final, on n'a rien fait à part des [réusinages](https://fr.wikipedia.org/wiki/R%C3%A9usinage_de_code) qui n'ont pas fait avancer le jeu. Je pense qu'on n'a pas assez de recul sur ce paradigme pour pouvoir l'utiliser sur de gros projets. Quand je dis «pas assez de recul», je veux dire qu'il manque beaucoup de choses, notamment une méthodologie globale pour bien choisir ses composants, mais également des exemples un peu plus complexes qui permettent de voir qu'un système à entités seul, ça ne sert pas à grand chose. Certes, ça peut constituer une ossature pour un projet, mais il est nécessaire d'avoir d'autres paradigmes qui interviennent. Et l'articulation entre les systèmes à entités et ces autres paradigmes n'est expliquée nulle part et peut se révéler très compliquée. ## Quoi d'autre ? Si j'abandonne les systèmes à entités, par quoi les remplacer ? He bien, par une approche plus traditionnelle, une approche à objets. Parce qu'au final, c'est une approche suffisamment simple pour être flexible. Bien sûr, ça ne veut pas dire faire de grosses hiérarchie de classes. L'expérience m'a montré que trois étages de hiérarchie permettent de gérer toutes les situations, et souvent deux suffisent. Sans oublier que ce qui compte aussi, c'est un bon agencement des données. C'est peut-être une des leçons que j'ai retenues avec les systèmes à entités. Depuis le début d'Akagoria, j'ai produit plusieurs jeux (souvent pour des gamejams), et chaque fois, utiliser une approche objet a permis de faire tout ce qu'on voulait. Dans le cadre du club de développement de jeux vidéo que j'anime, j'encourage les étudiants à partir dans cette voie. Pas uniquement parce que c'est ce qu'ils connaissent, mais aussi parce que c'est ce qui me semble le plus naturel à expliquer et à utiliser. Les systèmes à entités ne me semblent pas aussi naturels, ils forcent à avoir une vision globale et complète avant de commencer un jeu, là où il est plus facile de procéder de manière incrémentale dans un paradigme objet. ## Talk is cheap, show me the code Je ne vais pas vous montrer le code tout de suite. Je n'ai pas encore pushé la nouvelle version d'Akagoria. Elle mijote tranquillement sur mon ordinateur. ``` Votre branche est en avance sur 'origin/master' de 97 commits ``` Cependant, elle va arriver. J'aimerais profiter du `push` qui vient pour parler de tout ce que j'ai pu développer depuis ces derniers mois (ou qui est en cours de développement) dans les prochains épisodes : dialogues, quêtes, interfaces, sauvegardes, etc. Et il y a des challenges qui arrivent. Donc il faudra patienter un peu. ![Dialogue dans Akagoria](http://www.akagoria.org/screenshots/0.5.0/akagoria-1.png) # Autres nouvelles Il s'est passé beaucoup de temps depuis le dernier épisode. Mais voici quelques nouvelles en marge d'Akagoria. ## Migration sur GitLab Suite à la [fermeture programmée de Gitorious](http://linuxfr.org/news/gitlab-achete-gitorious), j'ai migré les deux dépôts qui s'y trouvaient sur GitLab : celui du jeu et celui du site web. J'hésite à tout migrer sur GitHub puisque c'est là que sont tous mes autres dépôts. Au départ, j'avais envie d'utiliser Gitorious parce que c'était libre, et même copyleft. Mais il faut bien avouer que Gitorious n'était pas aussi simple à utiliser que GitHub, sans compter les lenteurs trop fréquentes. Je connais un peu GitLab (il y a une instance qui tourne dans mon labo) mais pas assez pour juger de son efficacité. Au final, je pense que c'est plus simple de tout centraliser (oui c'est mal) sur GitHub parce que ça me simplifiera les choses plutôt que de devoir gérer deux forges. Je laisserai l'ancienne implémentation d'Akagoria (avec les systèmes à entités) sur GitLab. ### Une interface graphique pour MapMaker Vous vous souvenez sans doute de [MapMaker](https://github.com/jube/mapmaker), l'outil qui avait permis d'illustrer l'article sur la [génération procédurale de carte](http://linuxfr.org/news/je-cree-mon-jeu-video-e10-generation-procedurale-de-carte-partie-1). Et bien je suis très content de vous apprendre qu'un début d'interface graphique a été développé : [mmgui](https://github.com/yblein/mmgui). Je le dis d'autant plus facilement que ce n'est pas moi qui l'ai fait ! C'est en Qt5, ça marche plutôt pas mal pour l'instant. Mon rêve, c'est que ça puisse ressembler un jour à [World Machine](http://www.world-machine.com/).

AltStyle によって変換されたページ (->オリジナル) /