A propos Mokona

Mokona a commencé à programmer dès l'âge de 3 semaines. Dans sa tête dans un premier temps et pendant quelques années. En 1998, il fait de la programmation de jeu vidéo sa profession. À présent, il parle de lui à la troisième personne dans un résumé biographique.

Au début était le pixel…

… en fait, pas vraiment. Si je devais écrire la genèse du jeu vidéo, je dirais qu’au début était l’électron. Mais comme il y a probablement des centaines d’articles, dossiers et livres spécialisés sur l’histoire des jeux vidéo, je n’écrirai pas cette genèse.

J’aimerais cependant faire un petit voyage dans l’affichage des jeux vidéos, ce premier contact entre le joueur et le jeu. Car il faut bien l’avouer, si quelques expériences vidéoludiques ont voulu faire passer le son avant l’image, ou encore si des armées de commentateurs réclament à cors et à cris du gameplay profond, des IAs avec du répondant ou un scénario bien ficelé, au final, une bonne jaquette et quelques bons screenshot font 90% du travail de séduction.

Ce voyage ne sera pas exhaustif et se reposera essentiellement sur mon expérience. Y sera appliquée un filtre bien involontaire de brouillard dû au temps qui passe. Ce voyage sera aussi un voyage du côté technique.

L’électron, donc.

Il y a encore peu de temps, les écrans de nos ordinateurs étaient composés d’une surface en verre sur laquelle venait s’écraser un faisceau d’électrons. Et c’est ce système qui me fit voir ma première image animée : un oscilloscope. Cet oscilloscope au bout d’un générateur de courant alternatif doit constituer le premier jeu vidéo auquel j’ai pu jouer. En jouant sur le facteur d’échelle, la phase et plusieurs autres boutons auxquels je ne comprenais rien mais ayant un effet évident sur la courbe qui s’affichait, je me suis inventé mon premier jeu/jouet vidéo, sans aucun autre but que la génération d’une image sinusoïdale plutôt régulière, mais mouvante.

Ce principe n’était finalement pas si éloigné de Pong et de ses carrés manipulés par des potentiomètres.

Cependant, cet électron à la base de l’affichage a rapidement été détrôné par une abstraction bien plus simple : le pixel.

Le gros pixel

Afficher, pour un ordinateur et si on laisse de côté les couleurs, consiste à allumer ou éteindre une série de zones formant un quadrillage. Le pixel, c’est ça : la plus petite unité connue par la machine pouvant être allumée ou éteinte. Plus tard, elle pourra gérer son intensité ou sa couleur, mais ne grillons pas les étapes.

Au tout début des années 80, ces pixels sont peu nombreux et ce nombre varie d’une machine à une autre. Comme il faut bien stocker l’état allumé/éteint de ces pixels et que la mémoire est chères, les constructeurs trouvent des astuces pour trouver un bon compromis entre la résolution (le nombre de pixels) et le prix des machines.

Une astuce toute simple est de considérer l’écran comme une matrice encore plus grosses de caractères. Après tout, ces ordinateurs sont surtout là pour gérer la comptabilité ou écrire des lettres. Maintenir la table des caractères affichés n’est pas très coûteux. Un affichage de 64 colonnes par 16 lignes, cela fait 1024 positions ; tout pile 1ko, ce qui est jouable pour une machine pouvant aller jusqu’à 48ko de RAM (TRS-80 Model 3). Mais s’il fallait retenir une table des pixels allumés indépendante, le coût augmenterait. Avec des caractères de 8 par 8 pixels, cela donnerait une résolution de 512 pixels par 128, soit 8ko en noir et blanc.

Alors, pourquoi ne pas avoir des caractères spéciaux qui ne sont pas des chiffres ou des lettres, mais plutôt des arrangements de pixels pour former les différents arrangements possibles ? C’est exactement le principe des caractères semi-graphiques. En affichant les bons, comme du texte, il est possible de former une image.

Galaxy Invasion sur TRS-80

Avec une grille de 2 par 3, cela fait 64 combinaisons. Dans une table de 128 caractères, cela permet des caractères, des chiffres et des caractères semi-graphiques.

Vous pouvez vous amuser avec cette configuration grâce à ce petit programme en ligne d’émulation d’affichage à base de caractères semi-graphique.

Forcément, avec quelques signes graphiques que l’on peut mélanger à des caractères alpha numérique, il faut compter sur le pouvoir d’interprétation du cerveau. Mais ça marche.

Parfois d’ailleurs, les caractères alphanumériques sont suffisants, comme dans ce jeu estampillé Star Trek.

Time Trek sur TRS-80

À suivre !

Jeux programmables

À peine Notch lance-t-il qu’il travaille sur un nouveau titre que la nouvelle fait le tour des sites d’informations sur le jeu vidéo, le tour des forums. Buzz qui commence le 1er Avril pour se transformer en véritable annonce : Notch travaille sur un Elite like.

Des mots qui font rêver. Notch pour les uns, ne pouvant imaginer être déçus par le bac à sable le plus réussi de ces dernières années, Minecraft. Elite pour d’autres, qui se souviennent des heures passées dans les années 80 à explorer l’espace.

Mais ce qui intrigue finalement le plus, c’est ce petit plus : le vaisseau spatial que pilotera le joueur sera doté d’un véritable ordinateur de bord. Un vrai de vrai, qui se programme.

Sur la page officielle du jeu, c’est la ligne qui semble intéresser le plus de monde : Fully working computer system. Des spécifications sont même disponibles pour cet ordinateur qui est la base du scénario du jeu.

Et un peu plus tard, sur un wiki dédié à 0x10c, nous voilà avec toute une communauté autour de cet ordinateur virtuel. Un émulateur, des applications, des guides de programmation.

Je ne vois qu’une explication à cet engouement : programmer, c’est vraiment fun !

Programmer, c’est fun !

Pour peu que 0x10c ait autant de succès que Minecraft, ce sera toute une génération, voire deux ou trois, de programmeurs qui vont ouvrir de grands yeux derrières leurs indispensables lunettes. Quoi ? Notre hobby, métier ou passion qui nous a fait passer si longtemps pour des ours asociaux deviendrait un truc tendance ?

Après que musiciens et graphistes aient déjà rendu visibles nos codes et notre culture, ça va faire beaucoup.

Pourtant, cela a toujours été une évidence pour moi. Programmer est fun. Lorsque l’on en fait son métier, cela peut présenter certains côtés qui le sont moins, mais tout de même, c’est intrinsèquement fun.

Et maintenant, je pourrai le clamer ! Enfin, si la partie programmation de 0x10c se révèle être au centre du jeu et pas juste un accessoire. Nous verrons.

En attendant, allons voir chez les ancêtres si programmer n’a pas été depuis bien longtemps au coeur de certains jeux vidéo.

Odyssey

La nouvelle de 0x10c m’a immédiatement ramené à la première moitié des années 80, vers un jeu qui m’a marqué et qui me revient souvent en mémoire : Robot Odyssey.

Robot Odyssey

Dans Robot Odyssey, le joueur doit sortir d’un labyrinthe posant des énigmes. Gameplay vieux comme le monde du jeu vidéo, thème vieux comme l’humanité, et toujours d’actualité. L’originalité de celui-ci était que l’on ne pouvait traverser certaines pièces que grâce à un robot qu’il fallait préalablement programmer.

Une fois le robot dans la pièce, plus de moyen d’agir sur lui. Soit le programme est bon, soit il ne l’est pas.

Dans Robot Odyssey, les robots ne sont pas programmés au travers d’un langage de programmation, mais à travers des circuits digitaux. Portes logiques, senseurs et acteurs. Cependant, il s’agit bien là d’un jeu de programmation.

Est-ce que Robot Odyssey est fun ? Assurément. Cependant, à l’époque, jouer sur ordinateur n’était pas vraiment l’activité du tout venant et posséder un ordinateur signifiait souvent savoir le programmer et nécessitait parfois de savoir manier le fer à souder.

La descendance

Robot Odyssey a marqué son époque et les suivantes, générant des jeux plus récents reprenant des principes similaires.

MindRover, par exemple reprend le principe et les pousse, y ajoutant aussi une interface en 3D. Ce jeu est bien moins connu que son ancêtre et pourrait montrer qu’en 2000, programmer des robots n’étaient plus aussi amusant. Ou bien, le monde du jeu vidéo ayant changé, le studio à la base de jeu n’avait tout simplement pas la visibilité ou l’impact nécessaire.

La contrainte comme élément de Gameplay

Dans le game design, il existe un élément classique pour rendre le jeu intéressant et le diversifier : jouer sur les contraintes.

Dans les jeux de programmation, les contraintes peuvent être multiples : éléments de programmation disponibles, difficulté à maîtriser une machine exotique, ressources limitées en capacité du processeur ou de la mémoire.

On retrouve ces contraintes dans les jeux de combats de robots ou de tanks, dans lesquels des programmes contrôlant des robots entrent en compétition, souvent pour rester le seul survivant (RoboCode), parfois pour réussir des missions (COLOBOT) comme sortir d’un labyrinthe, récupérer certains objets,… ou simuler des processus d’évolution d’organismes digitaux (Core War).

Colobot

La limite est floue avec les concours de programmation, comme le GoogleAIChallenge où des programmeurs du monde entier se mesurent à travers des programmes d’intelligence artificiel participant à un jeu.

Au delà du jeu vidéo

Les jeux de combats de robots informatisés sont directement tirés des concours de robotique, réels, mais ces jeux ont aussi inspiré un système non digital : le jeu de plateau.

Programmer un système se trouve en effet dans certains jeux de plateau comme mécanisme de jeu. RoboRally est directement inspiré de ces jeux : les joueurs ont à disposition un nombre de cartes dépendant de l’état du robot et leur permettant de bouger en avant, en arrière et de tourner sur lui-même. Le but du jeu est de rejoindre certains points sur une carte découpée en cases en abîmant au passage les autres robots et en évitant de tomber dans des trous.

Si les robots ne vous tentent pas, Asteroyds reprend le principe sur une carte à hexagones pour un jeu un peu bac à sable où les joueurs dirigent leur vaisseau dans un temps très limité à partir d’un petit tableau de bord de programmation.

Si pour ces deux jeux, le mécanisme de programmation est très proche du thème, il est aussi trouvable dans des jeux différents. Dans Wings Of War, les joueurs manipulent des avions en pleine première ou seconde guerre mondiale. Les mouvements sont choisis par les joueurs à partir de cartes qui sont ensuite dévoilées et résolues.

De manière générale, la programmation dans les jeux de plateau est utilisée pour simuler la simultanéités des actions des joueurs et l’inertie de ce qui est contrôlé. On est donc loin d’une programmation de logiciel, avec ses conditions.

Programmer pour jouer

Programmer est donc un moyen de jouer et il existe un public pour cela. Et on n’est pas dans le Uno ici, ce genre de jeu nécessite de la réflexion, de l’analyse voire de l’inspiration.

Une belle mise en abîme pourrait être illustrée par ce site qui recense la liste des jeux dont la programmation est le but : à la vue du nombre de ces jeux, on pourrait se demander si programmer des jeux de programmation n’est en soi-même pas le plus amusant.

Programmer pour jouer, et jouer à programmer, c’est peut-être aussi une méthode d’aborder la programmation avec un but ludique, en abordant la nécessaire réflexion à mettre en place, les problèmes à résoudre, la logique à tenir.

Et ces jeux comme bon nombre d’autres jeux, amènent à des activités de recherche et partage, de discussion et de défis.

Peut-être qu’à la sortie de 0x10C, s’il tient ses promesses d’Elite-like, vous serez attiré par tel ou tel aspect du jeu. J’ai hâte, moi, de savoir ce que va donner la composante programmation.

Et en attendant, j’ai bien envie de jouer à Robot Odyssey.