Arkham : Premiers Avancements (1/2)

Publié le par Azumanurlin

Arkham : Premiers Avancements (1/2)

Bonjour à tous, et bonjour à toi qui me lis,

Cela va faire un petit moment que la première réunion est passée et je me suis attelé aux premiers codages du jeu. Je devais créer un plateau numérique pouvant contenir les différents éléments du jeu. Et je dois dire que j'ai galéré pour choisir un modèle facilement utilisable. Puis j'ai aussi commencé la création visuelle du programme avec reconnaissance cliquable des différentes zones de jeu.

Mais reprenons étapes par étapes mes avancées.

I) Le plateau en numérique

Avec mes souvenirs d'université, j'ai tout d'abord opté pour l'utilisation d'un graphe orienté. Puis je le suis rendu rapidement compte qu'une telle méthode avait un sérieux problème de traitement. Mais tout n'était pas à jeter. Il me fallait juste pallier à ce souci. Et j'ai trouvé une solution.

a) Le graphe orienté

Voici une notion abstraite pour ceux qui ne sont pas familier avec les maths. Mais je m'en vais vous l'expliquer simplement, tout ceci dans le monde ludique, bien évidemment.

Prenez le jeu de l'oie - normalement, tout le monde connaît. Dans le jeu de l'oie, le but est de parcourir un chemin, case après case, pour arriver sur la case finale. D'ailleurs, si nous obtenons une valeur trop grande, nous devons reculer. On pourrait tout à fait représenter ce cheminement par un graphe où une case est chainée à une autre. Il nous suffit de connaître la case de départ, et nous pouvons aller dans un sens, jusqu'à la case finale. Et inversement. Le graphe est aussi dit non-cyclique. C'est à dire que si nous voulons aller d'une case à une autre, il n'y a qu'un seul chemin. Ou même que nous ne pouvons revenir sur la même case sans repasser sur une case déjà parcouru.


Aller de 1 à 5 : Un seul chemin

Dans le cas qui nous préoccupe, notre graphe est cyclique, car nous pouvons aller du Quartier Nord à lui-même en passant par le Centre-Ville et le Quartier Marchand. Trois cases formant un graphe cyclique.


Graphe Cyclique : Quartier Nord - Centre-Ville - Quartier Marchand - Quartier Nord

Mais je digresse car maintenant, c'est le sens du mot orienté qui est intéressant de comprendre.

Un graphe orienté nous permet d'obliger le déplacement d'une case à une autre. Prenons le cas du Monopoly. Nous allons aussi de case en case, toujours en avançant. Le graphe est donc orienté. Et la Rue de la Paix est connectée à la case départ. Il est donc cyclique. De plus, la case aller en prison permet d'éviter la moitié du plateau. Nous pourrions représenter le plateau du Monopoly par le graphe suivant :

Alors que réellement, son graphe ressemble à ça :

Mais alors pourquoi orienté le plateau d'Arkham ?
Pour répondre à cette question, revenons un peu sur les marqueurs qui peuvent se déplacer dans la ville. Nous avons 2 types d'unités qui se déplacent : les Investigateurs et les Monstres.

Pour les Investigateurs un graphe cyclique est le plus simple car ils peuvent aller partout, en passant par n'importe quelle case.
Pour les Monstres, le graphe doit-être orienté, car selon le symbole et la couleur, les monstres ne se déplacent pas dans le même sens. Reprenons l'exemple de précédent.


Les monstres se déplaçant en blanc vont du quartier marchand vers le quartier nord puis en centre-ville.
Inversement pour les déplacements en noir.

Orienté et non-orienté en même temps... Non ce n'est pas une application du principe quantique à propos du célèbre chat de Schrödinger.

Nous entrons maintenant dans un détail nous négligeable des graphes : un nœud.

b) Les nœuds

Dans un graphe, nos cases se nomment des nœuds.
Numériquement, un nœud est un objet qui contient la liste des nœuds vers lesquels nous pouvons nous déplacé.

Plaçons-nous dorénavant sur le plateau d'Arkham.

Dans Horreur à Arkham, seul les investigateurs ont la possibilité de choisir sur quel case se rendre, et ceci uniquement dans la ville d'Arkham. Les autres mondes sont atteints automatiquement et le reste du plateau ne peut contenir les investigateurs.
Si nous listons les cases de la ville, nous pouvons les séparer en 2 catégories : Les lieux et les rues.


Lieu du quel on ne peut sortir qu'en allant vers la rue


Rue de laquelle on peut aller dans d'autres rues et vers des lieux

1) Case Quartier

En étudiant rapidement les cases quartiers du plateau - lieux et rues - nous voyons émerger deux caractères évidents :

  • Un nom
  • Une couleur

D'un point de vue architecture numérique, nous aurons un objet CaseQuartier d'où hériterons les objets Lieu et Rue, qui auront d'autres caractéristiques spécifiques.

2) Les lieux

Un lieu dans Arkham est, comme qui dirait, une feuille dans un graphe. Une feuille est un nœud qui n'est relié qu'à un seul autre nœud. De fait, si nous sommes dans un lieu, je seul chemin empruntable est un nœudrue.

Ainsi, l'objet algorithmique qu'est un lieu contiendra la rue à laquelle il est lié.

3) Les rues

Une rue d'Arkham possède des connexions beaucoup plus compliquées que celles d'un lieu. En effet, un lieu n'a qu'une seule arrête, une rue en possède plusieurs selon de quel point de vue - Investigateur ou Monstre - on se place.

Il est facile d'avoir une liste de lieux pour permettre aux investigateurs d'y accéder.
Il est aussi facile d'avoir une liste de rues permettant aux mêmes investigateurs de parcourir la ville.

Pour les monstres, il faut, de fait, avoir deux rues qui indiquent le sens de circulation.

En résumé, l'objet Rue contient :

  • Une liste de lieux
  • Une liste de rues
  • Une rue pour le déplacement blanc
  • Une rue pour le déplacement noir

c) Parcourir le graphe

Voilà le premier problème que j'ai rencontré.

Ma première idée, la plus simple, est d'avoir un point d'entrée - un rue par exemple - et de parcourir les lieux lorsque nous sommes arrivons dans la rue, puis les rues suivantes. Et nous nous arrêtons lorsque nous revenons sur le nœud de départ.

1) Un graphe simple


Nous rentrons en A - Nous vérifions les lieux de A

Premier chemin : En B puis en C


Second chemin : En C puis en B

Puis nous revenons sur A et le parcours s'arrête.

2) Le grain de sable

Seulement un petit grain de sable vient enrayer la machine. Voilà ce que nous parcourons en vrai :

Et nous voyons émerger une petite boucle car de B on va vers A - pour s'arrêter - et C. Et de C nous allons vers A - pour toujours s'arrêter - et B. Nous allons dons de B vers C vers B vers C vers B vers C... Sans pouvoir s'arrêter. 

Error System

3) Point de vue général

Oublier le point d'accès et voyons le graphe avec une liste.


Graphe avec sa liste de
nœud

Nous ne parcourons plus le graphe, mais une liste.

Et c'est tout ! Il est inutile d'avoir une condition d'arrêt car nous ne vérifions qu'une seule fois la liste sans revenir sur un nœud déjà parcouru.

Mais ceci nous oblige à avoir une seconde liste pour parcourir les lieux mais tout ceci n'est qu'accessoire.

d) Conclusion

Numériquement, la ville d'Arkham possède trois listes :

  • La liste des rues
  • La liste des lieux
  • La liste des cases quartiers, union des rues et des lieux : pour les cas de traitements généraux sur les cases du plateau

e) Premiers tests

Pour tester ce graphe, j'ai tout d'abord utilisé quelques propriétés de cartes mythes. Le déplacement des monstres.
Avant cela, je place des monstres un peu partout sur le plateau. Puis j'effectue le déplacement des monstres - par exemple la lune en blanc - et je vérifie que les monstres lunes se sont bien déplacés selon les arrêtes blanches.

Je ne vais pas rentrer dans le détail des méthodes de déplacements et les petits problèmes que j'ai dû surmonter. Mais les premiers tests furent un succès.

 

Dans l'article suivant, je parlerais d'un aspect plus intéressant. Car les joueurs ne sont pas au faite de ce qui se cache derrière le rideau numérique, mais bien du visuel du logiciel.

Ludiquement Vôtre,
Azumanurlin.

 

PS : Des exemples de graphes orientés sont les liens web. En effet, cet article fait référence à l'article suivant, qui fait lui-même référence à cet article-ci.

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article