J'avais été assez surpris d'entendre Nemau chercher à pousser jusqu'à effacer des sauvegardes ou obliger qu'elles soient uniquement sur serveur pour assurer que la permadeath soit effectivement de la permadeath. Outre le défi technique (sorte de course à l'armement entre le hacker et le joueur), je crois qu'il ne faut pas perdre de vue qu'il ne s'agit que d'un jeu. Pas d'un concours, d'un examen ou de la finale olympique.
Okay, copying a file is not playing fair, but it's a game, right ? there is no contest, there is no price. If you want to have a contest like a speedrun, the game itself is not quite what you need. What you need are referees, like with any sports. If you spoil the game by cheating against the game rules, why should there be any punishment beyond the fact that you've spoiled yourself the chance of experiencing what the game has to offer ? If the player want that hard to stop the game, restore a file, enter the game again instead of keep playing another game, maybe it means the game fails to provide interesting sessions when you start ? Can you protect against time-machine-like system-wide backup/recovery ? Should you ?
Ça veut dire qu'on doit avoir la possibilité de tricher sans qu'il n'y ait d'autre punition que le fait que le jeu perd son intérêt. Pourquoi préfèrerait-on quitter le jeu, recopier le fichier, redémarrer le jeu plutôt que de refaire une partie? S'il est effectivement désagréable de devoir tout reprendre, c'est peut-être que le contenu généré automatiquement n'est pas suffisamment intéressant. Tu peux essayer de "cacher" le fichier de sauvegarde, mais il y aura toujours moyen de le manipuler depuis l'OS à moins de commencer à utiliser un hardware de sécurité spécifique.
Par contre, une copie du fichier de sauvegarde peut permettre de faire essayer une expérience passée à un copain de passage.
Friday, March 31, 2017
c'est rien qu'un jeu.
Monday, March 27, 2017
Bamboo Spark to the rescue
J'avais envisagé m'offrir une noteslate pour mon anniversaire. Mais même un an après la date de sortie annoncée dans l'appel à pré-commandes, il n'y a toujours pas de Noteslate disponible. Par contre, j'ai reçu la très sexy et un peu curieuse "bamboo spark". Une tablette graphique nomade et autonome, en somme.
I had hope that noteslate would match that dream. I had hope that staedler digital pen would fulfill that dream. I had hopes that hacking code for the cybook would make that dream close to reality. It didn't worked. This week-end, my family gave me a Bamboo Spark unit. Something that captures pen strokes, even when there is no computer around. You just write on plain paper with a modified rollerball pen. When close to an Androïd/iOS device, you can then swap pages that are in the device's memory.
From there on, you can send your notes to different data-sink applications on the phone/pad you have, though unfortunately, with my fairy's pad, twitter and blogger applications don't seem to work.
On trace, ça enregistre. On synchronisera avec un appareil Androïd (ou iOS pour les autres) plus tard. Les traits sont nets, bien plus précis et fiables qu'avec le décevant stylo numérique de chez Staedler, malgré la présence ici et là de "lignes fantômes" que je dois encore retoucher dans gimp. C'est aussi beaucoup plus propre qu'une photo de bloc-note et même que la plupart des scans.
Pour les schémas du type "UML" et sans doute pas mal de croquis d'études, c'est assez chouette. Par contre, peu probable que je puisse m'en servir au bureau pour encoder directement les comptes-rendu de réunion: la reconnaissance d'écriture n'est présente ni dans l'application Android, ni dans l'appareil lui-même, mais uniquement sur les serveurs de chez Wacom. Pas sûr que le boss apprécierait que tout ce qui se dit en salle de réunion termine là... Et pour le contenu du blog, on repassera: la fonction n'est disponible que moyennant abonnement premium :(
Wacom may disclose all of Your Personal Data to service providers [for data processing, storage and transmission, and other form of support for the application] and to legal authorities [in case wacom believes this is required by law]. Wacom will not sell or disclose your personal data to other third parties.I thought I had found a windows application that would allow me to skip the need for a android device at hand (for use in the office, that is), but it is apparently for another device. I also find it strange that it leaks usage information through Google Analytics. The era of Micro Application is so far away ! (in any case, as mentioned in the Inkspace license contract, "You can withdraw your consent by opting-out the use of Google Analytics. The opt-out is available under /Settings/About/Google Analytics/ within the Inkspace App").
Sunday, March 26, 2017
You are Here ...
Bien, j'ai enfin la possibilité de décider dans l'éditeur de niveau d'où va commencer la caméra. Plus besoin de patienter que ça scrolle sur Bilou pendant 1 minute avant de commencer un test. Je pense que je suis officiellement prêt à reprendre le level design sur la dernière phase de School Rush ...
Oh. Maybe you want to know what happened. Well, previously, you had to manually define the start location in the map, and any round trip through the level editor would reset that to top-left corner of the map. Pretty annoying, for a "climb up" level, huh ? That's now fixed. The editor understands which object has the camera focus and rewrites the tiled map initialization lines so that the level is preset at the player's location.
Tags: done, level editor, rush
Wednesday, March 22, 2017
Pico8 spacemaze generator
J'avais bien aimé le jeu "spaceman 8", un petit jeu d'arcade pour Pico8 consistant à ramasser des gemmes dans des dédales en micro-gravité. Kometbomb, le développeur, a écrit dernièrement un assez sympatique article sur son blog pour expliquer le fonctionnement du générateur aléatoire de niveaux. Contrairement à un générateur de labyrinthe, il n'est pas souhaitable ici d'utiliser l'entièreté de l'espace, et contrairement à un générateur de donjons, les longs corridors ne sont pas franchement un plus.
I loved roughly as much reading kometbomb's blog post on the random level generator they used. It had to be simple, and yet it does a great job at hiding items on a network of interconnected galleries by emulating dwarves digging dirt and stealing each others' treasures.
Le concept de base est d'avoir N objets à cacher dans le labyrinthe, et de les placer initialement tous dans la seule case vide (au centre de la "mine"). On va ensuite jouer aux nains creuser:
- à son tour, chaque nain choisit un trésor et le vole;
- il une dalle non-creusée voisine d'au moins une (et au plus 2) dalles déjà creusée, creuse et y dépose son trésor.
kometbomb rajoute une contrainte supplémentaire sur la présence de cellules creusées en diagonale de la cellule choisie (au plus une). Une sorte d'heuristique, j'imagine.
Je serais curieux de savoir si ce genre de mécanisme peut s'adapter pour remplacer les nains par ... disons ... des Bilous ?
Sunday, March 19, 2017
LEDS ghost layer
Being for a week-end on my former laptop, I tried showing selectively the layers of an older build, and I could have the "ghost" layer appearing when showing BG1_SUB too. Curiously, it also shows when no layer at all is enabled. Let's just work on the hypothesys that the "Emulation > Layers" checkboxes in desume UI invert what is programmed in the picture engine registers, not hiding the layers. As a result, if defaults (or previous) contents of this layer is "use the same map slot as the BG3 (tileset), use the same colors and characters as BG1 (because the ghost layer is obviously *not* BG1, which is the widgets' text). then you get the ghost out of uninitialized registers.
J'avais été surpris par cette couche qui avait la forme des "planches de graphisme", mais utilisant des caractères ASCII 16 couleurs, sur le background #1. Bien sûr, ce layer n'apparaît pas quand le programme tourne normalement, seulement si je coche sélectivement les layers (une technique que j'utilisais tout en jouant à Donkey Kong Country pour essayer de découvrir les passages secrets).
Autre chose intriguante la "couche fantôme" reste présente même quand tous les layers sont dé-cochés. J'en viens à penser que desmume est programmé avec quelque-chose comme "shown_layers = program_layers XOR gui_layers" alors que l'interface laissait supposer qu'on aurait "show_layers = program_layers AND gui_layers". En clair, cocher un layer qui n'a pas été activé par le logiciel qui tourne sur la DS émulée le montre plutôt que de le cacher.
Tags: desmume, level editor
Wednesday, March 15, 2017
Et pourquoi pas Construct 2 ?
C'est un aspect qui surprend: non content de faire mon jeu, je fais aussi les outils pour mon jeu, plutôt que d'utiliser un de ces nombreux game-makers disponibles aujourd'hui. Disons par exemple Construct 2.
Je me suis donc un peu documenté et l'outil à l'air de permettre des choses un peu sophistiquées telles que le koopa-troopa, à la fois ennemi et arme contre les ennemis.
Je trouve par contre désagréable que le jeu soit obligatoirement décrit par la succession d'éditions qui ont conduit à sa construction. C'est le problème général des makers type "click-and-play", où il n'y a au final pas moyen d'organiser, réutiliser, décomposer et recomposer un nouveau jeu à partir d'anciens éléments. Il y a bien une représentation texte (xml) de la logique du jeu, mais on reste "verrouillé" par le fabricant de construct, dépositaire des composants de base. Me colletiner un gros composant "Platform" qui fait 'tout ce que le vendeur a jugé bien pour un personnage de jeu de plate-forme' et devoir ruser à partir de là ? bof ... Que le moteur de jeu soit open-source et extensible est donc évidemment une priorité pour moi. Hors de question de retomber dans le travers du Game-Maker RSD dont les jeux se retrouvent interdit de diffusion à plus de 10 exemplaires, ou incapables d'utiliser des musiques originales.
Tags: game maker, who am I
Sunday, March 12, 2017
runMe truly resumed (hopefully)
Tout à coup, runMe re-marche.Et je ne m'en sens même pas fier après cette descente dans les arcanes du système de la libnds. Voyez-vous, j'avais fini par suspecter un crash du processeur ARM7, celui qui se charge de lire la position du stylet dans les puces-esclaves de la DS pour en informer l'ARM9, le processeur principal. Mais aucune de mes théories ne semblait fonctionner. J'ajoute un p'tit embryon de widget succeptible de me dire en temps réel où on en est dans le fichier XM (la musique, pour ceux qui reviendrait de looongues vacances ou d'une rédaction de thèse), et il ne me donne aucune information pertinente ... je branche ddd sur le processeur 7, et il déclenche les break-points n'importe comment, comme si les fonctions s'enchaînaient les unes derrière les autres et ce avant même que main() ne soit appelé.
Jusqu'à ce que je me rende compte que la connexion ddd-arm7 marche sans problème avec SchoolTest et que je sois pris d'un très gros doute: est-ce que je compile bien ce que je crois ? est-ce que j'ai bien dit à l'outil qui rassemble le binaire pour ARM7 et le binaire pour ARM9 en un seul et même fichier (.nds) que je voulais utiliser mon binaire pour ARM7 et non celui par défaut de devkitpro ...
Eh bien non.
Donc si vous me le permettez, je sors chercher un miroir pour me lancer des noms d'oiseaux.
Monday, March 06, 2017
Au coeur de runMe
Bin, puisque j'ai récupéré un émulateur capable de faire tourner runMe, essayons de réparer ce mécanisme de gestion de la config de l'écran, alors. Histoire de pouvoir enfin comprendre pourquoi les boutons se bloquent pendant qu'on joue au jeu ... et de pouvoir à nouveau travailler sur les maps (oui, il y a eu tellement d'interruptions imbriquées que c'est un miracle qu'on ait pas tous été téléportés sur StackOverflow ;)
- have a color for top screen's backdrop in 'pickWindow' and 'storWindow'
- [wish] have an 'open' button on storWindow (not only the obscure L+A)
- [done] reset the scrolling position when returning to GUI windows. -- implies disabling the onvbl handler of InfiniMap.
- [done] invoke GameLayers::apply() when entering game parsing mode
- [done] have translucent log in game mode.
- [done] don't forget to turn off 3D when you're leaving the game mode.
- [done] restore system colors in extended palettes.
- [done] replace the digscreen() system of runMe's MetaWindow.
- [done] make sure I still see logs through the digged screen.
- make sure InspectorWidget don't try to apply default LayersConfig ^^"
Saturday, March 04, 2017
bonus round
Petit moment de détente, je m'étais amusé à redessiner le premier niveau de Calimero avec les décors de la schoolzone. Même les pouvoirs spéciaux (casser les blocs ou voler) se transposent assez bien. Le hic par contre,c'est que des vies dans tous les sens comme le proposait mon frangin à l'époque, ce n'est intéressant que s'il y a suffisamment de niveaux par la suite ... Ce n'est pas intégrable comme un niveau normal de school rush donc, mais je me dis que comme niveau bonus, ça peut être sympa.
Pour ça par contre, il faudrait modérer la durée passée dans le niveau bonus, et que ramasser un nombre significatif de vies demande un jeu irréprochable. En provoquant le retour au jeu de base au premier coup encaissé, par exemple. Du coup, je me suis refait une palette de couleurs, hier, pour faire comme si le niveau était dessiné dans un livre plutôt que vraiment réel. Il pourrait alors prendre la place de la "boutique aux power-ups" avec un système où son accès n'est possible que contre des lettres sonnantes et trébuchantes... Un peu comme les niveaux bonus de sonic qui ne s'ouvrent que si on termine avec 50 anneaux.
Reste la question de l'activation de cette entrée. Je veux que ce soit le joueur qui en décide et qu'il puisse aussi le faire quand il vient de mourir, pas seulement en finissant le niveau. Mais il me faut aussi quelque chose de plus simple vu que le système de chargement des niveau ne permet pas de faire quoi que ce soit en attendant...
Alors pourquoi pas une plume d'or sur l'écran du bas qui se remplirait au fur et à mesure que le joueur ramasse des bonus et que l'on peut activer en la touchant dès que le quota est atteint? Elle passerait alors sur l'écran du haut, prête à emmener Bilou au niveau bonus dès qu'il en a fini avec ce niveau-ci.
Tags: calimero, COLLECT, level design, rush, school zone