Pratiques de citation des jeux de rôle sur table : création de la base de données et traitement statistique

Avertissement : Les données sont incomplètes et leur traitement est embryonnaire. Ce 100e billet de ce blogue a pour but de faire le point sur la méthode et les résultats à mi-parcours.

Introduction

Dans le cadre du Projet Sur les épaules des géants des nuages, qui analyse les pratiques de citations dans les jeux de rôle sur table, j’ai poussé mon travail vers :

  1. La sélection et le dépouillement de jeux de rôle sur table ;
  2. La création d’une base de données de citations, structurée et hébergée par Wikidata ;
  3. L’analyse de cette base de données par la suite de logiciels ouverts de statistique R (R Studio, etc.).

Sélection

La sélection des jeux de rôle s’est faite sur :

  • La liste de tous les jeux de rôle qui ont une page Wikipédia en anglais et en français. Complétude : environ 95% ;
  • Plus tous les jeux cités dans les podcasts francophones, les blogues francophones et anglophones et les magazines sur le jeu de rôle sur table que j’ai suivi sur les dix dernières années. Complétude : environ 80% ;
  • Plus tous les jeux cités par des jeux issus des listes précédentes.

Cette sélection est modérément biaisée car la notoriété est attribuée de manière externe par des tierces parties (Wikipédia et les éditeurs des périodiques).

La sélection a été validée par le fait que chaque jeu mentionné comporte une ou plusieurs notices de référence dans la base de données RPGGeek (environ 99.9%).

Dépouillement

Le dépouillement des jeux a été fait sur plusieurs mois. Chaque page mentionnant un autre jeu de rôle a été récolté par numérisation ou par re-numérisation (capture d’écran d’un PDF par exemple) sous la forme de fichier image PNG uniques nommé avec nomdujeu-pXX.png (où XX représente la page de la numérisation).

Pour enrichir les données dépouillées, les métadonnées d’édition du jeu ont aussi été capturées : ours, colophons,  pages de crédits (env.90%), pages de remerciement, extrait de la page des participants des souscriptions (env. 50%), parfois couverture ou dos de couverture (env. 5%).

Si d’autres mentions de citation étaient présentes, elles ont aussi été récoltées : bibliographies, filmographies, citations d’auteurs ou d’œuvres, etc.

Si le jeu contenait des épigraphes, tout ou une partie des épigraphes ont été récolté.

Conception de la base de données

J’ai choisi Wikidata pour déposer le cœur de la base de données des pratiques de citation.

  • Cela m’évite d’avoir à créer ma propre base de données ;
  • Cela me permet de partager ma base de données de manière ouverte ;
  • Wikidata est simple à alimenter ;
  • Wikidata exporte dans des formats simples ;
  • Il y avait presque toutes les propriétés dont j’ai besoin :
    • propriétés de citation (cites work P2860)
    • publisher P123
    • movement P135
    • author P50
    • publication date P577
    • Il n’y a pas : bibliographie existante, épigraphe existants
  • Je peux potentiellement lier les données à d’autres bases de données pour enrichir ce cœur.

Pour l’occasion, j’ai demandé à Wikidata la création d’une propriété d’identifiant (identifier ID P7226) vers RPGGeek pour lier ces deux bases de données.

Avancement

La saisie dans Wikidata a débuté en mai 2019. En décembre 2019, il y avait environ 13 000 éditions faites.

Environ 300 éléments Q ont été créés. La plupart sont des éléments Q d’un jeu de rôle inexistant auparavant. Plus rarement, un élément Q a été créé pour une catégorie taxonomique (ex: tabletop role-playing game supplement, GM-less, death spiral, etc.).

Environ 766 liens ont été créés entre 137 jeux (voir cette extraction SPARQL).

Beaucoup de données étaient à corriger ou à préciser. Par exemple, de nombreux jeux de rôle n’avaient pas d’instance, ou bien avaient l’instance jeu (game) ou jeu de rôle (role-playing game), alors que l’instance correcte est jeu de rôle sur table (tabletop role-playing game).

D’autres mises en ordre ont été référencées sur la page WikiProject Boardgame.

SPARQL

Le langage SPARQL permet d’extraire les données de Wikidata. La principale requête a été déposée ici.

Elle permet d’extraire un tableau simple, ayant les jeux analysés dans une colonne et tous les jeux de rôle cités par celui-ci dans une autre colonne.

Analyse avec le logiciel R

R est une suite de logiciels libres pour traiter de données numériques. C’est la grande mode en ce moment dans la recherche universitaire alors pourquoi pas les utiliser pour mon projet ? Ces logiciels sont gratuit et ouverts, donc il existe beaucoup de partage de codes et d’outils en ligne. Idéal pour moi qui suis un programmeur du dimanche. De plus, la manipulation de R n’est pas très complexe avec l’interface R Studio.

J’ai déposé le code ici https://github.com/pmartinolli/OtSoCG

Cliquer sur l’image pour télécharger
une visualisation des données au format PDF.

Wikidata : base de données+requêtes pour programmeurs du dimanche

Synchronicité

Dans le billet précédent, j’expliquai les limites techniques de mon projet de chronologie des jeux de rôles, d’arbre des innovations et des citations, par mes limites de compétences en informatique. Il se trouve que je viens tout juste d’assister à une formation sur Wikidata donnée par Simon Villeneuve, véritable wiki-héros Chicoutimien (107 contributions).

Wikidata est une solution simple pour constituer une base de données d’éléments liés (ex: Q1375) et  pour générer des tableaux de données, des chronologies, des graphes, etc. grâce à des requêtes complexes. Même si les déclarations d’éléments peuvent être complexes, Wikidata m’évite d’avoir à apprendre des langages de programmation, de structuration de données et d’installer le tout localement. De plus, le cheminement est progressif et il porte ses fruits dès le début. Il peut être jumelé ou soutenir des projets d’humanités numériques pour lesquels vous manquez de ressources de programmation. Parlez-en à votre bibliothécaire disciplinaire.

Du coup, je réfléchis comment apparier mes données avec celles de Wikidata et comment utiliser cet outil qui a le bénéfice d’être entièrement ouvert (le contenu dans le domaine public CC0).

Bases de Wikidata

  • Un élément Wikidata Q possède des propriétés P qui elles-mêmes sont souvent d’autres éléments Q.
  • Pour plus de précisions, on peut encore préciser ces données avec des éléments P et Q.
  • Chaque élément est multilingue.
  • Il est possible de sourcer tous les éléments avec des références bibliographiques.
  • Il est possible de lier les données à des bases de données externes grâce à des propriétés de type « Identifiers / Identifiants ».
  • Chaque modification est signée et comptabilisée (j’en suis à 12 000 en nov. 2019).
  • On peut interroger Wikidata et récupérer les données sous différents formats grâce à des requêtes SPARQL (exemples).
  • On peut s’amuser à renseigner des éléments :

Bonnes pratiques pour les jeux de rôle sur table

Requêtes SPARQL

Exemple de graphe sur les pratiques de citation dans les jeux de rôle sur table.

Try it!

Méthode et structure du code dot de l’arbre des innovations des jeux de rôle sur table

Lien vers le dépôt GitHub contenant le code source et le PDF

Mets ta méthode (méta-méthode?)

La meilleure (mais que je n’ai pas suivie)

Idéalement, pour conduire un projet d’arbre phylomémétique des innovations dans les jeux de rôle sur table, la meilleure méthode serait de générer du code à partir d’une base de données dont les éléments seraient les jeux, les innovations et les liens entre eux.

L’intérêt principal de cette méthode est que je pourrais ainsi catégoriser les éléments (leur ajouter des mots clés) et générer facilement un ou plusieurs graphes selon ces catégories. Par exemple, générer un arbre des liens de citation seulement, un arbre autour des mécaniques de randomisation (dés, etc.), un arbre sur les jeux français, etc. Cela permettrait aussi de générer un arbre pour deux langues facilement : un avec des champs en anglais et un un avec des champs en français.

Pour cela, je pourrais utiliser Gephi pour toute la chaîne de production. Ou bien, je pourrais utiliser une base de données, interrogée par Python qui génèrerait du code en langage dot, puis qui serait interprété en ps par Graphviz, puis en pdf par Acrobat Distiller.

La pire (Que j’ai évité)

La pire méthode serait de créer les éléments du graphe et de les relier manuellement directement dans le document final. Exemple : en déroulant une feuille papier de 2 x 3m et rédigeant tout avec un crayon papier. Ou bien en utilisant un logiciel de diagramme visuel WYSIWYG comme Visio, CMaptools, etc.

La voie du milieu (Que j’ai choisi)

En effet, comme je ne sais pas utiliser Gephi ni programmer en Python, j’ai choisi une méthode qui court-circuite la base de données de la «meilleure méthode» ci-dessus pour coder toutes les données directement en langage dot. Cependant :

  1. Cela m’oblige à bricoler des règles de structure car je ne peux pas facilement catégoriser les éléments.
  2. Tout est dans un seul bloc de code. Donc, si je veux couper des éléments pour faire des petits arbres plus simples, il faut que je regroupe ces éléments dans des parties bien séparées (et facilement escamotables).

Chronologie des jeux de rôle sur table (rendu partiel ne tenant pas en compte des innovations, des liens d'auteur, de citation ou de règles)
Chronologie des jeux de rôle sur table (rendu partiel ne tenant pas en compte des innovations, des liens d’auteur, de citation ou de règles)

Le code source code est une adaptation du code créé par Todd Lehman pour son “TeX Family Tree”.

J’ai fait un modèle simple reprenant toute la structure en quelques éléments (aperçu). N’hésitez pas à vous l’approprier pour vos propres projets (et me citer).

Partie 1 : le préambule

  • Métadonnées
  • Conseils de compilation du code
  • Paramètres du graphe

Partie 2 : la ligne du temps

  • de 1969 à maintenant

Partie 3 : la liste des jeux de rôle

{ rank = same; 1977; dndholmes [label="Basic D&D [Holmes]"]} odnd_whitebox -- dndholmes ;
{ rank = same; 1981; dndmoldvay [label="Basic D&D [Moldvay]"]} dndholmes -- dndmoldvay ;
{ rank = same; 1983; dndmentzer [label="Basic D&D [Mentzer]"]} dndmoldvay -- dndmentzer ;
  • Ils sont listés et regroupés par :
    • gamme
      • avec une liste des différentes éditions des règles
      • suivie d’une liste des suppléments/ modules marquants
    • puis ils sont listés et regroupés par genre (fantasy, sf, etc.)
  • Chaque élément est décrit de la manière suivante : 1ère année de publication / identifiant unique / label [nom du jeu et édition] / lien immédiat vers le jeu précédent de la gamme

Partie 4 : la liste des innovations : mécaniques de jeu, intentions ludiques, etc.

Pour le moment, cette partie n’est pas diffusée sur GitHub.

  • Chaque élément est décrit de la manière suivante  : Identifiant unique / label (description synthétique de l’innovation) / lien immédiat avec le jeu dont cette innovation est issue.
    • { identicaldices [label = "Sets of identical-dices values in dice pool"]} godlike -- identicaldices ;
  • Option du label : précédé de «1st» si c’est original (1ère fois que…)
    • label = "1st critical hit\n['lucky hit']"
  • Les innovations sont classées par grandes catégories. Chaque catégorie est colorée différemment.

Liste des catégories des innovations

  • Miscellaneous historical innovations
  • Authority on fiction: gamemaster roles vs players roles
  • Campaign, adventure
  • Design
  • Resolution system
  • Critics & level of success
  • Dramatic modifiers to resolution
  • Saves
  • Use points to influence success (aka Meta-currency)
  • Health
  • Group
  • Sheet
  • Character generation
  • Character advancement
  • Magic
  • Morality, Alignment, Personality, Sanity
  • Literature / Genre Emulation
  • Rolls & Randomizers

Partie 5 : méta-liens entre les éléments

Pour le moment, cette partie n’est pas diffusée sur GitHub.

Les liens de base existent déjà entre les jeux (dans la liste des jeux de la partie 3) et entre les jeux et les innovations (dans la liste des innovations de la partie 4). Dans cette partie, on va tisser d’autres types de liens.

liens de Même auteur

La liste des principaux concepteurs de jeu, avec un historique de leurs principaux jeux édités.

eotpt -- eotpt83 -- eotpt87 -- aot1992 -- tita2002 -- eotpt2005 [headlabel = "M.A.R. Barker"] ;

liens de Citation directe

Quand un jeu est cité par un autre jeu en bibliographie, en dédicace, etc.

{dnd0 -- tnt1} -- runequest1 ;

liens autres

Liens divers mais significatif entre 2 jeux : même maison d’édition, mêmes règles, même univers diégétique, etc. Le trait est alors en pointillé.

  • pathfinder -- starfinder [style=dotted];;
  • { orientaladventures ; l5r2 } -- orientaladventures2 [style=dotted];;
  • agameofthrones -- asongoficenfirerpg [style=dotted];
  • tombofhorror -- returntombofhorror -- tombofannihilation [style=dotted] ;

Comment indiquer les sources des jeux et des innovations ?

  • Les sources sont indiquées dans le code du graphe sous la forme de commentaires (ex: #s075). Les numéros d’identifiants sont uniques, ils sont précédés d’une lettre indiquant le type de source.
    • #p001 : source no. 001, une source primaire
    • #s045 : source no. 045, une source secondaire
    • #t078 : source no. 078, une source tertiaire
  • La liste des sources est rédigée dans un document sources.md à part.
    • Le début du fichier liste les sources générales
    • La fin du fichier recense spécifiquement toutes les sources utilisées.

Phylomémétique des jeux de société et des jeux de rôle

Et comme il y a infiniment moins de parties et d’organisation dans la plus belle composition d’éloquence que dans le corps organisé le plus grossier, la reproduction [propagation] d’une Iliade et d’une Enéide est une supposition plus facile que celle d’une plante ou d’un animal. (Hume)

La phylomémétique est l’étude historique de l’évolution des relations entre des objets ou des concepts culturels. Le terme est inspiré du terme « phylogénétique » pour les êtres vivants. Tout comme pour la mémétique en général, il y a beaucoup de problèmes car il y a de nombreux transferts horizontaux à évaluer et des générations spontanées. Alors que pour le vivant, les transferts sont surtout verticaux avec peu de nouveauté.

Arbres phylomémétiques

Les résultats des études de phylomémétique prennent souvent la forme d’arbres phylomémétiques d’une grande complexité et d’une grande beauté esthétique aussi :

Dans le cadre de mon projet Sur les épaules des géants des nuages, j’ai commencé à concevoir deux arbres posés sur une frise chronologique : un sur les jeux de société et un sur les jeux de rôle sur table. Ils sont écrits dans le langage DOT et compilés avec Graphviz. Je les partagerai quand ils seront mûrs.

Niveau caché de l’exposition Donjons & Données probantes : mon arbre phylomémétique des jeux de rôle sur table de 1974 à 2018

Relations phylomémétiques

Il est difficile de retracer et certifier un lien fiable entre deux jeux. Pour le vivant, on peut s’appuyer sur les gènes. Pour langues humaines, on peut s’appuyer sur les mots et la structure de nombreuses phrases. Mais pour les jeux, nous n’avons que très peu d’éléments objectifs et indiscutables.

Approche purement phylomémétique

Il est possible d’établir un arbre phylomémétique des jeux de société en se basant seulement sur leurs mécaniques et leur première date de publication. Pour cela, il faudrait par exemple extraire les données de BoardGameGeek via une API. Ensuite, il faudrait les soumettre à un logiciel spécialisé de phylogénie. Hélas, je ne posséde pas les compétences nécessaires pour une telle entreprise. Cependant, tout étudiant motivé pourrait en faire un excellent projet d’étude interdisciplinaire (merci de m’en donner des nouvelles).

Approche historique

Étant historien [et codeur du dimanche], je vais suivre les méthodes d’enquêtes historiques pour remonter chaque branche, évaluer les sources et établir des faits et des relations. Le tout sera compilé dans une frise chronologique sous la forme d’un arbre, ou plutôt devrions-nous dire un “graphe connexe non cyclique oriente”.

Le mot “connexe” renvoie aux connexions des lignes entre elles. Le terme “non cyclique” réfère au fait qu’il n”existe qu’un chemin pour passer d’une extrémité d’une ligne à une autre extrémité. Le mot “oriente” réfère à ce qu’on appelle une “racine”, un point initial qui donne un sens de lecture au graphe. (Charbonnat et al., 2014, p.105)

L’enquête historique se base surtout sur des sources primaires (c’est-à-dire les jeux originaux) ; sur des sources secondaires (les études sur ces jeux) et des sources tertiaires (compilations ou larges synthèses de sources diverses sur ces jeux).

Sources primaires

  • Le jeu en tant qu’objet : éléments mobiles et fixes, motifs, habillage de marque (trade dress), matériaux.
  • Le texte des règles du jeu : mécaniques de jeu, vocabulaire spécifique.
  • Les métadonnées du jeu : auteur, éditeur, dates de publication, version, variante.
  • Le métatexte : les remerciements, les crédits, les épigraphes, la bibliographie et enfin et surtout la perle très très rare : les références ludographiques citant d’autres jeux.
  • Les interviews ou les autobiographies des auteurs du jeu.
Le combat des dieux, de Bruno Faidutti, 1999 (2011).

Sources secondaires

  • Commentaires ou critiques de jeu.
  • Articles de fond (universitaires ou enquêtes, biographies, reportages) sur un jeu ou une famille de jeux.

Sources tertiaires

  • Article d’encyclopédie ou entrée de dictionnaire sur un jeu ou une famille de jeux.
  • Catalogue de jeu avec indexation des mécaniques de jeu.

Problèmes investigués dans les prochains billets

  • Lien généalogique : seul l’auteur d’un jeuB, citant explicitement l’inspiration d’un autre jeuA, peut attester de manière sûre la parenté du jeuB sur le jeuA [lien vertical].
    • Sans doute pour des raisons de propriété intellectuelle (pour éviter des ennuis juridiques), très peu d’auteur citent leurs inspirations.
    • Certaines cultures et certaines motivations peuvent favoriser les pratiques de citation.
    • Récemment, la reconnaissance des auteurs de jeu de société et les citations ludographiques dans les jeux de rôle sur table commencent à changer les pratiques de citation.
  • Lien phylogénique ou phylomémétique : l’antériorité et l’originalité d’une mécanique d’un jeu est un indicateur de parenté probable avec un autre jeu ultérieur aux mécaniques similaires [lien horizontal].
    • On peut lier des jeux avec leurs mécaniques, leurs intentions ludiques ou leur exégèse (univers, genre, etc.).

Bibliographie

Pascal Charbonnat, Mahé Ben Hamed et Guillaume Lecointre (sous la dir. de), Apparenter la pensée ? Vers une phylogénie des concepts savants, Paris, Editions matériologiques, coll. « Sciences & Philosophie », 2014, 274 p.

Fisler, Marie, Cédric Crémière et Guillaume Lecointre. « Qu’est-ce qu’un arbre des idées ? Explications des notions d’arbre et de phylogénie et histoire des représentations de l’arbre ». Dans Apparenter la pensée ? Sous la direction de Pascal Charbonnat, Mahé Ben Hamed et Guillaume Lecointre, 103‑44. Sciences & philosophie. Paris: Editions Matériologiques, 2014. https://www.cairn.info/apparenter-la-pensee–9782919694563.htm.

David Hume, Dialogue sur la religion naturelle, IIIe partie, trad. M. Malherbe, Vrin, p.143-145.

Deniz Cem Önduygu, « The History of Philosophy – Summarized & Visualized ». The History of Philosophy, 2018.

Hokky Situngkir, « The Phylomemetics of Batik », SSRN Social Science Research Network, no ID 1481394,‎ 2 octobre 2009 (DOI 10.2139/ssrn.1481394).

Créer un graphe sur OD&D

2016-05-27 16-12-45

Voici quelques conseils pour créer votre propre graphe dont la mise en forme se fait automatiquement. Avec des logiciels libres. C’est l’équivalent de LaTeX pour les diagrammes en quelque sorte. Il suffit de modifier le codage en langage dot (très simple) et c’est le logiciel Graphviz qui s’occupe de positionner le tout au mieux.

L’exemple de codage a été fait autour de la création de OD&D.

  1. Installer:
    1. Graphviz (!site souvent très lent).
    2. Notepad++ (logiciel très pratique pour écrire du code)
  2. Paramétrer Windows pour Graphviz (modifier la variable d’environnement “path”)
    1. Démarrer > Panneau de configuration > Système et Sécurité (clic titre) > Système > Paramètres système avancés > Variables d’environnement.
    2. Sélectionner la variable/ligne “path” dans la liste des variables système. Cliquer Modifier. Ajouter à la fin de la ligne  ;C:\Program Files (x86)\Graphviz2-34\bin
      (NB: ne pas oublier le point-virgule du début)
  3. Paramétrer Notepad++
    1. Paramétrer le lancement de Graphviz depuis Notepad++
      1. Notepad++: Plugins (ou Compléments) > Plugins Manager > Show Plugin Manager : Search and install NppExec plugin
      2. Configurer le NppExex: Plugins > NppExex > Execute > saisir ce script dans la fenêtre (une seule ligne) :
        dot "$(FULL_CURRENT_PATH)" -Tpng -o "$(CURRENT_DIRECTORY)\$(NAME_PART).png"
        cela va lancer le programme dot et créer un PNG.
      3. On peut remplacer par Tpdf pour faire un PDF mais c’est moins robuste pour les graphes immenses.
      4. On peut utiliser l’option gdi+ pour faire le rendering car cairo (défaut) n’est pas robuste pour les graphes immenses:
        dot "$(FULL_CURRENT_PATH)"  -Tpng:gdiplus:gdiplus -o -v "$(CURRENT_DIRECTORY)\$(NAME_PART).png"
      5. Sauvegarder le script.
    2. Paramétrer le coloriage syntaxique dans Notepad++
      1. Télécharger le fichier graphviz-notepad-udl.xml.
      2. Notepad++: Language > Create User Define Language > Import : sélectionner le fichier xml précédent. Relancez Notepad++.
  4. Pratiquer la création de graphes :
    1. Télécharger le fichier exemple.gv
    2. Ouvrir le fichier exemple.gv avec Notepad++
    3. [Modifier le contenu]
    4. Plugins > NppExec > OK … un fichier PNG est créé. Voir le fichier exemple.png.

Sources: Steinweb, Grevian, TBallantyne. Lien pratique pour les couleurs.