# Prototypage d'un jeu vidéo sérieux à but éducatif visant à montrer les liens entre les enjeux économiques, environnementaux et sociaux

Ariane Dauvergne

<figure><img src="image_1.png" /></figure>

To cite this version:

Ariane Dauvergne. Prototypage d'un jeu vidéo sérieux à but éducatif visant à montrer les liens entre les enjeux économiques, environnementaux et sociaux. Environnements Informatiques pour l'Apprentissage Humain. 2023. hal-04170555

HAL Id: hal-04170555

https://inria.hal.science/hal-04170555

Submitted on 25 Jul 2023

HAL is a multi-disciplinary open access
archive for the deposit and dissemination of sci-
entific research documents, whether they are pub-
lished or not. The documents may come from
teaching and research institutions in France or
abroad, or from public or private research centers.

L'archive ouverte pluridisciplinaire HAL, est
destinée au dépôt et à la diffusion de documents
scientifiques de niveau recherche, publiés ou non,
émanant des établissements d'enseignement et de
recherche français ou étrangers, des laboratoires
publics ou privés.

<figure><img src="image_2.png" /></figure>

Distributed under a Creative Commons Attribution 4.0 International License
Grenoble INP – ENSIMAG

École Nationale Supérieure d'Informatique et de Mathématiques Appliquées

# Rapport de PFE

Prototypage d'un jeu vidéo sérieux à but éducatif visant à montrer les liens entre les enjeux économiques, environnementaux et sociaux.

Dauvergne Ariane

3ème année – Option ISI

27 février 2023 – 28 juillet 2023

Soutenance : 21 juin 2023

## Équipe STEEP - Inria

655 Av. de l'Europe
38330 Montbonnot-Saint-Martin

## Responsable de stage

Sturm Peter

## Tuteur de l'école

Bouveret Sylvain
# Table des matières

<table><tr><td>Liste des figures</td><td>4</td></tr><tr><td>Liste des tableaux</td><td>4</td></tr><tr><td>Introduction</td><td>5</td></tr><tr><td>Résumé</td><td>5</td></tr><tr><td>Mots clés</td><td>5</td></tr><tr><td>Coordonnées</td><td>6</td></tr><tr><td>Glossaire</td><td>6</td></tr><tr><td>1 Présentation du stage</td><td>7</td></tr><tr><td>2 Structures d'accueil</td><td>8</td></tr><tr><td>2.1 L'INRIA</td><td>8</td></tr><tr><td>2.2 L'équipe STEEP</td><td>8</td></tr><tr><td>3 Conception d'un jeu sérieux</td><td>9</td></tr><tr><td>3.1 Contexte</td><td>9</td></tr><tr><td>3.2 Jeux similaires</td><td>9</td></tr><tr><td>3.3 Objectifs souhaités</td><td>10</td></tr><tr><td>3.3.1 Objectifs liés aux messages portés par le jeu</td><td>10</td></tr><tr><td>3.3.2 Objectifs liés au gameplay du jeu</td><td>11</td></tr><tr><td>3.4 Direction choisie</td><td>11</td></tr><tr><td>4 Solutions techniques</td><td>13</td></tr><tr><td>4.1 Godot Engine comme moteur de jeu</td><td>13</td></tr><tr><td>4.1.1 Exemples de nœuds, scènes et structures arborescentes</td><td>14</td></tr><tr><td>4.1.2 Quelques fonctionnalités de Godot</td><td>14</td></tr><tr><td>4.2 Fonctionnement technique du jeu envisagé</td><td>15</td></tr><tr><td>4.2.1 Fonctionnement du système de cartes</td><td>15</td></tr><tr><td>4.2.2 Fonctionnement de l'aspect narratif</td><td>16</td></tr><tr><td>4.3 Évaluation du jeu</td><td>16</td></tr><tr><td>5 Implémentation du système de cartes</td><td>18</td></tr><tr><td>5.1 Définition d'une carte</td><td>18</td></tr><tr><td>5.2 Fonctionnalités d'une carte</td><td>19</td></tr><tr><td>6 Fonctionnement du combat par cartes</td><td>21</td></tr><tr><td>6.1 Présentation générale du combat par carte</td><td>21</td></tr><tr><td>6.2 Initialisation de la scène</td><td>21</td></tr><tr><td>6.2.1 Initialisation de l'interface</td><td>21</td></tr><tr><td>6.2.2 Initialisation de la partie</td><td>21</td></tr><tr><td>6.3 Fonctionnalités</td><td>21</td></tr><tr><td>6.3.1 Gestion d'un tour de jeu</td><td>21</td></tr><tr><td>6.3.2 Gestion de la partie</td><td>22</td></tr></table>
<table><tbody><tr><td>7</td><td>Fonctionnement du système narratif</td><td>23</td></tr><tr><td>7.1</td><td>Structure de données utilisée</td><td>23</td></tr><tr><td>7.2</td><td>Principes techniques</td><td>24</td></tr><tr><td>8</td><td>Bilan, retrospective et perspectives pour le projet</td><td>25</td></tr><tr><td>8.1</td><td>Avancement actuel du projet</td><td>25</td></tr><tr><td>8.2</td><td>Rétrospectives</td><td>26</td></tr><tr><td>8.2.1</td><td>Principales difficultés rencontrées</td><td>26</td></tr><tr><td>8.2.2</td><td>Comparaison des durées de développement</td><td>27</td></tr><tr><td>8.2.3</td><td>Rétrospective plus générale</td><td>29</td></tr><tr><td>8.3</td><td>Perspectives de développement</td><td>29</td></tr><tr><td>8.3.1</td><td>Amélioration du jeu</td><td>30</td></tr><tr><td>8.3.2</td><td>Développement d'outils annexes</td><td>30</td></tr><tr><td>9</td><td>Impressions personnelles</td><td>31</td></tr><tr><td>10</td><td>Impact environnemental et social</td><td>32</td></tr><tr><td>10.1</td><td>Impact environnemental du projet</td><td>32</td></tr><tr><td>10.1.1</td><td>Consommation énergétique et impact carbone du stage</td><td>32</td></tr><tr><td>10.1.2</td><td>Réflexion critique sur le projet</td><td>32</td></tr><tr><td>10.2</td><td>Politiques des structures d'accueil</td><td>33</td></tr><tr><td>10.2.1</td><td>L'INRIA</td><td>33</td></tr><tr><td>10.3</td><td>Impact social du projet</td><td>33</td></tr><tr><td colspan="2">Conclusion</td><td>35</td></tr><tr><td colspan="2">Remerciements</td><td>36</td></tr></tbody></table>

Annexes

<table><tbody><tr><td>A</td><td>Jeu Vidéo</td><td>37</td></tr><tr><td>a</td><td>Code source</td><td>37</td></tr><tr><td>b</td><td>Versions Windows, Linux et Mac</td><td>37</td></tr><tr><td>B</td><td>Extraits de code</td><td>37</td></tr><tr><td>a</td><td>Base de données actuelles contenant l'ensemble de cartes</td><td>37</td></tr><tr><td>b</td><td>Exemple d'une base de données stockant un arbre de scénario basique</td><td>39</td></tr><tr><td>C</td><td>Premier sujet de stage</td><td>41</td></tr><tr><td>a</td><td>Description du jeu</td><td>41</td></tr><tr><td>a.a</td><td>Idée</td><td>41</td></tr><tr><td>a.b</td><td>Support et features</td><td>41</td></tr><tr><td>a.c</td><td>Gameplay</td><td>42</td></tr><tr><td>a.d</td><td>Implémentation</td><td>42</td></tr><tr><td>b</td><td>Planification du développement</td><td>43</td></tr><tr><td>b.a</td><td>Équipe</td><td>43</td></tr><tr><td>b.b</td><td>Tâches</td><td>43</td></tr><tr><td>b.c</td><td>Emploi du temps</td><td>44</td></tr></tbody></table>
<table><tr><td>c</td><td>Philosophie et objectifs du projet</td><td>44</td></tr></table>
## Table des figures

<table><tr><td>1</td><td>Les différents nœuds composant la scène "CardBase"</td><td>13</td></tr><tr><td>2</td><td>Schéma de la scène affichée lors d'un combat de cartes</td><td>16</td></tr><tr><td>3</td><td>La carte "Nouveaux Investisseurs !"</td><td>19</td></tr><tr><td>4</td><td>Schéma représentant un arbre de scénario potentiel</td><td>23</td></tr><tr><td>5</td><td>Aperçu des différents prototypes</td><td>26</td></tr></table>

## Liste des tableaux

<table><tr><td>1</td><td>Coordonnées des acteurs du stage</td><td>6</td></tr><tr><td>2</td><td>Glossaire</td><td>6</td></tr><tr><td>3</td><td>Liste des différents prototypes du jeu dans l'ordre de développement</td><td>25</td></tr><tr><td>4</td><td>Features envisagées et durées de développement estimées</td><td>28</td></tr><tr><td>5</td><td>Comparaison entre les durées de développement estimées et les durées réelles</td><td>29</td></tr></table>
# Introduction

## Résumé

"L'histoire de toute société jusqu'à nos jours n'a été que l'histoire des luttes de classes.

Homme libre et esclave, patricien et plébéien, baron et serf, maître de jurande et compagnon, en un mot oppresseurs et opprimés, en opposition constante, ont mené une guerre ininterrompue, tantôt ouverte, tantôt dissimulée, une guerre qui finissait toujours soit par une transformation révolutionnaire de la société tout entière, soit par la destruction des deux classes en lutte."

K. Marx - F. Engels, Le manifeste du Parti Communiste

J'ai choisi de commencer ce rapport avec cette citation issue du manifeste du Parti Communiste parce qu'elle résume en quelques mots le contexte qui m'a poussé à faire ce stage. En effet nous vivons dans un monde traversé par des conflits et des contradictions. Ces contradictions sont moteurs de crises environnementales, sociales et économiques qui bouleversent nos sociétés de plus en plus fréquemment. En plus de ces crises s'ajoutent de nombreux éléments qui tendent à montrer que nous nous dirigeons vers un avenir plus sombre : l'absence d'actions suffisantes face aux enjeux climatiques, les tensions géopolitiques au niveau international qui font à nouveau planer la menace de guerres à grandes échelles, la montée de mouvements d'extrême droite en France et ailleurs ne sont que quelques exemples.

Bien que ces préoccupations puissent sembler éloignées d'un stage de fin d'études pour une ingénieure de l'Ensimag c'est néanmoins elles qui m'ont poussée à faire ce stage. Ce projet de fin d'étude consiste en effet en l'élaboration d'un jeu vidéo sérieux ayant pour but d'éduquer les joueurs sur ces questions. La forme que ce jeu prendra sera discutée plus en détail plus loin dans ce rapport mais elle a évolué au fil du stage afin de permettre une meilleure intégration au sein des travaux menés par les différents chercheurs avec qui j'ai la chance de travailler.

Cette idée de proposer un jeu sérieux vient du fait qu'il est à mon avis essentiel de former le plus de personnes possibles aux enjeux mentionnés précédemment afin d'être capable d'agir face à eux.

Ce rapport présente donc les différents objectifs du projet, son état d'avancement ainsi que les choix qui ont été faits ou qui seront à faire. Il contient également des détails techniques sur le fonctionnement du jeu développé et un retour critique sur les questions environnementales, sociales et politiques.

## Mots clés

Jeu sérieux ; Jeu vidéo ; Éducation ; Vulgarisation ; Enjeux environnementaux ; Enjeux économiques ; Enjeux politiques ; Enjeux sociaux
## Coordonnées

En préambule, voici la liste ainsi que les coordonnées des personnes participant à ce stage. Le stage est encadré par Peter Sturm de l'équipe STEEP de l'INRIA.

<table><caption>TABLE 1 – Coordonnées des acteurs du stage</caption><thead><tr><td>Nom et prénom</td><td>Fonction</td><td>Email</td></tr></thead><tbody><tr><td>DAUVERGNE Ariane</td><td>Stagiaire</td><td>ariane.dauvergne@grenoble-inp.org</td></tr><tr><td>BOUVERET Sylvain</td><td>Tuteur d'école</td><td>ylvain.bouveret@imag.fr</td></tr><tr><td>STURM Peter</td><td>Responsable de stage</td><td>peter.sturm@inria.fr</td></tr></tbody></table>

## Glossaire

**STEEP** : Soutenabilité, Transition, Environnement, Économie biophysique et Poli-tiques locales ; équipe de recherche pluridisciplinaire travaillant principa-lement sur deux axes : "Risques systémiques globaux" et "Alternatives sociotechniques". Plus d'informations sur : https://steep.inria.fr

**INRIA** : Institut National de Recherche en Informatique et en Automatique ; ins-titut de recherche hébergeant l'équipe STEEP sur le site de Montbonnot-Saint-Martin près de Grenoble. Plus d'informations sur : https://www.inria.fr

**Jeu Sérieux** : Un jeu sérieux est la combinaison d'une activité dite ludique (jouer à un jeu vidéo dans le cadre de ce stage) et d'une activité dite sérieuse (ici un objectif pédagogique mais d'autres jeux sérieux peuvent avoir des objectifs marketing, de communication, etc.).

**Gameplay** : Le gameplay d'un jeu vidéo est la manière dont on joue à ce jeu. Cela couvre les différentes interactions permises au joueur, la manière dont est effectuée la narration, le fonctionnement des différents niveaux, etc. Le gameplay ne recouvre cependant pas ce qui relève des effets visuels ou audio d'un jeu vidéo.

**Classe sociale** : Au sens marxiste, une classe sociale signifie un ensemble d'individus ayant le même rapport à la production. Par exemple, l'ensemble des personnes devant vendre leur force de travail contre un salaire pour survivre (le prolétariat) forme une classe sociale parce que leur rapport à la production capitaliste est uniforme. Cette définition reste une vulgarisation conséquente.

<caption>TABLE 2 – Glossaire</caption>
# 1 Présentation du stage

Comme dit dans l'introduction le sujet de ce stage est né de l'envie de créer des outils de formation accessibles à la population générale en raison des différents enjeux auxquels nous sommes confrontés dans nos société actuelles. Ce projet est pour ces raisons profondément engagé et les conceptions politiques que je partage (principalement marxistes) ont donc une influence importante sur le projet et le jeu développé.

Ce projet de jeu vidéo est passé par plusieurs étapes et a radicalement changé de direction peu de temps après le début du stage. Le projet initial qui relevait principalement de la simulation de sociétés a été abandonné au profit d'un projet de jeu où l'aspect éducatif se fait à travers la narration au sein de différents scénarios jouables et non uniquement par la réaction du jeu aux décisions prises par le joueur. Ce choix implique donc un biais idéologique supplémentaire puisqu'au choix des modèles utilisés pour représenter la société s'ajoute le choix des messages diffusés dans les différents scénarios écrits pour le jeu.

Cette décision a été prise afin de pouvoir avoir un prototype de jeu voire un jeu fini (avec cependant des scénarios courts) d'ici la fin du stage. La réalisation de cet objectif permettrait alors de plus facilement réutiliser le jeu et les différents outils annexes développés pendant ce stage y compris par des personnes peu formées à l'informatique à l'inverse d'un jeu plus complexe non-fini qui nécessiterait de continuer la phase de développement afin que le jeu ait une réelle utilité.

Le rapport se poursuivra sur une présentation des laboratoires qui m'ont accueillie. Je ferai ensuite un tour d'horizon des motivations, des inspirations et des ambitions initiales derrière l'objet de ce projet, j'illustrerai également la compatibilité du projet avec les objectifs et actions de l'équipe de recherche STEEP. Après avoir défini la forme du projet je présenterai les solutions techniques mises en place en commençant par le moteur de jeu Godot. Le rapport présentera ensuite plus en détail l'implémentation des deux parties du jeu. Cela sera suivi d'un état des lieux sur ce qui a été réalisé, d'une rétrospective sur les différentes difficultés rencontrées et sur le planning provisionnel datant du pré-rapport. Après un point sur les différentes perspectives de développement, je présenterai mon ressenti personnel quant à ce stage. Je traiterai ensuite de l'impact environnemental et social du projet avant de conclure et de remercier les nombreuses personnes qui m'ont aidée durant ce PFE.
# 2 Structures d'accueil

Cette section va détailler les structures d'accueil avec lesquelles je suis en lien pour mon PFE. Mon stage se déroule principalement au sein de l'équipe STEEP où je suis encadrée par Peter STURM.

## 2.1 L'INRIA

Fondé en 1967, l'institut national de recherche en informatique et en automatique regroupe différentes équipes de recherche dont la majorité sont orientées dans les domaines de l'informatique et des mathématiques. L'INRIA dispose de neuf centres de recherche sur le territoire français dont celui où j'effectue mon stage à Montbonnot-Saint-Martin.

## 2.2 L'équipe STEEP

L'équipe STEEP (Soutenabilité, Transition, Environnement, Économie byophisique et Politiques locales) fait partie des différentes équipes de recherche de l'INRIA. Cette équipe de recherche est née du constat suivant : "le mode de vie occidental atteint les limites planétaires" et s'interroge sur les manières de changer nos sociétés pour se conformer aux limites planétaires tout en prenant en compte les besoins des populations.

Pour ce travail l'équipe est divisée en deux parties qui travaillent chacune sur un des deux axes suivants :

* **RSG** : Risques Systémiques Globaux. Cet axe est centré sur l'étude des interdépendances et interconnexions des différentes composantes de nos sociétés et par extension sur les risques que pourrait entraîner la défaillance d'une de ces composantes sur les autres.

* **AST** : Alternatives Socio-Techniques. Cet axe a pour premier objectif d'étudier les bases matérielles de l'économie et ses impacts environnementaux et également de proposer des alternatives à ces modes de production. La méthodologie choisie est d'utiliser ou de développer des outils participatifs afin de permettre aux différents acteurs de nos sociétés d'imaginer ou de tester des modes de productions alternatifs.

En tant que stagiaire, je suis rattachée à l'axe AST de l'équipe STEEP dont Peter STURM, l'un de mes responsables de stage, fait partie. Le sujet de mon stage se rattaché également à cet axe par l'aspect pédagogique du jeu sérieux que j'essaye de mettre au point.
# 3 Conception d'un jeu sérieux

## 3.1 Contexte

Comme expliqué dans le glossaire, un jeu sérieux possède une dimension supplémentaire à la simple activité ludique. Dans le cadre de ce stage, mon objectif est entre autre de participer à la mission de l'équipe STEEP. Le choix de développer un jeu vidéo sérieux s'inscrit dans les pratiques de cette équipe dont certains membres ont déjà développé des jeux de plateau, de cartes, etc. Les jeux développés par l'équipe STEEP et les personnes travaillant avec eux ont un but éducatif, par exemple un jeu va mettre en avant le fait que les problématiques environnementales ne se limitent pas à un manque de ressources mais qu'il y a également une notion de flux maximal à prendre en compte même sur des ressources qui seraient complètement renouvelables. D'autres jeux servent également à simuler des situations réelles en faisant jouer à différents acteurs d'une situation leur rôle et ceux des autres acteurs afin de permettre à ces acteurs de mieux comprendre les enjeux liés à leur territoire et d'essayer de trouver des solutions après une réflexion et une prise en main commune des enjeux.

## 3.2 Jeux similaires

D'autres jeux ont abordé des enjeux environnementaux, économiques ou politiques. En voici une liste non exhaustive :

* **Victoria 3** : Sorti en fin octobre 2022, le dernier opus de la série de jeux vidéos Victoria éditée par Paradox Interactive est un jeu de type bac à sable se déroulant à l'époque victorienne (de 1836 à 1936). Le jeu permet au joueur d'incarner le gouvernement d'un pays à cette époque et d'essayer de le développer et de le diriger dans une direction choisie par le joueur. Le jeu n'a donc pas d'objectif à proprement parler laissant au joueur la liberté de se fixer les siens. Par exemple un joueur peut avoir comme objectif de devenir une puissance économique hégémonique, se concentrer sur le niveau de vie de sa population ou bien simplement établir son pays comme premier producteur de certains types de marchandises et de rester dans la périphérie d'une grande puissance. Le jeu dispose d'un modèle économique et politique relativement poussé avec une grande variété de marchandises ainsi qu'une division de la population basée sur leur place dans la société au sein de divers groupes d'intérêts tels que les propriétaires terriens, l'intelligentsia, les syndicats, etc. chacun essayant de pousser les changements politiques qu'ils souhaitent.

* **Power & Revolution** : La série de jeux Geopolitical Simulator dont Power & Revolution est le dernier titre se veut être un jeu de simulation de politique et géopolitique à l'échelle mondiale. Le joueur peut incarner un mouvement politique (au pouvoir ou non) et en prendre la direction. À partir de là il peut mener les actions qui lui plaisent (de la proposition de loi à la guerre civile en passant par des campagnes de corruption). Bien que le jeu mentionne les enjeux économiques et environnementaux il se concentre avant tout sur sa dimension politique.

* **Democracy 4** : Sorti en janvier 2022, Democracy 4 est un jeu qui place le joueur dans le rôle d'un président d'une démocratie libérale. Il s'agit encore d'un jeu bac à sable où le joueur n'a pas d'autres objectifs que ceux qu'il souhaite se fixer au delà du fait d'être réélu pour pouvoir continuer à jouer. Le jeu a pour objectif d'être une simulation de ce genre de régime et par conséquent les actions permises au joueur sont limitées en ce sens. Il est par exemple possible de nationaliser des secteurs d'activités et de taxer les grands
profits mais il n'est pas possible de mettre en place une économie planifiée ou d'empêcher
des élections d'avoir lieu.

* **Eco** : Eco est un jeu qui place les joueurs dans un écosystème réactif à leurs actions. Le jeu se joue en multijoueurs et leur objectif est d'empêcher la chute d'un astéroïde sur leur planète. Pour cela les joueurs doivent travailler ensemble pour construire un système de défense capable de détruire l'astéroïde avant qu'il ne s'écrase. Le jeu laisse une liberté totale aux joueurs pour organiser la production comme ils le veulent et plusieurs modèles de société peuvent apparaître (économie de marché ou non, propriété privée ou non, etc). Le jeu modélise néanmoins l'impact des décisions des joueurs sur l'environnement ainsi un taux de pollution élevé peut rendre des ressources inutilisables ou bien laisser une planète dévastée même si l'astéroïde a été détruit.

Parmi les jeux cités on peut voir que la majorité d'entre eux sont des jeux à but principalement ludique et non éducatif. Seul Eco a été conçu dans l'objectif de pousser les joueurs à une réflexion sur l'environnement, l'organisation d'une société et le lien entre les gens. Mon projet de stage a néanmoins une différence conséquente avec ce jeu à savoir le fait qu'il soit prévu pour un joueur uniquement. La logique derrière est d'offrir au joueur un autre point de vue sur ces questions. En faisant jouer un joueur le jeu est non seulement plus facile d'accès mais il permet également de le placer dans une situation où il n'est pas simplement un acteur individuel (comme dans Eco) ce qui peut permettre de mettre plus facilement en avant la dimension systémique des enjeux que je souhaite aborder.

## 3.3 Objectifs souhaités

Dans cette partie je vais répertorier les objectifs et envies que j'ai pu avoir concernant la conception d'un jeu sérieux. Je préciserai les choix que j'ai dû faire et les idées sur lesquelles j'ai choisi de poursuivre mon stage ainsi que les idées abandonnées dans la partie suivante.

### 3.3.1 Objectifs liés aux messages portés par le jeu

La première chose qui m'est venue à l'esprit quand j'ai commencé à réfléchir à un jeu sérieux sur les thèmes abordés par l'équipe STEEP est l'idée d'un jeu à un joueur simulant un monde moderne où il serait possible de prendre différentes décisions politiques et économiques et d'observer leurs effets sur ce monde. Cette idée de jeu permettait de réaliser plusieurs choses. Tout d'abord la visualisation des effets secondaires engendrés par chaque décision ainsi que les différents blocages propres à un contexte particulier pourrait permettre au joueur de se familiariser avec les dimensions systémiques de nos sociétés. De plus un jeu qui laisse une grande liberté de choix au joueur tout en montrant les conséquences des choix qu'il prend permet également de montrer la nécessité de considérer les liens entre situation économique et influence politique des différents éléments de la société. Je comptais ainsi montrer la pertinence d'une analyse par les classes sociales par rapport à une analyse par individu.

Environ deux semaines après le début du stage un autre type de jeu m'est venu à l'esprit. Cette nouvelle idée consistait à développer non plus un jeu de simulation mais un jeu narratif où l'aspect éducatif se ferait par les outils narratifs du jeu. Pour qu'un tel jeu soit bel et bien un jeu et non simplement, par exemple, juste un livre digital il est nécessaire d'introduire une composante de gameplay au jeu et de lier la narration à cette composante.

Au final je peux résumer les objectifs que je souhaite atteindre avec ce jeu vidéo sérieux en présentant les principaux messages que je souhaite véhiculer :
* Il n'est pas possible d'isoler une composante de la société et d'agir uniquement sur celle-ci. Les enjeux politiques, idéologiques, économiques, environnementaux et sociaux sont liés et on ne peut pas faire abstraction de ces liens si on désire agir d'une quelconque manière sur ces éléments.

* La société est divisée par des contradictions. Ces contradictions ont une base matérielle et les plus déterminantes d'entre elles sont d'origine économique dans le sens où l'organisation de la production (propriété privée, vente sur des marchés, exploitation et transformation de la nature, ...) produit ces contradictions décisives.

* Ces contradictions divisent la société en plusieurs classes lesquelles ont des intérêts matériels biens définis. Par exemple le besoin de récupérer le plus possible, au coût le moins élevé, la force de travail est en contradiction avec le besoin de profiter pleinement de son propre travail. Le besoin de produire toujours davantage pour espérer plus de profits est en contradiction avec les différentes limites planétaires.

* Même si il est possible à l'échelle individuelle de ne pas suivre ses intérêts de classe ou d'essayer de se soustraire à l'organisation générale de la société cela n'est pas suffisant pour impacter la société de manière significative. Un changement radical de société ne peut être permis que par un renversement du rapport de force entre les classes sociales qui la constitue.

### 3.3.2 Objectifs liés au gameplay du jeu

L'objectif principal que je me suis fixé durant ce stage est de produire un outil éducatif sur les sujets que je viens de mentionner. Le gameplay du jeu est donc subordonné à cet objectif mais cela ne veut pas dire qu'il n'est pas importante. En effet cet aspect du jeu peut être considéré comme la fondation de ce projet. Ce n'est qu'avec un gameplay agréable, entraînant et intéressant que ce projet pourra réellement se démarquer des autres moyens d'informations. De plus si les joueurs n'ont pas envie de jouer au jeu alors il sera impossible qu'il remplisse son rôle éducatif.

Je peux donc résumer les objectifs que je me suis fixés quant au gameplay avec les points suivants :

* Les séances de gameplay doivent être agréables et relativement faciles à prendre en main. Ceci afin d'inviter le joueur à continuer son exploration du jeu et à ne pas bloquer sa progression.

* Afin de garantir cette expérience agréable le jeu doit être suffisamment équilibré.

* Le gameplay devant être un support aux messages du jeu. Il doit donc permettre au joueur de mettre en pratique dans un environnement simulé les différentes connaissances que le jeu propose.

* Afin de faciliter les liens entre les parties narratives (principalement les messages qui s'y trouvent) et les parties liées gameplay, différents éléments doivent exister pour aider le joueur à connecter ces deux morceaux. De tels éléments peuvent par exemple résider dans l'aspect graphique du jeu ou dans les effets sonores utilisés.

## 3.4 Direction choisie

Après deux premières semaines passées à prendre en main le moteur de jeu et à commencer à en expliciter les différents aspects sur papier plusieurs éléments nous ont amenés, mes responsables
de stage et moi, a revoir le sujet initial du stage (donné en annexe). En effet, si je continuais
le développement du jeu de simulation envisagé initialement je n'aurais jamais eu le temps
de produire autre chose qu'un ou plusieurs prototypes ne mettant en scène que quelques unes
des mécaniques. C'est pourquoi le sujet a été redéfini pour me permettre de réaliser un jeu
relativement complet d'ici la fin du PFE. Ce nouveau sujet implique donc le développement
d'un jeu narratif et non plus de simulation. Ainsi la composante technique est réduite, ce qui
devrait diminuer le temps de développement.

Ce jeu devrait prendre la forme suivante : il s'agira d'un jeu de rôle dans lequel le joueur
incarnera un personnage particulier qui évoluera dans une histoire. Ce personnage sera confronté
à des situations qui mettront en lumière plusieurs aspects du fonctionnement du capitalisme,
des enjeux environnementaux ou sociaux et bien d'autres. Le joueur devra donc comprendre ces
aspects pour avancer dans le jeu. Les choix du joueur se répercuteront dans le déroulement du
scénario mais également dans la dimension plus gameplay du jeu.

Afin d'étoffer un peu le jeu, la trame narrative sera régulièrement entrecoupée par des séquences de gameplay. Ces séquences verront s'affronter le joueur et l'ordinateur dans un jeu de cartes (du moins pour le joueur).
# 4 Solutions techniques

## 4.1 Godot Engine comme moteur de jeu

Dès le début du stage l'utilisation du moteur de jeu Godot était envisagée. Ce moteur de jeu est gratuit et open-source, il peut être utilisé pour développer des jeux vidéos aussi bien en 2D qu'en 3D. Il est possible de développer un jeu avec Godot en langage C++ ou C# mais aussi avec un langage de programmation conçu spécifiquement pour être utilisé avec ce moteur. Ce langage, le GDScript, a une syntaxe similaire à celle du langage Python mais est codé en C++ et non en C. En plus de ces trois langages la communauté gravitant autour de Godot a développé plusieurs extensions pour permettre d'utiliser d'autres langages de programmation tels que Python ou Rust.

Godot se veut facile à prendre en main et par conséquent présente de nombreuses fonctionnalités pour aider au développement d'un jeu vidéo. Parmi ces fonctionnalités on peut notamment souligner les "nodes" (nœuds) qui sont des "briques" pouvant être utilisées pour facilement implémenter certains aspect du jeu. Par exemple le nœud "Sprite2D" contiendra déjà des méthodes pour gérer l'affichage d'une certaine texture, sa position dans un environnement en deux dimensions et plusieurs méthodes pour facilement changer des attributs importants. De la même manière le nœud "BarBar" permet d'afficher facilement une barre que l'on peut plus ou moins remplir, là encore Godot propose plusieurs manières de facilement changer, par exemple, le taux de remplissage de la barre ou la manière dont elle se remplit. Ces nœuds sont assignés en tant qu'enfants d'autres nœuds avec un seul nœud désigné comme étant le nœud principal ce qui résulte en une structure arborescente.

Ces structures peuvent être divisées en "scènes" ce qui permet une meilleure visibilité du code. Ainsi on peut regrouper tous les nœuds nécessaires à l'interface utilisateur au sein d'une seule qu'on peut ensuite ré-utiliser plus tard. La figure 1 montre les différents nœuds composant la scène *CardBase* qui est utilisée pour créer chaque carte affichée à l'écran. En plus de cela Godot fournit plusieurs fonctions essentielles au développement d'un jeu vidéo telle que des fonctions d'interpolations entre deux points pour gérer des déplacements.

<figure><img src="image_3.png" /><figcaption>FIGURE 1 – Les différents nœuds composant la scène "CardBase"</figcaption></figure>
Les multiples fonctionnalités de Godot, sa capacité d'adaptation, le fait qu'il soit facile à prendre en main ainsi que les nombreux tutoriels disponibles en ligne ont fait que j'ai choisi d'utiliser ce moteur pour ce stage. En effet, le stage ne durant que 23 semaines, il était nécessaire d'utiliser un moteur de jeu capable de répondre à cette contrainte temporelle. La version de Godot utilisée lors de ce stage est la version 4.* nouvellement sortie le 1er mars 2023 soit juste après le début du stage ce qui a demandé d'effectuer une rapide conversion des premiers fichiers et scripts vers la nouvelle version.

### 4.1.1 Exemples de nœuds, scènes et structures arborescentes

Dans Godot, chaque nœud peut être considéré comme un objet d'une classe et possède donc plusieurs fonctions et attributs dès sa création. Parmi ces attributs communs on peut notamment penser à la variable booléenne *visible* qui indique si le nœud (et ses enfants) doit être chargé par le jeu ou ignoré. Il existe également 3 grands types de nœuds bien qu'ils ne recouvrent pas l'intégralité de ceux-ci. Ces types sont les *control nodes*, *2D nodes* et *3D nodes*. Pour les deux derniers, comme leur nom l'indique, ils sont principalement utilisés pour gérer les éléments en deux ou trois dimension du jeu. Les *control nodes* quant à eux sont conçus pour pouvoir créer une interface graphique. Parmi ces nœuds on peut notamment trouver les fonctionnalités suivantes : afficher des textures (pour un arrière-plan par exemple), délimiter des zones de l'espace pour y mettre certains éléments de l'interface utilisateur, des boutons, etc.

Tout arbre ou sous arbre composé de nœuds peut être enregistré comme une scène (au format TSCN pour *text scene*). Premièrement, une scène principale doit être désignée afin de permettre au moteur de jeu de savoir quel arbre charger quand le jeu est lancé. Deuxièmement, enregistrer des structures de données en scène permet ensuite de pouvoir instancier ces scènes et donc de créer des copies séparées à partir d'un même modèle. Dans le cadre de ce jeu, cette fonctionnalité est particulièrement utile pour créer les nombreuses cartes du joueur puisqu'il n'est donc pas nécessaire de créer une scène par carte mais seulement une scène servant de modèle de carte.

Il est possible d'assigner à chaque scène ou à chaque nœud un script qui vient compléter les fonctionnalités déjà présentes et qui permet de modifier le nœud ou la scène à sa convenance.

### 4.1.2 Quelques fonctionnalités de Godot

Parmi les fonctionnalités de Godot on peut en citer trois particulièrement importantes :

* La fonction `_ready()` est une fonction qui est appelée une seule fois : quand l'élément auquel le script est rattaché rentre pour la première fois dans l'arbre traité par le jeu. Cette fonction permet donc d'initialiser un élément. C'est ainsi qu'une instance du modèle de carte prend la bonne apparence, les bons éléments textuels, etc. quand elle apparaît dans le jeu. En plus de cette fonction il est possible de préfixer des variables avec le mot clé `@onready` lors de leur création pour s'assurer qu'elles aient une valeur définie au moment où la fonction `_ready()` est appelée. Cela permet d'éviter des erreurs où une variable essentielle aurait été modifiée par erreur avant que l'élément rentre dans l'arbre traité par le jeu.

* La fonction `_process delta)` est une fonction qui est appelée à chaque nouvelle *frame*<fnref n="1" />. La variable *delta* correspond à la durée d'une *frame*. On peut par exemple l'utiliser dans

<footnote n="1">1. Le *framerate* coresspond au nombre d'images affichées sur l'écran en un seconde, ainsi plus cette valeur est élevée plus le jeu parait fluide. Une *frame* correspond donc à une image affichée par le jeu avant d'être actualisée. La fonction est donc appellée à chaque fois que le jeu actualise ce qui est affiché à l'écran</footnote>
un jeu pour détecter si il y a une collision entre deux entités en faisant un scan de toutes les entités présentes, ou pour faire varier une barre de vie de manière continue. Je me sers également de la fonction `_physics_process delta`) qui fonctionne exactement de la même manière que `_process delta`) mais qui est dédiée au code qui a trait à la physique des éléments du jeu. C'est donc cette fonction qui est responsable de tous les déplacements des cartes.

* Les signaux sont un type de variable en GDScript qui permettent de connecter deux nœuds entre eux. Les signaux transmettent un message à sens unique, ils sont utilisés par exemple lorsque le joueur appuie sur un bouton. Le bouton envoie alors un signal vers un autre nœud pour lui signaler qu'il faut appliquer les effets prévus pour cet événement. Je me sers également des signaux pour indiquer au jeu la défaite ou la victoire du joueur dans une partie de cartes.

## 4.2 Fonctionnement technique du jeu envisagé

Le développement du premier jeu n'étant pas allé plus loin que des débuts d'interfaces graphiques je me concentrai uniquement sur l'aspect technique du second jeu.

Le jeu développé consiste donc en deux blocs principaux. Un bloc concernant l'aspect narratif et un bloc orienté gameplay représentant les conflits auquel le joueur devra faire face en utilisant un système de jeu de cartes.

### 4.2.1 Fonctionnement du système de cartes

Le premier morceau du jeu à avoir été implémenté est le jeu de cartes. Le système de jeu mis en place n'a cependant que peu à voir avec un jeu de carte "classique" où deux ou plusieurs joueurs s'affrontent avec les mêmes cartes. En effet, ici les cartes sont uniquement un moyen de représenter les actions possibles pour le joueur, de son côté l'ordinateur a une liste d'actions prédéfinie qu'il choisit au hasard et non un équivalent des cartes du joueur. Cette idée de gameplay est fortement inspirée du jeu "Slay The Spire". L'utilisation de cartes n'est donc qu'une manière de représenter les actions possibles du joueur. Ce choix n'est cependant pas anodin et offre plusieurs avantages tels qu'une compréhension intuitive de comment jouer (cliquer sur des cartes), de l'impact du hasard (par le tirage aléatoire des cartes) et offre un petit côté ludique en permettant au joueur de passer en revue les cartes de sa main, de les déplacer, etc.

L'implémentation du système de cartes demande donc d'être découpée en plusieurs parties. Tout d'abord il faut créer les cartes en elles-mêmes. Les données des cartes sont stockées dans une base de données codée en GDScript. En se basant sur cette base de données, la scène "Cards" est capable de créer une carte automatiquement. Les scripts rattachés à cette scène servent à gérer les déplacements de la carte, son zoom quand le joueur passe la souris sur une des cartes qu'il a en main, etc.

À terme le joueur disposera de plusieurs jeux de cartes représentant différents types de conflits. Les conflits envisagés pour la route "capitaliste" sont les conflits économiques, politiques (lobbying) et internes (grèves, etc.).

La figure 2 représente le modèle initial envisagé pour l'interface du jeu de carte. Ce modèle a ensuite évolué lors du développement.
<figure><img src="image_4.png" /><figcaption>FIGURE 2 – Schéma de la scène affichée lors d'un combat de cartes</figcaption></figure>

### 4.2.2 Fonctionnement de l'aspect narratif

Étant donné l'avancement actuel du stage je ne peux donner ici que les idées générales du fonctionnement du système narratif sans pouvoir trop rentrer dans les détails. Le scénario sera composé de plusieurs événements prédéfinis qui seront stockés sous la forme d'une structure arborescente où chaque événement indiquera le ou les événements suivants et ce jusqu'aux événements mettant fin au scénario. Un événement représente ici deux choses :

* Un affichage de texte suivi d'un choix entre les différents enfants de l'événement si il y en a plusieurs. Le choix est libre pour le joueur.

* Un conflit (le joueur bascule dans la partie jeu de cartes du jeu).

Au cours de la partie le joueur se déplacera donc dans l'arbre du scénario et sera confronté aux événements qui se trouvent sur son chemin. Certains événements peuvent avoir des répercussions sur les jeux de cartes du joueur. Par exemple choisir de mener une campagne anti-syndicale va donner certaines certaines cartes et en reprendre d'autres. De la même manière un échec cuisant dans un conflit économique pourrait réduire le nombre de cartes "Nouveaux Investisseurs !" disponible dans le jeu du joueur afin de représenter les conséquences de cet échec.

Cette représentation du scénario en structure arborescente sera également essentielle dans la création des sauvegardes des parties. En effet afin de sauvegarder la progression du joueur il est nécessaire de pouvoir le situer dans le scénario, la structure proposée permet de facilement stocker la position du joueur dans l'arbre dans un fichier ce qui peut se faire relativement simplement.

## 4.3 Évaluation du jeu

Afin de continuer le développement du jeu il est nécessaire d'évaluer les premiers prototypes. Dans le cadre de ce jeu les points à vérifier sont les suivants :

* Le système de cartes utilisé pour représenter les conflits est-il suffisamment intéressant pour que l'aspect ludique du jeu amène les joueurs à continuer à jouer ? Dans ce domaine
la barre la plus basse à franchir est assez simple à définir, il faut s'assurer que le système de cartes ne rende pas le jeu moins intéressant que la simple lecture des parties narratives pour les joueurs.

* L'histoire doit être suffisamment bien écrite pour pousser les joueurs à s'investir et leur donner envie de connaître la suite.

* Les messages diffusés dans le jeu doivent être suffisamment clairs pour êtres compris par le joueur sans pour autant qu'ils lui soient énoncés avec la subtilité d'une tractopelle (surtout si il s'agit de messages en contradiction avec ce qui est communément admis et donc plus à même de frustrer le joueur).

Afin de procéder à l'évaluation de ces différents points je compte faire tester le jeu aux membres de l'équipe STEEP (une partie d'entre eux est déjà enthousiaste à cette idée). J'es-sayerai ensuite d'utiliser leurs retours pour améliorer l'expérience offerte par le jeu.

Malheureusement il sera impossible d'évaluer l'impact et l'efficacité pédagogique du jeu d'une manière scientifique dans le cadre de ce stage. En effet, une telle évaluation demande à la fois un nombre de testeurs conséquent et surtout un protocole de test (plusieurs protocoles existent déjà en sociologie) qu'il est impossible de mettre en place faute de compétences et de temps.
# 5 Implémentation du système de cartes

Le code nécessaire au fonctionnement des cartes au sein du jeu est contenu dans le nœud `CardBase` et ses enfants. Ainsi à chaque fois qu'une carte est présente dans le jeu il s'agit d'une instance de ce nœud initial qui a été rajoutée en tant qu'enfant de l'arbre principal. Ce nœud et les scripts associés permettent donc de gérer la majorité des interactions que le joueur peut avoir avec une carte particulière.

## 5.1 Définition d'une carte

Dans le cadre d'un conflit dans le jeu, une carte représente une action ou un événement. Afin qu'une carte soit affichée dans le jeu il est nécessaire de définir un certain nombre d'éléments : le nom de la carte, son coût, ses effets et son apparence. Pour ce faire j'ai mis en place une base de données en GDScript qui contient les cartes stockées de la manière suivante<fnref n="2" /> :

<figure><img src="image_5.png" /></figure>

### Format d'une carte dans la base de données

```GDScript
#card_info = [type, id_name, full_name, description, isbillable, cost,
               effect_1, effect_2, effect_3]
```

```GDScript
enum {
    INVESTORS,
    ...
}
```

```GDScript
const DATA = {
    INVESTORS:
        ["capitalist", "INVESTORS", "Nouveaux_investisseurs!", "Augmente_
           les\n\_ressources\_économiques", true, 1, Vector2i(0, 0), Vector2i
            (+10, 0), Vector2i(0, 0)],
    ...
}
```

### Code 1 : Format d'une carte dans la base de données

Le type de la carte définit l'apparence de la carte, son identifiant unique `id_name` permet au jeu de reconnaître la carte, `full_name` et `description` contiennent les textes qui seront affichés sur la carte, `isbillable` indique si la carte représente une action légale ou non, `cost` défini le coût de la carte et les différents `effects_n` définissent les effets qu'aura la carte sur les différents indicateurs lors d'un conflit. Chaque effet est représenté par un vecteur de deux entiers, le premier entier du vecteur indique les effets de la carte sur le joueur, le deuxième les effets sur son adversaire. Cette carte est affichée ainsi par le jeu :

<footnote n="2">2. La base de données est présente en intégralité dans l'annexe ??</footnote>
<figure><img src="image_6.png" /><figcaption>FIGURE 3 – La carte "Nouveaux Investisseurs !"</figcaption></figure>

### Structure d'une carte

On peut ici voir la carte "Nouveaux Investisseurs !". Cette carte est divisée en trois parties : une partie supérieure qui indique le nom de la carte et son coût à jouer, une partie inférieure contenant la description de la carte et une illustration au milieu. Le fond de la carte est défini par son type ici "capitaliste". Toutes les cartes sont structurées de cette manière avec des illustrations différentes et, dans le cas des cartes illégales, une bordure différente.

Les images des différentes cartes ont été générées en utilisant le logiciel d'intelligence artificielle *Midjourney*.

## 5.2 Fonctionnalités d'une carte

En plus de gérer l'affichage d'une carte le nœud permet également de gérer la majorité des interactions qui peuvent avoir lieu entre la carte et le jeu ou entre la carte et le joueur.

Un premier exemple est la manière dont sont gérés les déplacements d'une carte. Dans le cas le plus simple, la carte est en train d'être jouée par le joueur et par conséquent sa position est mise à jour pour correspondre à la position de la souris à chaque *frame*. Des cas plus complexes ont lieu par exemple pour le déplacement d'une carte nouvellement créée du deck jusqu'à la main du joueur. Dans ce cas la position de la carte est déterminée par une fonction d'interpolation linéaire entre les points d'arrivée et de départ. La position est donc calculée de la manière suivante :

$$Position_x = Depart_x * (1 - t) + Arrive_x * t \text{ avec } t \in [0, 1].$$

Dans le code la variable *t* est définie comme valant 0 à 1 à chaque début d'interpolation et est itérée à chaque *frame* par une valeur correspondant à la durée d'une *frame* multipliée par une constante pour ralentir ou accélérer le déplacement :
<figure><img src="image_7.png" /></figure>

Extrait de code gérant le déplacement d'une carte

1

2

3

4

5

6

7

8

9

10

11

func _physics_process delta: #On retrouve ici la fonction mentionnée
précedemment.

match state :

...

MOVE
DRAWN CARD TO HAND:
if t <= 1: #On utilise un if et pas un while t <= 1 car la
fonction _physics_process est automatiquement appellée à
chaque frame.

position = start_position .lerp(target_position, t)

t += delta / DRAW_TIME #On itère t avec une valeur
correspondant à la durée d'une frame divisée par une
constante pour accélérer ou ralentir le déplacement.

else :

position = target_position #Permet de corriger la
position à la fin du déplacement si la carte s'est
arrêtée un peu avant ou un peu après la position
désirée.

t = 0 #La variable t est réinitialisée pour un prochain
déplacement si nécessaire.

state = IN_HAND #On change l'état de la carte.

Code 2 : Extrait de code gérant le déplacement d'une carte

D'autres animations sont gérées par ce nœud, tel que le zoom lorsque la souris passe sur l'une des cartes ou l'affichage des particules permettant d'indiquer si la carte choisie est jouable.

Certaines fonctionnalités ne sont pas définies dans le script rattaché à ce nœud, telle que la suppression d'une carte ou l'application de ses effets en jeu.
# 6 Fonctionnement du combat par cartes

Comme présenté dans la partie 4.2.1, cette partie de "combat par carte" du jeu sert à représenter un conflit auquel le joueur est confronté. Ces conflits sont conçus pour êtres rapides et durent quelques minutes au maximum.

## 6.1 Présentation générale du combat par carte

Durant ces séances de gameplay, le joueur sera opposé à l'ordinateur et l'objectif des deux parties sera de faire vider la barre de vie de son adversaire à 0. Pour cela le joueur dispose d'une série de cartes permettant soit d'attaquer l'ordinateur au coût de ressources secondaires soit de régénérer ces ressources secondaires si elles sont trop basses. Bien que la perte complète d'une de ces ressources ne signifie pas la défaite du joueur elle peut lui imposer des malus significatifs. De son côté l'ordinateur effectue à chaque tour une action aléatoire parmi une liste pré-définie qui va impacter négativement les indicateurs<fnref n="3" /> du joueur.

## 6.2 Initialisation de la scène

### 6.2.1 Initialisation de l'interface

Les premiers éléments initialisés par la scène sont les éléments composants l'interface. Parmi eux on peut compter :

* La couleur de fond.

* L'affichage des différentes barres de vie, leurs couleurs et le chargement des symboles associés. Le placement et l'affichage des deux images représentant le joueur et son adversaire.

* Le placement de la pioche et des boutons "Finir le tour" et "Défausser ses cartes".

Parmi ces éléments, la couleur des barres et les symboles sont dépendants du type de conflit représenté par le jeu de carte. Je dispose donc d'une base de données dans laquelle sont stockées les couleurs des différentes barres ainsi que les localisations des différents symboles. La scène récupère donc les données correspondant au type de conflit demandé.

### 6.2.2 Initialisation de la partie

Le reste des éléments nécessaires à une partie sont ensuite initialisés. En premier lieu, le jeu récupère la composition du deck associé au conflit représenté avant de distribuer au joueur ses 5 premières cartes. Les valeurs des différentes barres de vie correspondant aux indicateurs sont également initialisées si elles ne sont pas pleines pour une raison ou une autre.

## 6.3 Fonctionnalités

### 6.3.1 Gestion d'un tour de jeu

Un tour de jeu commence lorsque la partie est initialisée ou lorsque le joueur clique sur le bouton "Finir le tour". À ce moment là le jeu effectue plusieurs actions (parfois en simultané

<footnote n="3">3. Dans le cadre d'un conflit économique, le seul développé à l'heure actuelle, ces indicateurs sont : "l'influence sur le marché", "les réserves économiques" et "la cohésion de l'entreprise".</footnote>
ou dans un ordre différent pour certaines actions précises donc la liste suivante n'est pas nécessairement chronologique) :

* Si le joueur a cliqué sur le bouton "Finir le tour" alors le jeu effectue une action au nom de l'entité ennemie qui va diminuer une ou plusieurs barres de vie du joueur. Le jeu vérifie alors si la barre de vie principale du joueur est vide, si c'est le cas la scène est mise en pause et un signal de défaite est envoyé. Sinon le tour continue.

* Le jeu distribue au joueur autant de cartes que nécessaire pour qu'il en ait 5 dans sa main. Si la pioche est vide alors les cartes de la défausse sont mélangées et remises dans la pioche. La quantité d'énergie du joueur est remise à 3 quelque soit sa valeur précédente.

* Le joueur peut jouer autant de carte qu'il le souhaite tant que sa réserve d'énergie le lui permet. Si il utilise le bouton "Défausser ses cartes" alors toutes les cartes de sa main sont envoyées dans la défausse sans être jouées et le jeu lui distribue 5 autres cartes.

* À chaque carte piochée ou jouée, la main du joueur est réorganisée afin de garder un affichage cohérent.

* La scène du combat de carte envoie tous les signaux nécessaires aux cartes pour effectuer les déplacements nécessaires (mouvement de la carte de la pioche vers la main du joueur, zoom, etc.)

* À chaque carte jouée le jeu vérifie si le joueur a gagné la partie, si oui la scène est mise en pause et un signal de victoire est envoyé.

* Le tour se termine lorsque le joueur appuie sur le bouton "Finir le tour" ou est interrompu par la victoire ou la défaite du joueur.

### 6.3.2 Gestion de la partie

La gestion générale d'une partie par le jeu au delà de ce qui est déjà compris dans les tours de jeu est relativement simple. Comme dit précédemment à chaque fin de tour le jeu va modifier les barres de vie du joueur pour simuler une action de l'adversaire. La liste des modifications possibles est stockée dans une base de données à part.

Le jeu vérifie également si la partie est finie ou non et envoie un signal de défaite ou de victoire en fonction du résultat.
# 7 Fonctionnement du système narratif

## 7.1 Structure de données utilisée

Pour chaque événement il est nécessaire de connaître plusieurs éléments : principalement l'événement en question doit-il être traité comme un événement narratif ou comme un conflit ? On peut alors charger une instance du nœud correspondant. Un autre élément essentiel est l'identifiant unique de l'événement permettant de le rattacher à l'arbre de scénario. D'autres éléments doivent également être connus :

* Pour les événements narratifs :

* Le texte à afficher lorsque l'événement est appelé. Ce texte est écrit avec l'aide du langage de balisage **BBCode**.

* Les identifiants des enfants de cet événement dans l'arbre de ce scénario ainsi qu'un court texte permettant de présenter les différentes options.

* Dans le cas d'un conflit :

* Le type de conflit afin de pouvoir correctement initialiser la scène.

* L'identifiant de l'entité ennemie qui sera également utilisé lors de l'initialisation.

* Les deux identifiants des enfants de ce nœud scénaristique, un correspondant à l'événement suivant la défaite lors de ce conflit et l'autre la victoire.

Ces données sont stockées dans un fichier JSON sous la forme d'un dictionnaire comportant une entrée par nœud de l'arbre de scénario dont la figure 4 donne un exemple.

<figure><img src="image_8.png" /><figcaption>FIGURE 4 – Schéma représentant un arbre de scénario potentiel</figcaption></figure>

### Fonctionnement de l'arbre de scénario schématisé

Le schéma présenté juste au dessus représente ce à quoi pourrait ressembler le début d'un arbre de scénario. Les cercles bleus représentent les évènements narratifs et les carrés rouges, les conflits. Chaque nœud est doté d'un identifiant unique qui permet au jeu de récupérer les données associées dans la base de donnée. Les flèches noires représentent la manière dont il est possible de parcourir l'arbre via des choix scénaristiques, tandis les flèches vertes et rouges représentent respectivement les chemins empruntés en cas de victoire ou de défaite lors d'un conflit.
Un exemple de base de donnée minimaliste est présent dans l'annexe b. Pour un jeu complet on peut imaginer que la profondeur de l'arbre soit de l'ordre de plusieurs dizaines (voir centaines) de niveaux. L'écriture du scénario est donc une partie majeure du travail effectué dans un jeu narratif de ce style. Néanmoins dans le cadre de ce PFE, un arbre de scénario ne pourra certainement pas avoir de profondeur supérieure à 10 pour des raisons de temps.

## 7.2 Principes techniques

Le fonctionnement technique de l'outil permettant de parcourir l'arbre peut être résumé par le pseudo-code suivant :

```
event_id ← next_event_id
Si event_id.type == "narrative" alors
    newScene ← narrativeScene.instantiate()
Fin si
Si event_id.type == "conflict" alors
    newScene ← conflictScene.instantiate()
Fin si
newScene.id = event_id
get_tree().add_child(newScene)
get_tree().remove_child(0)
```

Ce script est donc en réalité assez simple et vérifie uniquement le type de la prochaine scène à afficher. Une instance de la scène correspondante est ensuite créée puis ajoutée dans l'arbre. La fonction `_ready()` de la scène s'occupe du reste de l'initialisation. Le script supprime l'ancienne scène de l'arbre et libère la mémoire associée. Cela permet de s'assurer que la scène à supprimer est toujours à la position 0 dans la liste des enfants de la scène principale.

La connaissance de l'identifiant du nœud actuel est nécessaire pour récupérer les données indiquées ci-dessus ainsi que pour l'implémentation du système de sauvegarde.
# 8 Bilan, retrospective et perspectives pour le projet

## 8.1 Avancement actuel du projet

À l'heure où j'écris ce rapport (un peu moins de deux mois avant la fin du stage), plusieurs prototypes de jeu ont été réalisés et testés par différentes personnes. La figure 5 donne un aperçu du visuel des différents prototypes et de leur évolution.

<table><caption>TABLE 3 – Liste des différents prototypes du jeu dans l'ordre de développement</caption><thead><tr><td>Prototype</td><td>Description et features implémentées</td></tr></thead><tbody><tr><td>Jeu de cartes v1</td><td>Premier prototype du système de combat de carte, il permettait de jouer entièrement un conflit économique entre deux entreprises. Le prototype gérait le tirage de carte, le mélange de la défausse, la fin du tour, l'action de l'ordinateur et la fin de partie.</td></tr><tr><td>Jeu de cartes v2</td><td>Dans ce second prototype l'idée d'avoir une barre de vie commune au joueur et à l'ordinateur qu'il affronte a été abandonnée afin d'éviter des phénomènes de non-convergence. Le tirage de carte a été automatisé et toutes les cartes ont été illustrées. Des musiques et des effets sonores ont été rajoutés pour améliorer l'expérience utilisateur.</td></tr><tr><td>Outil narratif v1</td><td>Création du premier prototype permettant d'assurer la partie narrative du jeu. Ce prototype est doté d'une interface simple et manque de fonctionnalités basiques telles qu'un menu. Il permet néanmoins de parcourir un arbre de scénario sans problème.</td></tr><tr><td>Jeu de carte v3</td><td>Le système de barres de vie a une nouvelle fois été remanié dans ce prototype, pour ne laisser plus qu'une seule barre à l'ordinateur les deux autres s'étant révélées superflues. De nombreuses cartes ont été ajoutées et plusieurs ont été remaniées pour des raisons d'équilibrage. Les actions de l'ordinateur ont également été modifiées pour augmenter significativement la difficulté trop faible jusqu'à présent. Les parties sont également devenues beaucoup plus rapides.</td></tr><tr><td>Prototype complet v1</td><td>Ce prototype permet de naviguer dans un arbre de scénario simple et d'alterner entre des parties narratives et des parties de conflit par jeu de carte. Il n'y a pas de nouvelles features notables mais les deux parties du jeu ont enfin été connectées.</td></tr></tbody></table>
<figure><img src="image_9.png" /><figcaption>FIGURE 5 – Aperçu des différents prototypes</figcaption></figure>

## 8.2 Rétrospectives

### 8.2.1 Principales difficultés rencontrées

Lors de ce PFE j'ai rencontré plusieurs difficultés majeures, certaines d'ordre technique mais d'autres davantage liées au sujet du PFE en lui même. J'ai déjà exposé dans la partie 3 un des problèmes majeurs concernant la direction du jeu, je ne vais donc pas revenir dessus.

D'autres problèmes qui ne sont pas directement d'ordre technique ont été causés par le sujet du PFE en lui même. En effet, le sujet choisi est à la fois un sujet personnel et un sujet très exploratoire, ce qui m'a poussé avec mes encadrants à une certaine forme d'improvisation sur les questions méthodologiques et la planification des différentes tâches du projet.

J'ai également été confrontée à des problèmes techniques, le premier d'entre eux étant la prise en main du moteur de jeu. Si je me suis rapidement familiarisée avec le langage GDScript, il m'a fallu davantage de temps pour bien comprendre plusieurs fonctionnalités de Godot. Un exemple flagrant a été la manipulation des *control nodes* dont le fonctionnement semble assez obscur au premier abord. Ces nœuds possèdent des fonctionnalités qui leur sont propres quant à leur taille et leur position sur l'écran qui ne permettent pas de les manipuler à volonté. J'ai par exemple passé une semaine à essayer de régler un problème lié à ça alors que la mise en place de la solution n'a pas pris plus de cinq minutes. Malgré tout Godot dispose d'une documentation très complète et surtout, de par la gratuité et la mentalité open-source du moteur, d'un grand nombre de tutoriels et d'exemples de jeux accessibles librement. Ces ressources m'ont été grandement utiles tout au long du développement du projet.
### 8.2.2 Comparaison des durées de développement

Au moment du pré-rapport j'avais uniquement travaillé sur la partie jeu de carte et je n'avais encore aucun prototype de réalisé. J'avais alors élaboré le tableau suivant contenant les différentes fonctionnalités et parties du jeu sur lesquelles je pouvais travailler. La durée minimale correspond à la durée nécessaire pour produire le strict nécessaire à la création de prototypes tandis que la durée maximale correspond à la durée estimée pour développer toutes les *features* envisagées sur cette partie du projet. Une durée minimale de 0 semaines signifie que la *feature* associée n'était considérée comme essentielle pour la suite du PFE.

<table><thead><tr><td>Nom de la fonctionnalité</td><td>Durées minimales et maximale estimées</td><td>Description détaillée</td></tr></thead><tbody><tr><td>Finalisation du prototype de jeu en carte</td><td>1 à 2 semaines</td><td>Finalisation du premier prototype permettant à un joueur de jouer une partie de carte dans un contexte spécifique. Cela demandera de finir l'interface graphique et les bases de données contenant les cartes et au moins une entité ennemie.</td></tr><tr><td>Implémentation du système de narration</td><td>3 à 8 semaines</td><td>Implémentation de la structure en arbre, de l'affichage des différents textes et choix, du déplacement dans l'arbre et d'un système de sauvegarde.</td></tr><tr><td>Écriture d'un premier scénario</td><td>1 à 3 semaines</td><td>Écriture d'un premier scénario permettant de jouer au jeu en entier. L'écriture sera découpée en deux phases, premièrement la conception de l'arbre du scénario et ensuite l'écriture du texte propre à chaque événement.</td></tr><tr><td>Écriture de meilleurs scénarios</td><td>0 à 6 semaines</td><td>Cette partie consistera soit en l'écriture d'autres scénarios soit à l'expansion du premier scénario. Dans les deux cas les deux étapes énoncées précédemment s'y trouveront toujours.</td></tr><tr><td>Outil de création de scénario</td><td>0 semaines à non défini</td><td>Création d'un outil permettant de facilement transformer un fichier texte en arbre de scénario et en base de données de textes rattachés à ce scénario.</td></tr><tr><td>Outil de création de carte</td><td>0 à 4 semaines</td><td>Développement d'un outil permettant de créer de nouvelles cartes. Cet outil sera certainement plus complexe à développer que l'éditeur de scénario puisqu'il demandera de gérer l'illustration des cartes et leur compatibilité avec les bases de données du jeu. Cet outil nécessitera probablement une interface graphique.</td></tr><tr><td>Équilibrage à la main</td><td>1 semaine en cumulé</td><td>Équilibrage des cartes du jeu en fonction des retours des différents joueurs jouant aux prototypes. Cet équilibrage se fera au fur et à mesure des retours.</td></tr><tr><td>Équilibrage par algorithme</td><td>0 semaines à non défini</td><td>Implémentation et utilisation d'algorithmes d'exploration arborescente pour tester les différentes possibilités du jeu et l'équilibrer ainsi.</td></tr></tbody></table>
<table><caption>TABLE 4 – Features envisagées et durées de développement estimées</caption><tr><td>Sommes des durées minimales et maximales</td><td>6 à 24 semaines</td><td></td></tr></table>

Voici donc un nouveau tableau avec le temps réel qu'il m'a fallu pour implémenter plusieurs de ces features :

<table><thead><tr><td>Nom de la fonctionnalité</td><td>Durées estimées</td><td>Durées réelles</td><td>Commentaires</td></tr></thead><tbody><tr><td>Finalisation du prototype de jeu de carte</td><td>1 à 2 semaines</td><td>2 semaines</td><td>La finalisation du premier prototype était la tâche principale qui était fixée dans le pré-rapport. Ce premier prototype a permis d'obtenir plusieurs retours sur le gameplay du jeu.</td></tr><tr><td>Implémentation du système de narration</td><td>3 à 8 semaines</td><td>2 jours</td><td>Implémentation d'un système narratif fonctionnel mais très minimaliste. Certaines fonctionnalités importantes sont manquantes mais ne sont pas strictement nécessaires.</td></tr><tr><td>Écriture d'un premier scénario</td><td>1 à 3 semaines</td><td>1 semaine</td><td>Écriture et implémentation d'un premier scénario minimaliste pour le premier prototype complet</td></tr><tr><td>Écriture de meilleurs scénarios</td><td>0 à 6 semaines</td><td>0 semaines</td><td>Non réalisé</td></tr><tr><td>Outil de création de scénario</td><td>0 semaines à non défini</td><td>0 semaines</td><td>Non réalisé</td></tr><tr><td>Outil de création de carte</td><td>0 à 4 semaines</td><td>0 semaines</td><td>Non réalisé</td></tr><tr><td>Équilibrage à la main</td><td>1 semaine en cumulé</td><td>1 semaine</td><td>Réalisé au fur et à mesure de la création des différents prototypes. Le temps compté ici est uniquement celui dédié aux séances de tests et aux modifications purement liées à l'équilibrage du jeu.</td></tr><tr><td>Équilibrage par algorithme</td><td>0 semaines à non défini</td><td>0 semaines</td><td>Non réalisé</td></tr></tbody></table>
<table><caption>TABLE 5 – Comparaison entre les durées de développement estimées et les durées réelles</caption><tr><td>Élaboration de plusieurs autres prototypes de jeu de cartes</td><td>0 semaines (non prévu)</td><td>2 semaines</td><td>Bien que le développement de plusieurs prototypes de la partie jeu de carte du jeu sérieux n'ait pas été initialement prévu lors du pré-rapport, les tests du premier prototype ont montré que des améliorations significatives devaient être faites sur cette partie du jeu. J'ai donc choisi de passer du temps à les faire d'ici la soutenance.</td></tr><tr><td>Durées totales</td><td>6 à 24 semaines</td><td>6 semaines et 2 jours</td><td></td></tr></table>

Il est possible de tirer plusieurs éléments de cette comparaison. Tout d'abord j'ai réussi à bien estimer les durées de développement des éléments sur lesquels j'avais déjà de bonnes connaissances : la réalisation d'un premier prototype de jeu de carte et l'écriture d'un scénario (j'écris régulièrement sur mon temps libre). Le point le plus marquant reste cependant la différence entre le temps estimé pour la création d'un système de narration minimaliste de 3 semaines et le temps réel de 2 jours. Je pense que cette différence vient du fait qu'une grande partie du temps passé sur le développement du système de jeu de carte m'a permis de suffisamment prendre en main le moteur de jeu. J'ai en effet réussi à implémenter le système de narration d'une traite sans rencontrer de problème directement lié au moteur de jeu. Si j'avais à la place commencé par le système de narration plutôt que par le système de jeu de carte j'aurais certainement rencontré des problèmes qui auraient drastiquement rallongé la durée de développement.

### 8.2.3 Rétrospective plus générale

L'abandon du projet initial pour développer un autre jeu sérieux plus réalisable avec le temps et les ressources limités à ma disposition a certainement impacté les objectifs initiaux que je m'étais fixés. Tout d'abord le passage à un jeu narratif a fait reposer la quasi-totalité du contenu éducatif sur le scénario. Or avec les contraintes de temps que j'avais je n'ai pas pu travailler autant sur le scénario que j'aurais aimé le faire. De plus avoir un scénario fixe implique un cadre plus rigide qui laisse moins de place au joueur pour expérimenter différentes actions. Cette déviation des objectifs initiaux a néanmoins été jugée nécessaire au cours de ce PFE et il est plus qu'incertain qu'un projet plus semblable au premier jeu envisagé aurait pu atteindre un stade satisfaisant de développement.

## 8.3 Perspectives de développement

Pour la fin de ce stage je devrai certainement faire un choix entre proposer un jeu final suffisamment travaillé dans ses deux systèmes (cartes et narration) pour qu'il se suffise à lui-même ou me concentrer sur des outils permettant à des personnes moins formées en informatique mais davantage par exemple en sciences sociales ou qui ont de l'expérience avec la conception de jeux, vidéos ou non, de pouvoir utiliser la structure que j'ai créée pour développer leurs propres
itérations. La deuxième option permettrait certainement d'inscrire davantage mon projet dans l'interdisciplinarité prônée par l'équipe STEEP mais il faut au préalable vérifier que l'équipe compte bien utiliser ces outils dans le futur ce qui peut être délicat en l'absence d'un premier jeu suffisamment fini.

### 8.3.1 Amélioration du jeu

En ce qui concerne l'amélioration du jeu en lui même il reste de nombreuses choses à faire. Tout d'abord, le scénario actuel est très basique et pourrait être grandement amélioré. Pour l'instant seules les cartes des conflits économiques ont été implémentées. Il manque également de nombreuses fonctionnalités telles que la gestion des cartes illégales et des cartes avec des effets spéciaux ou simplement un menu et un système de sauvegarde. Enfin une amélioration des visuels du jeu pourrait être envisagée pour le rendre plus attirant.

### 8.3.2 Développement d'outils annexes

Une autre perspective de développement serait de développer plusieurs outils permettant à d'autres personnes de plus facilement itérer sur le jeu. Parmi ces outils on peut envisager principalement un outil permettant de transformer un fichier texte en fichiers de scénarios lisibles par le jeu. L'outil convertirait alors le fichier d'origine (soit écrit en respectant certaines règles soit écrit dans l'outil directement) en fichiers permettant au jeu de reconnaître un arbre de scénario et d'y associer les bons contenus textuels. On peut également envisager un outil permettant de faciliter la création de carte en y associant des effets et des visuels customisés.
# 9 Impressions personnelles

Tout d'abord je suis globalement très satisfaite des premiers prototypes de jeu que j'ai réalisés au long de mon PFE. Ce stage a été riche en apprentissage, à la fois directement à cause du travail effectué mais aussi grâce aux nombreuses activités de l'équipe STEEP. Je suis très contente de retrouver cette équipe et l'aspect interdisciplinaire qu'elle essaye de prôner.

Au cours de ce stage, j'ai pris conscience de la taille du projet dans lequel je m'étais lancée pour ce stage de fin d'études. Cela s'est très vite traduit en une redéfinition du sujet afin de pouvoir plus facilement arriver à un premier jeu fini d'ici la fin du stage au lieu de laisser à l'équipe plusieurs prototypes trop peu finis pour qu'ils soient réutilisés ou que le développement soit repris.

Au delà de ça le fait de devoir travailler sur un projet dont la méthodologie de développement était peu connue voire inconnue à la fois de moi et de mes responsables de stage a certainement rendu le projet plus compliqué. J'aurais probablement dû passer plus de temps au début de mon stage à étudier ce point.

En plus de ce manque de connaissances méthodologiques le projet a commencé de zéro. Tout ce qui est présent dans le jeu, à l'exception des musiques et effets sonores, a été réalisé au cours de ce PFE. J'ai donc été obligée de m'occuper de la quasi totalité des aspects du développement du jeu. Ces aspects incluent bien sûr tout ce qui a trait au développement informatique ainsi qu'à quelques aspects mathématiques, où les compétences que j'ai apprises à l'ENSIMAG m'ont été utiles, mais également toute la partie design. J'ai ainsi passé beaucoup de temps à créer une partie des graphiques du jeu sur GIMP ou à les générer sur Midjourney. J'ai également dû chercher les musiques et effets sonores du jeu et j'ai surtout dû créer les différentes cartes, scénarios et événements avant de les enregistrer dans des bases de données lisibles par le jeu. Bien que je ne sois absolument pas mécontente d'avoir pu travailler sur ces aspects du jeu cela a réduit le temps que j'avais à accorder aux aspects plus techniques et plus proches des compétences enseignées à l'ENSIMAG.

Au final, je reste très satisfaite du travail que j'ai pu effectuer lors de mon PFE. Le sujet m'a vraiment intéressé et je suis contente d'avoir pu proposer plusieurs prototypes de jeu et de les voir s'améliorer en qualité. J'ai donc envie de continuer à améliorer ces prototypes au cours du mois et demi qu'il me restera après la soutenance de ce PFE.
# 10 Impact environnemental et social

## 10.1 Impact environnemental du projet

### 10.1.1 Consommation énergétique et impact carbone du stage

En ce qui concerne la consommation énergétique du stage, j'ai commencé par calculer seulement ma consommation "personnelle". C'est à dire la consommation énergétique de l'ordinateur que j'ai utilisé durant le PFE. Pour ce calcul j'ai considéré que le pc portable sur lequel j'ai travaillé était constamment branché avec une batterie pleine. La puissance estimée d'un ordinateur portable complètement chargé est de 25 watts.

La convention de stage stipulant que je travaille 35 heures par semaine, cela correspond à 7 heures de travail par jour travaillé. Mon stage ayant lieu du 27 février au 28 juillet, le nombre de jours travaillés s'élève donc à 104. On peut alors déterminer la consommation énergétique de ce stage :

$$E = 7 \cdot 104 \cdot 25 = 18,2 \text{ kWh}.$$

En ce qui concerne l'impact carbone de mon PFE, j'ai calculé celui-ci en prenant uniquement en compte les trajets entre mon domicile et le laboratoire de recherche. J'effectue un trajet de 8,6 km en bus pour me rendre au lieu de mon PFE. La ligne de bus que j'utilise utilise principalement des bus roulant au gaz naturel qui émettent, pour une personne, $0,12 \text{ kgCO}_2\text{e.km}^{-1}$ d'après l'ADEME. On obtient donc $8,6 \cdot 2 \cdot 0,12 = 2,06 \text{ kgCO}_2\text{e}$ par aller-retour. Comme dit plus haut la durée du PFE est de 104 jours ouvrés. Le total des émissions de $\text{CO}_2$ liées au transport est donc de $104 \cdot 2,06 = 214,24 \text{ kgCO}_2\text{e}$ pour toute la durée du stage.

Il y a cependant un élément de plus à prendre en compte. En effet, une partie des images utilisées dans le jeu ont été générées par l'outil de *machine learning* Midjourney développé par le laboratoire du même nom. Dans une interview donnée en 2022, le fondateur de ce laboratoire explique que Midjourney dispose de 10000 serveurs dédiés à leur logiciel. Il est tout à fait envisageable que ce nombre a augmenté depuis, de plus la quasi-totalité des demandes de génération d'image sont placées en file d'attente avant le début de la génération. On peut en déduire que les serveurs utilisés sont complètement sollicités. En gardant le chiffre de 10000 serveurs et en supposant qu'ils tournent à plein régime on obtient alors une consommation annuelle de 15 millions de kWh par an en se basant sur les chiffres de l'ADEME qui estiment la consommation annuelle d'un serveur physique à 15000kWh. Malgré cela, il est impossible de savoir combien d'individus utilisent Midjourney et il est par conséquent impossible de calculer un impact individuel moyen.

### 10.1.2 Réflexion critique sur le projet

Au delà de l'impact directe du pfe, une autre question peut être posée. Est-ce qu'il est réellement nécessaire ou simplement bénéfique de numériser un outil éducatif tel qu'un jeu. Le choix de la numérisation de l'éducation n'est pas anodin d'un point de vue environnemental. Cela nécessite une infrastructure informatique ainsi que de nombreux terminaux si l'on souhaite que le plus grand nombre puisse y accéder. Ces pré-requis vont consommer de l'énergie et l'infrastructure devra être fabriquée et mise en place. Il est donc pertinent de se demander si les bénéfices sont réellement supérieurs au coût de cette démarche.
D'une certaine manière la question ne se posait pas dans le cadre de ce PFE. Afin de répondre aux attentes de l'ENSIMAG je me suis imposée de ne pas seulement faire un jeu sérieux mais un jeu vidéo sérieux. Au delà de cette contrainte, l'impossibilité de tester le jeu et son impact rigoureusement fait que je suis dans l'incapacité d'avoir une réponse à cette question.

## 10.2 Politiques des structures d'accueil

### 10.2.1 L'INRIA

Depuis quatre ans, l'environnement fait officiellement partie des « domaines d'application » majeurs de l'Inria, suite à la création d'une poste d'adjoint au directeur scientifique de l'institut, en charge des questions environnementales.

Concrètement, parmi les 200 équipes-projets de l'INRIA un peu plus d'un tiers ont eu des activités en lien avec l'environnement mais il s'agissait souvent de contacts marginaux avec ce sujet. Les équipes pour qui les questions environnementales font partie du coeur de leur programme et ces équipes sont regroupées avec celles qui travaillent sur le secteur de l'énergie au sein de la thématique "Sciences de la planète, de l'environnement et de l'énergie". Ce thème regroupe au total seulement 10 équipes-projet sur 200. Parmi ces équipes, seule STEEP fait le lien entre des modèles biophysiques et des modèles socio-économiques.

Malgré l'engagement supposé de l'INRIA sur les questions environnementales il n'y a en réalité que peu de moyens humains alloués à ce sujet. De plus les points de vue sur ces questions semblent diverger, là où l'équipe STEEP prône majoritairement les principes de décroissance. Il est possible de trouver sur le site de l'INRIA une page web sur le programme "Numérique et Environnement" de l'institut et l'un des objectifs mentionnés est de "faire plus avec moins". Il y a donc une contradiction entre le programme prôné par l'institut et l'équipe STEEP sur la question de la croissance.

En plus de cela, la majorité des travaux de l'INRIA portant l'étiquette "environnement" relève du green-IT ou de l'IT-for-green, respectivement des travaux sur la sobriété numérique et des "solutions" numériques aux problèmes environnementaux tels que le développement de capteurs et robots à utiliser dans les champs. Il est donc difficile de voir une capacité à changer de paradigme sur les questions environnementales, changement qui est probablement malheureusement nécessaire...

## 10.3 Impact social du projet

Cette partie du rapport est je pense l'une des plus importantes. En effet, ce projet étant un jeu éducatif et ayant un biais politique marqué il était conçu pour avoir un impact social. Je vais donc aborder ce sujet ici.

Malheureusement il sera impossible d'avoir une analyse empirique de l'impact du jeu puisque celui-ci n'est pas encore disponible publiquement. L'analyse qui sera faite ici sera donc principalement théorique même si je la recouperai avec des expériences que j'ai pu avoir.

Ce projet de jeu vidéo se veut donc être un projet militant puisqu'il a comme objectif de faire passer un message politique, ceci est d'autant plus vrai que le message du jeu est véhiculé par le scénario que j'aurai directement écrit plutôt que par des modèles qui, bien que non-neutres, auraient pu être vus comme des boites noires. Je pense que les intentions derrière ce projet sont assez communes parmi le milieu militant en général. En effet, l'idée principale est de fournir un outil éducatif qui puisse former les différents joueurs à certaines problématiques avec l'idée sous-jacente que cette connaissance du problème soit suffisante pour entraîner une action. Si
cette approche me paraissait pertinente au début de mon PFE, je dois reconnaître que j'en suis beaucoup moins convaincue aujourd'hui.

En effet, la "stratégie" que j'avais adoptée est une stratégie prépondérante dans les organisations (et chez les individus) militantes. Il s'agit de former les personnes que l'on veut recruter/éduquer/etc. et ensuite de supposer que de cette formation naîtra une action suffisamment puissante pour amener un changement politique. Si cette stratégie est revendiquée comme valide dans certaines tendances militantes elle est en réalité en contradiction avec les analyses que je défends et je la considère également fausse d'un point de vue empirique. En effet, si faire prendre conscience aux gens de la nature et des mécanismes des problèmes auxquels ils font face est essentiel il est illusoire de supposer que cette seule conscientisation résulte en une action politique.

Il y a plusieurs raisons à cela, premièrement je défends une vision marxiste de la société, dans ce cas cela signifie que selon moi les changements politiques n'ont pas lieu uniquement sur la base d'idées ou d'idéologie mais repose au contraire sur des contradictions matérielles et un rapport de force au sein de la société. L'action politique dépend donc d'un rapport de force, or pour créer ce rapport de force il est nécessaire d'organiser les volontés politiques individuelles et de les faire agir en commun. Une simple éducation sur ces questions ne suffit à créer cette organisation.

Deuxièmement se contenter uniquement d'avoir un rôle éducatif amène presque nécessairement à une deuxième contradiction avec la vision marxiste que je défends. En effet, ce qui a force du marxisme dans les mouvements politiques c'est sa capacité à s'adapter à la réalité des contextes historiques dans lesquels les courants politiques qui s'en revendiquaient ont non seulement réussis à rassembler des pans conséquents de la population mais surtout à s'organiser en force politique capable de grands changements de société. C'est uniquement en s'adaptant aux conditions historiques qui leur étaient propres que ces mouvements ont triomphé en Russie en 1917 et en Chine en 1949. Au contraire quand ces mouvements politiques se sont accrochés à des analyses et des théories qui ne correspondaient plus à leur situation réelle alors ils ont perdu la capacité de changer radicalement la société selon leurs termes. On peut ici faire référence aux actions du parti social-démocrate allemand en 1918-1919 qui s'est allié aux milices monarchistes pour écraser un mouvement révolutionnaire issu de ce même parti. Ou sinon aux nombreux groupuscules d'extrême gauche en France qui peinent à s'adapter au contexte contemporain.

Si je mentionne cela c'est parce que l'une des causes de cette incapacité à s'adapter vient de la manière dont sont construites les théories et analyses de ces mouvements. Au lieu de naître d'une enquête des places, forces et compositions des différentes classes sociales pour ensuite déboucher sur des théories et des stratégies plus générales, le travail inverse est fait. De nombreuses théories sont formulées, souvent sans partir d'une analyse concrète de la situation de la population qui demande une enquête laborieuse, et ensuite appliquées à la situation actuelle. Souvent ces théories ne produisent pas beaucoup d'effet concret puisqu'elle échouent à organiser une force politique suffisante faute d'avoir mené l'enquête nécessaire à la création de cette organisation. Pour résumer, il manque un travail concret de réflexion sur l'organisation de nos forces politiques et ce travail ne peut avoir lieu qu'au sein des composantes de la société que nous souhaitons rassembler et non en dehors.

Ce projet de stage échoue malheureusement à faire cela. Si il est possible que ce jeu puisse informer et éduquer plusieurs personnes et même les convaincre des points de vue que je défends il me parait vain d'attendre que cela se transforme en action politique concrète. Ce jeu peut néanmoins être un outil mais il ne peut absolument pas se suffire à lui même si les objectifs que je me suis fixés doivent être atteints.
Conclusion

Nous vivons dans une époque où les contradictions s'accentuent où qu'elles soient : entre les limites planétaires et les modes de production capitalistes, entre les différentes classes sociales ou même entre les différentes fractions de la classe capitaliste. On peut trouver des exemples de ce phénomène les conflits géopolitiques récents comme la guerre en Ukraine, les tensions sino-américaines et la réticence des pays de l'Union Européenne à suivre les USA dans ce conflit.

L'urgence n'est pas seulement climatique mais aussi sociale et l'hégémonie du système capitaliste la rend globale et plus destructrice que jamais auparavant. Face à cet avenir, on peut penser aux mots de Friedrich Engels et Rosa Luxembourg "socialisme ou barbarie" mais force est de reconnaître que ces mots d'ordre ne sont possiblement plus à la hauteur des enjeux actuels. Peut être faudrait-il maintenant dire "socialisme ou extinction".

C'est pour tenter de faire face à cette menace que l'idée de ce projet de stage m'est venue, comme une brique permettant de participer à la construction d'une alternative politique à la situation actuelle. Malheureusement j'ai rapidement dû abandonner le projet initial après avoir réalisé avec mes encadrants qu'il n'était pas envisageable qu'il aboutisse d'ici la fin du PFE. J'ai donc commencé à travailler sur un autre type de jeu avec un objectif moins ambitieux mais que je considérais encore à l'époque comme servant l'objectif principal que je m'étais fixé.

J'ai cependant réalisé au cours du stage que, même si j'étais amplement satisfaite de l'aspect technique du projet et de ce que j'avais accompli de ce point de vue, le projet n'était pas à la hauteur de ce que j'espérais d'un point de vue politique et éducatif. En plus de cela s'est rajouté le constat qu'une simple diffusion d'idées ou de théories ne pouvait pas suffire comme je l'ai expliqué dans la partie précédente.

Je considère néanmoins que ce stage m'a beaucoup appris. À la fois d'un point de vue technique : j'ai appris à utiliser des technologies que je ne connaissais pas. Mais aussi d'un point de vue politique puisque c'est grâce aux discussions que j'ai eu la chance d'avoir avec les autres membres de l'équipe et à la critique que j'ai faite de mon propre projet que j'ai pu évoluer dans ma pensée politique. Ce stage n'est donc absolument pas un échec personnel.

À partir de ce qui a été fait, il serait tout à fait possible de continuer à développer le jeu après la fin du PFE. Cependant il me semble qu'une question plus importante à explorer est celle qui consiste à chercher comment créer une force politique capable d'imposer un autre avenir.
Remerciements

Après plusieurs mois de stage je dois remercier plusieurs personnes.

Tout d'abord je tiens à remercier mon encadrant Peter STURM pour m'avoir permis d'effectuer ce stage et son accompagnement tout au long de celui-ci. Je remercie également Sylvain BOUVERET pour avoir été mon tuteur école et pour son soutien.

Je remercie également Marie-Anne DAUPHIN-RIZZI, Fadila MESSAOUD-DJEBARA, Myriam TORLINI et Moufida DERBAL pour leur travail et accompagnement dans les démarches administratives.

Remerciements particuliers à tous les membres de l'équipe STEEP pour l'aide qu'ils m'ont apporté notamment lors de la phase de test des différents prototypes mais également pour l'excellent cadre de travail fourni par ces personnes. Merci donc à Albert, Alexandre, Antonin, Clara, Denis, Emmanuel², Enzo, Guillaume, Hannah, Jean-Yves, Jéremie, Louis, Léon, Mathieu, Mathilde, Pierre-Yves, Quentin, Serge, Sophie et Thibaut.

Je remercie chaleureusement toutes les personnes impliquées dans le cours de Numérique Responsable de l'année 2021-2022 sans qui je n'aurais jamais rencontré cette équipe de recherche.

Et pour finir je tiens à remercier Éléonore et Diana pour leur soutien continu et les idées qu'elles m'ont apportées durant ce stage.
# Annexes

## A Jeu Vidéo

### a Code source

le code source du jeu est disponible sur ce dépôt github : https://github.com/AwinOnyria/PFECardGame.

### b Versions Windows, Linux et Mac

Pour l'instant je n'ai pas mis en place de site permettant de télécharger le jeu. Il est possible de me demander les différents prototypes pour différents OS à l'adresse mail suivante : ariane.dauvergne@grenoble-inp.org

## B Extraits de code

### a Base de données actuelles contenant l'ensemble de cartes

<figure><img src="image_10.png" /></figure>

Base de données actuelles contenant l'ensemble de cartes

1 \label{card_database}
2 enum {
3 ADS,
4 LOWER_PRICES,
5 FAKE_NEWS,
6 OUTSOURCING,
7 INVESTORS,
8 LAYOFFS,
9 SUBCONTRACT,
10 CRUNCH,
11 UNPAID_HOUR,
12 EXPAND,
13 TEAM_COHESION,
14 HIRING CAMPAIGN,
15 RETREAT,
16 TAX_FRAUD,
17 SELL Stocks,
18 CORPORATE_SPYING,
19 }
20
21 const DATA = {
22   ADS:
23   ["capitalist", "ADS", "Campagne_publicitaire",
24    "Augmente les \nparts de marché\nDiminue les ressources\néconomiques
25    ", true, 1,
26    Vector2i(0, -5), Vector2i(-10, 0), Vector2i(0, 0)],
27   LOWER_PRICES:
28 }
Code 3 – continued

27

"capitalist", "LOWER_PRICES", "Baisse_des_prix",

28

"Augmente_les\nparts_de_marché\nDiminue_les\nressources_économiques
", true, 1,

29

Vector2i(0, -10), Vector2i(-15, 0), Vector2i(0, 0)],

30

FAKE_NEWS:

31

"capitalist", "FAKE_NEWS", "Campagne_de_Diffamation",

32

"Augmente_les\nparts_de_marché\nDiminue_les\nressources_économiques
", false, 1,

33

Vector2i(0, -10), Vector2i(-10, 0), Vector2i(0, 0)],

34

OUTSOURCING:

35

"capitalist", "OUTSOURCING", "Délocalisation",

36

"Augmente_les\nparts_de_marché\nAugmente_les\nressources_économiques\nDiminue_la\ncohésion",

37

true, 2, Vector2i(0, -15), Vector2i(+15, 0), Vector2i(-20, 0)],

38

INVESTORS:

39

"capitalist", "INVESTORS", "Nouveaux_investisseurs_!", "Augmente_les\nressources_économiques",

40

true, 1, Vector2i(0, 0), Vector2i(+10, 0), Vector2i(0, 0)],

41

RETREAT:

42

"capitalist", "RETREAT", "Retraite_stratégique",

43

"Augmente_les\nressources_économiques\nDiminue_les_parts\nde_marché
", true, 1,

44

Vector2i(0, +5), Vector2i(+10, 0), Vector2i(0, 0)],

45

TAX_FRAUD:

46

"capitalist", "TAX_FRAUD", "Évasion_fiscale",

47

"Augmente_les\nressources_économiques\nDiminue_la\ncohésion", false, 2,

48

Vector2i(0, 0), Vector2i(+15, 0), Vector2i(-5, 0)],

49

SELL_STOCKS:

50

"capitalist", "SELL_STOCKS", "Vente_d'actifs",

51

"Diminue_les\nparts_de_marché\nAugmente_les\nressources_économiques\nDiminue_la\ncohésion",

52

true, 2, Vector2i(-1, 0), Vector2i(+15, 0), Vector2i(-5, 0)],

53

HIRING CAMPAIGN:

54

"capitalist", "HIRING CAMPAIGN", "Campagne_de_recrutement",

55

"Diminue_les\nressources_économiques\nAugmente_la\ncohésion", true, 1,

56

Vector2i(0, 0), Vector2i(-15, 0), Vector2i(+25, 0)],

57

LAYOFFS:

58

"capitalist", "LAYOFFS", "Licenciements",

59

"Augmente_grandement_les\nressources_économiques\nDiminue_ significativement\nla\ncohésion",

60

true, 1, Vector2i(0, 0), Vector2i(+25, 0), Vector2i(-15, 0)],

61

CORPORATE_SPYING:

62

"capitalist", "CORPORATE_SPYING", "Espionnage_industriel",

63

"Diminue_les\nressources_économiques\nPermet_de_voir\nles_actions_ adverses\npendant_3_tours",

64

false, 2, Vector2i(0, 0), Vector2i(-10, 0), Vector2i(0, 0)],

65

TEAM_COHESION:

66

"capitalist", "TEAM_COHESION", "Team_building",

67

"Augmente_la\ncohésion",

68

true, 1, Vector2i(0, 0), Vector2i(0, 0), Vector2i(+10, 0)],

69

SUBCONTRACT:

70

"capitalist", "SUBCONTRACT", "Soustrationance",

71

"Prend_des_parts\n_de_marché\n\nDiminue_la\ncohésion",
Code 3 – continued

true, 1, Vector2i(0, -5), Vector2i(0, 0), Vector2i(-10, 0)],
72
73 CRUNCH:
74 ["capitalist", "CRUNCH", "Travaillez plus !",
75 "Prend des parts \ n de marché \ n \ nDiminue la cohésion",
76 true, 1, Vector2i(0, -10), Vector2i(0, 0), Vector2i(-15, 0)],
77 UNPAID HOURS:
78 ["capitalist", "UNPAID HOURS", "Travail non payé",
79 "Prend des parts \ n de marché \ n \ nDiminue la cohésion",
80 false, 1, Vector2i(0, -10), Vector2i(0, 0), Vector2i(-10, 0)],
81 EXPAND:
82 ["capitalist", "EXPAND", "Expansion",
83 "Prend des parts \ n de marché \ n \ nDiminue les ressources \ n \ nAugmente la ncohésion",
84 true, 2, Vector2i(0, -15), Vector2i(-20, 0), Vector2i(+15, 0)],
85 }

Code 3 : Base de données actuelles contenant l'ensemble de cartes

b Exemple d'une base de données stockant un arbre de scénario basique

<figure><img src="image_11.png" /></figure>

Exemple d'une base de données stockant un arbre de scénario basique

1 {
2 "events": {
3 "event1.0": ["narrative", {"event1.0": "Go_to_event_1.0->", "event1.1": "Go_to_event_1.1->"}],
4 "event1.0": ["narrative", {"event0.0": "Go_to_event_0<-", "event2.0": "Go_to_event_2"}],
5 "event1.1": ["narrative", {"event0.0": "Go_to_event_0<-", "event2.0": "Go_to_event_2"}],
6 "event2.0": ["narrative", {"event3.0": "Go_to_event_3_(cards_!!!)"}],
7 "event3.0": ["conflict", {"event4.0": "", "event4.1": ""}],
8 "event4.0": ["narrative", {"event0.0": "Go_to_event_0<-"}],
9 "event4.1": ["narrative", {"event0.0": "Go_to_event_0<-"}],
10 },
11 "narrative": {
12 "event0.0": ["Event_0!"],
13 "event1.0": ["->Event_1.0!"],
14 "event1.1": ["->Event_1.1!"],
15 "event2.0": ["Texte_de_l'événement_2.0!_[i] Et_en_italique_![\i]"],
16 "event4.0": ["[b] DÉFAITE..._[\b]"],
17 "event4.1": ["[b] VICTOIRE_![\b]"],
18 },
19 "conflict": {
20 "event3.0": ["ECONOMICAL_CONFLICT", "TOITSU"]
21 }
22 }
Code 4 – continued

Code 4 : Exemple d'une base de données stockant un arbre de scénario basique

On notera que certains éléments nécessaire à l'initialisation d'une scène de "conflit" ne sont pas stockés dans cette structure de données. On peut notamment penser à la composition du deck de carte du joueur qui est stocké dans une variable à part.

La connaissance de l'identifiant du nœud actuel est nécessaire pour récupérer les données indiquées ci-dessus ainsi que pour l'implémentation du système de sauvegarde.
# C Premier sujet de stage

## a Description du jeu

### a.a Idée

Le jeu a lieu dans une simulation d'une société qui évolue, avec un attrait sur son économie, sa politique et son environnement.

À l'intersection entre un jeu sérieux et un jeu de simulation de gouvernement (Victoria, Geopolitical Simulator), le joueur incarne non pas un leader mais un "camp" entier, luttant pour parvenir au pouvoir et appliquer les changements de société recherchés.

L'objectif derrière ce jeu étant de fidèlement représenter les différents acteurs qui influencent l'évolution d'une société, leurs leviers et leurs limites afin de stimuler l'intérêt des joueur-euse-s sur ces questions.

Gestion d'une économie à l'échelle macro

### a.b Support et features

#### Fiche technique

Jeu vidéo local sur PC (Windows, Linux) en solo. Éventuellement portable sur macOS et Android.

Développé avec le moteur Godot.

Contrôles à la souris et au clavier. Éventuellement contrôles tactiles.

Représentation géographique du "monde" (pays ou planète) par une carte interactive

Visualisation de données générales sur la société et l'environnement sur une interface graphique

Menus pour les prises de décision et l'exploration de données précises

La carte et les graphiques évoluent au fil du temps qui passe

Menu pour paramétrer l'écoulement du temps

Le portage sur mobile est une hypothèse à très long terme.

#### Implémentation

Mondes générés procéduralement ; en établissant dans l'ordre :

- établissement des paramètres spécifiques (biômes possibles, type d'écosystème, état de la société, etc)

- génération de géographie, biômes, humidité, température à partir de noise

- placement des ressources naturelles (minerais, matière fossile)

- placement de la flore et des populations animales pertinentes au jeu

- placement des zones peuplées

- définition de la structure sociale

- définition de la population

Interactions entre les acteurs de la société et l'environnement

- Environnement
- écosystèmes spécifiques

- services écosystémiques

- ressources non-renouvelables

- ressources à débit limités

- Structure socio-économiques

- contradictions entre les différentes classes sociales

- contradictions entre les différentes classes sociales

- Structure politique/de pouvoir

- institutions

- forces armées / de maintien de l'ordre

- conscience de classe

- libertés d'action (grèves, propagande, manifestation)

- Population (la structure sociale génère des profils d'individus représentant différentes strates)

- activité/travail, place dans les relations de production, classe

- capital, revenu

- valeurs, idéologies

- situations familiales

### a.c Gameplay

Le gameplay principal du jeu sera centré autour de la prise de décision qui auront leurs répercussions sur la société et l'environnement à une échelle macro. Dans une première itération le joueur incarnera le gouvernement en place (d'un pays capitaliste) et aura comme objectif de rester au pouvoir. Ces décisions seront de plusieurs sortes :

- allocation de ressources

- définition de budgets

- priorisation de certains secteurs de l'économie

- régler les conflits sociaux (pas 36 manières différentes quand on incarne le gouvernement...)

- faire des compromis avec les différents camps politiques

- etc.

### a.d Implémentation

#### Design

Les entités du jeu seront divisés en deux catégories principales :

- les "ressources" qui prendront en compte tant les ressources matérielles, les produits industriels et les forces de l'état (armée, police, renseignements, médias, ...) qui sont nécessaires au maintien de la production.
- les classes sociales qui représenteront les différentes parties de la population en fonction de leur place dans le système de production. Ces classes sociales seront divisées en plusieurs groupes d'intérêts qui défendront des mesures politiques avec des taux d'implications divers. Plusieurs groupes d'intérêts pourront se regrouper si leurs intérêts sont suffisamment convergents au sein d'un parti ou d'une coalition.

## Aspect visuel

Le principal aspect visuel du jeu sera une vue de dessus d'une carte du monde avec différents layers indiquant différentes informations (ressources, industries, population, ...).

Le jeu comportera également des menus et des visuels utiles pour estimer la situation dans laquelle le joueur se trouve tels que des courbes de popularités, un schéma d'un parlement avec les différentes factions politiques y participant.

## b Planification du développement

### b.a Équipe

Moi-même aidée des conseils de mon maître de stage et des conversations avec les différents membres de l'équipe pour avoir leur point de vue sur le jeu.

### b.b Tâches

Les tâches de ce projet sont divisées en deux catégories :

- Ce que je pense atteignable durant le stage de 6 mois :

- Le développement d'un ou plusieurs prototypes du jeu vidéo.

- Schématisation complète mais simpliste d'une société humaine (liste des ressources et des entités politiques ainsi que leurs intéractions). Cette représentation n'a pas pour objectif d'être particulièrement précise mais avant tout d'être suffisante pour permettre le développement de prototypes.

- Prise en main du moteur de jeu utilisé (probablement godot engine).

- Implémentation des fonctions permettant de générer le monde du jeu.

- Implémentation des premiers conflits politiques liés aux contradictions sociales, environnementales, etc...

- Avoir au moins un prototype fonctionnel comprenant les mécaniques de bases et limité à l'échelle d'un seul pays/gouvernement.

- Les éléments supplémentaires que j'estime nécessaire pour que le projet serve son objectif :

- Implémentation d'un aspect géopolitique au jeu. Autrement dit, le joueur n'aura plus accès à toutes les ressources du monde automatiquement et devra se les procurer par des opérations économiques, diplomatiques ou militaires. Inversement le joueur pourra se retrouver en position de victime de ces mêmes actions de la part d'autres pays.

- Pouvoir changer la perspective du joueur qui ne serait plus limité à jouer le gouvernement en place mais des camps politiques d'opposition et de jouer un rôle dans leur tentative d'ascension au pouvoir.
- Implémenter des mécanismes économiques différents du mode de production capita-
liste.

— D'autres idées ?

b.c Emploi du temps

Un emploi du temps provisoire serait :

1. Schématisation primaire de la société : 1 mois

2. Prise en main du moteur de jeu : 1 mois

3. Implémentation d'un premier prototype : 2 mois

4. Retours critiques et constructions d'autres prototypes : les 2 mois restants

c Philosophie et objectifs du projet

L'objectif principal de ce projet est de mettre au point un jeu vidéo éducatif sur l'économie, l'environnement et les enjeux sociaux. Comme dit précédemment le jeu se place à une échelle macro-économique, j'ai pris cette décision parce que je pense qu'il est nécessaire de montrer la complexité de nos sociétés et dans l'objectif de montrer que changer une petite partie de la société n'aura pas forcément d'impact, sera difficile voir impossible à cause des autres éléments composants la société.

Le joueur incarne le gouvernement actuellement au pouvoir au sein d'un pays avec comme objectif de ne pas perdre le pouvoir. Cet objectif correspond à une première implémentation du car il permet de fixer un cadre simple. En fonction de l'état de développement du jeu on peut envisager que le joueur continue à jouer après la perte de pouvoir d'un camp politique en jouant le nouveau camp au pouvoir ou un camp politique cherchant à prendre/reprendre le pouvoir.

Le contexte dans lequel se trouve le joueur évoluera selon des limites environnementales indépassables, les différentes oppositions politiques et sociales, etc... Le jeu sera limité dans un premier temps à la gestion d'un unique pays (gouvernement mondial) mais l'objectif serait de s'inscrire dans un cadre avec plusieurs pays ayant des ressources / classes dirigeantes / politiques différentes. Si cet objectif n'est pas atteint, on ne pourra alors pas considérer le jeu comme un simulateur pertinent puisque les contradictions les plus importantes dans le système capitaliste contemporain se trouvent à l'échelle internationale. Ainsi n'étudier que l'échelle nationale (ou celle d'un gouvernement mondial) n'a que peu de sens et limitera très fortement la capacité éducative du jeu.

Le coeur du jeu résidera dans les relations entre les différentes classes sociales (ie. les personnes ayant le même rapport à la production) et les conflits et déséquilibres qui seront engendrés par des intérêts contradictoires entre ces classes. À cela s'ajouteront des limites environnementales indépassables et une prise en compte des interactions avec l'environnement au sein des objectifs politiques des différentes classes.

Même si ce jeu est à but éducatif plus que ludique, il n'en reste pas moins qu'il ne peut pas se suffire à lui (et ce quelle que soit son état de développement). À mon avis il est essentiel que le jeu s'inscrive dans un cadre plus large permettant au joueur de mieux comprendre les enjeux politiques de notre monde contemporain. Pour cela il est nécessaire que le jeu soit lié et invite les joueurs à approfondir leurs connaissances politiques et scientifiques. Une telle chose est certainement dure à inscrire fluidement dans un jeu vidéo mais l'intégration de liens vers des textes scientifiques et de théorie politique peut être une première étape dans la réalisation de cet objectif et pourrait permettre au joueur d'avoir un recul critique sur le jeu.