Pourquoi je crée Squarity ?

Lors d’une enième conférence de coaching en création de startuffe, un quelconque corporate-bullshiste officiel a dit : «start with ‘why’, not with ‘what’ or ‘how’».

Ce n’est pas ce que j’ai fait avec Squarity. J’ai starté with « on-va-d-abord-s-assurer-de-la-faisabilité-technique-de-l-idée », car compiler du python en live dans un navigateur web, c’était pas gagné d’avance. Maintenant que je suis à peu près sûr que ça fonctionne, je peux continuer with « why ».

Vous trouverez dans mon repository de doc le texte officiel détaillant ce why et les spécificités de Squarity par rapport à d’autres moteurs de jeux.

Il y a d’autres raisons, plus intimes, provenant de l’adolescent immature que je suis. Je ne les ais pas mises dans le texte officiel, car ça pourrait dérouter des personnes qui ne connaissent ni moi, ni Squarity.

Mais si vous êtes sur ce blog et que vous ne vous êtes pas encore enfui, il est fort possible que vous me connaissiez déjà un minimum, donc que mes bêtises plus intimes ne vous choquent pas. Ce qui nous amène à :

« Pourquoi je crée Squarity ? » version adolescent immature

Les raisons sont à peu près classées de la moins bizarre à la plus bizarre.

Puzzlescript

Le déclic a été provoqué par PuzzleScript. En découvrant cet outil, je me suis dit que son potentiel était énorme, mais qu’il manquait tous les à-côtés : un espace d’échanges, une doc plus fournie avec des exemples commentés, un système de débug plus élaboré, des tests unitaires, des vraies images pour les sprites, etc.

J’étais parti pour forker/contribuer au projet et apporter progressivement ces à-côtés. Mais je me suis aussi souvenu de cet article de Sam et Max, expliquant que créer des « Domain Specific Language » est souvent une idée à la con, et qu’il vaut mieux créer une API sur un langage existant (au hasard le python). Ce que je suis en train de faire.

Un DSL pour tous les serpents (pas que les pythons)

Anna Anthropy et ZZT

Souvenir de mes années collèges.

Je joue à Jill of the Jungle. Un petit readme publicitaire y est inclus, mentionnant le jeu ZZT et son éditeur de niveaux. C’est du mode texte, ce qui est techniquement cheap, même pour l’époque. Je remise ce souvenir au fond de mon cerveau pour un éventuel rappel ultérieur. Je passe à d’autres choses, principalement : mater les seins de mes camarades de classe.

Il y a deux ans, alors que l’idée de Squarity commençait à germer dans mon esprit, je tombe sur la collection de livres « Boss Fight Books ». L’un d’eux, écrit par Anna Anthropy, a pour sujet ZZT. Je me fait offrir ce livre pour mon anniversaire, dans le but de parfaire ma culture concernant les jeux dotés d’un éditeur de niveaux.

Je découvre Anna, les histoires qu’elle a traversées, son engagement pour la diversité culturelle et la fanzinicité des jeux vidéos, la foisonnance de mondes ZZT que des adolescents déversaient sur les serveurs BBS. Je me sens bizarre en lisant l’histoire de Drako et son « Edible Vomit », je me vois dans le trou qui aurait pu être comblé « if only you had committed more », j’ai une petite larmichette à la dernière page où elle se remémore avoir échoué à récupérer 5 symboles de Venus violets.

J’aimerais avoir le soutien de Anna Anthropy pour Squarity. Je n’ose pas la contacter pour l’instant, car le projet n’en est qu’à ses débuts. Plus tard, peut-être.

J’ai récemment fini « Caves of ZZT » et je m’attaque à « Town ».

Nostalgie de ma renommée Turbo Pascalienne

Au lycée, je créais des petits jeux et des animations en Turbo Pascal. Je vous en ais parlé, et j’ai publié une partie de ces vieux trucs.

Je les mettais sur des disquettes et les distribuais à mes potes. Ils trouvaient ça génial. J’ai donné des cours à certains d’entre eux. J’étais une putain de re-sta. Auprès d’une catégorie très restreinte de lycéens, certes, mais une putain de re-sta quand même.

Il faut donner le plus de moyens possibles aux ados actuels d’expérimenter la démarche de créer des choses en informatique et de les partager. Ce ne sera pas sous forme de disquettes ni de programmes Pascal, mais si ça peut être sous forme de jeux dans Squarity, ça me rendrait très heureux.

Renommée, renommée… Qui es-tu, renommée ?

Augmenter ma capacité à finir mes projets

Comme vous le savez, j’ai un historique créatif assez fourni : jeux, dessins, textes, … Cependant, mon ratio « projets vraiment terminés / projets envisagés » est très peu glorieux. Je ne me fais plus d’illusion, je sais maintenant que j’ai du mal à m’investir dans un projet personnel sur du long terme. Mes plus hauts scores ont été le dessin animé Pru-Pra-Prok et le jeu Blarg, qui ont chacun duré une année (pour un résultat hautement discutable). Ma participation au Magazine 42 a duré plus longtemps, mais je considère ça comme un enchaînement de petits projets, et non pas un seul gros.

Face à mes difficultés à rester motivé sur du long terme, j’ai logiquement décidé de me lancer dans un gros projet de long terme, dont la finalité est de m’aider à créer des petits projets de court terme, à savoir, des jeux dans Squarity.

Comment ça, c’est pas logique ?

L’hôtel Ryugyong : un projet pas fini, mais lumineux.

L’amour, bordel ! L’amour !

Souvenir de mes années lycées.

Je suis amoureux d’une fille. Je passe plusieurs mois à penser à elle sans rien oser faire. Puis je lui écrit une lettre d’amour. Une envolée lyrique classique, mais franchement pas dégueue. Avec le mot « princesse » dedans.

Sauf que je n’ose pas venir lui en parler. Je ne lui montre aucun signe d’intéressement. À tel point qu’elle se demande si ce n’est pas une blague, si ce n’est pas un crétin random qui a écrit cette lettre pour se foutre de ma gueule et/ou de sa gueule à elle.

Il faut que j’en parle à mes potes (ceux mentionnés précédemment, qui me considèrent comme une re-sta), mais même ça, je n’ose pas le faire.

Alors je crée un jeu, sur le même principe qu’Atomix, en 3D iso et avec plusieurs étages. Je place une lettre du prénom de mon amoureuse sur chaque étage, puis je construis un niveau à partir de ça (du level design de dingo !). Je montre ce jeu à mes potes, qui découvrent la vérité.

Quelques jours plus tard, j’envoie l’un des potes révéler à cette fille que ce n’est pas une blague et que je suis vraiment amoureux d’elle. Encore quelques jours plus tard, dans un ultime boost de courage, je vais moi-même lui parler. Comme vous vous en doutez, elle me congédie poliment.

On n’est pas sorti ensemble. Puis j’ai perdu les fichiers du jeu. À moins que je ne les ais consciemment effacés. Je ne sais plus.

Un jeu vidéo n’est qu’une solution parmi d’autres pour révéler un amour, directement à la personne concernée, ou par pote interposé. La seule solution dont j’étais capable à l’époque. J’aimerais que Squarity soit un moyen pour plein de gens d’exprimer plein de choses.

Elle était magnifique comme ça.

Ma dépendance à la création de jeux

J’ai une dépendance légère au jeux vidéos, mais aussi une dépendance à la création. Je suppose que ça provient de mon indécrottable désir d’auto-flattage d’égo, et peut-être aussi d’une certaine envie de pouvoir suprême. La première fois que j’ai compris le concept de la programmation (alors que je ne savais pas programmer), j’ai réalisé que ça pouvait faire de moi un Dieu. Un Dieu d’un monde limité à un écran, mais un Dieu quand même.

Alors j’ai pris tous les outils de création de jeux qui me tombaient sous la main et j’ai fait tout et n’importe quoi avec. J’ai …

  • dessiné des décors de Saphir,
  • fait de l’Ascii Art sur un TO7-70,
  • modélisé un début de château avec 3D Construction Kit,
  • créé un cosmo-shoot et un casse-brique-Metroidvania avec Klik’n Play (les sauvegardes se corrompaient toutes seules, ce logiciel est une arnaque),
  • architecturé des niveaux de Doom (la compilation plantait avec le message « nodes will be inaccurate », DoomCad est une arnaque),
  • organisé des enchainements d’événements improbables dans Incredible Machine,
  • produit une suite complète de niveaux de Logical,
  • bidouillé des maps de Warcraft 2,
  • imaginé un gigantesque jeu dans le style Tiny Skweeks, avec des dizaines d’éléments,
  • level-designé un niveau de Jama-Jama (jeu qui a disparu de l’internet),
  • raconté un début d’aventure épique dans Drod,
  • conceptualisé un langage universel permettant de formaliser des règles de jeu de Match-3,
  • programmé des jeux en Pascal, en Delphi, en C++, en python, en PuzzleScript, en slip, en fer, en enfer,
  • j’en oublie.

Alors voilà. Squarity est l’aboutissement de tous ces trucs, en même temps que le démarrage d’un tas d’autres trucs. Venez, on va s’amuser !

Tout a commencé dans une piaule de cet acabit.

Un jeu Puzzlescript : recherche de diamant

Bloub !

Il y a quelques temps, j’avais créé un petit escape game pour des gens personnels. J’y avais mis diverses énigmes plus ou moins rigolotes et compliquées, dont un jeu PuzzleScript.

Shaïne braïght laïke daïmondze.

Petit rappel : pour commencer à jouer, il faut appuyer sur la touche « X ». C’est pas forcément évident quand on découvre « l’environnement PuzzleScript », qui est un peu rustique il faut bien le dire.

Vous êtes équipé d’un détecteur de diamant ayant un nombre limité de charges. Chaque fois que vous l’utilisez, vous obtenez (ou pas) un indice sur la position finale du diam’s. Je ne vous donne pas plus de détails que ça. À vous de comprendre comment interpréter ces indices !

C’est inspiré du mini-jeu MindSweeper, inclus dans le jeu flash débile intitulé « Anti-Idle: The Game ». Il y a quelques années, je m’étais quelque peu fait chronophager par ce agglomérat bizarre et trollesque. Mais depuis, tout va bien, je me soigne.

Il est fort possible que ce soit le dernier jeu PuzzleScript que je code. Non pas que je boycotte ce site ou que je n’ai plus envie de coder des jeux. Bien au contraire. Mais je suis en train de préparer une chouette surprise, qui a vocation à proposer mieux que PuzzleScript.

Je n’en parle pas plus pour l’instant, car je n’ai pas grand-chose de prêt. J’essaye de vous donner plus de détail très bientôt, si possible avant le prochain Ludum Dare, c’est à dire début octobre.

En attendant, qui dit diamant dit bijoux, qui dit bijoux dit jewels, qui dit jewels dit Bianca Jewelz.

Un jeu en PuzzleScript : Jesus Respawns

Un jour, j’ai eu une conversation avec un gamin (ouais, il m’arrive des trucs bizarres des fois). Il m’a dit : « je suis trop triste pour Jésus, parce qu’il est mort ».

J’aurais pu répondre que suivant sa logique, il aurait également dû être triste pour tous les autres humains officiellement considérés comme « gens bien » et qui sont morts depuis les derniers millénaires, mais j’ai décidé de faire simple. J’ai dit : « c’est pas grave, après il ressuscite. Il est un peu comme Mario Bros. Quand on perd la partie, on peut recommencer tout de suite après ».

D’oeuf-il-en-est-grille, je me suis retrouvé à créer un mini-jeu vidéo mettant en scène Jésus. On y retrouve une bonne partie de ses super-pouvoirs.

Le scénario tient en une seule phrase, mais qui vaut la peine, puisqu’elle comporte un jeu de mot : Jésus doit retrouver ses madeleines.

Ha ha ha ! Les madeleines-gâteaux et Madeleine la copine de Jésus. Jeux de mot ! Jeux de mot !

Vous pouvez y jouer ici (version française) .

Et ici (version anglaise) .

Le jeu de mot n’est pas présent dans le texte en anglais. Not my fault.

Ne vous attendez pas à des énigmes pointues et intéressantes. J’ai créé ce jeu pour proposer au gamin mentionné initialement une approche différente de la religion chrétienne. Parce que, honnêtement, le mec cloué sur sa croix en train de saigner, je trouve ça d’assez mauvais goût. Après on s’étonne que les enfants aient des pensées violentes dans la tête, et on dit : « c’est la faute aux jeux vidéos ». Eh bien non, pas forcément.

Un autre jeu avec Jésus dedans.

J’ai mis le code source sur mon github :  https://github.com/darkrecher/PuzzleSalad .

Vous y trouverez également un petit script en python, permettant de convertir des images en tiles PuzzleScript. Tout à l’arrache, pas documenté, débrouillez-vous ou foutez-vous en.

Jésus et ses potesses

Je vous ais déjà dit que j’aimais bien PuzzleScript ? Oui, je crois. Je vais essayer de m’investir plus dedans, à l’avenir.

Demake de Atomix fait avec PuzzleScript

Fans de mini-jeux de réflexion, bonjour.

atomix_water

Vous avez peut-être déjà découvert PuzzleScript (dans ce blog ou ailleurs). Voici ma première œuvre réalisée avec ce langage. Plus précisément, c’est la deuxième, mais la toute première était un cadeau pour une amie, et reste donc du domaine privé.

Concernant l’idée originale, je ne me suis pas foulé et j’ai repris le principe d’Atomix, un jeu où vous devez déplacer des atomes afin de reconstituer une molécule. La particularité, c’est que lorsqu’un atome est en mouvement, il continue jusqu’à être stoppé par un mur ou un autre atome. (Je suis sûr qu’en mécanique quantique, tout se passe exactement comme ça).

atomix-2

Concernant les niveaux du jeu, je ne me suis pas foulé non plus, et j’ai pompé ceux d’un certain draknek (http:// blog.draknek.org/post/93360531842/if-i-wanted-to-clone-atomix-this-is-where-id).

Ils sont intéressants et épurés de toute casse-couillerie inutile. Merci à lui.

Hyponitrous acid (mais vous le saviez sûrement déjà).

Hyponitrous acid (mais vous le saviez sûrement déjà).

Là où j’ai été obligé de me fouler, c’est pour implémenter le fonctionnement d’Atomix dans PuzzleScript. Le langage est assez souple et bien fichu, mais ne permet pas vraiment de décrire des comportements « globaux » prenant en considération une zone étendue de l’aire de jeu. J’ai donc eu recours à quelques bidouilles hasardeuses pour le processus vérifiant l’égalité entre la molécule-modèle et la disposition des atomes.

D’autres part, il n’y a pas de notion de variables. Pour tester « est-ce que l’atome dans le modèle est égal à l’atome dans l’aire de jeu ? », je n’ai pas trouvé de meilleure solution que de tout décrire verbeusement : « est-ce que l’atome du modèle est un hydrogène et celui de l’aire de jeu un hydrogène ? ou bien est-ce que l’atome du modèle est un carbone et celui de l’aire de jeu un carbone ? etc. ».

Il y a une petite documentation au début du script indiquant les contraintes à respecter pour créer les niveaux, ainsi que quelques commentaires ici et là. Ça mériterait d’être documenté plus en détail, ou pas.

puzlescript_code

Le sus-mentionné draknek a employé kp-atomix (https:// github.com/figlief/kp-atomix) pour publier les niveaux qu’il a créés, ce qui est une aubaine, car ils y sont décrits via un fichier json au format assez facile à comprendre.

Et quitte à me fouler pour coder, je me suis fendu d’un petit programme (en python, évidemment) convertissant les niveaux json de kp-atomix en niveaux de PuzzleScript. Ça aurait certainement pris moins de temps de les convertir à la main, mais ça aurait été tellement moins rigolo.

Ce programme a été honorablement documenté, car il est possible que certains de ses morceaux me resservent par la suite. Tout cela est évidemment dans un repository github, comme le veulent les conventions asociales à la mode en ce moment.

J’aime beaucoup PuzzleScript. Ça regroupe un grand nombre d’idées de mes rêves : des jeux de réflexion à foison, un moyen inhabituel de raconter des histoires, la création d’un langage dédié relativement souple et générique. Je vais voir si je peux faire quelque chose avec tout ça.

Comme vous le savez, les atomes sont liés ensemble par des liaisons de covalence. Voici donc une image de liaison, presque tout aussi idiosyncratique (même si je sais pas ce que ça veut dire).

double_dildo

Puzzlescript et des audits de jeux

Plotrochk à vous, chers gens et gensses.

Ce mois-ci, petit article court. Mon cerveau doit se remettre des 3 énormes articles que j’ai récemment perpétré, concernant mon changeage de crémerie.

Puzzlescript

En partant du blog de randomnine (http: //wootfu.com/) et en passant par divers endroits que j’ai oublié, je suis tombé là-dessus (http: //www.puzzlescript.net/)

C’est absolument génial. C’est un langage de script relativement simple et bien foutu, permettant de créer des jeux à énigmes en 2D carroyée.

Je suis fortement fan de ce genre de jeux : Atomix, Adventures of Lolo, Tiny Skweeks, Pushover, Drod, … Haaaaaa ! Drod ! Tiens ça me rappelle cet article dans lequel je décrivais les principes régissant ces jeux : https://recher.wordpress.com/2009/03/12/regles-a-respecter-pour-les-jeux-a-enigmes/

Je vous laisse fouiner sur internet, il y a plein d’œuvres sympas réalisées avec PuzzleScript, ainsi que des tentatives de recréer des jeux existants, appelées « demakes ». C’est comme un remake, mais au lieu de refaire un jeu, on le défait dans le sens où on décortique son fonctionnement pour ensuite le reformuler en un script de PuzzleScript.

Il existe des demakes de Démineur, de Match-3, de Drod (assez éloigné de la version initiale), de Portal, etc. Je vous laisse les trouver par vous-même.

Le langage de script comporte quelques manques : pas de « variables » ni de gestion des diagonales par exemple. Mais il est plutôt souple et permet déjà plein de choses. Le site officiel est doté d’une documentation assez complète : tutoriels, référence du langage, exemples, etc. Ceux qui veulent le découvrir commenceront par un inévitable Soko-ban.

C’est tout en HTML5. Du coup : Windows, Mac, Linux, Smartphones, MonCulSurLaCommode, ça marche (à peu près) pareil partout.

Le seul souci, c’est que c’est très moche. Tous les éléments du jeu et toutes les cases sont des images de 5 * 5 pixels maximum. Rustique.

J’ai déjà fait un jeu pour une amie (un cadeau personnel que je ne mettrais donc pas ici). Si je suis motivé, j’essaye de demaker Atomix, et peut-être même 4 Elements.

Et maintenant parlons d’autre chose.

Audit de jeux vidéo amateur

Alors voilà. Vous avez créé un petit jeu dans votre coin, et vous avez envie de savoir s’il est cool/intéressant/bankable. Pour cela, vous pouvez faire appel à mes services : j’analyse votre jeu et vous rédige un rapport d’audit décrivant les axes d’améliorations, les points problématiques, la bankabilité, etc.

Nan j’déconne. J’emploie le mot « audit » juste pour faire classe. En vrai je le testerai pendant deux heures grand maximum et je vous dirai à l’arrache ce que j’en pense. Mais ce simple petit service peut déjà vous intéresser.

J’ai peu de légitimité en tant qu’auditeur de jeux. J’en ai créé à peine un et demi et des poussières. J’ai pas de console, pas de smartphone, pas de tablette, pas de compte Steam, pas de jeux AAA et je dois m’y reprendre à 3 fois avant de parvenir à sortir une boule de feu dans Street Fighter (le 2, les suivants je les ais jamais testés).

À défaut de boule de feu...

À défaut de boule de feu…

Mais en tant qu’auditeur amateur, j’ai toute la légitimité pour analyser vos jeux vidéo amateur. Les amateurs ne devraient pas éprouver de honte à se faire aider par d’autres amateurs.

C’est bien évidemment gratuit. La seule condition à respecter est que le résultat de mon analyse soit publié d’une manière ou d’une autre sur internet, avec un lien vers ce blog. Un commentaire ou un message de forum peut tout à fait convenir.

Voici quelques exemples d’audit déjà réalisés (auprès de personnes qui ne me l’ont pas spécialement demandé, mais on va pas s’arrêter sur ces détails) :

J’ai également rédigé quelques tests de jeux (Kingdom Rush, Lugaru, …), que vous arriverez à retrouver, si vous êtes courageux et désœuvré, dans ce blog ou dans les magazines 42. Mais ces tests ne contenaient pas de recommandations personnelles, puisque je ne m’attends pas à ce que les auteurs de ces jeux non-amateurs perdent leur temps à lire mes blablas.

Pour demander un audit, il vous suffit de claquer un commentaire à cet article.

official_audit_seal