[Forge] Projet Loups-Garous

Bonjour tout le monde.
Je prends la parole aujourd’hui pour vous parler d’un projet qui m’intéresse depuis quelques temps, à savoir adapter le célèbre jeu de rôle des Loups-garou de Thiercelieux en série Nefli… heu je veux dire en mode de jeu Overwatch.
N’étant pas diplômé de 42 comprenez bien que pour moi c’est un projet vraiment immense qui me semble juste assez réalisable pour que je me donne la peine d’essayer. Toutefois j’aimerais utilisé ce sujet pour recueillir toutes les informations et l’aide que je pourrais avoir.

  • Le concept
    Je peux difficilement rappeler la totalité des règles du jeu de Loup-Garou, je pense que la plupart connaissent dans le cas contraire Google est votre ami (ou n’importe quel autre moteur de recherche d’ailleurs).
    Le mode reprendrait pas mal de mécanique du jeu original: les rôles, les phases jour/nuit, etc.
    Je partirais pour un mode sans meneur de jeu (bien qu’un mode avec meneur soit largement plus facile à réaliser). À 12 joueurs, sur la forêt noire. Je suis parti sur une formule deathmatch mais sans système de point, dans l’idéal j’aimerais pouvoir coder un gain de point en fonction du rôle en fin de partie.

  • Les rôles
    À l’heure actuelle c’est une des difficultés à laquelle je me heurte: j’ai trop peu de rôle adaptable et surtout trop peu de compétences pour adapter des rôles complexes, pour l’instant je suis parti sur 3 loups-garous, Cupidon, un chasseur, une voyante, une sorcière et 5 villageois. Le chat textuelle fait qu’une petite fille ne serait pas évidente à implenter.
    La première chose pour laquelle j’aurais besoin d’aide c’est trouver d’autres rôles dans le jeu de base, ou des rôles inventés propice aux support Gameplay d’Overwatch.

  • L’état du code
    Pour l’instant j’ai une base plutôt solide, ça savoir:
    – La génération aléatoire des rôles, le seul problème étant qu’il faut être 12, ça me semble compliqué de démarrer une partie sans ce nombre exact. En terme d’interface textuelle j’ai fait le choix d’utiliser un icône de héros pour chaque rôle (Villageois: Hanzo, Cupidon: Mercy, Loup-Garou: Junkrat; Sorcière: Moira; Voyante: Symettra; Chasseur: Ashe). J’ai vaguement fait un semblant de phrase explicative à côté du rôle mais le système de chaîne de texte est vraiment pas optimisé pour ça :confused: Je pense avoir réussi à créer un effet permettant aux Loup-garou de se reconnaître entre eux.
    – Une petite zone pour interagir avec chaque héros: à l’heure actuelle c’est juste un halo avec le nom+icône de héros pour chaque joueur, je crois pas que je rencontrerais d’énorme difficultés à rendre ça interactif.
    –Une ébauche du système de phase, à savoir une variable qui change de valeur en fonction de chaque phase, mais pour l’instant j’ai que la phase de Cupidon, et elle est à peine commencer.

  • Les difficultés que je rencontre/vais rencontrer
    Comme dit plus haut j’ai ce petit problème de rôle; j’ignore comment vraiment optimiser la phase nocturne afin que les joueurs ne se voient pas durant cette phase, à l’exception des Loups-Garous; je pense pas pouvoir gérer la déco d’un joueur pendant une partie, ni un début de partie sans 12 joueurs; ma plus grosse difficultés relève de l’impossibilité de tester totalement le mode sans avoir 12 joueurs à disposition, même si à l’heure actuelle j’en ai pas besoin.
    À part tout ça je crois pas avoir de difficultés que le temps pourra pas résoudre, c’est un projet vraiment long à mettre en place, je partagerais le code plus tard dans la journée si des gens veulent y jeter un œil.
    Voilà voilà :slight_smile:

11 mentions « J’aime »

Je signe direct !

Pour les rôles, est-ce que tu as pensé à jeter un oeil aux extensions ? il y a plein de rôles intéressants (le loup alpha par exemple)

Quand tu dis que tu implémentes les rôles, concrètement tu penses à quoi ?
Les Loups doivent tuer les villageois, classique.
Mais la sorcière ? tu penses au rez de Mercy ?
Et la voyante ?
Et Cupidon ?
Et le Chasseur ?

2 mentions « J’aime »

C’est clair que ça pourrait être super intéressant :ok_hand:

2 mentions « J’aime »

Un gros bravo à toi pour réussir à faire ce genre de projets.
Amateur de ce jeu, j’ai hâte de pouvoir y jouer avec ton mode !

3 mentions « J’aime »

Je sais pas si c’est faisable, mais voilà quelques idées :

-Utiliser le système d’ult pour définir le loup garou (ainsi il suffit que la voyante inflige le satut de hack pour voir si quelqu’un est un loup ou pas). Bien sur il faut que ce soit en système DM pour que chacun ne puisse pas le % d’ult des autres

-Pour la nuit, mettre les joueurs en cercle, et pendant la nuit, changer leur orientation pour qu’ils soient dos aux cercles et ne puissent pas bouger la caméra jusqu’au jour ( à part le loup)

-Pour les kill du loup (histoire que le kill feed fasse pas chier :p), le loup aurait une munition par nuit, cliquer sur un joueur le téléporterait dans le vide, ainsi le tueur n’apparait pas

-Pour la sorcière, tu peux utiliser les status protégé/brulé pour sauver/tuer, le mieux est baptiste pour ça vu qu’il a deux minutions differentes, ainsi tu peux faire qu’il ai une de chaque (je pense)

2 mentions « J’aime »

Voilà le code pour ceux que ça intéresseraient: HHD3M
La partie est lançable, mais pour l’instant vous aurez que l’attribution de votre rôle, et une vue de l’interface globale que j’utilise donc ça n’a pas grand intérêt :kissing:
C’est surtout à destination de ceux qui veulent avoir un aperçu du code, afin de voir comment le tout s’articulera. Je dispose d’un peu plus de temps pour en parler concrètement:

Pas encore je m’y atèle ce soir a priori, c’est la première chose que j’aimerais régler avant d’avancer plus loin dans le code.

Dans l’idée j’aimerais rester le plus fidèle possible au jeu de base, j’ai procédé de la sorte:

  • en début de partie chaque rôle est dans un tableau, et chaque joueur se voit attribuer une variable de joueur, qui correspondra à un rôle précis. (loup-garou, sorcière, etc.)
  • J’ai commencé à élaborer une interface en jeu, commune à tous les joueurs, permettant de voir et interagir avec chaque joueur de la partie, en pratique c’est assez simple: il y a 12 halos de lumière sur la carte, utiliser la touche interagir (F par défaut) dans un de ces halos lumineux déclenchera un évènement selon la phase de jeu et le personnage qui interagit.
    Avec Cupidon, une fois que c’est son tour, il va devoir interagir avec 2 de ces halos (chaque halo correspondant à un joueur précis), pour les liés. En pratique une variable de joueur sera créer pour les deux concernés, de façon à ce que si l’un est éliminé, l’autre le sera aussi).
    Pour la voyante c’est le même principe, à son tour elle ira interagir avec un de ces halos , et un un texte lui affichera le rôle de cette personne.
    Pour les loups-garou et le vote en journée le procédé sera similaire, les concernés (loup-garou pour choisir leur victime, ou bien tout le monde pour le vote en journée) interagira avec le halo de la personne qu’il souhaite éliminer.
    Pour la sorcière ça sera sans doute un peu plus complexe, je devrai lui afficher le nom du joueur choisit par les loup-garous, elle devra interagir avec lui si elle souhaite le ressuciter, et interagir avec un autre joueur pour le tuer, chaque interaction n’étant possible uniquement si elle n’a pas déjà utilisé ce pouvoir auparavant.

Dans la mesure où beaucoup/tout passe par ce système d’interaction, j’ai pas nécessité à utiliser les compétences des personnages, ça m’arrange un peu puisque dans l’idée chaque héros est intangible de base, et je laisse aux joueurs le choix de leur héros en début de partie, plus pour une question de confort qu’autre chose, et je pense que ça rajoute une petite dimension RP intéressante (un Soldat qui fera de base plus confiance à une Ana qu’à un Faucheur, un Chopper qui hésitera à tuer un Chacal, une Widow qui hésitera à tuer personne), ça me semble un bon incentif pour initier un vote lorsque les pistes se font maigres.

Et enfin pour plusieurs raisons je vais pas utiliser la mort du personnage d’un joueur pour signifier sa mort dans le jeu de loup-garou, déjà parce qu’il y a du vide sur la carte que j’utilise et j’aimerais éviter qu’un joueur se suicide par accident (les halos d’interaction sont proches de la falaise :kissing_smiling_eyes: ); et surtout pour pas avoir un gérer un mode spectateur qui serait soient pas intéressant, soit permettraient au joueur mort de voir des choses qu’ils ne devraient pas voir.
Je prévois de créer une valeur boléenne par joueur (en jeu ou bien éliminé), les joueurs éliminer pourraient tout de même se balader sur la carte, a priori avec un statut permettant de les reconnaître. J’utiliserais également cette valeur boléenne pour faire disparaître le halo d’interaction du personnage mort.

Beaucoup passe par ces halos d’interaction mais ça permet comme j’ai dit une liberté totale sur le choix de son personnage, et ça résume l’essentiel du code à la création et la modification des variables et du texte, ce qui rend le tout à la fois plus long mais moins compliqué.

Edit: Au passage merci de la motivation que vous montrez à mon projet, ça fait très plaisir à voir.

1 mention « J’aime »

Ça m’intéresse de savoir comment tu compte faire le système de vote de ton mode (pour voter à la fin d’une nuit) car je suis bloqué sur le mien… Au sinon ça a l’air super ambitieux et complèxe ce loup-garou, même trop pour moi, je ne pourrai sûrement pas vous aider… Bonne chance !

1 mention « J’aime »

C’est ce qui est actuellement en train de me bloquer figure toi, j’ai des halos tout prêt avec l’emplacement de chaque joueur, normalement les votants doivent interagir avec ces halos pour voter, mais je trouve pas comment relié de façon logique ces halos avec chaque joueur, la seule piste que j’ai c’est les coordonnées de mes halos mises dans un tableau et l’index de chacune de ces coordonnées correspond à l’emplacement de joueur du joueur concerné par ce halo.

Un autre de mes soucis, j’ignore si c’est un bug ou une limitation technique, mais impossible de placé plusieurs icônes de héros dans un tableau pour les réutiliser dans une chaîne de texte ultérieurement.

Pour ce qui est de la composition j’ai finalement de remplacé 3 villageois par les 3 frères, ce qui laisse 2 villageois lambda; c’est pas la composition la plus intéressante mais étant donné mes compétences très limités ça serait déjà merveilleux que j’arrive à coder ça.

1 mention « J’aime »

Je sais pas si cela peut t’aider mais sur mon système de vote les joueurs tir sur celui qui veulent voter et en gros ça donne :
-un joueur subi des dégats
-définir variable joueur A : variable joueur A + 1
Puis dans un second temps tu définis deux variables globales :
Variable O = 0
Variable P = joueur lambda (on s’en fou)

-si variable joueur A joueur exécutant > variable O
-variable O = variable joueur A joueur exécutant
-variable P = joueur exécutant
Et voila sauf que pour ton problème de halo j’en ai aucune idée :sweat_smile:

2 mentions « J’aime »

Ça à l’air génial, j’adorerais pouvoir continuer, courage !

Bon je pense avoir accompli ce que je pouvais, le mode est loin d’être fini mais j’ai fini d’établir l’architecture globale du système de jeu.
Voici le code: K7QF7
À l’heure actuelle à défaut d’avoir un système complètement fonctionnel vous pourrez avoir une idée des phases de jeu et de comment tout se déroulera une fois fini.

Malheureusement il me reste 2 difficultés à ce jour:

  • Déjà j’ai un doute sur le fonctionnement de ma méthode afin de vérifier la variable de joueur de plusieurs joueurs en même temps, c’est surtout pour les effets et icône propre à certains rôles, notamment les icônes pour les 3 frères, les loups-garou et les amoureux. (si des pros veulent jeter un oeil c’est dans les règles texte de mon code)
  • La deuxième grosse difficulté c’est l’apparente impossibilité de stocker des icônes de héros dans des variables ou des tableaux.

Impossible de continuer le développement tant que ces 2 problèmes sont pas résolus, je cherche activement à trouver une solution ou contourner le problème, si vraiment c’est sans espoir soit j’attendrais une maj’ du workshop qui débloquera la situation, soit je partirais sur un modèle un peu différent, avec 11 joueurs et 1 meneur de jeu.

Edit: J’ai pu régler le problème du stockage d’icône de héros (pour ceux que ça intéresse il faut en fait stocker le héros dans une variable/tableau, et pas l’icone en elle même, pour ensuite la rappeler dans la chaîne de texte.

Me reste le premier problème, dans l’idée il me faudrait un moyen de rendre visible pour et d’effectuer des actions sur tout joueurs dont une variable personnelle serait égale à un certain nombre.

1 mention « J’aime »

Si tu veux je peux le faire mais je prendrai du temps car je préfère continuer mes projets en priorité

2 mentions « J’aime »

C’est très gentil de te proposer.
J’ai quelques soucis de réseau en ce moment donc j’ai pas vraiment la possibilité d’utiliser Overwatch, ça me ferait très plaisir que quelqu’un prenne le relais.
Je crois que le code cité plus haut est éroné, je n’ai pas appliqué certains correctif, j’essaierai de passer le lien de la dernière version dans l’après-midi (sauf si tu veux recommencer à partir de 0 mais ça serait audacieux :sunglasses: )
Si nécessaire je peux te faire un résumé des différentes variables déjà utilisés et du fonctionnement globale du jeu (là le boulot m’appelle donc je peux pas vraiment m’étendre plus que ça).

Edit: Voilà le code actuel: D2PHQ
Désormais les joueurs éliminés deviendront invisibles et auront à leur emplacement l’icône de héros propre à leur rôle.

1 mention « J’aime »

Merci beaucoup pour le code c’est un gagne temps immense je pense que je vais commencer par optimiser et débug la version actuelle.

J’aimerais juste que l’ont me donne les pseudos de tous les participants afin de faire les crédits (la description).
Pour le moment je ne met pas le jeu en public car je préfère le finir entièrement.

1 mention « J’aime »

En terme de code tout vient de moi globalement, bien que j’ai eu beaucoup de suggestions venant de ce sujet, si quelqu’un estime qu’il mérite d’être cité dans les crédits qu’il parle ou se taise à jamais :blush:
Sinon pour simplifié j’ai rien contre le fait que tu mentionnes simplement le forum Overwatch FR, avec du bol ça nous fera de la pub et on Blizzard pourra nous glissé un p’tit billet :open_mouth:

3 mentions « J’aime »

Je refais le jeu en me basant sur le système que vous avez fait ça me permet de mieux gérer mon temps.Ce soir je vais essayer de finir la 1ère version du choix des rôles (que j’ai déjà bientôt finit).

Je préviens quand même que j’ai déjà 2 autre très gros projet sur la forge (L’ia et un projet secret dont je parlerais plus tard) donc je vais très certainement avancer plutôt lentement (sans compter les différentes ia et jeux que je crée sur le côté).

Et si blibli remarque ce que l’on fait ça peut-être sympa :wink:

1 mention « J’aime »

Pas de problème prend ton temps, t’as l’air de savoir ce que tu fais et comme j’ai dis je pense pas que j’aurais énormément de possibilités moi-même pendant les vacances scolaires :sweat_smile:

Et voilà je viens de finir le nouveau système de distribution des rôles il est plus optis surtout lorsque l’on rajoutera des personnages (pour le moment je n’ai mis que les lg, la voyante et de simples villageois juste pour tester.

De plus l’attribution est entièrement aléatoire impossible de savoir qui à quel rôle (sauf si le owner triche en utilisant le “contrôleur de la forge”)

Je ne serai certainement pas là demain mais peut-être après demain enfin bref je vous tient au courant si je continue demain ou après-demain.

edit : J’ai oublié de dire que le jeu peut se lancer à partir de 3 joueurs (jusque 12 évidement) le nombre de LG sera modifié en fonction du nombre de joueur (+1 LG tous les 3 joueurs)

Edit 2 : J’ai amélio le système pour les distributions de rôles plus tard je ferais en sorte que l’on puisse mettre autant de rôles que l’on veut mais maintenant je vais reprendre le système de “halo” et pour “interagir” avec je vais utiliser le clic gauche mais en enlevant les capacités comme ça on peut prendre tous les héros.

4 mentions « J’aime »

GG !!!

Purée de carottes ça a l’air dément !

4 mentions « J’aime »