Un an de Squarity

Il y a un an et quelques jours, je mettais http://squarity.fr en ligne et je l’annonçais dans cet article. C’est l’occasion de résumer le chemin parcouru.

  • Je me suis lancé dans ce projet sans être sûr qu’il était techniquement faisable.
  • J’ai pesté contre la lenteur de Brython et son incapacité à faire remonter les messages d’erreur python.
  • Je suis passé à Pyodide.
  • Je me suis lamenté sur mon incapacité à écrire du CSS, pour finir par coder certaines parties du responsive design en javascript.
  • J’ai écrit des tutoriels.
  • J’ai écrit de la doc, que j’ai ensuite rendu obsolète.
  • J’ai répondu « oui » à une grande partie des suggestions d’améliorations, en précisant qu’elles étaient dans la road-map.
  • J’ai promis que je publierai cette road-map.
  • Je publie ici la première étape de la road-map, à savoir : « rédiger la road-map ».

Ensuite, j’ai créé un serveur Discord, et quelques gentilles personnes s’y sont greffées.

  • Ensemble, nous avons créé des jeux, joué à ces jeux, et eu des idées de jeux sans les concrétiser.
  • Nous avons participé à des Ludum Dare en ayant l’espoir que ça ferait connaître Squarity.
  • Nous avons bidouillé du javascript dans du python lui-même dans du javascript.
  • Nous avons fait de la 3D isométrique avec de la 2D.
  • Nous avons pallié l’inexistence de l’IDE de Squarity avec un serveur web local.
  • Nous avons discuté, twitché, live-codé, peer-programmé, Clash-of-Codé et parlé tous les jeudis soirs avec un·e nain·e.
  • Nous nous sommes bien amusé et ce n’est pas fini !

Quelques remerciements particuliers

Merci aux personnes suivantes, dont la plupart sont sur Discord :

  • 10K, qui a créé un Pacman quelques jours à peine après la mise en ligne de Squarity
  • Loowood, très souvent présent pendant les lives, toujours prêt pour donner un petit message d’encouragement, qui a créé le Bomberman Chelou ainsi que le fameux « framework-hack-3D ».
  • ℕarkoa, qui apparaît également dans ce blog et qui m’a soutenu pendant le dernier Ludum Dare.
  • lilithabaddon, qui a commencé à créer le jeu du Labyrinthe, toujours là aussi pendant les lives, et qui s’est inscrit trois fois pour gonfler à bloc le nombre de gens sur Discord. Sans ça, nous serions beaucoup moins de monde que 16 personnes !
  • Tacheul, de PixelJoint, qui a dessiné le superbe tileset du jeu H2O.
  • Mes enfants, qui testent mes jeux et font des vidéos avec moi, et qui parviennent à prendre un air réellement interessé quand je leur parle de mes avancées et mes élucubrations.
  • Ma chérie, qui écoute aussi mes élucubrations et qui établit actuellement un « état de l’art des jeux de Match-3 », je suis sûr que ça me servira à quelque chose.

Et bien sûr, merci à toutes les autres personnes qui s’intéressent à Squarity, qui passent dire un petit coucou, ou pas car elles n’ont pas envie (et vous avez bien le droit), qui, peut-être, créent des jeux dans leurs coins, qui ont des idées de malade et des projets complètement fous mais qui n’osent pas en parler. Être ici est déjà le début de quelque chose. On verra pour la suite !

Oui d’ailleurs, pour la suite ?

Ça fait quelques mois qu’il n’y a pas eu d’évolutions sur Squarity. J’ai passé les derniers mois à coder le jeu « Game of No-Life », ce qui n’était pas une stratégie très maligne. J’aurais pu utiliser ce temps pour améliorer le site, le rendre plus facile d’utilisation, ajouter des fonctionnalités dans le moteur et mettre la doc à jour. Mais à la réflexion, je n’aurais pas pu agir d’une autre manière.

C’est un projet que j’avance durant mon temps libre. Il est difficile de rester motivé sur le long terme pour ça. Vous-même, vous savez. Je n’en suis pas à mon premier projet perso, nombre d’entre eux ont survécu à peine quelques semaines avant de se retrouver jetés aux ordures tel une portée de petits chatons non prévue.

Mais j’aime inventer des jeux et j’aime coder en python. Le fait d’utiliser mon propre outil pour faire ce que j’aime m’offre un petit (ou un grand) moment de détente, qui me redonne de la motivation pour continuer.

Alors voilà. On va avancer très lentement. Il y aura sûrement d’autres pauses comme celle-ci dans le développement de Squarity. Des fonctionnalités que j’ai promises dès le départ arriveront peut-être dans 10 ans. Vous continuerez de galérez encore longtemps avec une API très pauvre et un site web mal fichu. Mais cette erratique manière de progresser nous donne, à moi et à vous, une garantie que je n’abandonnerais pas ce projet, tant que je suis capable de coder.

Le chemin vers Squarity est pavé de bonnes intentions carrées

Le Game of No-Life

Il est enfin terminé ! Il s’agit d’un jeu de stratégie minimaliste en temps réel, qui se joue à deux, avec seulement deux boutons par personne.

C’est aussi un petit test de performance, car il y en a pour :

  • 2656 lignes de code (4965 en comptant les commentaires).
  • Des actions sur l’ensemble de l’aire de jeu, effectuées automatiquement toutes les 200 millisecondes.
  • Une pseudo-interface intégrée dans le jeu
  • Une zone de 60 par 38 tiles au total.

Voici une petite vidéo de démonstration, dans laquelle je joue avec mon fils :

C’est un peu long, on raconte plein de bêtises. Mais vous remarquerez que j’ai pris soin de la décomposer en chapitres.

Si vous n’avez pas une demi-heure de temps de vie à gaspiller, vous pouvez juste regarder les chapitres « Comment jouer », « Présentation de Squarity » et « Dénouement final ». Ça ne vous coûtera que 17 minutes.

Et sinon, pour jouer, c’est directement dans votre navigateur en cliquant ici. Vous n’avez plus qu’à trouver un humain consentant à portée de main et à jouer ensemble !

Ludum Dare

C’est le week-end prochain. Comme d’habitude, je ferais quelque chose, mais sans y passer trop de temps. Il faut que j’arrête de coder des jeux dans Squarity et que je m’occupe de Squarity lui-même. En l’occurrence, rédiger cette fameuse road-map.

En plus ça risque d’être le bordel au niveau de mon travail salarié. Ce sera une fin de sprint et faut qu’on ait un truc-machin de finalisé pour notre super projet secret dont je ne peux vous dire que le nom : « POILS_PUBIENS ». Mais je ne vais pas vous embêter avec ces détails à la con de ma vie.

Les poils pubiens de Jessie Minxxx sont-ils aussi teints en bleu ?

L’article du mois prochain ne parlera pas de Squarity, faut bien varier un peu. En revanche, je ne peux pas vous garantir qu’il sera intéressant.

THCON 2021 – ZZT Post Challengem

Le week-end du 12-13 juin a eu lieu le CTF (Capture The Flag) de la Toulouse Hacking Convention. J’y étais en tant que participant à essayer de résoudre les challenges, et en tant que contributeur qui en a créé. Normalement, on n’est pas censé faire les deux. Chut, faut pas le dire.

Ma participation

Tout se passait à distance, dans nos chez-nous respectifs. Niveau ambiance et mise en situation, on est loin du NorthSec (qui met tout de même la barre assez haute, ce que je vous avais narré l’année dernière).

Les challenges de la THCON sont simplement listés sur un site, créé avec l’outil générique CTFd. Je ne me suis donc pas trop senti transporté dans un autre monde, mais je me suis quand même beaucoup amusé.

J’ai réussi trois challenges, dans trois catégories différentes : programmation, app-script, cryptographie. C’est peu, mais ça me suffit amplement. Je suis un peu déçu d’avoir passé plusieurs heures sur un challenge d’intro tout simple (one-time pad). Il fallait faire des XOR, alors que je tentais des additions/soustractions dans tous les sens. Duboulet !!

Ou-exclusif, le shérif de l’espace. J’ai déjà fait cette blague y’a 10 ans. Je m’en lasse pas.

Ma contribution

Ayant un ancien Collègue dans l’orga de la THCON, j’en ai profité pour lui proposer un challenge de mon crû. Après de longs et passionnants échanges ainsi que moults tests, nous nous sommes mis d’accord pour le splitter en deux, du fait de son volume qui s’est révélé assez conséquent.

Je vous propose ici la version non-splittée, que je préfère. Faut s’accrocher pour le vaincre, mais vous n’avez pas les contraintes de temps de la THCON.

Il s’agit d’un unique fichier à télécharger : THCON21.ZZT.

Voici la description, comportant des indices pour vous aider à trouver quoi faire avec :

TUR-ROX

A journey in Turing-approxi-complete video games.

« ZZT » ? What is that strange file extension ? It may be something old. If it’s old, there is a MUSEUM about it. Whatever it is, I suppose it has nothing to do with Catherine ZETA-Jones.

Comme je suis gentil, je vous pré-mâche le début. Il s’agit d’une map du jeu vidéo « ZZT ». Pour l’installer, vous devez suivre cette doc (L’outil « KevEdit » n’est pas indispensable).

Si vous voulez juste y jouer pour voir un peu à quoi ça ressemble, il y a une version en ligne dans le « Museum Of ZZT » : https://museumofzzt.com/file/c/THCON21.ZIP
Rien à installer ni à copier. Vous cliquez sur le lien puis vous cliquez sur « Play online » dans le menu en haut.

Le but de ce jeu est de trouver un « flag », c’est à dire un code secret, ayant le format THCon21{-------------}. Les tirets correspondent à des caractères alphanumériques.

C’est du hacking. Ça veut dire que si vous vous contentez de jouer, vous ne trouverez pas grand-chose. Il faut décortiquer le jeu, chercher comment il fonctionne, le bidouiller, ajouter des éléments de débuggage, extraire des informations, le passer à la moulinette, etc.

Bon triturage de cerveau !

Quite unrelated pic, screenshot d’un outil bien utile pour les CTFs.

Des signes d’intérêt de la part des THConistes

J’ai eu quelques bons retours sur le Discord de la THCon, aussi bien pendant la compétition que après. Apparemment, le format est assez original. Quelques personnes ont rédigé des write-ups (ça veut dire « des solutions »), et y ont inséré un avis très positif.

Mon ego est fortement flatté de voir que des gens se sont interessés à ma création, au point de rédiger des textes à ce sujet. Je suis tout gargarisé !

Voici les liens vers lesdits write-ups. ATTENTION, Ne cliquez pas dessus si vous voulez trouver le flag par vous-même. Ce sont des énormes spoilers !!!

Vous vous en doutez, le véritable but de cette contribution n’était pas le challenge en lui-même, mais la petite publicité pour Squarity embarquée dedans. Vous la trouverez facilement. A-t-elle eu un impact ? Aucun nouvel adepte n’est venu se rallier au Discord de Squarity. C’est pas grave.

Des signes de non-intérêt de la part des ZZTistes

Les personnes qui continuent d’utiliser ZZT pour créer des jeux et autres œuvres se retrouvent dans le « Museum », ainsi que sur (encore) un serveur Discord. Vous vous en doutez, le véritable but était de faire découvrir Squarity à cette communauté. Les deux moteurs de jeux diffèrent sur beaucoup de points, mais ont un but commun : favoriser la création vidéoludique amatrice.

Mais vous ne pouvez pas débarquer en gueulant : « Regardez mon projeeeeeet ! Il est gèèèniaaaâââl ! Venez vous féoder à ma cause ! Travaillez pour moi et faites-moi de la pub en échange de ma reconnaissance faciale éternelle gratuite ! ».

Lorsqu’on veut rallier à soi-même les membres d’une communauté existante, il vaut mieux commencer par se rallier soi-même à cette communauté.

Alors je préparais le terrain. Je m’étais inscrit sur le Discord de ZZT il y a de ça plusieurs mois. Je me suis présenté, j’ai lu plein de messages sans trop intervenir. Par certains aspects, ce Discord est un « safe space ». Certaines personnes font part de leur problèmes personnels et sont inconditionnellement soutenues par d’autres personnes. C’est cohérent avec le fait que les premiers créateurtrices de jeux ZZT étaient des ados pas toujours bien dans leur peau. The « children of the glow ». Mais un safe space, ça ne s’approche pas comme ça.

Cherchez vous-même d’où vient l’expression « children of the glow »

Pendant que je créais le challenge, je parlais un peu à tous ces gens, leur disais que je trouvais ZZT cool et chouettement nostalgique, et que je me sentais bien à coder mon truc. Je mettais des petits smileys. Je testais un mini-jeu et donnais un mini-avis. Lorsque je leur parlais de ma future création, un début d’intérêt semblait se manifester. La mythique Anna Anthropy m’adressa même un ou deux messages.

Mon challenge contient des easter eggs qui durent paraître étrange aux THCONistes, et qui étaient spécialement destinés aux ZZTistes :

  • Un personnage qui raconte une histoire bizarre et totalement azimutée, le genre de propos que pourrait sortir un ado réfugié dans son petit monde. Je vous laisse le lire par vous-même, il est facile à trouver, dans le premier board.
  • Ce personnage dit aussi « Everything is familiar and everything is different ». Une phrase que l’on retrouve plusieurs fois dans le livre écrit par Anna Anthropy.
  • Le board principal contient le texte « Lawless Invisible », une référence à Kudzu, un jeu connu par bien des ZZTistes. Dans ce jeu vous rencontrez (ou pas) des personnes désignées comme « Unlawful Invisible ». L’expression est restée.
  • Le challenge contient un programme Puzzlescript permettant d’extraire un mini-jeu, dans lequel vous dirigez une tête blanche sur fond bleu, comme le « Char-1 » de ZZT, et vous devez récupérer des « Venus Symbol » rose.
Coïncidence ? Je crois pas…

À part le dernier, tous ces easter egg sont très accessibles. Il suffit de jouer au jeu. Même si vous ne résolvez pas le challenge et que vous ne comprenez rien à ce qu’il faut faire, vous tomberez dessus.

Deux jours après la THCON, je viens sur le Discord de ZZT et j’apporte mon petit jeu en cadeau. Une personne m’informe qu’un type est venu durant le week-end pour demander des indices sur le challenge. J’ai vu leur conversation, elle était tout à fait courtoise mais n’a duré que quelques messages.

Et c’est tout.

Alors voilà. Je ne m’attendais pas à un débarquement massif de ZZTistes sur mon Discord de Squarity, ni à ce que toutes ces personnes s’arrachent les cheveux sur le challenge pour tenter de le résoudre à tout prix, ni à ce que mon esprit créatif soit porté aux nues et que Tim Sweeney vienne en personne me remettre la Croix Nationale du Venus Symbol d’Honneur. Mais je m’attendais à avoir au moins une petite réaction de la part d’au moins une personne qui aurait testé le jeu juste 2 minutes.

Mon cadeau n’était pas suffisant. Tant pis. Je reviendrais plus tard si j’en ai d’autres. Pour l’instant, je laisse tomber la communauté ZZT et je me concentre sur Squarity. Il y a déjà quelques personnes qui me sont féodées (même si ça veut rien dire), je dois continuer de leur apporter régulièrement des nouveautés car je ne veux pas les décevoir.

Voilà un cadeau !

C’était quand même chouette de créer ce challenge

J’ai passé un certain temps à le réaliser, à galérer avec l’éditeur de niveau de ZZT et son ergonomie discutable des années 90, à dessiner les boards, à étudier le langage ZZT-OOP, à élaborer les énigmes, à écrire les scripts de chacun des petits objets programmables, à intégrer des gros tas de texte à l’aide de bouts de scripts python, etc.

Je me suis senti bien. Une fois de plus, ma nostalgie de création adolescente est revenue. Une nuit, il était 2 heures du matin, j’écrivais pour la 5ème fois la ligne de code « :lblMulti » , la musique de Worakls passait dans mon casque audio. C’est pas ce que j’écoute d’habitude, mais là ça collait avec ce retour en adolescence. J’étais bien. Libre. Je pouvais sentir les bulles de photons telluriques glisser le long de mes neurones.

Est-ce que c’est ma crise de la quarantaine ? Est-ce que ZZT est un retour aux sources pour moi ? Ce serait d’autant plus drôle que ce n’est pas une de mes sources. Je ne connaissais pas ZZT lorsque j’étais adolescent.

Je vais me remettre tranquillement à Squarity. Mais je proposerais également ce challenge au site root-me.org. Je ne sais pas du tout si ce sera accepté. Il y a des tas de raisons que ça ne le soit pas : la présence d’une pub pour un projet personnel, le fait que ce challenge ait déjà été utilisé, que des write-ups circulent, etc. On verra bien.

Si ça passe dans root-me, il est fort possible que je me lance dans un autre challenge du même type pour la prochaine THCON. Spoiler alert, ce sera peut-être avec cet outil.

Et puisqu’on parlait de Venus Symbol, voici Venus :

Le serveur Discord de Squarity

Joyeuses fêtes. Comme d’hab’, le moment de Noël-Nouvel an est l’occasion d’avancer mes projets, because vacances, et c’est bien cool.

J’ai créé un Discord pour Squarity. C’est ici : https://discord.gg/D5SYnk8u3j .

Je m’en servirais pour publier les annonces de mise à jour. Il y a aussi divers espaces pour montrer les jeux que vous faites, poser des questions techniques, ou tout simplement parler de n’importe quoi.

C’est un début.

Si vous avez déjà un compte Discord, ce serait super sympa de venir, même si vous n’avez rien à raconter. Juste pour montrer qu’il y a des gens qui s’intéressent à ce projet.

J’ai également créé un compte sur un serveur mastodon, histoire d’avoir une bonne conscience auprès des libristes :
https://mstdn.io/@recher

J’annoncerai les mêmes choses sur le discord et sur mon compte mastodon. Vous pouvez vous raccrocher à un seul des deux, celui que vous préférez.

Hypothétiquement, il y aura un jour un vrai forum et des vrais comptes où on pourra enregistrer ses jeux, mais ça c’est pour une date indéterminée.

Un peu de couleurs pour finir l’année, avec Romekia Brown.