Se connecter

Informatique

Création de Jeux

Sujet : JDR-Bot, un bot de JDR textuel sur discord.
1
cyril-fiesta
Niveau 3
01 mai 2020 à 16:12:50

Bonjour,

Je vous présente un projet sur lequel je bosse depuis quelques années (enfin je l'ai avancé, stoppé, repris, re-stoppé, etc. donc pas régulier :s) : il s'agit de JDR-BOT, un bot discord de JDR textuel :

Présentation de JDR-Bot :

JDR-Bot vous permet de jouer à différents jeux (ou scénarios), de type Jeux de rôle, Histoires dont vous êtes le héros, Escape Game, JDR textuel (façon Colossal Cave Adventure).
Il permet aussi de jouer à des jeux très différents, comme des combats au tour à tour, des casinos, etc.
Il est actuellement hébergé manuellement lors des tests (principalement le soir de 20h à 00h, parfois l'aprem), et connecté sur un serveur discord : https://discord.gg/Z63DtVV (ce discord réunit aussi des joueurs de jeux fun en coop/compet et des Créateurs de toutes sortes, mais comme ce forum à déjà un discord, je vais pas m'étendre dessus ;) )
(A terme, il sera disponible pour ceux qui veulent, et il sera open-source, il n'aura aucun but commercial, fonction payante ou autre)
Enfin il dispose de quelques commandes pour JDR/RPG, comme !lancer_des ou !jeter_des

Le bot est proche d'être finalisé, mais j'ai besoin de testeurs pour voir les derniers réglages à faire (ou il se peut qu'il y ait encore beaucoup à faire :ouch: )
Évidemment il s'adresse aux rares fans des jdr textuels à l'ancienne (ou de livre dont on est le héros), donc faut aimer lire beaucoup :mort:

Pour jouer :

Tout d'abord, il faut venir sur le discord, dans le salon #jdr-bot
il faut charger un scénario avec la commande :
!jouer nom_scénario (ou !play ou !load ou !jo). Vous trouverez la liste des scénarios disponible plus bas.

Ensuite, dans le jeu, vous pourrez interagir avec le jeu avec les commandes :
!avancer nom_ou_numero_de_la_salle (ou !go ou !move ou !av). ==> Il est possible que la salle où vous souhaitez aller ait un digicode par exemple, dans ce cas "!avancer numero_salle code". Dans d'autres cas, cela peut être une mise par exemple (casino) : "!avancer numero_salle mise", etc.
!examiner meuble ou objet ou here/ici (ce dernier répète le texte de la salle actuelle) (ou !ex ou !look)
!prendre objet (ramasse un objet) (ou !pr ou !take)
!inventaire (affiche l'inventaire) (ou !iv ou !item ou !items)
!jeter objet (enlève l'objet de votre inventaire. Commande en test, peu utilisé et peut-être supprimé par la suite) (ou !je ou !throw)
!abandonner (met fin à la partie) (ou !ab ou !giveup)

Autres commandes du bot, ne servant pas pour le jeu principal :
!lancer_des X Y (X = nombre de dés, Y = nombre de faces)
!jeter_des XdY (X = nombre de dés, Y = nombre de faces) (ou !roll, !dice ou !dices)
!lancer_pieces X (X = nombre de pièces)

Scénario actuellement disponible :
(certains ne sont que temporaire pour me permettre de tester une fonction précise du bot, d'autres sont déjà assez complet).

  • aventure-inutile.txt (cours et marrant)
  • casino.txt (en cours d'écriture, injouable pour l'instant)
  • chateau.txt (petit escape room)
  • combat.txt (combat au tour a tour contre un boss)
  • dancing-house.txt (c'est un test, court et peu intéressant pour un joueur)
  • random.txt (jeu de hasard)
  • rpg-company.txt (escape game avec énigme et code)
  • train.txt (histoire à choix et fin multiples !)

Les scénarios sont écrits dans une syntaxe propre aux bots, et un tutoriel sera fait pour que quiconque puisse en écrire un. le bot prend en compte l'aléatoire, des variables, etc. (un bon exemple est combat.txt ou random.txt), il peut aussi prendre un code ou une "mise" par exemple (voir random.txt)

Les changements a venir :

  • Actuellement le bot est sensible à la casse pour les objets, je vais changer ça d'ici peu.
  • Il y a parfois un délai dans l'envoie des message du bot, il faut que j'optimise le code
  • Le code est un peu bordélique, faut que je nettoie et commente ça :D

Historique :
J'ai commencé y'a bien des années avec un bot sur IRC. de manière bien plus simple, il ne gérait pas les variables, les retours à la lignes, etc. C'était au niveau d'un livre dont on est le héros
Y'a 2-3 ans, je l'ai adapté sur discord, une version 1.0 aussi simple que sur irc, mais prenons en compte les objets, des conditions pour débloquer des salles, etc.
Y'a 1 ans, j'ai du refaire le code puisque discordpy et python ont changé de version, ce n'était plus compatible. J'ai ajouté petit à petit des fonctionnalités, et c'est devenu la version 2.0
Y'a 1 semaine... Je me suis aperçu d'un truc très bête de ma part : j'ai codé salement (tant que ça marche) avec des variables globales. Donc si le bot est sur 2 serveurs, les 2 serveurs sont considérés sur la même partie, mais sans voir les messages de l'un et de l'autre. Donc j'ai refais au propre en POO, avec une classe Jeu, et un dictionnaire basé sur l'id du serveur. Le bot est bien ce qu'est censé être un bot : multi-serveur.
La version 3.0 commence donc sa phase de tests ;)

Voila, merci aux futur testeurs sur https://discord.gg/Z63DtVV pour vos avis ;)

++

cyril-fiesta
Niveau 3
03 mai 2020 à 18:00:17

Bon les fans de jdr textuels sont plutôt rares (en même temps, ça date :rire: ), mais les tests sont plutôt bons, pas de bug, pas de conflit entre deux serveurs, les parties sont bien séparés.

J'ai réglé le problème de la casse, et le bot est presque distribuable. Presque ...
En fait, actuellement, les scénarios du bot sont en local (comme le bot). Si je l’héberge, il faudra aussi que j’héberge les scénarios (logique...) sauf que dans ce cas, si quelqu'un met le bot sur son serveur, il ne pourra pas mettre ses propres scénarios.
Je vais donc ajouter une commande permettant d'indiquer aux bots l'url des scénarios. Comme ça, ceux qui utiliseront le bot pourront utiliser les scénarios de base (l'url de base), et les autres pourront héberger eux même des scénarios, et les utiliser sur leur serveur.
A ce moment là (et une fois un bon hébergeur trouvé), le bot sera vraiment distribuable.

Mais je vais poursuivre les tests pour l'instant ;)

Petit screen d'un des tests : https://www.noelshack.com/2020-18-7-1588521550-jdr-bot-demo.png

zebtorax
Niveau 9
03 mai 2020 à 21:14:21

Intéressant. :-)

Pour un peu, je crois que je vais me mettre à Discord rien que pour ça. :-)))
Je vais donc suivre le projet, attendre que ce soit jouable...
Seul bémol : Visiblement (sur le screensh) il y a des fautes.

Sinon simple question, y a t'il la possibilité d'insérer des images :question:
Yep, ce serait mortel si le bot pouvait afficher des images...

cyril-fiesta
Niveau 3
04 mai 2020 à 03:24:07

Merci :)

En ce moment je le met en route tout les soirs, et l’après-midi quand je peux. Demain il pourra tourner dés 15h je pense ;)
Pour les fautes, désolé j'ai été focalisé par le code et les tests, et il faut que je relise et corrige mes scénarios, et surtout que j'en finisse certains :honte:

Pour les images, c'est une bonne idée, mais discord apprécie déjà moyen trop de message dans un temps court j'ai l'impression :s je vais faire des tests pour voir ça. Si ça ne pose pas de souci coté discord, je ferais en sorte que s'il voit [lien_image] dans un texte, il affiche l'image à la suite du texte (et si besoin il coupe donc le texte en 2)
Après je me pencherais si la possibilité de le faire avec des images locales, voir si le bot peut les héberger lui même sur discord (vu que discord accepte facilement les fichiers, ça m'a l'air possible, faut juste que je trouve comment.)

Prochaine étape :
1) Finir le tutoriel d'écriture des scénarios
2) Finir mes scénarios d'exemples et les corriger
3) Se pencher sur l'inclusion des images

cyril-fiesta
Niveau 3
05 mai 2020 à 15:51:05

Je me suis pencher sur les images (ce n'était pas la priorité, mais le plus intéressant à voir coté code, donc ça m'a motivé ^^'), et c'est désormais possible d'inclure des images dans les scénarios.

Au début je voyais un souci : le fait que l'image soit locale = elle va être re-hébergé par discord à chaque fois que l'on veut l'afficher. Mais finalement, le bot n'est hébergé en local que lors des tests. A terme, il sera sur un serveur, les scénarios aussi, donc en toute logique : les images aussi. Et une image hebergé c'est très facile à afficher par discord.
J'ai du revoir légèrement la syntaxe des messages dans les scénarios, et c'est réglé.

Imaginons que le bot doit afficher "Je suis un chevalier [lien image chevalier], tu dois choisir entre 2 portes [lien image porte 1] [lien image porte 2]", il enverra 5 messages sur discords : "Je suis un chevalier", le lien de l'image chevalier (que discord affichera automatiquement), "tu dois choisir entre 2 portes", puis les liens des 2 images

(Les scénarios actuels n'ont pas encore d'images, donc ce n'est que coté code pour l'instant, mais les tests de scénario avec image viendront bientôt)

cyril-fiesta
Niveau 3
08 mai 2020 à 22:01:59

Bonjour à tous. :)

Le bot à bien évolué en peu de temps :

  • Tout d'abord l'intégration des images, dans les scénarios, marchent à 100%, de façon très fluides. Il n'y a pas encore de scénario les utilisant, ça viendra
  • Ensuite le bot est désormais capable de lire les scénarios à partir d'une url, et non plus seulement en local. Il est donc, au stade actuel, complétement fonctionnel s'il est hébergé et distribué.
  • Une commande permet de spécifier et de modifier cette url. Une commande permet de remettre l'url par défaut.
  • Le bot n'accepte les commandes de jeu que dans un channel nommé #jdr-bot (ça évite que des gens jouent dans le mauvais channel, ou flood le chat)
  • Quelques bugs mineurs corrigés

Dernière chose, et pas la moindre (côté temps de travail), j'ai finit le tutoriel sur l'écriture des scénarios ! : http://cyril-fiesta.fr/jdr-bot/tutoriel.pdf
Ce n'est qu'une première version, donc dites moi si des passages vous sembles mal expliqués ou flous svp !

Pour rappel, le bot est jouable tout les soirs sur le discord Make&Play : https://discord.gg/Z63DtVV
Les tests me permettent de repérer des bugs, de voir les réactions des joueurs, les difficultés rencontrés, etc.
Les scénarios les plus intéressant pour l'instant sont train.txt, chateau.txt, rpg-company.txt, combat.txt, random.txt et ... aventure-inutile.txt si vous ne voulez tester que 1 minute :rire:

dés que possible, il sera distribué pour d'autres serveurs (et le code source sera disponible, bien que pas forcément beau ou optimisé :sarcastic: )

Maintenant je vais me concentrer sur l'écriture de scénarios plus complet et utilisant le potentiel du bot (image, variables, etc.)

Prochaine update actuellement à l'étude :

  • Permettre au Bot de se connecter sur un channel vocal #jdr-bot et de diffuser des musiques ou des sons, dés qu'un lien musical apparait dans un des scénarios (plutôt que d'écrire le lien).
cyril-fiesta
Niveau 3
11 mai 2020 à 02:42:08

Bonjour,
Le bot a encore évolué :

  • Il se connecte au chan vocal #JDR-Bot si celui ci existe, et peut diffuser des sons dont l'url est compris dans les scénarios
  • Une commande liste les scénarios disponible sur l'url actuelle
  • On peut mettre des lignes vides pour espacer les scénarios, elles seront ignorer par le bot (et les lignes de séparation "****" peuvent avoir, en plus des "*", d'autres caractères, pour mettre des commentaires entre chaque salle)
  • La documentation joueur et scénario à été mise à jour : http://cyril-fiesta.fr/jdr-bot/Documentation-JDR-Bot.pdf

Je vais maintenant inclure des sons et des sons à certains scénarios de démonstration. Je vais en parallèle me pencher sur l’hébergement du bot, et il sera distribuable.
Actuellement il est jouable sur son serveur discord, bientôt vous pourrez l'inclure à votre serveur.
Le code sera aussi disponible, bien que moche (je vous préviens direct :d) car le bot à eu plusieurs périodes de dev, dont certaines à mes débuts sur python (y'a quelques années), et j'ai rajouter les fonctionnalités au fur et a mesure

Merci d'avance aux testeur, au lecteur de la documentation, etc. qui me donneront leur avis ;)

cyril-fiesta
Niveau 3
13 mai 2020 à 03:34:53

Quelques news :

  • Le scénario combat.text à aussi du son maintenant, et c'est assez rigolo :)
  • Le bot est quasiment prêt à accessible à tout serveur (ce sera fait dans la semaine ;) )

Les phases de test ont pas montré de soucis, j'ai fais une commande pour prévenir des maintenance (genre 15 minutes avant pour laisser le temps de finir une partie), et un bot de test pour ne pas dev sur celui en prod
Il ne me reste plus qu'à configurer le VPS, et le bot sera officiellement disponible ;)

cyril-fiesta
Niveau 3
16 mai 2020 à 15:16:37

Une grande news :

Ca fait 3 jours que JDR-Bot est sur VPS, il est présent sur 5 serveurs (dont un de test et son serveur officiel) et ... Aucun souci pour le moment, tout tourne normalement !
Un projet qui a été mené à terme, mais qui continuera d'évoluer.

Maintenant je me concentre sur de nouveaux scénarios/jdr/escape-game, et j'ai lancé un concours sur mon discord d'écriture de scénario, donc y'en aura encore des nouveaux d'ici peu ^^

cyril-fiesta
Niveau 3
27 mai 2020 à 02:36:32

Après plus d'une semaine de fonctionnement sans souci majeur, et quelques petites maj, le bot est actuellement sur 9 serveurs.

Et il a un nouveau scénario : Animal Crossing (animal-crossing.txt), avec énigmes textuelles, visuelles et sonores, bref la totale (et encore pas toutes les possibilités du bot ;) )

https://www.noelshack.com/2020-22-3-1590539780-jdr-bot-ac.png

cyril-fiesta
Niveau 3
01 août 2020 à 23:45:12

Quelques news du projets :

Tout d'abord coté dev, le bot a eu plusieurs grosses update, et il gère désormais :

  • Les réactions discords pouvant être utilisé pour prendre ou examiner un objet, afficher l'inventaire, aller dans une direction, déclencher un event, etc. selon ce qui est mis dans le scénario
  • Les alias de direction (par exemple gauche = 34), avec reaction associé possible
  • Une option pour afficher une réaction "répéter" et "inventaire" sous chaque message
  • Etc. en gros : https://github.com/Cyril-Fiesta/jdr-bot/releases pour voir les différentes majs ^^

Actuellement, j'ai traité toutes les suggestions reçus donc le dev est un poil en pause ^^'

Autre chose : le bot est ... sur 54 serveurs ! Je pensais pas en arriver là en quelques mois, et j'approche des 75 serveurs nécessaires à la certification discord !

Derniere chose pour les écrivains en herbe, un concours de scénario est en cours, jusqu'au 15 Aout : http://cyril-fiesta.fr/jdr-bot/Concours%201%20JDR-Bot.pdf
Des clés steams à gagner (je roule pas sur l'or, mais j'ai des clés steams que j'utilise pas ^^')

Merci aux auteurs de scénarios de permettre au bot de se diversifier ;)

cyril-fiesta
Niveau 3
08 mai 2021 à 21:49:27

Le bot à considérablement évolué (en même temps ça fait presque un an xD)

Présent sur + de 270 serveur, proposant actuellement 26 scenario, et toujours de nouvelles fonctionnalités (commandes et actions personnalisés, possibilité de lancer un scénario en envoyant directement le .txt sur discord, etc.), JDR-Bot devient international avec sa version 2.0

Il intégre désormais une gestion de langues très poussées (variables, textes, etc.), tout est disponible en Français et en anglais !
10 des scénarios ont été traduits pour le moment, les autres suivront !

Et coté FR, il y a eu de nouveaux scénarios, et il y en aura encore avec le concours en cours (qui finit mi-juin).

Autre changement, et pas des moindres, un wiki à été créé : https://www.cyril-fiesta.fr/jdr-bot-wiki/
Il contient toutes les infos, que ce soit pour utiliser le bot, pour l'installer, écrire des scénarios, etc. Il met aussi en avant les partenaires, soutiens et les auteurs ! (Et bien sur, il est en français et en anglais !)

Bon jeu à tous ;)

1
Sujet : JDR-Bot, un bot de JDR textuel sur discord.
   Retour haut de page
Consulter la version web de cette page