Créer une fiction interactive avec Quest
Ressources
- http://textadventures.co.uk/quest : le site de Quest
- http://textadventures.co.uk/quest#video : Tutoriel vidéo par l’auteur (en anglais)
- http://docs.textadventures.co.uk/quest/tutorial : Tutoriel sous forme textuelle (en anglais)
- http://docs.textadventures.co.uk/quest : Documentation de Quest
Pour aller plus loin
- Nous avons ajouté le verbe « chercher » à la paroi et au sol. Modifiez le jeu pour que le joueur puisse entrer « chercher » comme commande dans n’importe quelle pièce. A chaque fois il lui sera répondu « Vous ne trouvez rien ». (Astuce : désactivé le mode simple).
- En testant le jeu, vous remarquerez que vous pouvez utiliser le trombone avec la serrure, même si vous n’avez pas le trombone dans votre inventaire (sans avoir fait « prendre trombone » au préalable). Modifiez le jeu pour que l’ouverture de la serrure ne fonctionne que si le joueur a le trombone dans son inventaire.
Publier son jeu
Si vous souhaitez faire jouer à votre jeu des amis, des connaissances, ou d’autres participants à ce MOOC, il suffit de le publier. Pour ce faire :
- en vous assurant d’être connecté, sous l’onglet « Create » dans le bandeau supérieur de la page, accédez à la liste de vos jeux.
- Pour chaque jeu, un bouton « Publish » est disponible : choisissez le jeu que vous souhaitez partager et cliquez sur « Publish ».
- Dans la page qui s’ouvre, il vous suffit de cliquer sur le bouton « Publish » en bas de page, puis sur « View your game listing »
- Le lien à partager est l’adresse de cette page
Vous utiliserez cette procédure pour partager votre jeu à des fins d’évaluation de cette séquence jeu vidéo.
Intérêts pédagogiques
Concevoir une fiction interactive demande de mobiliser de nombreuses compétences : créativité, que ce soit dans la trame générale de l’histoire ou bien dans le détail des énigmes, aisance littéraire, dans la rédaction de toutes les descriptions ou messages, empathie, attention à l’autre, afin de pouvoir imaginer tout ce qu’un joueur pourra désirer faire, et lui laisser le plus de liberté pour le faire, et enfin logique, afin de s’assurer que, quoi que le joueur fasse, l’histoire se déroulera sans incohérence et aura une fin.
Liens avec l’algorithmique séquentielle
On retrouve le recours à certaines de ces qualités quand on doit concevoir un algorithme et le programmer. Le déroulement d’une fiction interactive est en effet à rapprocher de celui d’un programme séquentiel : on peut le décrire par une série d’actions, un parcours, qui comprend des embranchements (résolutions d’expressions conditionnelles), des retours en arrière (boucles, itérations), des pièces, objets, personnages qui sont autant de variables du programme. Aventures textuelles et programmes séquentiels peuvent ainsi se modéliser par un graphe. On retrouve d’ailleurs cette structure de manière explicite dans l’outil Twine qui se focalise sur le déroulé d’une histoire.
Liens avec la programmation objet
Une aventure textuelle se base sur des pièces, objets et personnages qui sont des exemples pratiques de la notion de classes en programmation objet. Ces classes ont des attributs, dont certains sont communs (nom, description, ce qui définit une classe mère) et d’autres spécifiques (un objet peut être ramassé, un personnage peut avoir des points de santé). Des méthodes peuvent leur être associées (ce qu’on appelle les scripts dans Quest). Le fait de lier attributs et méthodes à une classe permet l’encapsulation. Enfin, la création d’une pièce/objet/personnage s’appelle l’instanciation en programmation objet. Travailler à l’écriture d’une aventure textuelle avec un outil comme Quest, impose de manipuler concrètement ces notions.
Initiation à la programmation
Dans Quest, les scripts apparaissent assez vite, qui plus est sous forme d’éléments graphiques. Cette présentation partage les avantages de la programmation par blocs (comme avec Scratch ou Snap!), dont notamment l’affranchissement de la syntaxe, imposée par la structure en blocs. Mais Quest va plus loin puisque le programmeur avancé peut écrire du code sous forme de texte, avec une syntaxe qui reprend des éléments des langages de programmation objet. Enfin, l’élève qui aura passé cette étape du passage au texte, pourra trouver encore plus de liberté créative avec un outil comme Inform.
Prise en compte de l’utilisateur
On conçoit une fiction interactive pour que quelqu’un d’autre que nous y joue. C’est une évidence mais elle est à rapprocher du fait qu’un informaticien professionnel va concevoir des programmes que d’autres que lui utiliseront. Par ailleurs, il est important dans un jeu que le joueur ressente du plaisir à jouer. Un jeu qui réduit les possibilités de l’utilisateur et le force dans ses choix ne sera pas plaisant et ne sera pas joué. Au contraire, plus un jeu sera à même de réagir à des actions incongrues, décalées, inutiles pour le jeu mais tellement amusantes à tenter, plus il plaira aux joueurs qui y trouveront aussi un espace de liberté. Lorsqu’on conçoit un logiciel, il est de même essentiel de faire en sorte que l’utilisateur garde le contrôle et que le programme s’adapte à sa manière de penser, d’envisager la tâche qu’il souhaite réaliser.
Peu ou pas de connaissance a priori
Quand on pense à un jeu aujourd’hui, on pense souvent à un jeu graphique. Nous verrons dans les prochains cours que des interfaces conviviales et faciles à prendre en main existent pour en créer. Mais le programmeur novice peut rencontrer des difficultés, parfois importantes, dans la création des graphiques (sprites, décors) ou dans la gestion du temps et débogage des interactions. Tester et valider une interface graphique est en effet extrêmement compliqué et reste un sujet de recherche. L’écriture d’aventures textuelles permet de s’affranchir de ces difficultés, peut attirer des élèves plus portés vers la littérature que les jeux vidéos, et offre des moyens plus aisés de tester son logiciel (il suffit de déplacer le joueur dans la bonne case et lui donner les bons objets). Les élèves peuvent y trouver une plus grande liberté dans l’expression de leur créativité car tout le monde sait écrire (pas forcément bien, mais c’est un autre sujet), et il n’est pas besoin de maîtriser un autre logiciel pour se lancer dans l’écriture d’une aventure textuelle. Il est aussi parfois surprenant de voir que les élèves, pourtant habitués à des jeux extrêmement sophistiqués, peuvent prendre beaucoup de plaisir à faire découvrir leur jeu textuel aux autres.
Aller plus loin avec Quest
Le tutoriel vidéo ne vous donne qu’une idée des possibilités offertes par Quest, mais cet outil vous permet d’en faire plus, et même aller jusqu’à de l’écriture de code en texte. Nous vous présentons ici quelques fonctionnalités un peu plus avancées de Quest. Pour plus de détails et de plaisir à créer des jeu, nous vous conseillons la documentation du logiciel, en commençant par le tutoriel complet.
Créer un personnage
Interagir avec des personnages donne plus de vie au jeu et permet aussi d’augmenter la difficulté du jeu en leur faisant effectuer des actions gênantes (déplacer et cacher un objet par exemple). Un personnage est un objet de type particulier. Après avoir créé un objet, il suffit de lui donner pour type « (Male, Female) Character » dans l’onglet « Setup » pour qu’il devienne un personnage. Si vous souhaitez offrir la possibilité de parler avec ce personnage, il vous faudra aller dans l’objet « game », onglet « Features » et cocher « Ask/Tell: players can ask or tell characters about selected topics ».
Il est aussi possible de développer un style de jeu avec combats, mais cela demande des compétences très avancées (voir l’utilisation des delegates).
Définir de nouveaux verbes d’action
Nous avons vu dans l’exemple du tutoriel que l’action « chercher » n’était pas disponible par défaut. Nous l’avons définie pour deux objets particuliers, mais il pourrait être plus intéressant de définir ce verbe partout, soit sous sa forme simple (« chercher » pour chercher dans la pièce), soit sous une forme avec un attribut (« chercher <objet> » pour chercher un objet).
Ceci ne peut se faire que si le mode simple est désactivé (sous le bouton « Settings » en haut à droite). Apparaît alors, sous l’item « game », un item « »Commands ». Vous pouvez en créer une sous la forme simple « chercher », et une autre de la forme « chercher #object# » qui sera invoquée sur un objet. Vous remarquerez alors que les commandes « chercher » que vous aviez définies sur les objets sol et paroi ne fonctionnent plus : il vous faut gérer ces cas particuliers directement au niveau de la commande générale au moyen d’un « Switch ».
Objets plus complexes
L’onglet « Features » des objets montrent les différents types d’objets qui peuvent être définis, en particulier :
-
-
- certains objets peuvent être actionnés (Switchable). Ils acceptent alors deux états : allumés ou éteints. Quand cette case est cochée, un nouvel onglet apparaît pour gérer ces états.
- d’autres objets sont comestibles (Edible). Ils peuvent alors être mangés. Là encore un onglet apparaît pour gérer cette fonctionnalité. Après avoir été mangé, un message apparaît (que vous pouvez éditer) et l’objet disparaît. Si vous activez l’option « Health » (dans « game », onglet « Features »), vous aurez la possibilité d’indiquer le nombre de points de vie que l’objet vous apporte.
- enfin, des objets peuvent être des conteneurs (Containers). Une page spéciale leur est dédiée dans la documentation.
-
Travail en groupe (ActiveLit)ActiveLit est une solution proposée par le créateur de Quest qui permet de disposer d’un espace privé pour un groupe, notamment d’élèves, afin qu’ils partagent leurs jeux dans le cercle restreint du groupe, sans que ces jeux ne soient visibles par une tierce personne.
Mini-projet avec Quest
Créer avec Quest une aventure textuelle comportant au minimum les éléments suivants :
- 5 pièces
- 5 objets
- 1 personnage
- 3 scripts
- une énigme !
Afin d’avoir un retour de vos pairs sur votre projet, et éventuellement valider cette séquence, vous devez publier cette aventure sur le site de TextAdventures. Pour ce faire, il vous suffit de suivre la procédure décrite dans ce cours qui vous permettra de créer un lien. Ouvrez ensuite un nouveau sujet de discussion dans le forum ci-dessous, et recopiez-y ce lien en lui adjoignant un petit message d’introduction à votre jeu.