ExoBoom

From Watchiki
Jump to navigation Jump to search

À propos du projet[edit | edit source]

Le principe d'ExoBoom reprend celui du jeu CocoBoom, développé par lantenne et animé par EncreMecanique sur sa chaîne Twitch (ce dernier a également réalisé tous les assets graphiques). L'idée du projet était de recréer le jeu par moi-même en utilisant uniquement Godot - le jeu original ayant été développé en C++/OpenGL et en C# - et d'autres assets graphiques pour m'affranchir de ceux d'EncreMecanique.

Principe du jeu original[edit | edit source]

Le jeu est très simple et se joue essentiellement dans le chat Twitch. Au début de la partie, chaque utilisateur (viewer) souhaitant participer saisit la commande "!join" pour rejoindre la partie. Un avatar portant son nom est alors placé aléatoirement sur une grille (8x8). Lorsque la grille est complète - ou que plus personne d'autre ne veut rejoindre la partie - les inscriptions sont closes et le jeu peut commencer.

À chaque tour, le streamer déclenche une chute de plusieurs noix de coco qui tombent aléatoirement sur la grille :

  • soit en salve complètement aléatoire ;
  • soit en ligne horizontale ou verticale (le streamer appelle ça "le raptor") dans une colonne ou une ligne aléatoire ;

Si une noix de coco atteint un joueur, ce dernier est éliminé de la partie - sinon elle s'écrase sur une case vide. Lorsque toutes les noix de coco sont tombées, le tour se termine et chaque joueur restant peut effectuer un unique déplacement dans n'importe quelle des 4 directions ou choisir de rester sur place. Lorsque tous les déplacements sont terminés, le streamer peut relancer un autre tour de jeu.

La partie se termine lorsqu'il ne reste plus qu'un seul joueur. Un classement des dix derniers joueurs à être restés sur la grille est affiché sur le côté (et des points sont accordés en fonction de la place dans le classement).

Il s'agit ici du niveau de base. Il existe des variantes du niveau (une grille où les dalles sont glissantes et font avancer jusqu'à rencontrer un obstacle, un casque pour les utilisateurs abonnés et qui permet de survivre à une seule noix de coco) mais l'essentiel est là.

Jeu recréé[edit | edit source]

J'ai décidé de reprendre exactement le même principe, en me focalisant d'abord sur le jeu de base. Pour l'interaction avec Twitch, j'utilise un plugin de Godot appelé Gift. Il est assez simple d'utilisation - même s'il aurait bien besoin d'un peu de réécriture et d'une documentation plus détaillée.

Le projet est trouvable ici : https://framagit.org/watchinofoye/ExoBoom

Décision du 11 octobre 2022[edit | edit source]

Après un échange vocal avec lantenne sur Discord, il a été décidé de prendre mon clone de CocoBoom comme base pour reproduire le jeu tel qu'il était à l'origine, avec quelques petits ajouts qui étaient prévus. Je dois donc ici documenter le jeu pour faciliter sa prise en main.

Utilisation[edit | edit source]

En l'état actuel, le jeu en lui-même se compose d'un exécutable et d'un fichier de configuration. Ce fichier de configuration est au format JSON et se présente ainsi :

{
    "botname": "username",
    "token": "oauth:0123456789abcdefghijklmnopqrst",
    "initial_channel": "channel_name",
}
  • botname correspond au nom d'utilisateur du bot. En l'état actuel, il s'agit de mon compte mais il est prévu d'utiliser un compte Twitch ;
  • token est le jeton d'authentification pour l'API Twitch, correspondant au compte du bot (token obtenu en se connectant via ce site : https://twitchapps.com/tmi/ ) ;
  • initial_channel désigne la chaîne sur laquelle le bot est censé se connecter pour interagir avec.

Au lancement, le jeu essaie de lire le fichier de configuration et de se connecter à Twitch à l'aide des informations de connexion.

Le jeu démarre alors avec une étape d'inscription où les joueurs peuvent rejoindre la partie en utilisant la commande !join [nom_du_skin]. Si aucun skin n'est précisé, c'est le skin par défaut qui est utilisé. Une personne qui a déjà rejoint la partie peut changer de skin en utilisant la commande !skin nom_du_skin. La commande !list affiche la liste des skins disponibles.

Les inscriptions restent ouvertes tant qu'il reste au moins une place libre sur la grille. Le streamer peut aussi clore les inscriptions en appuyant sur la touche Espace.

À chaque tour, le streamer peut appuyer sur R pour lancer une salve aléatoire, H pour une salve horizontale ou V pour une salve verticale.

Chaque salve débloque la possibilité pour chaque joueur d'effectuer un unique mouvement dans n'importe quelle direction, en utilisant les commandes !up, !down, !left, ou !right.

Lorsqu'il reste moins de 10 joueurs sur la grille, le classement sur le côté commence à se remplir au fur et à mesure que les joueurs sont éliminés.

Le jeu se termine automatiquement quand il ne reste plus qu'un seul joueur sur la grille. Le jeu est alors en pause, et il suffit d'appuyer sur la barre d'espace pour relancer une partie.

Abandon du projet[edit | edit source]

Le projet est à l'abandon car il est devenu difficile à maintenir. En effet, la version actuelle du projet sous Godot 3, utilisant une ancienne version de l'extension Gift (implémentant l'API Twitch), ne fonctionne plus. Il existe une version plus récente, pour Godot 4, mais qui est devenue bien plus complexe à utiliser.

De plus, lantenne, le développeur initial de CocoBoom, semble s'être éloigné de Twitch (pour des raisons personnelles). Le coup de grâce étant qu'EncreMecanique m'a confié qu'il comptait laisser tomber CocoBoom pour passer à autre chose (sachant que le jeu n'est déjà presque plus présent sur le stream).

Le dépôt reste sur Framagit, en privé, pour des raisons documentaires et pour le cas où le projet renaîtrait de ses cendres pour une raison quelconque, soit par moi, soit par une autre personne qui voudrait s'y dévouer.

Dernière mise à jour[edit | edit source]

En discutant avec M0ufTchup, ce dernier m'a indiqué une courte page du développeur de Gift, qui donne quelques indications pour une rapide prise en main de la nouvelle version. Et en insistant un peu, j'ai enfin pu porter ExoBoom sur Godot 4 avec succès. Tout semble fonctionner.

Toutefois, cela ne change pas les autres problématiques, à savoir que c'est un jeu qui ne m'appartient pas et que je ne peux rien en faire sans l'accord de lantenne et d'Encre, même si ce dernier a décidé de passer à autre chose.