Projet Web Open-Source de Party Game Retro

7

Avatar QuozPowa
QuozPowa
Auteur Admin
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_Bash

L'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-physics

D'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.html

Mais 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=EUR

Concernant 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++.

0 0
Liens joints à ce post

GitHub - yandeu/phaser3-multiplayer-with-physics: Phaser 3 - Real-Time Multiplayer example with Physics (MatterJS and Arcade)

Phaser 3 - Real-Time Multiplayer example with Physics (MatterJS and Arcade) - yandeu/phaser3-multiplayer-with-physics

github.com

Compare Unity Plans: Personal, Pro, Enterprise, Industry | Unity

Compare all of our plans and find the right plan for you based on your needs.

store.unity.com
Avatar QuozPowa
QuozPowa
Auteur Admin
Il y a aussi le serveur Lance pour faire du multi-joueurs en temps réel :
https://lance.gg/

Il intègre de base le moteur physique P2.js dont de nombreux exemples sont disponibles ici :
https://github.com/schteppe/p2.js

0 0
Liens joints à ce post

GitHub - schteppe/p2.js: JavaScript 2D physics library

JavaScript 2D physics library. Contribute to schteppe/p2.js development by creating an account on GitHub.

github.com
Avatar QuozPowa
QuozPowa
Auteur Admin
Quelques vidéos pour illustrer :
Crash Bash - Beach Ball Platinum Relic - Xendemo


On retrouve aussi un flipper multi-joueurs avec des bonus dans "Winnie l'ourson : C'est la récré !" (à 28 minutes) :
Party Time with Winnie the Pooh Extra Long Gameplay (Quick Play use all characters hard difficulty) - Mega Blue

0 0
Avatar QuozPowa
QuozPowa
Auteur Admin
Je lance un github publique et partagé ici :
https://github.com/QuozPowa/pong-royale

Toute aide est la bienvenue !

0 0
Liens joints à ce post

GitHub - QuozPowa/pong-royale: FR Discussion : https://www.quozpowa.com/forums/gaming/t/projet-web-open-source-de-party-game-retro-1890/1

FR Discussion : https://www.quozpowa.com/forums/gaming/t/projet-web-open-source-de-party-game-retro-1890/1 - QuozPowa/pong-royale

github.com
Avatar QuozPowa
QuozPowa
Auteur Admin
Un exemple de balles qui rebondissent sans friction avec MatterJS :
https://editor.p5js.org/QuozGaming/sketches/AQoCbIKl

0 0
Liens joints à ce post

matter.js balls copy by QuozGaming -p5.js Web Editor

A web editor for p5.js, a JavaScript library with the goal of making coding accessible to artists, designers, educators, and beginners.

editor.p5js.org
Avatar QuozPowa
QuozPowa
Auteur Admin
Le projet a été mis à jour. J'y ai mis un projet fonctionnel jouable jusqu'à 4 joueurs en ligne. Après quelques essais avec des testeurs, il nous est apparu la nécessité de définir une vitesse maximale des balles. Si quelqu'un sait comment faire !
J'ai recherché comment définir une vitesse maximale sur les objets avec le moteur P2 Physics JS mais en preStep ça ne semble pas fonctionner.

0 0
Avatar QuozPowa
QuozPowa
Auteur Admin
J'ai essayé de minimiser la maxForce des contactEquation mais le comportement produit est anormal. Malgré une vérification sur le type des bodyA et bodyB de au moment de la collision, la modification de la maxForce s'applique à toutes les collisions.

0 0