Analyse de BGG: Introduction
Les articles dans cette section analysent différents aspects de la base de données de Boardgamegeek (BGG). J’ai été inspiré par l’analyse de Dinesh Vatavani (http://dvatvani.github.io/BGG-Analysis-Part-1.html). Je voulais toutefois aller plus loin et c’était une bonne façon de pratiquer les habiletés d’apprentissage machine en Python. Je suis également motivé à comprendre les joueurs, ce qu’ils aiment et comment ils pensent. Je crois que ça pourrait m’aider à concevoir des jeux de société plus populaires.
Cette section sera un peu aride, mais je pense qu’elle est importante pour comprendre le reste. Je vais survoler trois sujets: Ce qu’il y a dans la base de données de BGG, ce qu’on doit garder en tête lorsqu’on interprète les données et comment je m’y suis pris pour ce faire. Alors, allons-y!
Qu’y a-t-il dans la base de données de BGG?
Il y a beaucoup d’informations sur le site de BGG. En date du 7 janvier 2020, il y a 112 758 entrées dans la base de données dont 91 699 jeux et 21 059 extensions. Les informations pouvant être extraites de la base de données sont:
id: L’identifiant unique de chaque entrée, un entier.
type: Jeux (boardgame) ou extension (expansion)
name: Le titre de l’entrée
yearpublished: L’année de publication de l’entrée
minplayers: Le nombre minimum de joueurs requis pour jouer à l’entrée
maxplayers: Le nombre maximum de joueurs requis pour jouer à l’entrée
playingtime: La durée du jeu (pas trop sûr de la différence avec maxplayingtime)
minplaytime: La durée minimale de l’entrée
maxplaytime: La durée maximale de l’entrée
minage: L’âge minimum pour comprendre l’entrée et être capable d’y jouer
users_rated: Le nombre d’usagers ayant évalué l’entrée
average_rating: La moyenne des évaluations des usagers pour l’entrée
bayes_average_rating: La moyenne bayesienne de l’évaluation, qui ajoute un nombre d’évaluations fictives (~750) d’une valeur moyenne (~5.5) pour éviter les cas limites quand le nombre d’évaluations est faible. Lorsque le nombre d’évaluations est moins de 30 (statistiquement significatif) la moyenne bayesienne n’est pas définie.
total_owners: Le nombre d’usagers possédant l’entrée
total_traders: Le nombre d’usagers ayant échangé l’entrée
total_wanters: Le nombre d’usagers cherchant à échanger ou à acheter l’entrée
total_wishers: Le nombre d’usagers désirant ou intéressés l’entrée
total_comments: Le nombre de commentaires laissés pour chaque entrée
total_weights: Le nombre d’usagers ayant évalué la complexité de l’entrée
average_weight: La moyenne de la complexité évaluée par les usagers
types: Le type de l’entrée: Abstract, Boardgame, CGS, Children game, Family game, Party game, RPG item, Strategy game, Thematic et/ou Wargames. CGS abrège Customizable Game System. Les types Boardgame, Family game et RPG semblent désuets car ils n’étaient pas très informatifs. Les types sont plus ou moins des “groupes” des goûts des joueurs ou encore des types de joueurs ou de segments de marché. À ne pas confondre avec ‘type’ qui est soit un jeu, soit une extension.
categories: Liste des différents thèmes associés à l’entrée. Peut contenir des types.
mechanics: La liste des différents mécanismes associés à l’entrée
designers: Le designer de l’entrée
artists: L’illustrateur de l’entrée
publishers: L’éditeur qui a publié l’entrée
family: Liste de mots-clés qui ne correspondent pas aux autres listes. Ça peut indiquer si le jeu a été socio-financé, s’il a trait à un film ou à une télé-série, si le jeu est Legacy, s’il a une pièce de jeu particulière, etc.
expansions: Les extensions reliées au jeu
Il peut y avoir encore plus d’items (comme si le jeu est multilingue ou s’il a gagné des prix). Ces items se retrouvent sur la page web du jeu, mais ne semble pas être dans la base de données. Je vais mettre à jour la liste au fur et à mesure que j’ajoute des informations à l’analyse.
Ce qu’il faut garder en tête
Interpréter les données est plus difficile qu’il n’y paraît. Les données qui semblent pointer vers une interprétation évidente peuvent souvent avoir un autre sens avec un peu de recul. Il faut aussi faire attention à ne pas confondre cause et corrélation. Deux variables qui changent ensemble ne sont pas nécessairement liées. Le plus important toutefois est de toujours connaître les suppositions présentes dans les données. Voici donc une liste de quelques points à garder en tête:
L’usager typique de BGG n’est pas le joueur typique. Je pense qu’on peut dire que l’usager typique de BGG est plus passionné des jeux de société que le joueur typique. Il est également plus érudit (au sujet des jeux). Ça faire en sorte que l’usager typique de BGG peut préférer des jeux plus complexes et les évaluer dans le même sens. Il y a donc probablement un biais dans les évaluations (nombre et valeur) par rapport au monde réel.
Tous les jeux ne sont pas évalués. Beaucoup de jeux sont joués de part le monde. La plupart ne sera pas évalués sur BGG. Il se peut que les évaluations sur BGG constituent un bon échantillonnage de la réalité, mais ce serait surprenant.
Les évaluations sont indépendantes du nombre de parties. Supposons que vous jouiez à un jeu une fois et le notiez sur BGG. Un autre joueur en joue 10 parties avant de faire de même. Quelle évaluation a le plus de poids? Selon BGG, elles ont la même importance bien que la seconde soit probablement plus éclairée.
La popularité d’un jeu sur BGG n’est peut-être pas un reflet juste des ventes. On peut s’attendre à une corrélation entre les deux, mais les ventes sont probablement mieux reflétées par le nombre d’évaluations que leurs valeurs. Certains jeux sont des succès commerciaux, comme Monopoly, sans pourtant être bien classés sur BGG. Les jeux pour enfants sont en général sous-évalués sur BGG. On peut également supposer que les jeux basés sur des licences, comme disons les Transformers, sont de bons vendeurs sans être bien évalués par les usagers de BGG.
Les préférences sont particulières. Chacun d’entre nous a des goûts différents en matière de nourriture, de musique, de films… et de jeux. Ça soulève la question de ce qu’on veut dire par un bon jeu. Est-il bien conçu ou produit? Est-il simplement à notre goût? Au goût de la plupart des joueurs? A-t-il été bien mis en marché, de sorte qu’on le désire et donc qu’on l’aime à cause de ça? Est-ce parce qu’il a gagné des prix? Dans ce cas, comment ces prix ont-ils été décernés? C’est difficile de répondre à ces questions avec certitude. Je pense que c’est toutefois utile de les garder en tête pour mieux interpréter les données.
La liste des mécaniques de jeux a été changée récemment. Il y a eu une mise à jour majeure des mécaniques sur BGG d’après l’ouvrage Building Blocks of Tabletop Game Design par Engelstein et Shalev. Ça veut dire que certaines entrées de la base de données n’ont peut-être pas été mises à jour. La nouvelle liste est plutôt longue avec près de 200 mécaniques. C’est à la fois utile et problématique. C’est utile car ça donne une description plus précise des jeux et de leurs mécaniques (qui sont plus ou moins des «design patterns» ou solutions de design pour les jeux de société). C’est problématique puisque la liste est tellement longue qu’il est difficile de tirer des conclusions avec autant d’items. Les joueurs ne considèrent certainement pas autant de mécaniques lorsqu’ils jouent, ce qui rend cette liste plus académique que pragmatique. De plus, cette liste ne pourra jamais être exhaustive puisque de nouvelles mécaniques sont continuellement inventées.
Les types et les catégories peuvent se chevaucher. Les types sont similaires aux genres. Je pense qu’il sont utiles afin de donner une idée générale de l’expérience offerte par le jeu. Les catégories représentent plus ou moins les thèmes présents dans les jeux, mais elles ne sont pas très bien définies. Il est peut-être plus utile de considérer les types (et les catégories) comme des grappes (clusters) de jeux. Supposons que chaque jeu est un point sur un graphique selon certaines variables décrivant l’expérience esthétique. Certains jeux sont similaires et seront proches les uns des autres. Ces groupes de jeux (ou grappe) définissent les genres. Ces groupes ne seront pas clairement délimités car il y a des jeux de toutes sortes, parfois à cheval entre les genres.
La base de données est incomplète. Bien qu’une entrée puisse contenir toutes les informations décrites ci-haut, plusieurs entrées ne sont que partiellement remplies. L’analyse est donc aussi bonne que les données entrées par les usagers le permettent.
Comment je m’y suis pris
J’ai utilisé Python pour faire à peu près tout dans ce projet. J’ai utilisé le Jupyter Notebook (JN) pour tout avoir au même endroit. J’ai modifié le code de Dinesh Vatavani pour télécharger la base de données de BGG et j’ai créé un JN pour ce faire. Le téléchargement utilise la librairie scrapy et se fait en deux étapes. Premièrement, la page «browse» de BGG est accédée pour retirer la liste de tous les jeux. Ensuite, l’application XMLAPI2 de BGG est utilisée pour extraire l’information de la base de données en format XML. Il semblerait qu’il y ait plus d’informations sur les pages web que ce qui est disponible avec l’application. Il se peut donc que je doive éventuellement extraire l’information directement des pages web, mais il y a amplement de quoi s’amuser avec les infos de la base de données.
J’ai fait des analyses plus poussées avec la librairie d’apprentissage machine scikit-learn. Les figures ont été faites à l’aide de la librairie matplotlib. J’ai utilisé Anaconda comme environnement de développement. Une fois que j’aurai nettoyé et documenté le code, je vais essayer d’ajouter les JNs dans chaque section.