Byte Overflow

Divulgâchage : Byte Overflow est un clone sur 8 bits du célèbre 2048. Faites glisser les tuiles dans les quatre direction, deux tuiles de valeur identique fusionnent en s’additionnant. Faites déborder la valeur en fusionnant deux tuiles 128.

Il y a très longtemps (deux décennies), dans une contrée lointaine (la Belgique), un lycéen prometteur (moi) découvrait la programmation sur calculatrice (une casio graph 60).

C’était très rudimentaire, pas de fonctions, pas de chaines de caractères, mais l’accès à l’écran et à trois couleur offrait de superbes perspectives…

Lorsque les piles étaient en train de recharger, je me souviens de nuits blanches à écrire mes programmes sur papier, à planifier l’utilisation des 29 variables pour terminer le lendemain en cours de math (mais pas que).

Mon premier programme était un jeu d’artillerie (qui eu un certain succès puisque toute la classe se l’était partagé dans des tournois endiablés). Chaque joueur, à son tour, entrait la quantité de poudre et l’angle. L’obus creusait un peu le sol à l’impact et vous gagniez en touchant la tour adverse. Il fallait bien sûr s’adapter au paysage et au vent qui changeait d’une partie à l’autre.

Puis j’ai découvert le QBasic, une révolution puisque je disposais alors de fonction, de chaines de caractères et surtout, d’un écran 320x200 en 256 couleurs (une véritable orgie donc)…

Je suis ensuite passé par Lisp, Ada, Pascal, Java, C, Nasm, PHP, C++ puis j’ai découvert OpenGL…

Pour revenir au présent, j’ai décidé de me remettre au développement de petites applications. Dans l’idée : de petits jeux multi-plateformes. Parmi les frameworks, je me suis fixé sur Qt qui a le bon goût d’être en C++, tout en permettant de déclarer son interface graphique dans un langage proche de l’idée « HTML/CSS/Javascript » (QML), bref que du bonheur.

Comme on ne développe pas des programmes comme on le faisait à l’époque, j’ai commencé par suivre un tutoriel sur le sujet (il a disparu depuis…). En 7 étapes plutôt rapides, on obtiens un 2048 tout ce qu’il y a d’honorable.

Histoire de personnaliser un peu la version, j’ai décidé de coder les valeurs des tuiles sur 1 octet (uint8_t). Impossible donc d’obtenir 2048 puisque lorsqu’on additionne 128 + 128, le résultat déborde et donne 0 (modulo 256). D’où le nom : byte overflow, clin d’oeil à la vulnérabilité du même nom.

J’avoue, en vrai j’avais typé en uint_8 sans y faire attention et lorsque j’ai vu le débordement, je me suis dit « ho, la bonne idée ». Exemple typique de sérendipité.

Après ce tutoriel, il m’a fallu découvrir le système de Loader pour faire un splashscreen, l’installation du SDK et du NDK d’android (divulgâchage, le SDK s’installe via android studio et le NDK s’installe à part), toutes les subtilités du déploiement via Google Play et ce genre de détails dont personne ne vous parle (comme la création d’un installeurs windows, ou la création de packages rmp ou deb).

La première étape est faite, l’application fonctionne et est disponible sur Google Play. Il me reste encore quelques détails à régler. J’aimerais me faire la main sur l’internationalisation et la gestion du son. J’aimerais aussi mettre en place une CI pour publier des packages pour android, windows et linux automatiquement.

Edit de janvier 2024 : Suite à un grand nettoyage, le code source et le projet a été supprimé.