Avatar
User
NB Posts : 58
Created :
Last visit :
Posted
Petite précision : le code donné n'est pas de moi mais de pikiou. ;-)
Posted - Edited
Après une longue interruption en partie due au fait que neo4j nécessite java8 et pas java 11 pour tourner, je vais pouvoir ajouter les cartes du KS2. Du coup, il va falloir que je me lance dans les 577 nouvelles cartes :-(

J'ai des pistes pour demander des chemins optimaux et autre à la base de données, mais vu que c'est loin d'être trivial, je laisse ça de côté pour l'instant en me focalisant sur le fait de rentrer des cartes.
Posted
il faut modifier const characters = 3; pour le nombre de joueurs et ajouter des cartes à sharedSkills dans la liste des cartes du deck, les noms sont explicite: Card.Left | Card.One pour une carte :icon_success-left: :icon_succes: par exemple.
Posted
Tu peux modifier en direct le script donné page précédente :
https://codepen.io/pikiou/pen/VMrYxY?editors=0010

C'est sharedSkills et characterSkills qu'il faut modifier.
Posted
J'ai pris toutes les cartes de la boîte de base en photo, je vais pouvoir faire mes vérifications. Je vais aussi tenter de faire des pseudos rendus de carte et afficher certaines infos au passage.
Posted
Pas tant que ça je pense, je suis justement en train de prendre les photos des cartes pour pouvoir checker en simultané les données de la base de données et celles des cartes sans avoir à physiquement regarder les cartes une par une. Pour les photos, j'en suis déjà à la A0695 et c'est relativement rapide (25 sec par carte pour la prise de photo). Par rapport au temps de rentrée qui se compte en dizaines voire centaine d'heures.
Posted
C'est bon pour les 1350 cartes du KS1 all-in !
Posted
carte F1289 "Vers de roche adultes"
Posted
C'est bon pour le sanctuaire interdit. 87,75% et 166 cartes restantes..
Posted - Edited
Un petit 85 % avec le labyrinthe de glace, j'attaque le sanctuaire interdit. Pour le marais de l'épouvante, je verrais car je n'ai pas fait la malédiction. Par contre, pour les vers, la météo et la montre, je pense que je le ferai quand même. Il manquera aussi les cartes tric-trac.
Posted - Edited
Pour l'instant, j'en suis surtout au remplissage de la base de données et pas encore à la phase d'exploitation.

J'ai pour l'instant deux vues principales :
- Une par carte qui pointe les interactions directes (celle de la vidéo youtube)

- Une globale qui donne une cartographie complète des cartes et leur interaction (les images statiques très denses avec les numéros de carte sur fond jaune et vert)

Ce sont encore des prototypes, comme je découvre le langage de la base de donnée et le langage de la représentation de la base en simultané, (sans être informaticien de métier) j'avance petit à petit.


Pour l'exploitation, je pense surtout que je pourrais faire des vues qui correspondent à certaines questions précises que vous vous poserez/que je me pose ... et que je serais capable de programmer (par exemple, les algorithmes d'optimisation de parcours, je ne suis pas sur de pouvoir aller aussi loin que souhaité, mais je pourrais au moins le faire en nombre de carte et donner des nombres de succès requis associés). Il faut bien voir que la densité du graphe est très élevée et que du coup, on tombe vite dans des données de traitement qui peuvent être assez longue, même si à priori, la solution technique que j'ai choisie est adaptée à ce genre de problèmes.

Dans les choses envisageables par exemple, c'est de donner des "walkthrough" pour chaque malédiction en indiquant les points de passage obligés et des manières d'y aller.

Mais la carte complète avec toutes les informations, je ne pense par exemple pas être en mesure de la tracer complètement en une fois tellement le graphe est dense (3000 nœuds et 13000 lien entre eux, c'est vraiment beaucoup !).

Je pense de toute façon essayer de publier les données sous forme accessible à tous (sous forme de lien et d'interaction comme stocké dans ma base, pas les éléments du jeu en version numérique) afin de voir si d'autres peuvent en tirer quelque chose. Mais c'est dense, pas documenté et le fichier sous forme pseudo lisible fait déjà 13000 lignes.

Pour vous donner un exemple, la carte A0325 (la première de la déesse vorace) ressemble à ça en forme pseudo lisible qui est la forme sous laquelle je tape les cartes :
//CARTE A0325 var Card={'type':'Card','properties':{},'Actions' : [],'Effects' : [],'Builds':[]}; Card.properties.hid='A0325'; Card.properties.number='010'; Card.properties.resources=['stone']; Card.properties.move=['move',1,0]; Card.properties.card_type='adventure'; Card.properties.card_trait='terrain'; Card.Actions.push(basicAction(Card.properties.hid,'east','investigate',1,0,'005')); Card.Actions.push(linkZone(Card.properties.hid,'west','z1','009')); Card.Actions.push(linkZone(Card.properties.hid,'north','z1','007')); write_card(Card);


et la requête en langage machine pour insérer la carte à partir du code ci-dessus donne ça (sans chercher à l'optimiser) :
CREATE (:Card {hid : "A0325",origin : "core",number : "010",resources : "stone",move : "move,1,0",card_type : "adventure",card_trait : "terrain",colorName : "green",color : "#5a772e"});
MATCH (n:Card {hid : "A0325"}),(q:Origin {hid : "core"}) CREATE (n) -[:COMES_FROM {fr : "Viens de",en : "Comes from"}]->(q);
MATCH (n:Card {hid : "A0325"}),(q:Number {hid : "010"}) CREATE (n) -[:CARD_NUMBER_IS {fr : "Numéro de carte",en : "Card number"}]->(q);
MATCH (n:Card {hid : "A0325"}),(q:Resources {hid : "stone"}) CREATE (n) -[:HAS {fr : "a la resource",en : "has the resource"}]->(q);
MATCH (n:Card {hid : "A0325"}),(q:Move {hid : "move,1,0"}) CREATE (n) -[:MOVE {fr : "Mouvement",en : "Movement"}]->(q);
MATCH (n:Card {hid : "A0325"}),(q:Card_type {hid : "adventure"}) CREATE (n) -[:CARD_TYPE_IS {fr : "Type de carte",en : "Type of card"}]->(q);
MATCH (n:Card {hid : "A0325"}),(q:Card_trait {hid : "terrain"}) CREATE (n) -[:CARD_TRAIT_IS {fr : "Facette de la carte",en : "Trait of card"}]->(q);
CREATE (:Action {hid : "A0325_005",position : "east",cardSuccess : "005",cardFailure : "",actionCategory : "investigate",nbCards : "1",nbStars : "0"});
MATCH (n:Card {hid : "A0325"}),(q:Action {hid : "A0325_005",position : "east",cardSuccess : "005",cardFailure : "",actionCategory : "investigate",nbCards : "1",nbStars : "0"}) CREATE (n) -[:ACTION {fr : "Action",en : "Action"}]->(q);
MATCH (n:Action {hid : "A0325_005",position : "east",cardSuccess : "005",cardFailure : "",actionCategory : "investigate",nbCards : "1",nbStars : "0"}),(q:Position {hid : "east"}) CREATE (n) -[:POSITION {fr : "Position",en : "Position"}]->(q);
MATCH (n:Action {hid : "A0325_005",position : "east",cardSuccess : "005",cardFailure : "",actionCategory : "investigate",nbCards : "1",nbStars : "0"}),(q:Action_category {hid : "investigate"}) CREATE (n) -[:ACTION_TYPE_IS {fr : "Type d'action",en : "Type of action"}]->(q);
MATCH (n:Action {hid : "A0325_005",position : "east",cardSuccess : "005",cardFailure : "",actionCategory : "investigate",nbCards : "1",nbStars : "0"}),(q:Card_Number {hid : "c1"}) CREATE (n) -[:NB_CARDS {fr : "Nombre de carte à prendre",en : "Number of cards to pick"}]->(q);
MATCH (n:Action {hid : "A0325_005",position : "east",cardSuccess : "005",cardFailure : "",actionCategory : "investigate",nbCards : "1",nbStars : "0"}),(q:Stars {hid : "s0"}) CREATE (n) -[:NB_SUCCESS {fr : "Nombre de succès à avoir",en : "Number of stars to get"}]->(q);
MATCH (n:Action {hid : "A0325_005",position : "east",cardSuccess : "005",cardFailure : "",actionCategory : "investigate",nbCards : "1",nbStars : "0"}),(q:Number {hid : "005"}) CREATE (n) -[:SUCCESS {fr : "En cas de succès",en : "If success"}]->(q);
CREATE (:Action {hid : "A0325_009w"});
MATCH (n:Card {hid : "A0325"}),(q:Action {hid : "A0325_009w"}) CREATE (n) -[:ACTION {fr : "Action",en : "Action"}]->(q);
MATCH (n:Zones {hid : "z1"}),(q:Action {hid : "A0325_009w"}) CREATE (n) -[:REPLACE_BY {fr : "Remplacer par la carte",en : "Replace by the card"}]->(q);
MATCH (n:Action {hid : "A0325_009w"}),(q:Position {hid : "west"}) CREATE (n) -[:POSITION {fr : "Position",en : "Position"}]->(q);
MATCH (n:Action {hid : "A0325_009w"}),(q:Number {hid : "009"}) CREATE (n) -[:SUCCESS {fr : "En cas de succès",en : "If success"}]->(q);
CREATE (:Action {hid : "A0325_007n"});
MATCH (n:Card {hid : "A0325"}),(q:Action {hid : "A0325_007n"}) CREATE (n) -[:ACTION {fr : "Action",en : "Action"}]->(q);
MATCH (n:Zones {hid : "z1"}),(q:Action {hid : "A0325_007n"}) CREATE (n) -[:REPLACE_BY {fr : "Remplacer par la carte",en : "Replace by the card"}]->(q);
MATCH (n:Action {hid : "A0325_007n"}),(q:Position {hid : "north"}) CREATE (n) -[:POSITION {fr : "Position",en : "Position"}]->(q);
MATCH (n:Action {hid : "A0325_007n"}),(q:Number {hid : "007"}) CREATE (n) -[:SUCCESS {fr : "En cas de succès",en : "If success"}]->(q);


Dans les choses pas si simples, c'est de garder une représentation 2D de la carte qui respecte un positionnement orthogonal des cartes entres elles. Le fait d'avoir plusieurs exemplaires du même numéro rend par exemple le dessin d'une carte du 7ème continent impossible techniquement de manière rigoureuse, le mec de BGG a astucieusement contourné le problème. Il y a beaucoup de petites subtilités simple comme ça qui ont rendu assez complexe la conception de la modélisation du jeu.

Et au passage, je ne parle pas de la phase de correction des erreurs de données, il y en a clairement et les SP sont aussi moins contraints que moi car je dois coller à ma solution technique et ma modélisation alors qu'eux peuvent se permettre pas mal de libertés assez difficile à retranscrire sur le plan technique.. Autant j'ai l'intégralité des interactions entre cartes, autant je n'arrive pas à retranscrire l'intégralité du jeu.
Posted
Oui, 83% des 1355 cartes (KS1 all-in)
Posted
Et voilà, c'est bon pour la boîte base, les cartes 1 à 1027 sont répertoriées plus une centaine d'autre, ça fait presque 83 %. Si j'arrive à avancer à un bon rythme, ce sera fini d'ici 1 à 2 semaines.
Posted - Edited
Le sujet principal est sur tric trac :
https://www.trictrac.net/forum/sujet/projet-cartographie-du-7eme-continent?page=1
il y a un doublon sur BGG :
https://boardgamegeek.com/thread/1828711/spoilprojectmap-7th-continent

J'en suis à environ 73 % des cartes répertoriées, une fois la base de donnée constituée, il faudra que je puisse améliorer le rendu de mon interface pour retranscrire au mieux les propriétés de la base de donnée qui y correspondent.

Je remet une vidéo d'un prototype de ce que j'ai fait sur le P&P (j'ai un peu amélioré depuis):


Et une petite image en cours de la carte simplifiée (il y a plus d'informations dans la base de données)


J'avais également commencé une série d'articles sur TT à propos de la méthode pour cartographier.

Le 7ème continent : carnet du cartographe, partie 1

Le 7ème continent : carnet du cartographe, partie 2

EDIT : j'ai passé le cap symbolique des 1000 cartes répertoriées et des 75% des cartes traitées. Ça représente pour l'instant 3500 nœuds et 12 000 relations.

EDIT 2 : Encore les 25 cartes 050 et j'aurais répertorié toute la boîte de base. (il ne reste plus que 261 cartes à faire).
Posted
Idem, j'ai tout écouté et je suis assez bluffé que la modélisation n'ait été faite que sous Excel. Ça laisse entrevoir des possibilité pour aller plus loin en terme de modélisation avec des outils plus poussés, cf le topic https://www.trictrac.net/forum/sujet/projet-cartographie-du-7eme-continent
C'est en petit standbye pour le moment vu que j'ai pas mal de boulot et que je fais des infidélités au 7ème continent en jouant à Kingdom Death; Monster pour lequel je fais aussi une version numérique des règles (vu que KD:M n'intéresse pas ma femme, je peux y jouer quand je veux alors que pour le 7ème continent, ils faut qu'on puisse tous les deux).

En tout cas, l'émission était passionnante et les 4h sont passé très rapidement.
Posted
OK, donc pas d'erreur. Merci.
Posted
Les deux cartes sont avec une cartouche verte pour la 320 qui pointe vers la 290 mais je n'ai pas vu de numéro caché.

C'est une autre carte qui permet de pointer dessus ou un numéro caché manquant ?
Posted - Edited
Sur la carte A0261, dans le cartouche noir, il y a indiqué "Rangez" en lettre bleues. Ce qui est d'habitude réservé à l'effet "Bannissez". Du coup, je me demande quelle est la bonne conséquence entre ranger et bannir.

EDIT: Il y a la même chose sur la A0274 donc c'est peut-être normal ?
Posted
Bravo les poulpes ! :thumb_up:

Franchement, une super campagne et un contenu global qui est franchement cool !
Posted - Edited
Perso, on a joué à 2, Ferdinant et Mary Kingsley. Clairement, Mary est un perso qui facilite grandement la quête !
Ses cartes perso dont la "nomadisme" -1 :card_blue:/+1 :icon_succes: pour la navigation sont au top !



Du coup, on a optimisé Mary avec un objet et combo de la mort qui tue
Le combo radeau+pagaie+la fameuse carte "nomadisme" tandis que Ferdinand avait sa perche pour limiter la pioche avec -1 :card_blue: pour la navigation. Et bien évidemment, une ou deux cartes "se souvenir"


Je trouve que certes, la narration est pas exceptionnelle, mais la mécanique est vraiment sympa ! Du coup, pour moi, la note "technique" compense largement la note "artistique". Bref, je me suis bien marré à faire la malédiction. Mais c'est clair que c'est un peu atypique et que ça n'est pas une malédiction qui fera l'unanimité.

De toute façon, heureusement que ça ne durait pas beaucoup plus longtemps car on était pas loin d'être complètement épuisés à l'arrivée. Et la carte "fin" est bien marrante.

En tout cas, j'espère que personne n'arrive avec la carte ayant le coutelas sur fond bleu car sinon c'est ... la loose.