CodeCombat

De EduTech Wiki
Aller à la navigation Aller à la recherche

Description rapide du logiciel

Le jeu étant en perpétuel évolution, la version testée en octobre 2014 ne correspond peut-être plus avec les dernières versions de CodeCombat.

Contenu enseigné

CodeCombat est un jeu éducatif qui permet d’apprendre plusieurs langages de programmation de façon ludique. Les langages proposés sont les suivants : Python, JavaScript, CoffeeScript et de façon expérimentale : Clojure, lua et Io. Que ce soit lors d’une campagne solo ou dans une partie multijoueurs, dans chaque niveau le joueur doit taper des lignes de code afin que son personnage (héros) remplisse divers objectifs.

Mécanique de jeu

Ce jeux pourrait être divisé en deux parties. Dans ces deux parties la mécanique de jeu est globalement la même cependant quelques changements subsistent alors je vais expliquer les deux parties. Dans ce jeu il y a également une fonctionnalité multi-joueurs mais celle-ci ne sera pas traitée. Dans le mode multijoueurs, les mécaniques de jeux sont les mêmes sauf les objectifs qui sont différents car on doit affronter des être humains.

Partie 1: La compagne pour les débutants: Au début du jeu on se retrouve dans une carte avec des niveaux (figure 1). La première fois qu'on y joue tous les niveaux sont bloqués sauf le tout premier. Le niveau suivant se débloque toujours en débloquant le niveau inférieur.

[Figure 1: Accueil]

Lorsqu'on clique sur un niveau, représenté par une ellipse rouge, on a peut choisir un personnage ainsi que le langage de programmation (figure 2) pour jouer le niveau. Au départ uniquement deux personnages sont disponibles et possèdent les mêmes caractéristiques de combat (mis à part l'arme utilisée).

[Figure 2: Sélection du personnage et du langage de programmation]

Une fois qu'on a choisit le personnage et le langage de programmation, on peut équiper notre personnages avec différents équipements (figure 3). Chaque objet d'équipement a une utilité et certains permettent de débloquer des nouvelles fonctions pour le langage de programmation choisit. Au départ notre personnage ne possède que de simples bottes. Cependant, comme on peut le voir dans la figure 3, ces bottes nous permettront d'utiliser des fonctions du langage de programmation choisit pour déplacer notre personnage.

[Figure 3: Équipement]

Une fois le niveau de jeu chargé on arrive à une interface qui se décompose en trois parties (figure 4).

[Figure 4: Interface du jeu]

Dans la première partie, on voit notre personnage et l'environnement dans lequel il se trouve. Ce personnage effectuera les instructions qu'on lui écrira. Les objectifs sont écrits en haut à gauche de l'écran. Dans chaque niveau les objectifs sont différents. Sur la figure 4 on peut voir que les objectifs sont d'éviter les pointes et de collecter les gemmes. Dans la deuxième partie on a accès a une barre temporelle, des paramètres audio et d'affichage du jeu. On a ensuite aussi une icone du personnage sélectionné qui nous donne ses statistiques (points de vie, sa coordonnée dans la carte...) ou un conseil. Dans la troisième partie, on a accès à l'éditeur pour programmer les actions de notre personnage. En bas sous "YOUR SKILLS" on a accès aux fonctions de programmation que l'on peut écrire. Si on remarque bien ces fonctions correspondent aux fonctions que nous donnent les bottes à la figure 3 permettant de déplacer notre personnage. L'icone de l'aimant en haut à droite permet de formater le code de façon standard pour qu'il soit plus joli. Le bouton "sort en court" sert à tester notre code en faisant tester nos instructions à notre personnage. La barre temporelle de la partie 2 permet de revenir en arrière ou en avant lors des tests. Si on est sûr du code qu'on a écrit on peut appuyer sur le bouton "Submit" et le jeu passe en mode cinématique où on voit notre personnage effectuer nos instructions.

Si les actions ne sont pas bonnes le personnage se trouvera bloqué et ne pourra pas accomplir les objectifs de la mission. De plus la barre temporelle lui permet de revenir en arrière pour pouvoir modifier le code et le relancer le test. En définitive il est possible de simuler le résultat du code plusieurs fois. Plusieurs feedback permettent à l'utilisateur de voir qu'il a fait des erreurs. Nous avons par exemple des erreurs de syntaxe qui sont détectés et indiquées dans l'éditeur de programmation puis des erreurs dans les commandes qui elles se traduisent par notre personnage qui se retrouve bloqué ou qui meurt. Quand le personnage se retrouve bloqué il nous parle et une bulle apparait pour dire qu'il ne peut pas continuer dans cette direction (figure 7). Le joueur peut donc par essais et erreurs corriger son code jusqu'à ce que celui-ci fasse ce qu'il veut.

[Figure 7: Personnage bloqué]

Une fois la cinématique finie, un message de félicitation apparaît, nous sommes renvoyés à la carte et le prochain niveau est débloqué. En terminant le niveau on gagne les gemmes que l'on y a collecté et de l'expérience. Cette expérience est simplement indicative. Elle indique l'expérience du joueur dans le jeu. En commençant un niveau on a parfois accès à de nouveaux équipements qui nous permettront de faire de nouvelles actions durant le niveau.

Partie 2: Anciennes campagnes: Pour accéder aux anciennes campagnes, il suffit de cliquer sur "Older Campaigns" en bas à droite de l'interface de la carte des niveaux de la campagne pour les débutants (figure 1). On a accès à d'autres niveaux pour apprendre des bases de programmation, pour comprendre des algorithmes, pour jouer en multi joueur et pour tester des niveaux crées par des joueurs. La mécanique du jeu est globalement la même seulement que pour ces anciennes campagnes on incarne cette fois le rôle d'un magicien qui à son tour peut contrôler une ou plusieurs unités, contrairement à la campagne pour débutants, et leur donner des ordres en programmant (figure 5).

[Figure 5: Interface du jeu pour les anciennes campagnes]

Un autre ajout dans ce mode de jeu est le message de félicitation nous dit cette fois les notions que l'on a appris dans le jeu mais également en programmation (figure 6).

[Figure 6: Message de félicitation]

Enfin il faut noter que le principe d'équipement est inexistant dans les anciennes campagnes.

Environnement informatique

CodeCombat se joue directement depuis un navigateur web. Il est tout de même conseillé d'utiliser un version récente d'un navigateur web et si possible un ordinateur pas trop vieux pour que le jeu ne soit pas ralenti. Ce jeu est construit sur plusieurs projets open source et est crée à partir de plusieurs langages de programmation comme le CoffeeScript, Jade, Sass et Markdown. Le jeu est disponnible à l'adresse suivante: http://codecombat.com/

Accès

CodeCombat est gratuit. Deux alternatives sont possibles pour jouer à ce jeu. On peut soit y jouer directement soit y jouer en s'authentifiant. On peut soit créer un compte en fournissant une adresse e-mail soit se connecter directement avec notre compte Facebook, Google ou GitHub. Si on s'authentifie on peut sauvegarder notre avancement dans le jeu ainsi que nos réponses pour chaque niveau et jouer à la partie multi-joueurs.

Principes pédagogiques

Apprentissage actif

Le joueur est actif, c’est à lui d’écrire ses lignes de codes afin que son personnage interagisse avec l’environnement, d’ailleurs le jeu oblige le joueur à taper son code car on ne peut pas directement copier/coller les fonctions. Le joueur a une grande liberté d’action comme il est libre d’écrire les lignes de codes dans l’ordre qu’il veut. Il doit aussi regarder en permanence comment son code agit sur le personnage et donc c’est à lui même de faire des feed-back et de prendre en compte les erreurs de ses actions passées.

Apprentissage cognitif

On a à faire un apprentissage actif sur le plan cognitif. Le joueur doit apprendre à coder des actions de son personnage en prenant en compte l’environnement. Ce qu’apprend le joueur ne se trouve pas au niveau de l’action directe mais au de l’environnement représenté et de l’action qui s’y trouve. La difficulté du jeu augmente au fil des niveaux, au début les niveaux sont faciles et demandent peu d’actions cognitives, ensuite les niveaux lui demandent de faire des associations de représentations cognitives de plus en plus complexes, afin de répondre à une situation de plus en plus complexe elle aussi.

Apprentissage par répétition

Il y a aussi un apprentissage par répétition, chaque nouveau niveau reprend souvent la base des précédents en les complexifiant ce qui permet au joueur de réutiliser des raisonnements cognitifs tout en les faisant évoluer pour les adapter à la nouvelle situation. Les lignes de code sont quasiment toujours les mêmes à travers les niveaux mais le jeu force à nous les faire retaper pour que l’apprentissage se fasse avec la répétition. Le fait aussi de devoir passer le niveau en passant par un processus répété de plusieurs essais et d’erreurs nous permet d’apprendre à composer et mémoriser des suites de lignes de code cohérentes.

Facteurs motivationnels

CodeCombat pousse l’utilisateur a se dépasser pour avancer au niveau cognitif et personnel. Il répond donc à des besoins de l’utilisateur. Pour y arriver le jeu utilise un système de plusieurs niveaux sur une carte de campagne que l’on déverrouille au fil de nos réussites. Une fois une campagne finie, on peut passer à une campagne composée de niveaux plus complexe. Le mode multijoueurs poussant vraiment le principe à l’extrême car il ne s’agit plus de défier l’intelligence du jeu mais d’autres joueurs, c’est qui est encore plus motivant. Le joueur est aussi vraiment libre de déterminer quels actions il va programmer, ce qui lui laisse l’entière réussite lorsqu’il passe un niveau.

Régulations Metacognitives

Ce jeu stimule chez le joueur :

  • La planification et la prévision, en effet, le joueur doit réussir à planifier le parcours de son personnage selon les fonctions proposées et les obstacles présents dans l’environnement afin d’atteindre l’objectif. Il doit aussi prévoir le déplacement des bots ennemis.
  • Le contrôle, où il faut évaluer les conséquences d’une fonction visant à déplacer ou interagir notre héros.

Références

Randy Miller,Qu'est-ce que l'apprentissage actif ?, site.