[SPOIL++]Cartographie du 7ème continent

Spécialement pour toi, considère que tu possèdes la carte suivante dans ta besace :
 

Topographe

A chaque fois que vous relevez complètement une carte du jeu dans votre système de cartographie futuriste, vous pouvez entreprendre l’action suivante :

[Cadenas] [Action Observer] 1/0 :
Choisissez une carte de la défausse et mélangez-là dans votre deck d’Action.

Pour réaliser le suivi exact des cartes que tu as déjà relevées ou non, n’oublie pas la liste des cartes avec ID qui est téléchargeable sur le site officiel. :slight_smile:

C’est déjà plus ou moins ce que je fais. Mais je tiens à jour une liste des cartes déjà traitées.

Deuxième session, j’avance doucement, pour l’instant, j’en suis à 8,6 % des cartes répertoriées (mais répertorier les 001 fait vite avancer le compteur à moindre coût)). J’ai encore de petites modifications à faire à mon code pour améliorer les choses, mais je n’ai pas vu de grosses difficultés sur les cartes déjà répertoriées liées à des instructions trop difficiles à transcrire avec mon système.

La liste des cartes répertoriées est en tête du sujet.

Troisième session, le rendu de la carte totale commence à faire pleurer mon ordinateur.

Pour ceux qui avaient des doutes, le réseau est quand même archi bien maillé avec une structure complètement non linéaire.

J’en suis à 11,2% des cartes répertoriées.

11,2% et l’ordi couine ? Du genre prêt à planter après un ralentissement de 3h50 ? Ou juste un freeze qui choque la fluidité habituelle ? Ce serait dû aux images ou aux boucles dans ton code ?

En tout cas, ça donne plutôt bien ! (si tu as l’image HD sans refaire le rendu, je veux bien le lien)

2 remarques :
- A quoi correspondent les couleurs des cartes brunes ou rouges ?
- Un exemple de rendu possiblement intéressant : peux-tu afficher uniquement les cartes Terrain positionnées orthogonalement avec leur position réciproque (Nord/Sud/Est/Ouest) ?

Du genre ça a ralenti au moment du lancement mais avec mon ordi pas mal sollicité à côté et au final ça le fait. C’est une des forces de vivagraph.js : le moteur est plus rapide que D3.js et encore, il y a une option webgl mais je reste en svg que je maîtrise beaucoup plus pour la personnalisation du rendu.

Pour les couleurs, le marron qui tire sur l’orange (#aa4400) c’est les terrains, le marron “caca” (#a2786f) c’est les événements permanents et le jaune moutarde (#cbad39) c’est les événements temporaires. C’est pas très chouette mais c’était juste pour voir.

Pour le positionnement, je n’ai pas encore de solution pour forcer le positionnement relatif, j’aimerai bien le faire, mais si c’est le cas, il y aura des limitations avec les cartes multiples ayant le même numéro. Et je peux difficilement positionner de manière absolue toutes les cartes. J’ai fait des tentatives mais qui ne donnent rien pour le moment.


Pour l’image :
http://eolindel.free.fr/images/7th%20Continent_full.svg à enregistrer, chez moi firefox ne rend pas bien l’image du tout.

http://eolindel.free.fr/images/7th%20Continent_full.pdf le pdf qui est pas aussi joli que le rendu de base avec vivagraph et qui n’est pas dynamique mais qui donne une bonne idée de l’image

Mais l’image ne représente qu’un petit sous-ensemble des données il y pour l’instant 1400 noeuds avec 4900 attributs et 1800 relations entre ces noeuds qui sont de 24 types différents.

Je n’ai pas trop eu le temps de jouer cette semaine mais j’ai un peu avancé sur les cartes actions ce qui fait que j’en suis à 200 cartes tout pile répertoriées et donc 14,76% du jeu traité. J’espère pouvoir finir les cartes compétences de personnage et action dans le week-end mais c’est ambitieux.

Je mets à jour la liste des cartes dans le premier post.

Eolindel dit :[...] 1800 relations entre ces noeuds qui sont de 24 types différents.

C'est justement ce que j'étais en train de me demander : le nombre de types de relation.
Alimenter ton système demande d'être super attentif sur le type de lien utilisé, d'être suffisamment précis dans leur dénomination et de les appliquer à bon escient, tout ça sans pour autant multiplier à tout va des nouveaux types car les requêtes futures seront d'autant plus complexes à composer...

Par exemple, j'ai vu des liens de type [... HAS ...] (avoir/posséder en français).
Une carte possède une ressource (basique ou secondaire comme les algues ou les tombes, ce qui est déjà une distinction potentiellement embêtante). Mais dans le système, on a aussi vite fait d'utiliser un lien avec ce nom pour plein d'autres usages.

24 types me parait plutôt un bon équilibre (à la louche), ce qui est de bon augure pour tes choix... sauf si tu multiplies les usages pas assez finement. no
Merci pour l'image et bon courage pour ta session du week-end !

Forcément, la manière de symboliser les choses ne permet pas toujours de retranscrire les effets sous forme de graphe. Par exemple, pour le craft, le fait que s’il y a du bois ce soit -1 ou de l’os -2, c’est deux choses en parallèle alors que ça devrait être deux trucs linéaires.

DefaultIci, on ne sait pas si c’est la liane ou le bambou qui font le -3 par exemple, mais pour l’instant, je n’ai pas trouvé de manière simple de rendre les choses et je préfère être légèrement imprécis. Pareil, les SP ont été suffisamment inventifs pour que rendre compte de certains textes compliqués soit très difficile sous forme schématisée.

Du coup, je pense que je manque 5 à 10 % des détails mais il sera toujours possible d’améliorer les choses plus tard.

Après, les différents types de relations utilisés sont les suivants :

Links.push({‘hid’:‘ACTION’,‘properties’:{‘fr’:“Action”,‘en’:“Action”}});
Links.push({‘hid’:‘ACTION_TYPE_IS’,‘properties’:{‘fr’:“Type d’action”,‘en’:“Type of action”}});
Links.push({‘hid’:‘BUILD’,‘properties’:{‘fr’:“Construire”,‘en’:“Construire”}});
Links.push({‘hid’:‘CARD_NUMBER_IS’,‘properties’:{‘fr’:“Numéro de carte”,‘en’:“Card number”}});
Links.push({‘hid’:‘CARD_TRAIT_IS’,‘properties’:{‘fr’:“Facette de la carte”,‘en’:“Trait of card”}});
Links.push({‘hid’:‘CARD_TYPE_IS’,‘properties’:{‘fr’:“Type de carte”,‘en’:“Type of card”}});
Links.push({‘hid’:‘COMES_FROM’,‘properties’:{‘fr’:“Viens de”,‘en’:“Comes from”}});
Links.push({‘hid’:‘CONSTRAINT’,‘properties’:{‘fr’:“Contrainte”,‘en’:“Constraint”}});
Links.push({‘hid’:‘BANISH’,‘properties’:{‘fr’:‘Bannir et mettre une carte jaune de même numéro’,‘en’:‘Banish and put golden card’}});
Links.push({‘hid’:‘ENIGMA’,‘properties’:{‘fr’:“Énigme”,‘en’:“Enigma”}});
Links.push({‘hid’:‘FAILURE’,‘properties’:{‘fr’:“En cas d’échec”,‘en’:“If failure”}});
Links.push({‘hid’:‘HAS’,‘properties’:{‘fr’:“a la resource”,‘en’:“has the resource”}});
Links.push({‘hid’:‘HIDDEN’,‘properties’:{‘fr’:“Carte cachée”,‘en’:“Hidden card”}});
Links.push({‘hid’:‘IF’,‘properties’:{‘fr’:“Si”,‘en’:“If”}});
Links.push({‘hid’:“MOVE_TOGETHER”,‘properties’:{‘fr’:‘Aller collectivement’,‘en’:‘Go together’}});
Links.push({‘hid’:“MOVE”,‘properties’:{‘fr’:‘Mouvement’,‘en’:‘Movement’}});
Links.push({‘hid’:“MODIFIES”,‘properties’:{‘fr’:‘Changé par’,‘en’:‘Modified by’}});
Links.push({‘hid’:‘NB_CARDS’,‘properties’:{‘fr’:“Nombre de carte à prendre”,‘en’:“Number of cards to pick”}});
Links.push({‘hid’:‘NB_SUCCESS’,‘properties’:{‘fr’:“Nombre de succès à avoir”,‘en’:“Number of stars to get”}});
Links.push({‘hid’:‘PICK’,‘properties’:{‘fr’:“Prendre la carte”,‘en’:“Pick the card”}});
Links.push({‘hid’:‘PLACE’,‘properties’:{‘fr’:“Mettre la carte en jeu”,‘en’:“Place the card”}});
Links.push({‘hid’:‘POSITION’,‘properties’:{‘fr’:“Position”,‘en’:“Position”}});
Links.push({‘hid’:‘REPLACE’,‘properties’:{‘fr’:“Remplacer par une carte de même chiffre”,‘en’:“Replace by same number”}});
Links.push({‘hid’:‘REPLACE_BY’,‘properties’:{‘fr’:“Remplacer par la carte”,‘en’:“Replace by the card”}});
//Links.push({‘type’:‘RESOLVE’,‘properties’:{‘fr’:“Résoudre une carte exploration”,‘en’:“Resolve exploration card”}});
Links.push({‘hid’:‘SUCCESS’,‘properties’:{‘fr’:“En cas de succès”,‘en’:“If success”}});
Links.push({‘hid’:‘THEN’,‘properties’:{‘fr’:“Alors”,‘en’:“Then”}});
Links.push({‘hid’:‘TRIGGER’,‘properties’:{‘fr’:“Déclenche”,‘en’:“Triggers”}});
Links.push({‘hid’:‘USE’,‘properties’:{‘fr’:“Utiliser”,‘en’:“Use”}});
Links.push({‘hid’:‘ZONE_IS’,‘properties’:{‘fr’:“Zone correspondante”,‘en’:“Corresponding zone”}});

Je ne sais pas si tu connais l’UML (Langage de Modélisation Unifié) ni si son fonctionnement est reproductible dans ton système, mais intuitivement, pour les relations Objet-à-crafter et Ressource, je verrai un lien de dépendance comme ceci :


A un Objet donné, la Ressource fournie une Réduction de telle valeur.
Et on aurait ainsi pour une Ressource, tous les liens vers les Objets avec les Réductions associées.

Ca me rappelle tellement de fun l’uml :smiley:

expectral dit :Ca me rappelle tellement de fun l'uml :D

Et moi donc !! yes
Pour la création du Fan-site (devenu finalement le site officiel avec des fonctionnalités assez différentes), j'avais planché sur un début de réflexion en UML (très très incomplet) :



Et puis par la suite, comme on envisageait de demander aux joueurs de saisir les cartes rencontrées en jeu, j'ai conçu ce formulaire dont l'arborescence des questions dessine de fait les liens et attributs des cartes :
Formulaire test "Création d'une carte"

Tout ça c'est du prototype pour mieux réfléchir, et il ne faut pas faire confiance au contenu qui date d'il y a un moment. Mais c'est sait-on jamais si une seule info peu t'aider dans ton projet ? :)



Voilà mon schéma type d’interactions.

  • :Card est une carte unique avec un identifiant unique (en A0000 par exemple)
  • :Number est le numéro de cartouche (001 par exemple)
  • :Zone c’est pour les zone d’exploration
  • :Origine : boîte de base, extension
  • :Resources : les ressources sur le terrain (primaires comme le bois et secondaires aussi comme eubellis)
  • :Move pour les déplacements depuis les cartes terrain
  • :Stars : les nombres d’étoiles soit à avoir, soit nécessaire pour réussir une action, soit sur une carte action
  • :keyword les mots clés pour les cartes compétences et dérivés
  • :card type : les objets de quête, idée, malédiction, carte personnage, etc
  • :Card number : le nombre de carte à picoher (positif ou négatif pour les modificateurs et actions)
  • :action_type : la vingtaine de types d’actions possibles (se reposer, chasser, etc)

Ensuite je distingue trois grands types :
  • les actions : typiquement, elles un truc qui a un action_type, un :card number un :stars et un :number en cas de succès et/ou échec avec éventuellement un :action type (action obligatoire, qui nécessite un regroupement, verrouillée, etc)
  • les :effect : les trucs dans les cartouches sur les objets en général avec un type d’action et une conséquence, en général sur les cartes à tirer et les succès
  • le :Build : pour crafter les objets. avec en général un nombre de cartes à tirer modifié par des ressources.



Et pour traduire ton schéma UML, cela correspond techniquement aux solutions 1 ou 2. La première est plus souple mais demande un nœud supplémentaire et 3 liens, la deuxième est la plus compacte mais demande de générer beaucoup de nœuds.

J’ai utilisé la solution 2 pour le déplacement (les :Move) par exemple, car il n’y a en gros que deux types de déplacement (move et snowshoe) et pas tant de diversité que ça sur les cartes à tirer et succès à obtenir.

Mais une des forces de neo4j est d’être une base de données NoSQL, donc je peux très librement donner certains attributs à certains noeuds et pas à d’autres. Par exemple, pour les cartes actions, je peux soit mettre un attribut xp pour le coût en XP d’une compétence avancée, soit ne pas en mettre pour une action de base.

Edit: 18,75 % des cartes répertoriées, je vais m’attaquer aux cartes compétence de personnage.

Bon, j’ai fait toutes les cartes compétences, compétences de personnage, malédiction. Du coup, le total grimpe doucement à … 20,66 % des cartes.


Maintenant, il me reste à jouer pour dévoiler des cartes aventure :D. Je vais voir aussi pour améliorer l’interface et les cartes traitées. Je vais voir aussi si je tente de faire un petit système de calcul de probabilité qui prenne en compte les cartes compétence avancées acquises.

Encore une petite session hier, on arrive au bout de la déesse vorace et donc de notre partie (même si on y est pas encore).

Je devrais arriver à un petit quart des cartes répertoriées en fin d’aventure. Mais bon, pour l’instant, je me contente de rentrer les cartes sans forcément travailler sur l’interactivité et le reste.

Et va pour plus d’un quart des cartes répertoriée : 26,42 %. Ça avance même si j’ai encore une petite tripatouillée de cartes explorations à répertorier pour être complètement à jour.

Allez Eolindel ! devil

Ce qui serait intéressant, hors projet de cartographie, c’est connaitre ton état d’avancement approximatif dans les malédictions jouées en fonction de ce taux de cartes répertoriées (voir en fonction d’un taux corrigé avec les cartes actions déduites). Ca donnerait une idée de ton niveau de découverte du Continent en quelque sorte.
C’est une question récurrente chez les nouveaux joueurs et/ou potentiels acheteurs : la vitesse à laquelle on a “fait le tour” de la zone de jeu et presque tout vu.

Si j’en crois mes données, sur les 363 cartes répertoriées, seulement 177 sont des cartes aventure. Mais on a pas encore totalement fini la déesse vorace et on a fait des petites détours en cours de route.


Une petite vue globale de la carte avec les 001 et 003 qui trônent plus ou moins au centre.