Incoming transmission

Knod Box 0.2

Divulgâchage : Et si on produisait des énigmes jouables hors lignes ?

Je crois que ce que j'aime le plus dans l'informatique, c'est la programmation. Je dis rarement non lorsqu'il faut installer une nouvelle machine et j'avoue que je prend mon pied lorsque je configure un réseau mais... la programmation c'est autre chose... je le ferais bien pro bono si on n'avait pas besoin d'argent pour vivre.

On y retrouve ce côté démiurge commun à toute l'informatique. Car finalement nous ne faisons tous que créer des petits mondes virtuels lorsque nous installons des services ou les interconnectons mais... La programmation, c'est autre chose... on n'est pas en train d'instancier l'univers conçu par un autre dieu, on fabrique le nôtre !

Ces derniers temps, je m'étais éloigné de la programmation. Mes missions n'avaient pas besoin que je code quoi que ce soit. Et au bout d'un moment, ça m'a manqué de coder quelque chose. N'importe quoi. Je voulais juste profiter de cette sensation particulière lorsque je suis dans ma bulle de codeur...

Défis de programmation

Sauf que je ne trouvais rien d'intéressant à coder...

J'ai bien quelques scripts que j'utilise en expertise et que je pourrais nettoyer ou améliorer mais ils ne sont pas intéressant à développer. J'ai aussi quelques idées d'algorithmes sympas1, mais je n'ai pas de cas d'utilisation de ces algorithmes alors une fois la preuve de concept développée, je n'ai plus eu la motivation d'y retourner et ils traînent dans un coin2.

Alors je me suis tourné vers les plateformes de défis de programmation en me disant que chaque défi serait un prétexte pour coder quelque chose. Il y en a plein et pour tous les goûts. Globalement, on peut les regrouper en deux familles :

  1. Les plateformes tout compris. Elles fournissent un environnement web où on peut écrire du code et se chargent de tous les détails techniques comme la compilation, l'interprétation, la validation des résultats3. J'ai pas mal traîné sur Coding Game à une époque mais je me sens restreint et enfermé dans leur interface web.
  1. Les plateformes d'énigmes. Elles fournissent un énoncé, d'éventuels fichiers annexes et nous laissent coder comme on veut tant qu'on fourni la réponse dans leur formulaire web. J'étais sur Newbie Contest à une époque et j'ai récemment terminé les 256 énoncés du Défi Turing mais j'ai eu un arrière goût amer d'avoir dû créer un compte pour jouer.

Alors je comprend l'idée de ces inscriptions... Permettre un hall of fame où les joueurs peuvent voir (et comparer) leurs classements et leurs réussites. Permettre à ceux qui ont résolu un défi de partager entre eux. Conditionner l'accès à un défi à ceux qui ont résolu le défi précédent. Mais même en sachant ça, dès que je vois qu'il faut s'inscrire pour jouer, je ferme l'onglet et je passe à autre chose.

Du coup, mis à part des exercices, pas toujours corrigés, qu'on trouve dans les cours d'algorithmique ou de programmation (en livres papier ou en PDF lorsque les enseignants diffusent leurs TD/TP), je n'ai rien trouvé qu'on puisse jouer hors ligne.

L'autre problème que j'ai rencontré avec ces plateformes, c'est la publication de write up ou de soluces. Ça dépend surtout de la communauté de joueurs mais parfois, certains ont besoin de démontrer leur réussite en dehors de la plateforme de défi. Ils publient alors la réponse, le code ou des explications pour montrer à tout le monde qu'ils ont résolu le défi.

J'avoue que parfois des explications sont bien pratiques. Quand l'énoncé à une ambiguïté4 ou un problème5 les explications permettent de débloquer. Mais les listes de réponses et les write up vont trop loin je trouve : ça casse le plaisir de jouer.

D'un autre côté, difficile de leur en vouloir. Par leur exclusivité sur le hall of fame, ces plateformes capturent leurs joueurs et forment une sorte de prison autour d'eux. C'est normal qu'ils cherchent à en sortir... en publiant leurs réponses.

Les Knod Box

Ça faisait quelques années que je réfléchissais à une solution pour résoudre ces problèmes. Comment jouer hors ligne et comment prouver qu'on a résolu une énigme sans publier la réponse... J'avais imaginé des idées qui marchaient, codé quelques prototypes mais les solutions ne me satisfaisaient pas.

Finalement, je crois avoir trouvé une idée qui pourrait marcher... Selenith a testé la version 0.1. J'ai pu corriger quelques erreurs par-ci par-là et améliorer la jouabilité.

Je vous soumet donc la version 0.2. J'espère que vous l'apprécierez ; la voici.

La Trahison des PNG

Cette image contient tout ce qu'il faut pour jouer. Sauvegardez-la sur votre machine et vous pouvez commencer à jouer. Vous saurez lorsque vous avez résolu une énigme. Et vous pourrez nous le prouver (et nous pourrons vérifier cette preuve).

Je préfère ne pas expliquer comment ça marche pour l'instant. D'un côté parce que vous aurez plus de plaisir à le découvrir par vous-même. De l'autre parce que j'aimerais avoir vos impressions sur cette première version.

N'hésitez surtout pas à nous écrire après y avoir joué. Vous pouvez aussi en discuter sur la liste de diffusion.

Edit 20 juin 22h43. Deux erreurs ont été corrigées dans la knod box. L'une sur la vérification des badges, l'autre sur le contenu d'une des énigmes (une page de l'histoire manquait). Si vous avez téléchargé une version précédente, utilisez la nouvelle.