J’fais des trucs

J’l’avais pas encore dit sur ce blog, mais j’ai terminé une gif pour la roadmap de Squarity. Elle est pas encore sur le site, mais là voici. C’est celle qui correspond à la catégorie « IDE – Environnement de développement ».

Notez le jeu de mot « Cow Starica ».

Et sinon, comme chaque année depuis les deux années dernières, je contribue à créer un challenge de hacking pour la THCON. Ce sera un TUR-ROX, bien évidemment. Et cette année, j’ai choisi l’un de mes jeux préférés (même si j’ai jamais trop pris le temps d’y jouer) : DROD !!!

Je ne peux bien évidemment rien vous révéler. Juste un petit screenshot. Paf.

La jolie fille du mois, c’est Amanda Faye !

Voilà, ça fait deux articles de suite à l’arrache, mais c’est pas parce que je crée rien. C’est juste que je crée des trucs ailleurs que dans ce blog. J’espère que vous m’en voudrez pas trop.

Hoy hoy !!

La road-map de Squarity est là !

Article à l’arrache, qui est un copié-collé du message que j’ai mis sur le Discord de Squarity. Mais j’ai le droit, vu que j’ai réussi à sortir cette fameuse road-map.

Allez ici : http://squarity.fr/ et faites un Ctrl-F5. En haut à gauche, à côté des liens vers les repository github, se trouve le lien vers la roadmap. Il vous mène à une page pleine de petits carrés colorés, chacun représentant une fonctionnalité prévue (pour une date indéterminée). Cliquez sur les carrés pour avoir des détails.

Pour les personnes voulant lire tous ces détails, de manière plus simple et linéaire, allez ici : https://github.com/darkrecher/squarity-doc/blob/master/road_map.md .

Certains carrés sont censés afficher une gif animé de « vision » : un hypothétique screenshot montrant des fonctionnalités spécifiques. Pour l’instant, aucune de ces gifs n’est prête. Comme quoi, elle est pas si finie que ça, cette roadmap. J’y travaille.

Cette mise à jour tombe à point nommé pour fêter les 2 ans de Squarity ! Et ça mérite bien …

Une petite rétrospective

Tout d’abord, la vraie date d’anniversaire est le 17 septembre. On n’est plus à ça près. J’essayerais de me recaler sur le 17 l’année prochaine.

Cette année, je n’ai pas foutu grand-chose : juste quelques jeux et cette belle road-map.

Il est souvent difficile de se dégager du temps libre pour des projets perso. À cause du travail salarié, du quotidien à quotidieniser, du corps qui fatigue et qui veut tout le temps dormir, etc.

De plus, j’ai dépensé beaucoup de ce temps libre dans un autre projet : la découverte des NFT et des jeux Play-to-Earn, en particulier avec la crypto-monnaie « WAX ».

Je n’ai pas pris beaucoup de risques, mais je ne suis pas sûr qu’on puisse considérer que j’ai gagné de l’argent. J’ai démarré avec environ 200 WAX. J’en ai maintenant 250 + plein de petits NFTs dont la valeur totale est actuellement estimée à 150 WAX. Je m’en suis plutôt bien sorti. Sauf que quand j’ai acheté mes 200 WAX, le cours était à 60 centimes d’euro, et il est maintenant à 10 centimes. Oups…

C’est pas grave du tout, je n’ai pas investi plus que ce que je pouvais me permettre de perdre. En revanche, j’ai perdu énormément de temps à analyser des jeux, surveiller des places de marché, cliquer toutes les 4 heures sur un tamagotchi-panda pour l’envoyer en aventure, etc. C’était amusant, mais je dois diminuer le temps et l’énergie que je consacre à cette activité. Les jeux actuels en play-to-earn ne valent vraiment pas grand-chose en ce qui concerne le plaisir de jeu et le divertissement.

Remerciements

Je remercie les mêmes personnes que l’année dernière, pour leurs encouragements et leurs passages réguliers sur le serveur Discord. Ça me fait très plaisir et ça m’aide à continuer, alors merci !

Je remercie également Hundraw , qui m’a énormément aidé à écrire le CSS de la page de roadmap. Merci merci !

Dans un futur (espéré) proche

Voici ce que j’ai prévu :

  • Dessiner ces fameuses gif animées,
  • Réaliser quelques tâches du Trello de Squarity, histoire de le nettoyer un peu,
  • Démarrer la tâche de road-map « Améliorer le point d’entrée »,
  • Faire une vraie API avec des vraies structures de données,
  • Ce sera déjà pas mal !

Voilà. On va continuer d’avancer comme ça, de manière bancale et anarchique, et surtout de manière très lente. Mais nous ne nous arrêterons jamais !

Et pour finir, voici des ronds

Miss Pamelia, sur tik-tok. Si elle vous plaît, je vous invite à télécharger assez vite ses vidéos (il y a des tonnes de downloader très simple à utiliser). Régulièrement, je trouve des belles femmes sur tik-tok, dont le compte se trouve mystérieusement fermé au bout de quelques semaines, juste parce qu’elles ont laissé dépasser un fragment de nichon. C’est scandaleux. En attendant, faites vos sauvegardes.

Bises.

Et paf les stats + Ludum Dare

Il s’est passé un truc le 29 mars sur mon blog. Impossible de dire d’où ça vient, mais il s’est passé un truc. Admirez ci-dessous les statistiques des visites.

D’après les graduations de l’axe horizontal, ça n’a pas l’air de s’être passé le 29. Mais je vous confirme que si. Les graduations ne sont pas en face des histogrammes, c’est mal foutu. Comment peut-on afficher un graphe de manière aussi pourrie ? Bon, osef.

Dans les débuts de ce blog, je faisais attention aux stats. Mon article phare (les Chansons Pipi-Caca de Notre Enfance) ont fait monter les vues quotidiennes à 50, j’en étais très heureux. Puis c’est progressivement retombé à des valeurs plus humbles, autour de 20, et j’ai fini par me désinteresser des stats parce que ça ne redécollait pas. De toutes façons ce ne sont pas les vues qui m’intéressent, mais les commentaires. Cela dit, le nombre de commentaires ne décolle pas non plus.

Et donc, ce 29 mars, 194 vues de 21 personnes uniques. Est-ce que j’ai mes 20 personnes habituelles, qui ne consultent qu’un seul article chacune, plus une 21ème qui a consulté 174 articles ? Ou bien est-ce que chaque personne a consulté 9 articles et un peu moins d’un quart d’article ? Aucune idée. En tout cas il y a eu zéro commentaire.

Si vous étiez là le 29 mars, serait-il possible que vous reveniez pour mettre un tout petit commentaire, expliquant comment vous avez atterri ici ? En particulier si vous avez lu 174 articles. Merci d’avance et gros bisous.

Mangeons des stats.

Ma contribution au Ludum Dare 50

Le thème de cette édition était « Delay the Inevitable »

Mon jeu s’appelle Cat Fragmentator, il utilise Squarity, bien entendu.

C’est l’histoire d’une personne quelconque. Elle télécharge en continu des images de chats et finira inévitablement par remplir son disque dur. Vous êtes le USS-Fragmentor, un processus dans le disque ayant pour tâche de fragmenter les images afin d’optimiser l’espace. Déplacez-vous avec les flèches et utilisez la touche ‘1’ pour tirer votre laser découpeur.

Les images qui tombent vous éliminent, il faut les éviter. Les images déjà tombées ne font que vous bloquer.

Lorsque vous mourez ou lorsque le disque dur est plein (c’est inévitable !), le score s’affiche dans le log. Appuyez sur le bouton ‘2’ pour recommencer une partie.

Si vous avez un compte sur le Ludum, prenez le temps de noter le jeu et de lâcher un p’tit comm’. À moins que vous ne préfériez tester 174 jeux sans rien commenter.

Je ne ferais pas d’article post-creationem, car je n’ai rien de tonitruant à dire. J’ai appliqué la même méthode que les fois d’avant : avoir une idée puis réaliser cette idée, en essayant d’être le moins à l’arrache possible.

Je vous laisse, je suis actuellement dans la période « tester les jeux des autres pour avoir mon propre jeu testé ». Il faut aussi que je termine ce que j’ai à dire au sujet de Eye of the Beholder et All-Seeing Eye. Hey, lecteurtrice, tu réalises que ça te fera deux articles de mon blog le même mois ? Ça faisait longtemps que c’était pas arrivé. Comme quoi, 194 vues en une journée, ça motive.

Il est 3 heures du matin, je relirais ce texte plus tard.

Et sinon, quoi d’autres ?

Il y a quelques temps, je vous présentais un site qui permettait de mater les images d’Instagram sans avoir de compte, parce que c’est relou. Il ne marche plus. Ce n’est pas grave, d’autres ont spawné. Le stagram-crawler du moment, c’est gramhir.com.

Enjoy the image of this beautiful girl, elle s’appelle Renally Gabrielly, et elle est mannequin grande taille.

Une cheat-sheet de Gems of War

Ma chérie est fanne du jeu Gems of War.

Wesh t’as vu lecteurtrice, comment j’ai écrit le mot « fan » au féminin ? Tellement trop je suis woke-compliant.

Gems of what ?

Il s’agit d’un Match-3 « Freemium ». Ça veut dire que vous pouvez dépenser votre argent pour des bonus, si vous êtes un pigeon. L’idée étant de profiter d’un jeu garantissant à priori un minimum de qualité, puisqu’il y a des gens payés pour le développer, sans que vous ayez besoin de payer vous-même puisque des pigeons le font pour vous.

J’aime bien le Freemium, j’aime bien les jeux de Match-3, ma chérie aime bien aussi, et j’aime bien ma chérie.

Le principe de Gems of War est assez simple : deux équipes s’affrontent. Vous matchez des gemmes pour récupérer du mana et charger vos personnages, qui peuvent ensuite lancer leur sort. Les sorts infligent des dégâts, modifient l’aire de jeu ou ajoutent des statuts. C’est une sorte de Elements of Arkandia en beaucoup plus élaboré.

Il existe beaucoup de statuts, certains positifs que vous donnez à vos personnages (barrière, bénédiction, rage, …), d’autres négatifs que vous infligez aux autres (poison, malédiction, gel, …). Ce n’est pas toujours évident de se souvenir de tous leurs effets ni de leur représentation visuelle dans le jeu.

Le halo violet sur le dragon de gauche signifie qu’il est enchanté. La flamme au-dessus du « 27 », sur la bestiole de droite indique qu’elle est en train de cramer. Il ne vous reste plus qu’à savoir ce que ça implique.

Alors j’ai fait une grande image regroupant ces statuts. J’y ai ajouté deux autres petites infos :

  • des motifs de match-4 remarquables, permettant de jouer plusieurs fois de suite,
  • l’ordre des éléments dans le mini-jeu Treasure Hunt (qui est une sorte de NaturalChimie en plus simple).

Je vais faire imprimer cette image en poster et je l’offrirais en cadeau à ma chérie. Classe !

La voici, si vous aussi vous voulez la mettre sur un poster, un mug, une descente de lit, un tatouage, …

Cliquez dessus pour la voir en grand.

C’est fait avec Paint.Net, que j’utilise parfois pour dessiner quelques sprites à l’arrache.

Cette œuvre étant assez conséquente, ça m’a donné l’occasion de découvrir quelques fonctions de ce logiciel que je ne connaissais pas. J’arrive maintenant à produire des effets visuels pas trop dégueux par rapport au temps que ça me prend (comprendre : ça me prend deux minutes et c’est tout juste acceptablement regardable).

En tout cas, on ne me fera pas utiliser Photoshop. Ça coûte une téra-blinde pécuniaire + une téra-blinde temporelle (le temps que vous devez investir pour apprendre à vous servir de l’outil).

Paint.Net utilise un format de fichier spécifique : le .pdn. À ma connaissance, c’est juste une suite d’image .png superposées en layers. Mais c’est pratique, ça permet d’organiser et d’éditer séparément les différents éléments de votre rendu final.

Comme je suis gentil, je vous donne les .pdn intermédiaires que j’ai créés. Vous pouvez en reprendre des morceaux, les décortiquer, les imprimer pour les mâchouiller, bref en faire ce que vous voulez. Il y en a pour quelques méga-octets, j’ai donc été obligé de balancer le tout dans un répertoire de mon fucking Google Drive.

Et Squarity alors ?

J’essaie d’avancer la road-map, mais j’ai du mal à trouver du temps pour ça, comme d’hab’. En plus, là il faut que je crée encore un autre jeu pour l’anniversaire d’un pote, et j’en suis à peine à la recherche d’idées.

Il est marié, il a un fils et une fille. J’aimerais bien faire quelque chose qui implique ces 4 personnes. Je m’étais dit, peut-être une sorte de Lost Viking, où on dirige alternativement les 4 personnages, chacun ayant une capacité spéciale. Ou sinon, rien à voir : un tetris avec 4 types de blocs différents (un par personne). Lorsqu’on crée un carré de 2×2 contenant ces 4 types, il disparaît. Est-ce que ça ferait un jeu jouable ?

Qu’en pensez-vous ? Auriez-vous une autre idée bien meilleure que celles que je viens d’énoncer ?

Pour vous aider à réfléchir à tout ça, je vous met une image de Margaret Gem(s of War).

Tchô !

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.

Skweek Vapor-Project : un peu plus d’infos

Comme promis, voici le second article sur mon projet de jeu de réflexion inspiré de Tiny Skweeks. Encore merci à Nark pour son commentaire, sans qui cela n’eut été possible.

Réécriture des descriptions

Je reprends les dessins du premier article et je transcris les notes manuscritées à l’arrache vers du vrai texte lisible. J’en profite pour corriger les fautes et ajouter des majuscules là où il aurait fallu en mettre dès le départ. (Pourquoi je me suis fait chier à écrire ces descrips en anglais, alors que je ne me suis pas fait chier à mettre les majuscules ? Mystère…)

Niveau 1

Le texte tout en haut explique rapidement ce que fait le bouton « push me ». Il a 4 positions différentes, chacune d’elle allume ou éteint les lance-flammes et fait en même temps tourner le mur rotatif.

A skweek (badly drawn). Moves like in the game « Tiny Skweeks ».

The yellow [one] can throw flames in any direction, which melts the ice, but this is not useful in that level.

The green [one] can throw a hook in any direction (like in « furries »). If the hook is fixed on a wall, the skweek can cross the holes between him and this wall. If the hook is fixed on an ice block, [the tiny drags] the ice block to him.

He takes the ice block.

An ice block. Skweeks can push it. [It] can’t stop in the middle of its way. [It] must bump in a wall or a skweek or whatever. When an ice block bumps in another ice block, the first is stopped, and the second starts moving in the same direction.

 

This squishes a skweek when he comes in it. If an ice block goes in it, the ice block is not squished, and [the squisher is now] considered as a wall.

 

This drives the skweeks and ice blocks in the direction shown.

 

 

This stops the skweeks and ice blocks when they walk on it. But they can move or be pushed just after, in any direction.


An electric field. Skweeks die when try cross it. Ice blocks are not affected.

 

 

A hole. Ice blocks pass across it, and skweeks fall in it. When a skweek fall in the hole, another skweek can pass across it, and green ones can cross them with the hook. But all this is not useful in that level.

 

A button. The door opens when an ice block or a skweek goes in it. Door closes if button is released.

 

 

A wooden wall. The yellow [one] can burn it.

The fruits (banana and apple) are just bonuses.

 

The super-rainbow-ball. The thing to get to finish the level.

Mon avis spatio-temporel

Il est « spatio-temporel », car je m’auto-donne un avis à propos de quelque chose que j’ai moi-même fait, mais avec plusieurs années de décalage.

Le bouton avec les 4 positions est un mécanisme trop compliqué. Les petits jeux-vidéos-puzzle de ce genre doivent être uniquement constitués d’éléments simples. La complexité et la difficulté de résolution doit provenir de l’agencement de ces éléments.

Les boutons « push me » que j’ai disséminés dans les différents niveaux permettent à la personne qui joue de déclencher directement les actions correspondantes. C’est une idée stupide, car les tinies ne sont plus les seuls à agir sur leur environnement. Ces boutons impliquent l’existence d’une crétinerie d’entité omnipotente pouvant foutre le bordel en appuyant n’importe quand et n’importe comment sur des crétins de boutons placés ici et là par une autre crétinerie d’entité omnipotente (possiblement la même). Ça n’aide pas à s’immerger dans le jeu ni à se mettre à la place des personnages.

Si réalise ce projet de jeu, je ne mettrais aucun « push me ». Il faudra donc que je retravaille tous les niveaux que j’ai déjà imaginés. On n’est plus à ça près.

Niveaux 2a et 2b

The red one can punch and destroy some walls, but not ice blocks. But this is not useful here and no blocks nor walls can be destroyed here.

A wall full of spikes. Skweek dies when they go in. But ice blocks fill the hole and skweek can then pass through it.

 

This changes the direction of skweeks and ice blocks that [arrives on it]. The button connected to it changes the [rotation sense].

 

This authorizes only the yellow one to pass through, not the green one, nor the others. But the ice blocks can pass, [and the green one can shoot his hook through it].

Mon avis spatio-temporel

Deux niveaux plutôt corrects, assez simple à résoudre, qui pourraient être placés un peu après le début du jeu, lorsque les mécanismes de chaque tinies sont déjà connus et que l’on peut commencer à proposer des petits challenges.

L’élément qui ne laisse passer que les tinies jaunes est super simple (on peut même dire « atomique »). Il est indispensable. Mais ce rayon jaune-rouge qui sort de nul part est visuellement pourri et pas du tout explicite. Je n’ai pas de meilleure idée pour l’instant.

Je l’ai déjà dit : le pouvoir du tiny rouge est merdique. J’essaye de régler cette erreur dans la suite de cet article.

Niveau 3

La note « only yellow passes » écrite en bas sert juste à indiquer qu’il faut rajouter un objet ne laissant passer que le tiny jaune. Je suppose que le niveau devient beaucoup trop facile si le rouge peut récupérer la rainbow-ball. Je dois avouer que je n’ai pas encore fait l’effort de retrouver la solution.

A door, activated by buttons. If the door closes while there is a skweek on it, it is squished.

 

 

A wooden wall, the yellow [one] can burn it.

 

A crackled wall, the red one can destroy it.

 

 

A turning panel. It has an arrow on one face, and nothing on the other one. It turns when activated by a button.

 

This button turns the panel and closes the door next to the super-rainbow-ball.

 

The « push me » that is on the left operates the 4 doors on the left, like this :


+------+
| □ □□ |
|  □   | <-\
+------+   |
   |       |
   V       |
+------+   |
| □□ □ |   |
|   □  |   |
+------+   |
   |       |
   V       |
+------+   |
| □□□  |   |
|    □ |   |
+------+   |
   |       |
   V       |
+------+   |
|  □□□ |   |
| □    | --/
+------+

None can pass from right to left.

This button also opens the door of the rainbow-ball, if it is not opened.

The « push me » on the right operates the 1st, 2nd and 4th door on the right, like this :

+------+
|  □.□ |
| □ .  | <-\
+------+   |
   |       |
   V       |
+------+   |
|  □.  |   |
| □ .□ |   |
+------+   |
   |       |
   V       |
+------+   |
| □ .□ |   |
|  □.  |   |
+------+   |
   |       |
   V       |
+------+   |
| □□.  |   |
|   .□ | --/
+------+

The last « push me » on the left operates only the 3rd door, just opening and closing it.

Mon avis spatio-temporel

Ce niveau est une catastrophe.

Des push-me partout, réalisant des actions bien trop nombreuses et bien trop compliquées. À jeter dans les oubliettes de la honte sans sommation.

Voici une description très résumée de ma méthode de level design : je me donne une astuce de départ qui sera plus ou moins difficile à trouver par la personne qui joue, et j’essaye de noyer cette astuce avec des petits détails et des astuces annexes. Au fur et à mesure que je dispose les éléments, je vérifie qu’il n’y a pas une solution plus facile qui passerait outre l’astuce de départ. Ces vérifications imposent souvent d’ajouter des éléments supplémentaires de « bloquage de solution facile ». Parfois, durant ce processus, d’autres idées me viennent et me permettent d’affiner l’astuce de départ.

Dans ce niveau, mon astuce de départ était que les enchaînements de 4 portes peuvent être très facilement traversés, mais dans un seul sens. Pour réussir le niveau, il faut trouver une méthode, moins évidente, pour.les traverser dans l’autre sens.

C’est pas clair ce que j’explique, et de toutes façons, ce niveau est parti en eau de boudin de manière effroyable. Je n’ai pas encore essayé de retrouver sa solution, mais il est fort possible que ce soit n’importe quoi.

Niveau 4

Faudrait que le bleu soit obligé de laisser un bloc avant de se téléporter, sinon le jaune ne peut pas se téléporter.

The blue skweek can create ice blocks in a square next to him, and of course, he can push them after the creation.

The three [wall] buttons opens/closes the door connected to it by the blue wire.

The button on (1), when it is pressed, closes the door that is just below him. When it is released, the door is re-opened.

The button on (3), when pressed, turns on the flamer connected to it. It is not turned off when released.

La note au milieu du niveau indique « invert these 2 buttons ».

On the tile marked (2) is a stop sign.

  

The two stars [are] teleporters. They work in only one sense : from the red to the white.

 

This authorizes only the blue one to go through.

 

Mon avis spatio-temporel

Je comprends pas bien la remarque que j’ai écrite en haut de la feuille. Ça me reviendrait peut-être si j’essayais de retrouver la solution.

Les lance-flammes sont une idée intéressante, car c’est un élément simple : il détruit les tinies et les blocs de glace qui passent dessus. Mais visuellement, on a un problème, qui rejoint le problème précédent. La flamme ressemble énormément au stupide rayon jaune-rouge qui ne laisse passer que les tinies jaunes. Faudrait vraiment re-réfléchir aux représentations de ces éléments.

C’est très étrange d’avoir passé du temps à élaborer ce niveau et de s’être assuré qu’il n’y a pas de solution évidente, pour finalement décider à l’arrache d’inverser 2 boutons. Ça laisse quelques doutes sur la qualité des vérifications sus-mentionnées.

Et comme d’hab’ : trop d’élément compliqués. Moins que dans le niveau 3 maudit, mais trop quand même.

Niveau 5

Séparer les boutons « press/release » et « press »

Idée : tout se résout si deux [tinies] bleus prennent chacun une énergie, mais il est au départ bien plus pratique de donner les deux à un seul (ou le contraire).

Dans plein de niveaux il y a des fils et des boutons cassés. On ne peut jamais rien en faire, sauf une seul fois à la fin.

Mon avis spatio-temporel

L’idée des énergies réparties entre les tinies est un exemple d’astuce pour démarrer la création d’un niveau.

Petit rappel : au début j’avais décidé que les tinies bleus pouvaient créer une infinité de blocs de glace, puis je me suis dit que ce serait overkill, et qu’ils auraient besoin de points d’énergie, récupérables en buvant de l’eau.

Par contre, le truc avec les fils et boutons cassés, je ne me souviens plus du tout ce que je voulais dire par là. On n’est plus à ça près.

Mon avis global sur tout ce bazar

L’idée initiale de ce projet de jeu continue de me sembler intéressante. Les personnages ne peuvent être contrôlés que partiellement, on les déplace mais on ne peut pas les arrêter où on veut. Cette idée provient du jeu original Tiny Skweek, qui n’a peut-être pas fait un carton, mais qui s’est réellement vendu et a rencontré son public. Elle est également exploitée dans un autre jeu : Atomix.

Par contre les niveaux que je vous présente ici, ainsi que la plupart des éléments que j’ai imaginés sont nuls et inutilisables en l’état. J’ai presque honte de vous montrer tout ça.

Comme je vous l’ai dit, ça date d’il y a plus de 15 ans. C’était une étape nécessaire pour ensuite imaginer Squarity et pour avoir un entrainement initial au level design. J’estime mes capacités actuelles de level design à « pas trop dégueulasse ».

Le niveau supplémentaire

Je vous avais aussi promis ça, hop !

Les tinies sont en bas à gauche, un rouge et un jaune (qui n’est pas colorié car j’avais pas de crayon jaune à ce moment là). Le jaune peut faire fondre le bloc de glace, comme d’habitude.

Le bidule au milieu à gauche est la rainbow-ball. Au milieu se trouve un bloc de glace. Le truc vert au milieu à droite est un fruit, supposément une pomme, mais mal dessinée.

Pas de stupide push-me impliquant une stupide entité omnipotente. l’unique bouton du niveau est une « pressure plate » (en haut). Lorsqu’un tiny ou un bloc de glace arrive dessus, la porte connectée par le fil rouge se referme. Elle ne peut pas se réouvrir. En résumé : n’appuyez pas sur la pressure plate, sinon c’est foutu.

Mon avis pas spatio-temporel

J’ai décidé de tester ce que donnerait le pouvoir du tiny rouge mentionné dans mon précédent article : lorsque le tiny est sur la même ligne ou la même colonne qu’un fruit, il se dirige automatiquement vers lui, y compris durant un déplacement.

Si il y a un obstacle entre le fruit et le tiny (par exemple un bloc de glace), le pouvoir ne s’applique pas et le tiny ne change pas de direction.

L’utilisation de ce pouvoir constitue l’astuce principale de ce niveau. Tout le reste autour, c’est de la broderie. Je vous laisse trouver la solution.

Je n’ai pas pris le temps de déterminer tous les cas particuliers de ce nouveau pouvoir du tiny rouge. Que se passe-t-il s’il y a un élément « stop » ou une flèche ou un trou, entre le tiny rouge et le fruit ? Est-ce que ce pouvoir s’applique lorsque le chemin pour aller jusqu’au fruit passe par un téléporteur ? Autant de questions que je n’ai pas réglées.

Les brouillons qui me restent

Tout en vrac. De toutes façons j’ai oublié le fonctionnement de ces niveaux, et même si ils étaient finis.

Un soutien (à mon petit niveau) pour ExoHydraX, une jolie jeune femme qui s’est fait bannir de Twitch, sans raison spécifique, comme d’habitude. Réseau sociaux dictatoriaux de merde (auquel je me soumets pourtant avec le sourire).

Et pour finir une superbe maquette de l’interface. (C’est dégueu et tout pensé à l’arrache).

Lâchez vos comm’ d’encouragement

Les différents succès que j’avais promis peuvent toujours être débloqués par des commentaires, dans cet article ou dans l’article initial. N’hésitez pas !!

Ludum Dare 48 post-codem : Léon le python

Le nom complet de cette compétition de création de jeux vidéo est « Ludum Dare 48 », car elle se déroule durant 48 heures. Il y a donc eu le « Ludum Dare 48 numéro 1 », le numéro 2, etc.

Nous sommes arrivés au « Ludum Dare 48 numéro 48 ». Quelque chose de spécial avait été promis pour l’occasion, mais rien de précis n’avait été annoncé. Le jour J du week-end W, je n’ai rien vu de particulier. On s’en fout.

Ça date de plusieurs mois, certaines impressions et sentiments que j’ai eu sur le moment se sont évaporés. Je vais faire au mieux pour vous raconter tout ça.

Le thème était « Deeper and Deeper ». J’ai créé, en utilisant Squarity, un mélange de Snake et de Match-3, intelligemment intitulé « Snake Match ».

Comment ça s’est passé pour moi ?

Beaucoup mieux qu’au numéro 47. Dans les premières versions de Squarity, les messages d’erreurs python ne s’affichaient nul part. Une faute de syntaxe ? Une variable mal nommée ? Fallait se démerder tout seul. J’avais galéré comme un galérien et je flippais à chaque ajout d’une nouvelle ligne de code. Je suis beaucoup plus serein maintenant.

Très heureux d’avoir réussi à ne pas passer l’intégralité de mon week-end à créer le jeu. J’ai pris le temps de dormir à peu près comme il faut, de m’occuper un peu de mes enfants, de faire des trucs dans la maison, etc. Et surtout, j’ai fait tester le jeu auxdits enfants au fur et à mesure de son développement. C’est le plus important pour moi. Il faut montrer, donner et expliquer les étapes intermédiaires de création d’une œuvre (jeu vidéo ou autre). Ça incite et encourage d’autres personnes à créer leurs œuvres à elles.

Les sprites ont été dessinés à l’arrache et sont moches. J’avais prévu de les refaire en plus joli, s’il me restait du temps vers la fin. Ça n’a pas été le cas, comme la fois précédente. Pas de déception particulière sur ce point, donc.

J’ai streamé l’intégralité du développement sur Twitch. La plupart du temps sans caméra ni micro, pour ne pas déranger les gens qui habitent avec moi (j’ai pas vraiment de bureau, on vit ensemble dans une seule grande pièce, en mode « pécores du 12ème siècle »). Le samedi et le dimanche soir, après avoir couché tout le monde dans leurs lits respectifs, j’ai pu caméra-microtiser.

Un énorme merci aux ordispectateurtrices qui m’ont suivi pendant les streams et qui commentaient. J’ai vraiment besoin de ces petites attentions pour flatter mon ego et avoir le courage de continuer Squarity. Sinon j’aurais abandonné depuis longtemps. Encore merci. Et tant qu’on y est, merci à toutes les personnes qui ont joué à mon jeu et donné un avis sur le site du Ludum Dare. Merci en particulier à une copine qui l’a testé sur son smartphone et qui a lâché des comms sur mon Linkedin. Elle se reconnaitra si elle lit ceci.

Un serpent fait un câlin à des pommes

Quel résultat ça a donné ?

Vous avez certainement remarqué que l’expression « on va pas se mentir » est à la mode.

Eh bien on va pas se mentir, ce jeu n’est pas très fun.

Le serpent peut manger des fruits, ce qui permet de changer leur disposition, pour créer des alignements de 3 fruits identiques et les faire disparaître comme dans un match-3 classique.

Le serpent doit aller le plus profond possible, mais il a une longueur et une capacité stomacale limitée. Vous devez gagner des XP et monter de niveau pour augmenter ces deux limites.

On gagne beaucoup plus d’XP en matchant des fruits qu’en les mangeant. De plus, les matchs ne remplissent pas l’estomac. Je pensais que ces règles déclencherait un comportement : la personne qui joue essayerait de faire des matchs, même si ce n’est pas nécessaire pour avancer dans le niveau, car elle chercherait à gagner des XP.

De plus, comme dans tout bon match-3 qui se respecte, il y a des blocs de pierre, qui ne peuvent être détruit que par un match adjacent.

Eh bien ça marche pas. J’ai pas assez réfléchi à mes mécaniques de jeu.

Je m’en suis aperçu lors de mes tests finaux, alors qu’il ne restait plus que 2 heures. La manière la plus optimisée de jouer est d’aller tout droit, le plus profondément, comme un gros débile. De toutes façons, il y a des matchs qui se font automatiquement car les fruits sont placés totalement au hasard. Au bout d’un moment vous ne pouvez plus avancer à cause de la longueur limitée du serpent. Mais vous avez forcément gagné de l’XP. Vous redémarrez du début, en re-allant tout droit comme un gros débile. Et ainsi de suite.

Constatant cette catastrophe, j’ai ajouté à la va-vite des lignes complètes de blocs de pierre, à des profondeurs prédéfinies. La personne qui joue est donc obligé de matcher des fruits pour détruire des blocs et se créer un passage. Ça ajoute un peu d’intérêt au jeu, mais ça ajoute aussi du potentiel de rageage.

Ligne de blocs de pierre pour sauver l’intérêt du jeu

Souvent, les fruits présents dans l’aire de jeu ne permettent pas les matchs nécessaires à la destruction des blocs. Il n’y a pas d’autres choix que de redémarrer du début. Ces échecs sont uniquement dû à un manque de chance. Vous n’avez aucun moyen d’augmenter la probabilité des matchs. C’est du « pas-de-bol and retry ». C’est chiant. Moi-même je trouvais ça chiant en le testant. À 2 heures de rendre sa copie, c’était trop tard pour retravailler les mécaniques du jeu. J’ai pris un peu de temps pour doser la quantité et la disposition des lignes de blocs de pierre, et j’ai tout envoyé à la zob’.

Voici mon classement, sur un total de 1145 participations dans la catégorie « Compo » :

  • Overall: 723ème (3.042)
  • Fun: 743ème (2.792)
  • Innovation: 440ème (3.229)
  • Theme: 533ème (3.438)
  • Graphics: 824ème (2.5)
  • Humor: 516ème (2.25)
  • Mood: 819ème (2.15)

Par rapport au Ludum Dare précédent, il y a du mieux et du moins bien. Mon Overall a descendu. Mais je suis dans la moitié haute pour le thème et l’humour, ce que je n’avais pas réussi avant.

Un peu déçu par mon classement en Innovation, même si il sort du lot. La dernière fois, je m’étais facilement placé dans le premier quart, alors que là j’arrive péniblement après le premier tiers.

Je m’attendais quand même à un peu mieux, car je me suis senti beaucoup moins à l’arrache et en galère durant tout l’événement. Pas grave, l’important c’est de s’être amusé à créer un jeu !

Après le requin-marteau, le serpent-banane

Qu’est-ce qu’on va faire après ?

Concernant Squarity

Le but de ces participations aux Ludum Dares est de tester « en conditions réelles » la création de jeux avec Squarity, pour déterminer les améliorations du moteur et du site web qui seraient les plus urgentes. Le but est aussi de faire connaître Squarity, mais vous le saviez.

Ce qui m’a un peu manqué, ça a été la possibilité d’écrire du texte dans l’aire de jeu. J’aurais aimé pouvoir afficher un petit cadre d’infos, indiquant la longueur actuelle du serpent, combien de fruits il peut encore manger, ses XP et son niveau. J’étais parti pour une solution de secours : mettre des bar-graphs sur un côté de l’aire de jeu. Pas eu le temps. Les fonctions de texte, si elles avaient existées, m’auraient permis d’implémenter ça beaucoup plus rapidement. Et les infos affichées auraient rendue plus claires les mécaniques du jeu.

Autre manque, qui s’est fait sentir bien plus cruellement : des petites classes et fonctions python à importer, pour aider au développement du jeu.

  • Une classe contenant un quadrillage de trucs (lesdits trucs pouvant être n’importe quoi : string, liste, classe custom).
  • Une autre classe stockant les trucs sous forme d’une matrice creuse, c’est à dire une liste de tuple (coord_x, coord_y, un_truc).
  • Des fonctions pour passer d’une classe à l’autre, pour fusionner deux quadrillages, pour extraire un sous-quadrillage, etc. On pourrait s’inspirer de numpy.
  • Indexation des quadrillages par adjacence, par ligne et par colonne.
  • Des fonctions pour gérer les mécaniques de jeu qui reviennent souvent : distance de manhattan, gravité, détection de lignes/colonnes de Match-3, pathfinding, propagation d’un truc sur des cases adjacentes, dijkstra, …
  • Sans oublier des tutoriels et des mini-exemples pour illustrer ces classes et ces fonctions.

Tout ceci est dans la roadmap. Ha ha ha.

Version actuelle du moteur de jeu Squarity

Concernant Snake Match

J’essayerais de reprendre ce jeu et de corriger ses mécaniques pourries. Cependant, j’avais annoncé la même chose pour Loops in Pools et Soko-punk, et rien n’a avancé. Alors je préfère ne rien promettre.

En vrac, des idées de pouvoirs spéciaux :

  • Le serpent tire la langue, attrape le premier fruit devant lui, et le rapproche d’une case. Ça peut permettre de décaler des fruits horizontalement, pour les matcher.
  • Le serpent vomit devant lui le dernier fruit qu’il a mangé.
  • Des fruits randoms tombent du haut de l’écran.
  • Vision de loin : l’aire de jeu scrolle vers le haut non pas quand le serpent est tout en bas, mais un peu plus haut.
  • Pousser des blocs de pierre.
  • Le serpent entoure un bloc de pierre pour le détruire. (Comme un super-boa constrictor).

En vrac, des idées de quête et de mode de jeu (chacune pourrait débloquer un pouvoir spécifique) :

  • Manger une séquence de fruit définie, plus ou moins longue.
  • Manger une certaine quantité d’un fruit spécifique, en une seule partie.
  • Détruire une certaine quantité de blocs de pierre, en une seule partie.
  • Matcher en une seule fois une certaine quantité de fruits.
  • Matcher, avec des réactions en chaîne, une certaine quantité de fruits, ou une séquence de fruits.
  • Détruire entièrement une disposition prédéfinie de fruits et de blocs de pierre (avec ou sans certains pouvoirs spéciaux, sinon il y aura des solutions non prévues).

Idées d’achievement, si jamais on fait des achievements :

  • Terminer un niveau avec à la fois l’estomac plein et la longueur max du serpent atteinte.
  • Terminer avec la longueur max atteinte, et un estomac très très vide (on a avancé en faisant pratiquement que des matchs)

Peut-être aussi que les montées de niveau devraient se faire uniquement par rapport au score max de toutes les parties. Et donc ça ne s’appellerait plus des XP mais du score. La personne qui joue pourrait donc faire une partie pour monter son score max, puis une autre pour réussir une quête, etc. Ça donne un peu de replay value.

Certaines quêtes seraient associées à un mode de jeu spécifique et à son score max. Le niveau dépendrait de la somme des scores max de tous les modes de jeu. Moui, une idée intéressante.

Je laisse ces idées en vrac pour l’instant. On verra plus tard si j’ai le temps et le courage d’en faire quelque chose. La priorité actuelle, c’est de finir le jeu « Game of No-Life », puis de réattaquer quelques petites améliorations du moteur du jeu (il en a besoin) et aussi de formaliser pour de vrai la roadmap. Paf !

Les serpents aiment les femmes un peu rondes.

Elle, c’est Alexandra Shcherbakova.

Ludum Dare 48 : Snake Match

Comme promis, voici ma participation au Ludum Dare 48.

C’est par ici pour y jouer directement.

Et par ici pour la fiche du Ludum Dare.

Vous êtes Léon le python, vous mangez les fruits et vous les alignez pour réaliser des Match-3. Parviendrez-vous à aller suffisamment profond pour retrouver votre créateur, le « Guide on Van-Random ? »

Le nom du créateur est bien évidemment un jeu de mot bancal avec « Guido Van Rossum », le vrai créateur du langage python. Littérallement, ça veut dire : « le guide sur un van (une voiture) aléatoire ». Si vous parvenez jusqu’à lui, vous verrez qu’il y ressemble effectivement.

Quelques conseils de jeu :

  • Si vous êtes bloqués (serpent trop court, blocs qui barrent le passage, …), remontez votre serpent jusqu’en haut pour repartir du début. Vous conservez vos points d’expérience.
  • Au début c’est important de gagner des XP pour monter de niveau, car votre serpent ne peut pas aller très loin. Après on s’en fiche, vous pouvez bourriner la flèche du bas pour aller le plus profondément possible. C’est mal équilibré, je sais.

Si vous n’arrivez pas à atteindre le Guide on Van-Random, vous pouvez tricher. Dans le code du jeu, (zone de texte à gauche), vers le début, se trouve la ligne suivante :

DEEP_WON = 248

Mettez un nombre plus petit (par exemple : 20), puis cliquez sur le bouton « Exécutez » au milieu de l’écran. Vous devriez parvenir à atteindre votre créateur.

J’ai twitché l’intégralité du développement du jeu. Si ça vous intéresse, regardez-le assez vite. Dans une semaine, ça va disparaître dans les limbes de twitch. Y’en a pour 14h de vidéos quand même.

Pas plus de choses à dire que ça pour l’instant. Y’aura un article post-codem, mais peut-être moins long que celui du LD47.

Et maintenant, go création du challenge pour la THCON. À plus tard tout le monde.

Pour l’image de femme ronde, j’ai hésité entre faire une référence au thème de ce Ludum Dare : « Deeper and deeper », ou faire une référence aux fruits de Snake Match.

C’est plus difficile de trouver des images de femme ronde avec des fruits qu’avec du « Deeper and deeper ». Vous constaterez donc que je passe du temps, parfois plus que nécessaire, pour rester dans la décence et la sobriété.

Rien de conséquent pour ce mois

Lecteurtrices, on va pas se mentir, je suis à l’arrache.

Je suis toujours sur mon gros projet http://squarity.fr . Je vais bientôt ajouter la possibilité de définir la taille de l’aire de jeu. Pour célébrer ça, je crée actuellement un petit jeu de démonstration sur un terrain honorablement grand.

Il s’agit d’un pseudo-jeu de stratégie en temps réel, où deux joueurtrices s’opposent. Il n’y a besoin que de deux boutons par personne. Ça s’appellera « Game of No-Life », en hommage au Game of Life de John Conway. Tout ce que je peux vous montrer pour le moment, c’est un screenshot.

Outre ce jeu, ma liste de tâches créatives comporte un certains nombres d’éléments aux deadlines proches et strictes :

  • Participer au Ludum Dare, du 23 au 26 avril. C’est un très bon moyen de faire connaître Squarity et d’éprouver son utilisabilité.
  • Créer un challenge pour la Toulouse Hacking Convention. Je profite d’avoir une connaissance dans l’équipe organisatrice pour proposer une contribution. La THCON a lieu au mois de juin, mais je dois m’y prendre suffisamment à l’avance pour réaliser le challenge.
  • Imaginer un espèce de jeu à énigme genre Escape Room, pour des connaissances personnelles, à l’occasion d’un événement spécifique (intrinsèquement deadliné).

Donc pas d’article conséquent ce mois-ci, à part ce présent article pour dire que j’ai pas le temps de faire un article.

En contrepartie, vous avez la promesse d’une multitude de goodies à venir :

  • Un jeu de stratégie, qui sera fini je-sais-pas-quand.
  • Le jeu que j’aurais créé pour le Ludum Dare.
  • Un éventuel article post-codem du Ludum Dare.
  • Un challenge de hacking. La THCON accepte qu’on publie nos contributions une fois que l’événement est passé.
  • Sans oublier le commentaire de NarK dans mon article précédent (encore merci à toi ! ), qui déclenchera un article supplémentaire concernant mon ancien projet avec les tinies.

Hey, j’me fous pas de vous, quand même.

Sur ce, voici la traditionnelle image de femme ronde. J’ai cherché quelque chose avec du rouge et du bleu, pour rappeler les petites unités-pixels du screenshot du Game of No-Life. J’ai trouvé ceci :

Notez les petites zones rouge et bleue, ce qui crée une image 3D à regarder avec les lunettes magiques idoines.

Il s’agit du top model Karola, que vous pouvez voir sur le site « Silicone Free ». Voici les images d’origine en 2D. Elle porte un mailot de bain violet, ce qui est tout à fait approprié, puisque le violet c’est du rouge et du bleu. Ha ha !

Justement, au sujet de Karola, (et de la ville de Reims)

Il y a quelques années de ça, j’avais orné un de mes articles par une image de cette belle dame.

Un type était venu me demander, dans les commentaires, si j’avais le droit de publier des photos d’elle. Je lui avais répondu courtoisement, mais il s’était assez vite énervé et je l’avais bloqué. Comme il n’était pas très malin, il avait indiqué une adresse mail non-bidon dans le champ du commentaire. Par de simples recherches, cette adresse m’avait permis de trouver son vrai nom, sa ville de résidence et quelques autres infos. Certaines laissaient à penser qu’il ne connaissait pas personnellement Karola, malgré ce qu’il prétendait. J’avais gardé les infos glanées, « au cas où ».

2 ans plus tard, suite à une publication d’une autre photo de Karola, il revenait à la charge. Nous nous sommes mutuellement insultés de manière tout à fait cordiale et conventionnelle. J’avais révélé son vrai nom dans un de mes commentaires, puis je me suis ravisé, car c’était trop méchant, voire illégal. J’ai laissé les insultes. Nous en sommes restés là.

Cette histoire toute moisie m’est revenue à l’esprit, et j’appréhendais (sans toutefois vraiment craindre) que l’image de cet article déclenche à nouveau un de ses caprices. Par curiosité et voyeurisme, je me suis dit que ce serait l’occasion de chercher à nouveau des infos sur lui. Peut-être qu’il avait dumpé quelques inepties de plus, ça et là sur internet.

Je retrouvais sa page Facebook, son profil Linkedin et d’autres petites crottes. Et là, en cinquième position des résultats de recherche : un avis de décès publié en ligne. Le type a crevé, il y a environ 3 ans.

Ça me fait un peu bizarre.

J’ai enlevé les blocages le concernant. Vous pouvez maintenant écrire des commentaires comportant les mots « karola » ou « karodiva », ainsi que des commentaires émanant de son adresse IP, bien que vous n’ayez pas besoin de ça.

Je ressens le besoin de lui rendre un tout petit dernier hommage, même si je ne le connaissais que très peu. Voici donc une dédicace posthume faite avec Paint, sur une carte postale de la ville de Reims. La ville où il est enterré, où il a vécu, et peut-être aussi où il est né.

Les fautes d’orthographe sont aussi un hommage.

Cet événement nous rappelle qu’il faut régulièrement remercier les femmes et les hommes en tout genre qui mettent des photos de leurs corps sur internet. Il nous rappelle aussi que l’internet tel que nous le connaissons actuellement, et qui permet (encore) de faire circuler ce genre d’images est quelque chose de précieux que nous devons préserver.

Encore merci, Karola, j’espère que vous allez bien.

Des scans d’un vieux projet

Cliquez sur les images pour les afficher en grand (sauf la dernière, ha ha ha).

Cet article ne concerne pas Squarity, mais il pourrait.

Il s’agit d’un super projet de jeu vidéo que j’avais imaginé il y a une quinzaine d’années. Il est fortement inspiré de la série de jeux « Skweek », en particulier Tiny Skweeks et Fury of the Furries.

Tiny Skweeks est un jeu de réflexion construit sur la même idée qu’Atomix. Vous déplacez des éléments qui ne peuvent s’arrêter tant qu’ils n’ont pas rencontré un mur ou un autre objet.

J’avais bien aimé, même si les niveaux d’introduction sont trop nombreux, et que certains objets sont un peu déroutants (une dynamite sélective qui n’explose que lorsqu’un tiny de la même couleur passe dessus, wtf ?).

Fury of the Furries est un jeu de plate-forme très mignon, mais que j’avais trouvé super chiant car les tinies que l’on dirige ont l’inertie d’une baleine dans un lac de miel. Le jeu est cependant doté d’une idée intéressante : Les tinies ont 4 couleurs différentes, avec un pouvoir spécial pour chacun.

Je me suis dit : pourquoi ne pas faire une suite au jeu de réflexion, en reprenant l’idée des pouvoirs différents ?

Les tinies, concept art

Avec :

  • Le tiny jaune. Il peut faire du feu sur une case adjacente, pour détruire certains types de murs et faire fondre les blocs de glace.
  • Le tiny vert. Il peut lancer un grappin pour attirer un bloc de glace vers lui. Son grappin lui permet aussi de passer par dessus les trous.
  • Le tiny rouge. Il peut détruire certains types de bloc de pierre en tapant dedans.
  • Le tiny bleu. Il boit de l’eau, ce qui lui permet ensuite de créer un bloc de glace.

Le principe initial reste le même : les tinies se déplacent mais ne peuvent être arrêtés en chemin.

Les blocs de glace sont des éléments de jeu importants : les tinies peuvent shooter dedans. Ça les déplace dans une direction, jusqu’à rencontrer un mur où un objet. Si un bloc de glace cogne un autre bloc de glace, le mouvement se transmet.

Élaboration de niveaux

Le level design de jeux de réflexion n’est pas un travail simple. Lorsqu’on veut créer une énigme un peu difficile, il faut prendre garde à ne pas se réfugier dans des techniques pourries : inventer des éléments au comportement trop complexe ou imprévisible, enchevêtrer une grosse quantité d’éléments simples obligeant la personne qui joue à tester 65 536 combinaisons, cacher des éléments sans aucun indice, …

Je suis parvenu à créer une demi-dizaine de niveau que je juge « difficile sans être pourris ». Je n’ai pas pris le temps de créer des niveaux faciles. Si j’avais concrétisé ce super-projet, j’en aurais bien évidemment placé au début du jeu en introduction, pour faire progressivement découvrir les éléments du jeu.

Niveau 1

Le brouillon :

Le niveau au propre (si on peut appeler ça du propre).

Remarquez le tiny vert à gauche, et le jaune un peu plus haut à droite.

J’ai expliqué le fonctionnement des différents éléments du niveau. Pour faire plus classe, c’est en anglais (me demandez pas pourquoi). Vous n’arriverez peut-être pas à me relire, alors je ferais éventuellement l’effort de transcrire ces descriptions en vrai texte. Ça dépendra de vous (voir plus loin).

Niveaux 2a et 2b

Les niveaux sont rangés dans leur ordre de création, et non par difficulté. En fait, le premier me semble être celui le plus difficile.

Pour ces deux niveaux, je me suis donné pour objectif de me concentrer sur un pouvoir d’un seul tiny.

Le niveau 2a fait beaucoup intervenir le grappin du tiny vert, tout en restant très simple, avec très peu d’éléments interactifs.

Le niveau 2b remplit moins bien l’objectif. Il fait beaucoup intervenir la flamme du tiny jaune, mais aussi le grappin du tiny vert. Il comporte des éléments complexes tel que la dalle avec une flèche rotative et le bouton « push me » (la personne qui joue l’actionne en cliquant directement dessus, pas besoin d’y amener un tiny).

Au fur et à mesure que je créais ces niveaux, je me disais qu’il faudrait revoir les pouvoirs des tinies. Le vert est trop overkill avec son grappin et sa capacité à passer par-dessus les trous. Mais le niveau 2b tel qu’il est conçu actuellement nécessite les deux pouvoirs.

D’un autre côté, le pouvoir du rouge est un peu pourri, il faudrait lui ajouter une autre particularité. Peut-être quelque chose par rapport aux fruits. Il pourrait être automatiquement attiré par un type de fruit particulier, ou avoir la possibilité d’attraper un fruit en passant à côté.

De toutes façons, il ne faut rien s’interdire. On pourrait imaginer encore d’autres couleurs de tinies, avec d’autres pouvoirs.

Niveau 3

On remarquera sur le brouillon les mots « lune » et « soleil » en bas à droite. J’avais écrit à l’arrache sur la feuille les paroles de la chanson « j’ai demandé à la Lune ». Ne me demandez pas pourquoi.

Voici le niveau au propre.

Je le trouve un peu nul. Trop alambiqué, trop de boutons qui font chacun trop de choses.

Vous avez certainement remarqué la présence d’une bouboule multicolore dans tous les niveaux. C’est la « rainbow-ball » (je n’avais pas vraiment défini ce que ce serait). Lorsque vous amenez un tiny dessus, vous gagnez le niveau.

Dans le Tiny Skweek original, le but est de placer chaque tiny sur la plate-forme lumineuse de sa couleur. J’en ai décidé autrement pour mon jeu. Un unique objet à récupérer me semble plus souple, permet de concevoir des niveaux plus variés, et aiderait au déroulement de l’histoire. L’objet final à récupérer pourrait être différent selon le niveau : une clé, les plans d’une invention secrète, un bébé tiny à délivrer, un gâteau, etc.

Les fruits sont des bonus facultatifs. Mais attention, il faut toujours finir par la rainbow-ball, car le niveau se termine dès que vous la prenez. On aurait quelque chose du genre : 1 point par fruit, 5 points pour la rainbow-ball. Bien entendu, on reste fair-play : il est toujours possible de récupérer la rainbow-ball et tous les fruits d’un niveau donné, en une seule fois.

J’avais pensé à une progression à la Mario64. Le score global est égal à la quantité de points obtenus à chaque niveau. Lorsque ce score atteint certains seuils, des niveaux suivants sont débloqués. Ainsi, la progression n’est pas complètement entravée par des niveaux trop difficiles, et ça donne envie de refaire des niveaux pour lesquels on n’a pas obtenu le score max.

Niveau 4

Avec la présence d’un tiny bleu.

Je n’ai pas pris de décision définitive concernant son pouvoir. Pour ce niveau, il peut créer une infinité de bloc de glace. Il n’a pas besoin de boire d’eau. D’ailleurs, il n’y a pas d’eau dans le niveau.

Lorsque j’ai dessiné tous ces niveaux, j’avais leur solution en tête. Je peux vous garantir qu’il en existe une pour chacun d’eux, permettant à chaque fois de récupérer tous les fruits et la rainbow-ball.

Vous voulez rire ? Je n’ai pas noté les solutions ! À l’époque, je me disais que je parviendrais bien à les retrouver.

J’ai fait l’exercice pour le niveau 1, et après avoir galéré un peu, je l’ai re-résolu. Pour les autres, je ne vous garantis rien. Faudrait que je fasse l’effort.

Niveau 5

Le brouillon.

Et le niveau presque au propre.

Il n’y a pas de couleurs, et il n’y a pas la description détaillée des éléments. Dans mes souvenirs, les petits nuages à gauche sont simplement des arbres, équivalents à des murs. Entre deux arbres se trouve une fontaine. Un tiny bleu peut y prendre autant d’eau qu’il veut. Autour du tiny bleu de droite sont placées des bassines d’eau. Chacune peut être utilisée une seule fois, pour créer un bloc de glace.

Attention, le carré à côté du tiny du bas est un bloc de glace, et non pas un mur normal. Sinon, ilne peut même pas sortir de la salle !

L’Overworld

La notion d’overworld est commune à plusieurs jeux vidéos. À l’occasion, je ferais un article dessus. Il s’agit d’un monde englobant tout le jeu, vous vous y promenez pour accéder à différentes endroits ou niveaux.

L’exemple le plus emblématique que je connaisse est Secret of Mana. Vous appelez le super-dragon Flami et vous survolez la carte en mode set, pour vous rendre où bon vous semble. Quelques autres exemples jetés au hasard : Skyblazer, Commander Keen 4 & 5, Sam et Max, Super Smash Bros, Mandragore (sur TO7-70).

Pour l’overworld de mon super projet, je me suis inspiré de la carte générale du monde de Fury of the Furries. J’avais imaginé différentes zones sur la planète, on zoome dessus et on sélectionne un des niveaux. Ceux où le score max n’a pas été atteint s’affichent différemment, pour indiquer que ça vaudrait le coup de le retenter.

Mouais, c’est pas vraiment un overworld puisque le personnage ne se promène pas dedans. C’est juste un menu de sélection avec de la déco, voili voilà.

Qu’est-ce qu’on pourrait bien faire de tout ce bazar ?

À l’époque, ce projet me semblait pharaonique (et absolument génial, bien entendu). Je ne connaissais que le Pascal, le C++, et un peu de .NET. Je me disais que ça prendrait des années de tout coder : le système de jeu, les menus, l’interface, les interactions entre éléments, etc.

Maintenant que j’ai plus d’expérience, et surtout maintenant que j’ai Squarity, ça serait assez rapide de programmer une première version, avec quelques éléments simples, des dessins moches et des niveaux qui s’enchaînent linéairement. Mais est-ce que ça va intéresser des gens ? Là est la question.

Alors voilà ce que je vous propose. Vous me faites des petits commentaires d’encouragement dans cet article, vous me manifestez votre intérêt pour ce projet, et selon le nombre, je débloque des succès.

  • Pour un seul commentaire, je fais un autre article dans lequel je réécris les descriptions des éléments de jeu de mes feuilles. Je vous ajoute d’autres brouillons de niveaux, et je crée un niveau supplémentaire au propre.
  • Pour deux commentaires, j’essaye de retrouver les solutions des niveaux existants, je les décris dans un autre-autre article, et j’ajoute encore un niveau au propre.
  • Pour quatre commentaires, je crée des petites gifs animées montrant pas à pas les solutions des niveaux, et je commence à dessiner un tileset. À vous de juger l’intérêt de ce succès, par rapport à mes talents de dessins en pixel art.
  • Si on arrive jusque là, ce sera déjà un truc de ouf-ouf’, je réfléchirais alors aux succès suivants, jusqu’à éventuellement arriver à une version jouable dans Squarity. Il faudra aussi que je pense à mettre des tinies féminines. Le femwashing est à la mode.

Lâchez vos comm’s les zouavouilloux et les zouavouillettes !

Et l’image de femme ronde alors ?

Eh bien comme ce jeu fait intervenir des blocs de glace, il me semble approprié de mettre une photo de sculpture de glace représentant des seins.

En plus, ça permet de faire le jeu de mot « sein de glace / saint de glace ». Ha ha ha !!!

Tant pis si c’est même pas la période des saints de glace.

Une petite vidéo pour finir

(Sans femme ronde, désolé).

Je n’ai pas l’habitude de mettre des vidéos dans mes articles, je trouve que ça distrait par rapport au propos original, et c’est beaucoup moins souple que du texte et des images qu’on peut reprendre, copier-coller, corriger, rechercher, etc.

Aujourd’hui, nous ferons une exception, car elle vaut son pesant de poil de tinies.

Lors de mes recherches documentaires, j’ai échoué sur cette page, contenant un lien vers la vidéo ci-dessous.

Un reportage datant de 1992 sur le studio de développement Kalisto, qui a créé la série des jeux Skweek. Moi qui suis toujours un peu nostalgique, me voilà servi.

J’adore le passage où le chef demande au geek à cheveux longs combien de temps il lui faudra pour réaliser une première démo des musiques. Le geek répond à l’arrache : « dans une semaine ». Ça c’est de la gestion de projet de déglingouf’. J’ai eu l’impression de revoir Zarma.pro, l’ancienne boîte où je bossais (à Kalisto, les sujets de travail sont plus rigolos, quand même).

Bisous, et encore une fois, lâchez vos comm’s !

Edit 2021-09-20 : et hop, grâce au gentil commentaire de Nark, voici un deuxième article concernant ce projet.