Voici un projet Web dont je souhaite vous faire part et qui devrait ravir les fans de jeux rétro !
Je souhaiterais lancer avec des développeurs motivés un projet open-source pour recréer les mini-jeux présents dans les party-games à l'époque de la PS1. J'ai notamment en tête le jeu Crash Bash dont vous pouvez retrouver les principales règles ici :
https://fr.wikipedia.org/wiki/Crash_BashL'idée serait de réussir à reproduire le concept de ces mini-jeux en les rendant jouables depuis le navigateur et en multijoueurs en ligne (chose qui n'existait pas à l'époque). Le choix d'une technologie javascript me parait approprié pour permettre au projet de rester gratuit et open-source dans la durée ainsi qu'être facilement accessible et compatible pour tous les navigateurs (sans installation).
Un hôte de partie pourrait alors choisir quel mini-jeu inclure dans son tournoi. On peut inclure d'autres mini-jeux en s'inspirant d'autres jeux et laisser la possibilité d'ajouter des règles alternatives/variantes grâce au partage du code source.
Je serais personnellement d'avis à choisir un moteur physique 2D déjà existant afin de simplifier la gestion du déplacement des joueurs que l'on contrôle. Bien que certains mini-jeux se reposent sur des cartes en forme de grille, ré-utiliser un moteur physique 2D adapté a, me semble-t-il, un autre avantage, si on souhaite rajouter des power-ups (bonus). Il sera plus facile d'appliquer des contraintes de vitesse ou de force telles que du vent ou des surfaces ralentissantes avec un moteur physique 2D existant plutôt qu'en développant à la main son propre système de déplacement. En réalité, j'espère qu'appliquer des méthodes avec des paramètres sur des instances suffiront à atteindre le comportement souhaité... Il faudra également de préoccuper des collisions entre les obstacles et les joueurs.
A ce sujet, pour pouvoir le rendre multi-joueurs, je propose de nous inspirer de ce projet qui se base sur la librairie Phaser et de gérer dans un premier temps tous les déplacements uniquement du côté serveur, quitte à prendre le risque que le jeu soit injouable pour ceux qui ont un ping lent :
https://github.com/yandeu/phaser3-multiplayer-with-physicsD'après ce que j'ai compris, il faudrait idéalement anticiper le mouvement de notre personnage en local côté client pour garder une impression de fluidité :
https://www.gabrielgambetta.com/client-side-prediction-server-reconciliation.htmlMais gérer tout côté serveur permettra d'avoir à se soucier de la physique que d'un seul côté, le côté "autoritaire" de la communication et donc celui qui serait à privilégier si on veut un minimum d'intégrité dans le jeu.
Parmi les échanges que j'ai pu avoir sur ce projet, on m'a également conseillé la technologie Unity mais je suis assez septique de commencer ce projet avec une technologie propriétaire dont l'avenir de la licence gratuite n'est pas ancrée dans le marbre :
https://store.unity.com/fr/compare-plans?currency=EURConcernant la partie graphique, je n'ai pas de talent de graphiste et propose de créer une première version avec des formes basiques. Le jeu se jouerait en 2D vue du dessus et non avec un angle. Cela pourra être amélioré lors de futures éventuelles itérations.
Si vous êtes partant ou si vous avez des remarques ou des suggestions en faire concernant les choix techniques, n'hésitez pas à les partager.
De mon côté, j'ai remarqué sur Github la présence de quelques projets assez similaires qui reconstituent certaines arènes du jeu Crash Bash en C et C++.