Ludum Dare 49 : mes revues de jeu

Zou. Petit article cheapos qui recycle des trucs déjà produits : les commentaires de mes revues de jeux du Ludum Dare pré-précédent. Je me permets parce que le mois dernier vous avez eu deux articles, alors ça va bien. J’oserais dire que ces commentaires comportent des descriptifs de qualité et des suggestions détaillées. Ça vaut ce que ça vaut (le vaut est un animal à poil ras).

Oh, et ça fait le deuxième article de suite qui est en anglais. Vous y survivrez, n’est-ce pas ?

Les jeux sont à peu près classés par ordre croissant de ma kiffitude personnelle. Si vous avez un peu de temps pour en tester quelques-uns, prenez en priorité ceux de la fin, qui sont justement estampillés « kiffitude ».

C’est parti pour du copié-collé frénétique !

Paper Route

https://ldjam.com/events/ludum-dare/49/paper-route

  • Overall:3.0
  • Fun:2.5
  • Innovation:2.0
  • Theme:4.0
  • Graphics:3.0
  • Audio:3.5
  • Humor:2.0
  • Mood:4.0

I encountered some bugs as other people said. But it was not too much annoying.

It is very frustrating to have McLudum giving you so many newspapers at start, and seeing nearly half of them immediatly lost, because the carriage can not hold them all.

I did not managed to get past level 2, but I’m not good at this sort of games.

There seems to be a story with your father, that’s always good to add this in a game.

Nice game, even if I’m not skilled enough for it.

Akameis

https://ldjam.com/events/ludum-dare/49/akameis

  • Overall:1.5
  • Fun:1.0
  • Innovation:2.0
  • Theme:3.5
  • Graphics:4.0
  • Audio:4.0
  • Humor:3.0
  • Mood:3.5

Technically and visually, it is really beautiful. Voxels are cool, and I like the fact that you can see the previous level below. It makes the tower more realistic.

About the time management

However, the turn-based/real-time logic is hard to understand at first, and cancels the interest of many monsters.

I did not immediatly realize the voxel-thing on the top right is a sort of hourglass that indicates the time before the next automatic turn.

The green monsters do not move when you move in real-time (by using the space bar), so you can dodge all of them easily. But at the opposite, the arrows move at the same time of the hero, and also with the automatic turn. This combination is rather illogical. And you often have to wait automatic turns for long seconds, to dodge some arrows that passes by.

Either you use a complete turn-based logic, like the game D.R.O.D., or you use a complete real-time logic, where every elements move at its own rythm. But mixing both is weird and unpractical.

 About the hammer

I thought I could break scenery objects with the hammer, in the hope of hidden bonuses, but scenery are unbreakable.

If you push « Z » without any direction, you smash the ground under you, making you fall and die.

I tried to smash the ground under skeletons with the hammer, but each time I got shot at blank point, because of the weird turn-based/real-time logic, and the fact that there is no visual information indicating that a skeleton is about to shoot.

So IMO the hammer is useless.

About the rest.

You can’t go back to the main menu when you click « how to play », and I had to reload the whole web page.

Arrows stays in place when you restart after dying.

3D is cool, but if you can not turn the camera, it is sometimes hard to see where objects are, or what is behind other objects. In an early level, I stupidly died because I did not realized a bomb has no floor under it.

Sorry for this “hard” review, but all these tiny buggy details makes your game quite painful to play, and gave me really little fun.

The totally safe and explosion free heist

https://ldjam.com/events/ludum-dare/49/the-totally-safe-and-explosion-free-heist

  • Overall:1.5
  • Fun:1.0
  • Innovation:2.0
  • Theme:4.0
  • Graphics:2.0
  • Audio:3.5
  • Mood:3.0

Nice game. You added some perspective feeling with the top half of the hero that can traverse walls, but it introduces a bug. The bullets starts inside the wall, and are instantly cancelled. You can not fire when you stand near a wall.

I liked the guards that spawns after you picked up the bionite. It adds a real importance to the fact that you get instakilled when you hold the bionite.

It needs an ending. Spoiler alert : nothing happens when you finish all the levels.

At the last level, there is a heart floating in space. Is it possible to take it, or is it just a decorative troll ?

Uns’Table

https://ldjam.com/events/ludum-dare/49/ld49-uns-table

  • Overall:3.0
  • Fun:2.5
  • Innovation:1.0
  • Theme:4.5
  • Graphics:2.0
  • Audio:4.0
  • Humor:3.5
  • Mood:3.0

I love the word game in the title.

It is sometimes hard to guess from the description which object must be brought to Uns. (I tested all the consumable objects for the « savourly ingredient »). And it’s sometime a bit long to get the object you want.

Does the object you are holding change the fights ? A sword increases the chance of not being hit, an armor absorbs some damage, … That would be cool. Also, we do not know how the level of the character affects the fights.

Aimless Wizard

https://ldjam.com/events/ludum-dare/49/aimless-wizard

  • Overall:3.0
  • Fun:3.5
  • Innovation:2.5
  • Theme:4.0
  • Graphics:3.5
  • Audio:3.5
  • Humor:3.0
  • Mood:1.5

Nice idea and nice “aiming instability”.

However, your game has a little default common to many games : there is no collision between monsters. As you turn around them, they all pack together in the same spot. Having lots of monsters is not much dangerous as having only a few. And when you hit the pack spot, it’s an XP jackpot.

I would have implemented collision handling and lowered the monster generation rate. It would have increased the feeling of being overwhelmed by your enemies. Here, they just feel “immaterial” and not so harmful.

Some clear delimitations of the game area would have been appreciated. It’s a little annoying to plan fleeing to the left and realizing you can’t because you bumped into the invisible border of the world.

And maybe add more randomness to the target movement. They straightly move in the 4 directions or the diagonals. That would be funnier and “more instable” if they moved in any direction, while changing it progressively.

Anyway, I liked this moment of monster genocide and reached level 8 !

Doc. Noggin

https://ldjam.com/events/ludum-dare/49/doc-noggin

  • Overall:4.0
  • Fun:4.5
  • Innovation:2.5
  • Theme:1.5
  • Graphics:3.5
  • Audio:4.0
  • Humor:2.0
  • Mood:3.0

The sprite choices are a little WTF. On one side, the teeth, syringe, pills and microbs suggest a medical world, which is consistent with the game title. (Maybe I am inside a body I have to heal ?)

But on the other side, there are fuel cans, moving fires, levers, blocks, and stars as background. It may be hard, but you should try to find “medical” equivalent to all these unrelated objects.

Level design looks sometimes strange. Some levels seems to be really big, but you only have to explore a little to find the exit. I do not know if it is made on purpose. It may be a good idea, because it suggests that you’re in a world bigger than what you are able to realize, like a body if you are a micro-organism.

It needs a scenario, or at least some explanations. What is this strange grey-ball-character I have to get ? Why is the world “unstable” ? What am I supposed to do here ?

Even with these little drawbacks, I was hooked and could not stop until I won the game.

(Spoiler alert) : I really liked the mechanic of coming back accross all the previous level.

Music and “special effects” are great.

Thank you for this really cool game !

Orbital Cascade

https://ldjam.com/events/ludum-dare/49/orbital-cascade

  • Overall:3.0
  • Fun:4.0
  • Innovation:1.5
  • Theme:3.0
  • Graphics:4.5
  • Audio:4.0
  • Mood:3.5

Great game. A nice tribute to Asteroids, Lunar Lander and all of the kind.

Controls are hard, but that’s totally assumed in this sort of game.

The GUI is quite messy. Writing « status » next to a bar graph does not help. The status of what ?

I took some time to realize the status is the health of the Earth. I suppose it decreases when a satellite escape from the screen and crashes on the Earth, and it regenerates with the time. But I’m not even sure it works like that. It seems to randomly increase and decrease.

Also, if it works like this, what about burning satellites which you can’t destroy ? Do they make the status decrease ? If yes, it’s rather unfair.

The spaceship health bar is shown on several little ship. It looks like you have several « discrete » lives. But in fact it is a continuous health bar splitted in 5 « mini-health bar ». That’s quite uncommon. And the visual difference between an empty mini-health bar and a full one is not strong enough. It’s hard to quickly take account of your whole current health, whereas it’s the most important thing in the GUI !

As some other people did, I played the whole game with the mouse button pressed, so this feature is useless. Do an automatic metal collect, or add the necessity to aim a satellite with your mouse.

I like the initial radio communication, to set a plot and to explain how to play. Just one thing : you choosed silver as the metal collected from satellites, to express it is valuable and to justify the fact that the player is paid for that. But then the player beams all this precious silver to the earth to have it destroyed in the atmosphere. What a spoil ! It would have been more consistent to tell that the player collects scraps, destroys them, and then the human on earth are so happy with it they instantly pay the player.

Apart from these little drawbacks, the graphics are really cool, the sound is good enough and it’s really fun to play. It gives this incentive of « just one last play to see if I can get more upgrades ».

Congrats !

ecosystem except there is no equilibrium and everyone dies probably

kiffitude de type : c’est un jeu où on code + la personne ayant créé le jeu assume totalement que tout a été fait à l’arrache.

https://ldjam.com/events/ludum-dare/49/i-cant-think-of-a-name

  • Overall:3.0
  • Fun:5.0
  • Innovation:3.5
  • Theme:1.5
  • Graphics:1.0
  • Humor:4.5
  • Mood:4.5

I love the concept, and I also love all the clues revealing that you may have realized the game in a sort of urge :

  • the main title
  • the url of the game : « i-cant-think-of-a-name »
  • the ludum description : « …actually that tagline doesn’t really make sense anymore. »
  • the in-game description : « I didn’t have time to write a good tutorial, but I do have examples »

This game is totally experimental and raw, which I love too.

In case you do not know it, you should visit the site codingame.com, where you will find plenty of bot-coding games, to compete against other people. And maybe you should also test the old text-mode video game ZZT, which has its own level editor and its own programming language.

Thank you, and keep up experimenting !

Volatile Defender

kiffitude de type : jeu squaritable + graphisme + « allez juste une dernière partie ».

https://ldjam.com/events/ludum-dare/49/volatile-defender

  • Overall:4.5
  • Fun:4.0
  • Innovation:2.0
  • Theme:4.0
  • Graphics:5.0
  • Audio:4.5
  • Mood:4.5

Simple but original concept.

I did not want to look at the tutorial at first, and did not realize you could look back whith the « space » key. It may be a good idea to tell this action in your game description.

I like the fact that robots destroy bonuses when they walk on it, it adds some strategy, with choices like : « I should keep this bonus on the ground for later, but I take the risk to have it eaten by a robot ».

IMO, the hero is a little too slow to move from one tile to another, and the bonus lasts a little too short. It generates a little frustration because a big part of the bonus advantages are lost, as you fire in the void while moving in front of your next target.

Really great graphisms and music. The best I have seen for this Ludum Dare, so far.

Parcel Panic

kiffitude de type : j’adore le mini-univers du jeu + j’ai totalement trippé dans mon commentaire.

https://ldjam.com/events/ludum-dare/49/parcel-panic

  • Overall:3.5
  • Fun:4.5
  • Innovation:3.5
  • Theme:1.0
  • Graphics:4.0
  • Audio:3.5
  • Humor:1.0
  • Mood:5.0

The difficulty of the game, that many people felt, would not be a problem if it was brought gradually. It may be a good idea to use all the suggestions in previous comments to make the game easier, and removing them as the player progresses.

  • lower global speed (player movement and energy loss).
  • parcels and energy bar stays longer on the ground, then you make them stay shorter.
  • the parcel destination is directly marked on the map and does not go away.
  • then the parcel destination is indicated on the bottom, as it is now, but it does not go away.
  • then the parcel destination goes away.
  • then some parcels may be heavier and slows you down when you carry too much of them (instead of decreasing your energy faster, which you don’t really realize while you play).
  • then, why not making it more difficult than it is now ? Remove the letters on the buildings ! After all, you know this place by heart now.

The possibility to cycle between the parcels you own may also be a good thing. So that you can optimize your deliveries. To keep track, in your own memories, of the parcels destination, they could look different. Like in the reality.

I really liked the small world where you are. The road to the left is here to show this world is inside a greater one, but you know nothing of it. It increases the microcosm effect. While playing, I felt like the local hero of the quarter, the person who everybody knows, and who is useful for everybody.

I really like the fact that you put different building types. A, B, C, I, J and K are clearly house of rich people, with fences to be protected from the others. D, E and F looks like middle-class houses. G and H are big buildings where all the poors pack themselves. Even in a small world like that you can make appear social differences, which is an interesting idea.

The post office may not be a good idea. It suggests that this small world has contacts with the outer world. I would have put a more local building : « the janitor desk » or something like that.

An idea comes to me while I’m writing this comment. You should have different types of parcels, and use them as collectibles in the game. You could have a menu where you see the list of all the collectibles you gained, and read their descriptions.

You could have parcel types that clearly shows that the expeditor and destinator hate each other, and other that shows they love each other, or many other feelings.

Here are some ideas :

  • a letter with a heart drawn on it,
  • a present that looks really expensive,
  • a postcard that you can read,
  • a letter whose address is written like : « old dork Jack »,
  • a parcel with white powder on it,
  • a beer pack,
  • a parcel that smells shit,
  • a dead animal,
  • a bullet,

As you play a game, you could imagine and guess the life of all the people in the microcosm, as you learn which type of things they send to each other. How would you feel, as the local delivery hero, when you end up knowing everything of all you neighbors ?

When a game starts, you could randomly choose some specific situations, that the player would discover progressively : a rich house that sends parcels with white powder to all the middle-class and poor buildings, two middle-class neighbors that sends normal parcels at the beginning and then hate parcels (bullets, dead animals, …), expensive presents sent from a poor buildings to a rich house without any returns, love between a rich and a poor, …

Whoa, I realized I totally tripped on this game. That was cool. Thank you for your game. Do what you want with all these weird ideas.

Voili voilà

Et voici Chun Li en version un peu plus ronde que d’habitude.

Bug et propositions d’améliorations pour l’outil All-Seeing Eye

Coucou. Voici un deuxième article dans le même mois !

Comme promis, j’ai envoyé 20 euros à All-Seeing Eye, pour remercier Joonas Hirvonen d’avoir créé cet outil permettant de modifier le jeu Eye Of The Beholder. Je m’en suis servi pour créer un challenge de Hacking pour la THCON. Tout est expliqué dans ce précédent article.

Ce fameux Joonas Hirvonen m’a remercié par mail et m’a encouragé à transmettre mes signalements de bugs. Je vais lui envoyer un document récapitulant tout ça, j’en profite pour le copier-coller ici. Ça ne vous intéresse peut-être pas, mais moi ça me fait un article à peu de frais. (Quelle blague ! Tous mes articles sont à peu de frais !)

C’est en anglais, vive le rosbif !


These bugs and improvement proposals are sorted from most important to less important.

Technical context :

Do what you want with these bugs, as I am not sure I will have the occasion to re-use ASE.

Modifying scripts provokes graphical bugs

Many wall images are scrambled when the game scripts are modified.

Here are steps to reproduce the bug.

  1. Start a game, create a party, go to the first drainage grate.
  2. Everything looks OK.
  1. Launch ASE.exe and set the folder
  2. Launch EOB1_Explorer.exe
  3. Add an instruction anywhere in the code, for example : F8 "I add a new message here." 00 02 00
  4. Press Ctrl-F9 to compile.
  5. You get a message box telling « Range check error. »
  1. Click the button « update INF ».
  2. Close and restart EOB1_Explorer.exe
  3. Add another instruction anywhere in the code.
  4. Press Ctrl-F9 to compile.
  5. This time you don’t get the error message.
  6. Click once again the button « update INF ».
  7. Start another game, re-create a party, go to the first drainage grate.
  8. This time the image is buggy. I do not know from where it was taken. It looks like a part of an attacking leech.

Other bugs appear on many wall textures. Once it happened, there is no hope to come back to a correct display.

I guess it’s a problem with memory offsets in the game information. It is quite annoying, it cancels all the involvement I would put in the creation of a totally new Eye Of The Beholder game.

Object sub-position cannot be redefined

Information related to objects can be modified in the tab « F4:Items ». But their sub-positions cannot be modified.

As we all know, an object on a square in the map has 5 possible sub-positions : the four corners on the ground, and the alcove carved on a wall.

The function ADD_ITEM shows it. It has 3 parameters : OBJECT_INDEX, POS_X_Y, SUB_POS.

The initial data contained in the .PAK files undoubtedly contains these supositions. When I modify existing object coordinates, they land on different sub-positions, depending on their index.

If the initial sub-position of the object is in an alcove, and if the object coordinates is on a square that has no wall, we have flying objects !

These flying objects can not be taken. Too bad.

I would say the tab « F4:Items » should have a field « sub-position », that allows us to read and write sub-position of each object.

A weird thing in the game engine : there is only one sub-position to define an object in an alcove, not one per wall side.

If you put a square with an alcove wall on each side, and if you put an object sub-positioned in the alcove on this square, then the object is visible from the four sides ! Logically, when you take it, it goes away from the four sides. In my opinion, this weird behaviour should be documented somewhere.

Encounter scripts should be editable, if possible

I do not know if it is possible at all. Some encounters seem to execute the same kind of instructions as the ones in the script :

  • speaking with Armun puts some objects in front of the party and sets a global flag,
  • there are movements automatically done before and after speaking with the dwarven cleric, and the previous global flag is checked to initiate the conversation,
  • speaking with Shindia spawns the monster « Shindia »,

I guess the dialogue texts, reply choices, player characters joining the party, etc. are all stored somewhere in the game files. If we could modify all this, it would be really cool, and we could make a totally-totally new Eye Of The Beholder game.

Some event parameters are not parsed in the script

Here is the code we usually have with stairs and ladders :

IF         TRIGGER_FLAG = 1 (on_enter)
ELSE_GOTO  $0473

[...]

IF         3 = 0
ELSE_GOTO  $044C
TELEPORT   TYPE = $E8 (party), SOURCE = <00,00>, DEST = <18,24>

IF         3 = 1
ELSE_GOTO  $0459
TELEPORT   TYPE = $E8 (party), SOURCE = <00,00>, DEST = <17,23>

IF         3 = 2
ELSE_GOTO  $0466
TELEPORT   TYPE = $E8 (party), SOURCE = <00,00>, DEST = <18,22>

IF         3 = 3
ELSE_GOTO  $0473
TELEPORT   TYPE = $E8 (party), SOURCE = <00,00>, DEST = <19,23>

IF         TRIGGER_FLAG = 4 (on_put_item)
ELSE_GOTO  $04AE

IF         3 = 0
ELSE_GOTO  $0487
TELEPORT   TYPE = $F5 (item), SOURCE = <18,23>, DEST = <18,24>

IF         3 = 1
ELSE_GOTO  $0494
TELEPORT   TYPE = $F5 (item), SOURCE = <18,23>, DEST = <17,23>

IF         3 = 2
ELSE_GOTO  $04A1
TELEPORT   TYPE = $F5 (item), SOURCE = <18,23>, DEST = <18,22>

IF         3 = 3
ELSE_GOTO  $04AE
TELEPORT   TYPE = $F5 (item), SOURCE = <18,23>, DEST = <19,23>

END

The translated script shows comparrison between litteral numbers : « 3 = 0 », « 3 = 3 », … which looks really dumb.

This is of course not what the script does. These values corresponds to the direction from where the party comes, or the direction from where the object was thrown. It is used to reposition the party or the object from where it comes, because nothing is supposed to stay at the same square of a stair or ladder.

Some specific words should be used in the translated script to describe this process. For example, 3 = 0 should be replaced by FROM_DIRECTION = NORTH.

The direction identifiers are the usual ones : 0 = north, 1 = west, 2 = south, 3 = east.

Labels should be shown in the « Events » tab

The « F2:Events » tab shows the translated scripts, but the GOTO instructions have the litteral adresses.

The « F3:Scripts » tab shows GOTO instructions with labels, but the script is displayed with raw bytecode.

The text labels should also be displayed in the « F2:Events » tab, to have all the human-readable script in one tab.

It is quite painful to modify the scripts, I was always switching between the two tabs : write some code, check it is correct, and so on. A really nice feature would be a mode to display the two tabs side by side. The « F2:Events » would automatically updates while we type in the « F3:Scripts » tab. But maybe that’s too much to ask.

Texture atlas needed

I had to try different wall numbers in the map, then play the game to see the corresponding images, then repeat for the next level palette, etc.

Some identifiers are the same in many palettes, for example : with « brick » and « blue », the value 51 corresponds to a wall with writings on it.

Other identifiers exist only in one palette, or are different between palettes, for example : all the stone portal images.

That would really be helpful to have the complete list of wall images, with their identifier, for all the palettes. You don’t even have to integrate it in the existing software. Just toss an external document with the images and their identifiers, that would be perfect.

Command parameters should be documented

The tab « F5:Commands » lists all the existing commands, which is great, but not enough.

The parameters of each command should also be documented. Some commands, such as TELEPORT or ADD_MONSTER, have numerous, varied and complex parameters.

The documentation you linked to https://moddingwiki.shikadi.net/ is interesting, but really hard to read and to understand. I’m not sure it explains all the commands of Eye Of The Beholder.

Program crashes when writing coordinates with one digit

This one is simple to reproduce :

  • Go to « F3:Script » tab, go to the « event trigger points » zone.
  • Modify a coordinate of any event, write it with only one digit. For example, replace « 03 » by « 3 ».
  • Press Ctrl-F9.
  • You get an error message : « Access violation ».

Code size limit should be checked

When the script of a level is too big, it can lead to unexpected behaviours.

The last address value in « F2:Events » should be checked. If it is greater than $1AF0, there are risks to have unexpected behaviours. I’m not sure of the exact limit, it may be a rounded value, like $1B00.

This should be checked by EOB1_Explorer.exe, and a warning message should be displayed when updating/saving the INF file.

The unexpected behaviour seems quite random, and occur when the party arrives in the level having the INF too big.

Sometimes, it’s an immediate crash with a totally unrelated message :

Some other times, it’s a crash with a message « Far heap corrupt! » when you click on the button « CAMP » :

Race and class values are not completely documented

The file EOB1_Explorer_Notes.txt has an uncomplete list of race indexes. Here is the complete one :

  • 00 = Human
  • 01 = Elf
  • 02 = Half-elf
  • 03 = Dwarf
  • 04 = Gnome
  • 05 = Halfling

The Class identifiers are not correct and does not correspond to the HAS_CLASS function.

There are only 4 « base class »,

  • 01 = Fighter
  • 02 = Mage
  • 04 = Cleric
  • 08 = Thief

HAS_CLASS adds all the classes of your characters, by using the boolean « OR », and returns true if there is at least one set bit in common with the parameter given to the function.

Multi-class activates the corresponding bits of all the base classes.

For example, let’s say the party has a Fighter/Mage and 3 clerics (that’s a weird party).

HAS_CLASS(2) will return True. It evaluates to :

  • has_class_param & (classes_chara_01 | classes_chara_02 | ... )
  • 2 & ((fighter | mage) | cleric | cleric | cleric)
  • 2 & (fighter | mage | cleric)
  • 2 & (1 | 2 | 4)
  • 2
  • True

It is not possible to check if there is a ranger in the party. This class only lights the « fighter » bit.

It is also not possible to check if there is a paladin. This class lights the « fighter » and the « cleric » bits.

The way how the function HAS_CLASS works should be documented.

That’s all

Thank you once again for having created these tools. They are wonderful, even with those tiny bugs.

I used EOB_Explorer1 to create a hacking challenge that involves the game and your tools. This challenge was part of the CTF at the Toulouse Hacking Convention 2022. The people who tried it said it was really interesting (a few of them managed to solve it, though). I will submit it to root-me.org in the upcoming months and I will let you know about it, if root-me accepts it.

For the moment, I have not planned to create other challenges or other games with Eye Of The Beholder, so there may have no specific reason to fix these bugs. Anyway, I’m really happy to have « revived » this game in a quite uncommon way. It was an important part of my childhood, I took many years to finish it.

See you next time !


Voilà, c’était tout ce que j’avais à dire. Je l’envoie à mon nouvel ami Joonas ce soir. S’il me répond des trucs intéressants, je vous en ferais part.

Bien entendu, j’ai plusieurs autres idées de challenge « TUR-ROX », avec d’autres jeux. J’essayerais d’en concrétiser une ou deux pour la prochaine THCON.

Cet article est un rapport de bug.

Rapport de bug -> bug -> ladybug -> l’héroïne de dessin animé -> vêtements aux motifs de cette héroïne -> femme ronde !

Enjoy :

Pour le mois prochain, je me permettrais d’être moins blogalement productif. Je vous rassemblerai un package de commentaires de jeux du Ludum Dare, et ça devrait suffire.

D’ailleurs, faut que je vous annonce mon classement. Eh bien on fera tout ça en même temps.

THCON + Ludum Dare, ça a été un beau bazar ces dernières semaines. Peut-être que maintenant je vais avoir du temps pour faire la road-map de Squarity ?

On ne sait pas…

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.

Les trucs du moment

L’année dernière, je m’étais fait avoir avec cette connerie de février. Je croyais que j’avais le temps de finir mon article promis avant la fin du mois, et paf bernique, y’a que 28 jours dedans. Quelle merde. Essayons de ne pas refaire la même erreur.

La plupart des gens trouvent que le mois de février est tout pourri. Pas juste à cause du nombre de jours mal foutu, et qui en plus dépend de l’année, mais aussi parce qu’il est froid et qu’il n’a pas de fêtes notable (nouvel an ou autre jour férié). Il y a bien la Saint-Valentin, mais dans les conventions sociales, il est hype et branché de la détester, car c’est « trop commercial ».

Le fait que je soit né au mois de février est d’une ironie assez grinçante. Là c’est le moment où vous vous foutez de ma gueule que je puisse me plaindre de quelque chose d’aussi débile, ensuite c’est le moment où je vous envoie bouler. Le fait qu’on puisse se foutre de ma gueule du fait que je me plaigne de l’ironie grinçante de certains aspects de ma vie est d’une ironie grinçante au carré.

Les trucs du moment ?

Nouveau jeu dans Squarity, créé pour l’anniversaire d’un pote. Il comporte quelques private jokes qui vous échapperont, mais des indications au fil du jeu vous permettront de vivre toute l’aventure (si on peut appeler ça comme ça). Éventuellement, vous reconnaîtrez quelques images recyclées à partir de Pru-Pra-Prok, mon vieux vieux dessin animé.

La road map de Squarity n’est toujours pas terminée. Je suis actuellement ralenti par un autre side-project, qui sera mentionné au paragraphe suivant. Je n’arrive pas à avancer cette road-map. Est-ce qu’inconsciemment j’en ai peur ? Est-ce qu’inconsciemment je ne fais que la reporter, pour que Squarity reste un projet potentiellement réussi, plutôt qu’un projet que je finirais par abandonner comme plein d’autres ? Je ne sais pas. Je vous promet de m’accrocher et de rester motivé le plus que je peux.

Le side-project est un (voire deux) challenges de hacking que je prépare pour la Toulouse Hacking Convention. Ça doit rester top secret.

Cet article du site Rock-Paper-Shotgun est inspirant. Il peut vous aider, si, par exemple, vous auriez l’idée de créer des mini-jeux d’énigme dans, par exemple, Squarity.

Je me replonge un peu dans les crypto-monnaies, les NFT et autres bizarreries numériques. Tout le monde dit que c’est de la merde, ce qui constitue pour moi un argument suffisant pour que je m’y intéresse. Je suis un putain de rebelle. Je vous invite à suivre le projet cryptoeat.io, un site de vente de bonne bouffe avec un token spécifique, sur la blockchain BSC. Ça a l’air un peu plus valable que toutes les pyramides de Ponzi de Play2Earn qui inondent actuellement le ouaibe 3.0. Je dis ça alors que je me suis mis dans quelques unes de ces pyramides. Ironie. Comme d’habitude, n’investissez que ce que vous pouvez vous permettre de perdre.

Hayley « The Big Noodle » est jolie, s’habille bien et a de très beaux cheveux.

À la prochaine !

Re-ICE pour le Revenu de Base Inconditionnel

Bonne année !!

On est le 31 janvier, j’ai encore le droit de dire ça.

Il y a quelques années de cela, une Initiative Citoyenne Européenne (ICE) pour le Revenu de Base Inconditionnel était lancée.

Explication très rapide d’une ICE et du Revenu de Base

(que j’ai pompée d’un de mes précédents articles, désolé pour ce recyclage).

le Revenu de Base Inconditionnel (RBI) consiste à donner la même somme d’argent, tous les mois, à toutes les personnes d’un pays ou d’une région. Ce revenu continue d’être perçu même lorsqu’on commence à travailler, quel que soit le type de contrat de travail. La somme donnée est calculée de façon à pouvoir vivre « dignement », c’est à dire : bouffer, se loger et éventuellement acquérir certains biens culturels de base.

Une ICE est créée par un petit groupe de gens qui demandent une modification dans la loi (ça peut être un peu tout, à l’exception de troll-WTF caractérisé). Les citoyens de l’Union Européenne favorables à cette modification signent une pétition. Si un million de signature est rassemblé, la Commission Européenne est obligée de considérer la demande, d’y réfléchir et de donner un avis. Cet avis peut être « on ne fera pas votre truc, GTFO LOL », mais cela doit être accompagné d’arguments détaillés.

Cette ICE avait échouée. Le million n’avait pas été atteint.

Le myiard !!!!

On baisse pas les bras et on re-essaye

Une seconde ICE est actuellement en cours, elle dure jusqu’au mois de juin. Vous avez tout le temps pour la signer, mais trainez pas trop quand même.

Tout les détails, ainsi que le gros bouton « Je signe » sont sur le site officiel :

https://www.revenudebase.info/ice

Ne faites pas comme Christina Applegate, qui baisse les bras.

Depuis le temps que je prône le RBI

voici une rétrospective de tous mes articles sur le sujet.

  • L’un des traditionnels « Raffarin pète-gonades memorial day« , qui vous invitait à signer la première ICE. Fun fact : à l’époque, cette journée s’appelait encore « Raffarin pète-burne » et non pas « Raffarin pète-gonade ». C’était pas inclusif, houuuuu.

Cette idée s’est tout doucement insinuée dans l’esprit des gens, y compris dans ceux de nos fringants dirigeants. On voit apparaître ici et là des petits tests locaux, en voici un exemple.

Ça ne respecte pas tout à fait la définition initiale d’un RBI, à cause de ceci :

L’expérimentation débuterait en mars 2022, avec une allocation mensuelle de 500 euros […] . Il serait également dégressif en fonction des revenus de leur foyer fiscal, à partir d’un minimum de 350 euros.

Le montant ne doit pas changer en fonction de ce qu’on gagne par ailleurs, sinon ça n’incite pas à travailler, et ça coûte plus cher car il faut des fonctionnaires pour vérifier le foyer fiscal des gens. Alors que ces fonctionnaires pourraient faire d’autres trucs plus utiles. J’aurais préféré une somme inférieure à 500 euros, qui ne change pas. Mais je vais pas faire ma mijaurée, c’est mieux d’avoir une expérimentation comme ça que rien du tout.

Européens de tous les pays, unissez-vous !

Bon, là c’est des russes et ça date de 2014, mais quand même, c’était l’eurovision, ça reste dans le sujet.

Et sinon, les autres trucs :

  • La THCON arrive bientôt. Si je peux, je créerais un petit challenge, voire deux. J’ai quelques idées. J’en parlerai ici-même lorsque l’événement sera passé.
  • Je suis actuellement en train de m’intéresser à la crypto-monnaie « WAX ». Y’aura peut-être des trucs à ce sujet ici, mais je ne sais pas quand ni quoi.

« ICE », ça veut dire « glace » en anglais. Voici donc une image tirée du film d’animation « Frozen ».

Bon « 11 mois qui restent de cette année » !

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 !!

Seins et poitrines inhabituels (pour ce blog)

Je vous avais promis deux articles pour le mois de février. J’ai échoué. Ce dimanche, mon ordinateur affichait la date « 28/02 ». L’article était bien avancé, je me suis dit que j’aurais largement le temps de le finir. Et d’un seul coup, on est passé au « 01/03 ». Calendrier grégorien de merde.

Comme vous le savez, j’aime les femmes rondes, les grosses fesses et particulièrement les gros seins. J’en saupoudre généreusement des images ici.

Il y a quelques années/mois, j’ai appris l’existence du Scar Project et du mouvement « no bra », qui m’ont tous les deux fait réaliser que ce serait bien d’équilibrer et de varier un peu mes bêtises.

Alors pour une fois, voici d’autres types de seins. Inhabituels, hors normes, hors formes, cassés, en panne, absents, mais toujours avec une personne derrière. Je vais essayer de faire ça dans le respect et la dignité. C’est pas gagné car ce ne sont pas des notions énormément mises en avant dans ce blog. Je fais avec.

Cliquez sur les images pour consulter les sources. Il n’y a pas spécialement d’ordre ni de logique dans les chapitres. À priori, je n’ai pas trop fait d’entorse au droit à l’image, mais si certaines photos n’ont pas leur place ici, dites-le moi, et je les enlèverais.

Réduction mammaire

Commençons par quelque chose de pas si inhabituel que ça. Une personne trouvant ses seins trop gros et qui décide de les réduire par de la chirurgie.

Deux mini-seins en plus des deux seins habituels

Ça arrive, c’est de naissance. Ils se situent sous les bras. Ça s’appelle « accesory axillary breast tissue ». Je n’ai pas trouvé la traduction en français.

Troisième (ou plus) téton

Il s’agit d’une particularité moins taboue que d’autres. Démocratisée grâce à je-ne-sais-plus-quel James Bond. En tout cas, Lily Allen en a un, qu’elle n’hésite pas à montrer.

(Je n’ai toutefois aucune idée de qui est cette « Lily Allen »)

Vous pouvez avoir plus que trois tétons, et ce n’est pas réservé aux femmes.

Oui, tant qu’à faire, cet article comporte également des poitrine d’hommes.

Des femmes rondes avec des seins de taille normale

Ben oui, toutes les femmes rondes n’ont pas des gros nichons.

Voici Danielle Bex :

Et Anna O’Brien, qui s’est dupliquée sur la même photo grâce au super-pouvoir de Photoshop/Paint.

Hypermastie / gigantomastie

Les seins vraiment très gros peuvent être considérés comme une pathologie, qui est officialisée par un article dans Wikipédia.

Ça n’affecte pas forcément les deux seins de la même manière, ce qui nous amène au chapitre suivant.

Asymétrie

Sans forcément aller dans les extrêmes, toutes les paires de seins sont plus ou moins asymétriques. Comme tout le reste du corps, qui n’est jamais parfait. Personnellement, mon testicule droit pend toujours plus que le gauche.

Les asymétries de seins trop prononcées peuvent être corrigées (ou pas) par de la chirurgie.

Le syndrome de Poland

Il s’agit d’une maladie rare, de naissance, qui affecte un côté du corps. La poitrine, mais aussi parfois la main, ne se développe pas assez.

Il est possible de se faire implanter une prothèse (ou pas). En revanche, les implants de tétons, ça n’existe pas vraiment, mais on peut se faire poser un « faux téton ».

Des gens déguisés en seins

C’est pas parce qu’il n’y a aucune raison de faire quelque chose qu’on doit s’empêcher de le faire.

Trois seins, comme dans Total Recall

Jasmine Tridevil (devinez quoi, c’est un pseudo !) s’est fait implanter un troisième sein, pour, entre autres, avoir sa propre émission de télé-réalité. Voilà voilà.

Le mouvement « no-bra »

Il a pour but de suggérer aux femmes de ne plus porter de soutien-gorge. Ce mouvement existe depuis plusieurs années, et s’est renforcé suite aux divers confinements, durant lesquels la tenue vestimentaire et les conventions sociales sont moins prédominantes.

Des études ont montré que les muscles qui tiennent les seins se développent plus quand on ne met pas de soutien-gorge, ce qui fait qu’ils ne « tombent » pas autant que ce qu’on pourrait croire.

Évidemment, sans soutien-gorge, on distingue les tétons à travers les vêtements. Ça peut choquer certaines personnes. En ce qui me concerne, ça ne me dérange pas, car j’aime bien les seins dans leur ensemble, tétons compris.

J’aimerais pouvoir vous promettre que si je croise une femme dans la rue ne portant pas de soutien-gorge, je ne me mettrais pas à la regarder bizarrement ni à m’attarder sur ses tétons. Mais je ne peux pas vous le garantir, car parfois, je ne peux pas m’empêcher de faire ce genre de choses même lorsque je croise une femme portant un soutien-gorge. Oui je sais, je suis un con.

Le mouvement « free the nipples »

On pourrait considérer que c’est le niveau suivant du mouvement « no-bra ». L’idée étant que puisque ça ne choque pas que les hommes puissent être torse nu, les femmes devraient aussi pouvoir l’être.

Je suis pour, évidemment.

J’ajoute que le fait de pouvoir se promener entièrement à poil (homme ou femme) mériterait d’être étudié.

The Scar Project

C’est une série de portraits de femmes ayant survécu à un cancer du sein. Les photos ont une intention exactement inverse des photos médicales que j’ai mises dans l’article. On voit les visages, les décors, éventuellement d’autres gens, et on peut essayer de deviner la personnalité de ces femmes.

Ces deux intentions, médicales et artistiques, m’ont semblé toutes les deux intéressantes. Voici donc quelques photos du Scar Project

Ce sera tout pour aujourd’hui. J’espère que ça vous a interpellé un minimum, et que ça vous a éventuellement plu. J’essayerais de refaire des articles du même genre à l’occasion. La ligne éditoriale blog-globale de ce blog ne changera pas pour autant, avec majoritairement des images de femmes rondes, de big asses et de gigantic boobs.

Je n’ai aucune idée du sujet du prochain article, je finirais bien par trouver un truc à l’arrache. Ce sera possiblement encore du Squarity.

Bisous sur les tétons, ou ailleurs pour les personnes qui n’ont pas de tétons.

Squari-tutoriel !

À l’arrache ce mois-ci pour l’article de blog. Mais j’ai quand même du contenu à proposer. Comme on dit dans les basse sphères le la société : « chose promise, con tenu ».

Une fois de plus, c’est à propos de Squarity.

Voilà, j’ai fait un petit tutoriel, qui vous accompagne dans la création d’un sympathique petit jeu de soko-ban.

Vous n’avez pas besoin de connaissances en python pour le suivre. Il est assez long, mais super facile. Il suffit de copier-coller des bouts de code. Il y a parfois des questions, dont la réponse arrive peu de temps après, pour ne pas bloquer les gens. Ça ne vous apprendra pas le python, mais avec un peu de chances, ça vous donnera envie de programmer des jeux dans Squarity, et par ricochet, d’apprendre le python.

J’ai essayé de destiner ce tutoriel à des jeunes (collèges, lycées). Mais je ne sais pas du tout si c’est adapté et si ça marcherait avec une population de ce type. J’ai pas de collégiens/lycéens à portée de main. À une époque, je donnais des cours de python à un petit groupe, et à des stagiaires de découverte d’entreprise. Ça passait plutôt bien. Mais bon, je vais pas vous raconter ça maintenant. Peut-être dans un autre article, si je le juge digne d’intérêt.

Et vu que ce tutoriel permet de créer un soko-ban, je me suis dit, mettons ce jeu directement à disposition ! Ainsi fut fait.

Un format enfermant

Le sachiez-vous ? il existe un format de fichier pour décrire les niveaux de soko-ban. Que j’ai bien entendu respecté : un dièse pour un mur, une arobase pour le personnage, etc.

Il y a juste un truc qui m’embête : le format préconise d’entourer le niveau par des murs. Je suppose que ça part d’une bonne volonté, ça permet de bien délimiter la zone de jeu, et de ne pas obliger à spécifier ses dimensions. Mais je trouve ça dommage.

Comme vous le voyez sur l’image ci-dessus, le niveau a une ouverture en bas. Les 4 niveaux que j’ai mis dans mon jeu en ont une. Ça ne respecte pas le format, et c’est inutile. Si vous vous déplacez jusqu’au bord de l’aire de jeu, il ne se passe rien.

Mais ça modifie un tout petit peu la narration et le ressenti pour la personne qui joue. Le personnage n’est pas enfermé. Il n’est pas condamné pour toujours à pousser des caisses. Avec cette ouverture, on imagine que le personnage arrive, pousse des caisses, puis repart vers de nouvelles aventures. Ça laisse plus de place à l’imagination qu’une stupide prison hermétique.

L’une des choses que j’ai vraiment aimé dans le jeu Drod, c’est le monde ouvert. Vous avez des énigmes à résoudre, indépendantes les unes des autres. Mais elles sont toutes connectées ensemble dans une grande aire de jeu. Vous vous promenez où vous voulez et vous avez une certaine liberté dans l’ordre de résolution des énigmes. Je me serais beaucoup moins amusé si Drod avait été une simple succession de salles à réussir dans un ordre imposé.

Je suis actuellement en train de découvrir « Caves of ZZT ». On y trouve cette même idée de monde ouvert, qui me donne toujours envie d’aller dans les salles autour « juste pour voir », puis de résoudre la salle dans laquelle je suis, juste pour avoir accès à d’autres salles, et ainsi de suite.

Le level design, même pour des jeux aussi simplistes qu’un soko-ban, est super important. Il ne faut pas se contenter de placer les objets nécessaire à l’énigme. Il faut essayer de raconter une histoire, fut-elle si petite qu’elle tiendrait dans un quart de tweet.

Carte complète de Plankton, un jeu fait avec ZZT. Cliquez sur l’image pour en avoir plein d’autres

Michèle Tore !

Jeudi dernier, j’étais en train de faire l’andouille sur ma chaîne twitch et de me la péter avec mon tout nouveau tutoriel. Au cours de la discussion avec des ordispectateurtrices, on m’a demandé de faire un soko-ban « comme dans un niveau de pacman ». J’ai dit : « Ah ba ça, ça tombe bien alors ! on a déjà un pacman dans Squarity, je vais copier-coller la carte du niveau et tu l’auras dans le soko-ban ».

Après quelques modifications hasardeuses et un adaptation des caractères définissant le niveau, nous sommes arrivés à nos fins.

Et là, l’ordispectateutrice de tout à l’heure me précise que le terme « comme pacman » avait pour intention de signifier « quand le personnage va tout à gauche il se retrouve à droite et vice-versa ». Cette personne voulait un univers en tore bidimensionnel. J’avais mal compris.

Qu’à cela ne tienne, après quelques modifications supplémentaires, le soko-ban atterrissait dans un univers bidimensiotorique. Et moi qui dissertais tout à l’heure sur l’intérêt des mondes ouverts et l’importance de mettre une entrée/sortie, même fictive, eh bien là, le monde se retrouvait horriblement fermé puisque replié sur lui-même. Argh !!

En attendant, c’est plutôt rigolo, et ce serait super chouette si de gentilles personnes me créait des niveaux qui utiliserait cette particularité bidimensiotorique. J’ai partagé cette version du jeu, vous pouvez y jouer directement par ici.

Vous en avez peut-être marre de Squarity ?

Ça fait 6 articles et 5 mois que je ne parle que de Squarity dans ce blog. Peut-être que ça vous incommode, que « c’était mieux avant » quand je vous parlais de tout et n’importe quoi.

Désolé. C’est mon gros projet du moment. Il est possible que ça monopolise une grosse partie de mon temps libre des années à venir. Alors forcément, je le raconte ici.

Voici une proposition pour limiter un peu la squaritification de ce blog : pour le mois de février, je vous fait DEUX articles ! Un concernant Squarity, et un concernant tout autre chose. Ce sera sur un sujet qui me tient à cœur et que j’ai déjà mentionné une paire de fois : les nichons.

Et puisqu’il y aura deux articles, je vous propose une photo avec deux belles femmes : les jumelles Rocio et Lucia Mais. Pour le coup, c’est pas vraiment sur les nichons qu’il faut porter le regard, mais elles sont quand même magnifiques :

C’est à 9 secondes dans la vidéo d’origine.

À bientôt, puisque le mois de février, c’est dans bientôt.

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.

Iodification du python squaritien

Coucou ! Quatre fois n’est pas coutume, je viens encore vous parler de Squarity.

J’ai réussi à régler le problème de lenteur. J’ai lâché la librairie JS Brython, pour la WebAssembly Pyodide.

Argh, du code binaire !

D’aucuns-et-d’aucunes considèrent que les WebAssembly sont le mal absolu, car, tout comme le code binaire des fichiers exécutables, c’est non lisible par un humain. Ça va à l’encontre de l’un des dogmes du web, qui énonce que tous les composants d’un site doivent être analysables, même si cette analyse peut être compliquée. Le HTML, le javascript, le CSS, le JSON sont écrits avec des mots, et non avec des nombres. C’est en partie en raison de ce dogme que les navigateurs vont définitivement virer la technologie Flash.

J’oblige donc votre navigateur à exécuter du code que vous ne pouvez comprendre aisément, ce qui fait de moi un vilain.

Ce à quoi je répondrai : « Mouiimmpfboapf, ça va bien. Le code source de Pyodide est disponible sur internet. D’autre part, avez-vous tous les codes sources de tous les exécutables que vous lancez sur votre machine ? ». À mon avis, la seule personne qui peut vraiment le prétendre serait Richard Stallman.

(TODO : insérer ici une photo à poil de Richard Stallman, pour équilibrer par rapport à la quantité de photos de femmes rondes à poil qu’il y a dans ce blog)

Heuwargl, le chargement est lent !

L’exécution de code python dans un navigateur est plus rapide par Pyodide que par Brython. J’ai fait quelques benchmarks au doigt mouillé, en particulier avec le jeu Loops in Pool. La propagation de la boue et de l’eau sont maintenant beaucoup plus fluide.

Dans la version précédente de Squarity, j’avais testé avec un délai de 1 milliseconde entre chaque propagation, et c’était quand même lent. Alors j’ai mis 400 millisecondes pour ne pas surcharger la machine. Dans la nouvelle version, j’ai re-essayé 1 milliseconde, l’animation s’est accélérée significativement. Je l’ai laissé ainsi, youpi.

Cependant, l’initialisation de Pyodide est très lente. Il faut télécharger 20 Mo de bazar, alors que Brython tient en moins de 10 Mo (et c’est déjà beaucoup pour du javascript !). Ensuite, le navigateur doit interpréter et démarrer la WebAssembly, ce qui prend encore quelques secondes.

« Dans le monde dans lequel on vit », tout doit aller très vite. Une dizaine de secondes d’attente peut décourager certaines personnes. Ce choix de Pyodide me fera donc perdre une base potentielle de user-client-partner. Mais je préfère décourager définitivement un petit nombre, plutôt que ralentir continuellement tous les futurs fidèles qui utiliseront Squarity.

Je mettrai une barre de progress la plus précise possible. On accepte plus facilement d’attendre lorsqu’on voit un décompte qui avance. Actuellement, le progress n’est qu’une liste de 8 étapes, dont 6 sont pratiquement instantanées et 2 sont très longues. C’est pas du tout suffisant.

Prototype d’une barre de progress avec estimation de temps incertaine.

Si je pouvais éviter le re-téléchargement des 20 Mo une fois que ça a été fait, ce serait top. Je sais bien que le navigateur a un cache, mais celui-ci a une fâcheuse tendance à se vider. On a le droit de stocker des WebAssembly dans du local storage ?

J’ai également testé sur smartphone. Ça fonctionne (j’en n’étais vraiment pas sûr), par contre l’exécution reste super lente. Les fuckings millenials de la génération Ÿ écoperont des deux inconvénients : lent à l’initialisation ET à l’exécution. Je laisse comme ça pour l’instant, tant pis. De toutes façons, le premier truc à régler concernant l’utilisation sur smartphone serait le responsive design cradingue. Et dans un futur très lointain, on pourrait carrément imaginer une app.

Il suffira juste d’accepter le postulat qu’une app mobile exécutant du code python arbitraire ne constitue pas une faille de sécurité. Ha ha ha. Je ne suis même pas sûr de ce postulat concernant les sites web. Re-ha re-ha re-ha. Bref : y’a du boulot.

En tout cas, Pyodide est beaucoup plus simple à intégrer que Brython. Pour exécuter du python, j’ai une fonction à appeler, avec le code en paramètre. On peut directement lire/écrire les variables javascript, les exceptions python sont automatiquement remontées, avec traceback et message. J’ai tout ce qu’il me faut.

Avec Brython, je devais pré-placer mes variables d’échanges dans un truc à la con, mettre mon code dans une balise script, lancer une fonction sans paramètres, prier pour que la portée des variables ne se vautre pas toute seule, et lire les données de retour dans le truc à la con sus-mentionné. Je ne vous (re)parle même pas de la récupération des erreurs où j’ai eu recours à des astuces tellement tordues que mon cerveau a préféré les oublier !

Vive Pyodide. De plus, je ne désespère pas que dans quelques siècles, si l’humanité n’a pas entièrement crevé pour une raison quelconque, les navigateurs web soient nativement dotés d’un interpréteur python. Que l’on ait enfin une alternative sérieuse à ce javascript de merde.

L’ancêtre de Pyodide sur smartphone

Qui veut dessiner un beau tileset ?

Mon jeu-phare, les aventures de H2O, mériterait bien un petit coup de polish (dans le sens polissage, pas dans le sens polonais). Mais je ne suis pas un dessinateur assez doué pour ça.

Alors j’ai posté un message chez la communauté PixelJoint, pour leur demander qui serait assez gentil pour me redessiner le tileset de H2O, en mieux.

Je me suis fendu d’une explication détaillée de toutes les tiles.

Si vous élevez des pixels chez vous, n’hésitez pas à vous manifester sur le forum de PixelJoint. Il s’agit d’un concours en mode bisounours, dans lequel tout le monde gagnera. C’est à dire que je ne prendrais pas le meilleur tileset, mais je ferais une version du jeu H2O pour chaque tileset qui sera proposé.

Pour l’instant, je n’ai eu qu’une seule proposition, via message privé. Je peux m’en contenter, le pixel-artiste m’a fait un super boulot. Vous le verrez très bientôt lorsque j’aurais mis à jour le jeu.

Pour le bon plaisir de ce projet Squarity, j’ai dû me créer un compte Twitch, un compte Ludum Dare, un compte GoDaddy, un deuxième compte pythonanywhere et maintenant un compte PixelJoint. Tellement populaire, tellement social.

Il y a de jolies choses sur PixelJoint

À propos de social

L’une des prochaines grosses étapes de Squarity sera de créer un lieu d’échange et de contenu. Ça me permettra de recenser les jeux existants, de publier les release notes, d’ajouter des articles et des tutoriels, d’aider les codeureuses en herbe, etc.

Je ne sais pas encore sous quelle forme je ferai ça. Le plus simple serait un serveur Discord, mais j’aimerais éviter d’être trop dépendant d’un réseau social existant, quitte à payer un petit peu. Peut-être que ça se finira avec une instance Mastodon et un CMS à l’arrache.

Mais j’aimerais aussi éviter d’obliger les gens à se créer un enième compte sur un enième site. J’essaierais peut-être d’intégrer des authentifications tierces : les boutons « sign in with Google », « sign in with Github », etc.

Bien évidemment, je ne connais pas grand chose dans ce domaine, ça risque donc de me prendre du temps et d’être un beau bordel. On verra bien. Peut-être que dans trois semaines, j’écrirais un article de blog larmoyant expliquant que c’est trop compliqué, que j’abandonne tout, et que je préfère encore utiliser tout mon temps libre à zapper en continu sur Twitch.

(TODO: insérer ici une image prise sur Twitch de gens pixelisés déguisés en serpent qui font passer des arcs électriques dans de la vapeur d’eau pour voir si ça la disperse et qui ensuite font de la peinture sur corps).

À propos de corps

Petit rattrapage de tous les précédents articles n’ayant pas d’images de femmes rondes.

Voici Nicole Nurko, dont je vous ai précédemment parlé :

Ainsi que Kim Manana :

Et la sublime-bling-bling Gabriella Lascano :

Pro-tip : lorsque vous voulez parcourir un compte Instagram (d’une femme ronde ou pas) et que vous ne voulez pas vous inscrire car, comme dit précédemment, vous en avez marre de vous créer des comptes de partout, vous pouvez remplacez dans l’url « instagram.com » par « imginn.com ». Vous aurez toutes les photos sans les pop-ups lourdingues.

À la chopraine, comme on disait dans les années 1990.