Byte Overflow

25 Mai 2018

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, à économiser l'utilisation des 29 variables pour terminer le lendemain en cours de math (mais pas que).

Mon premier programme était un jeu d'artillerie1. 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écouver 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++ et j'ai découvert OpenGL et la 3D...

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. Parmis les frameworks, je me suis fixé sur Qt qui a le bon goût d'être en C++2.

Comme on ne développe pas des programmes comme on le faisait à l'époque3, j'ai commencé par suivre un tutoriel sur le sujet. 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.

Capture Capture

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'android4, toutes les subtilités du déploiement via Google Play et ce genre de détails dont personne ne vous parle5

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.

Si ce projet vous intéresse, vous pouvez suivre ces liens :


  1. Qui eu un certain succès puisque toute la classe se l'était partagé dans des tournois endiablés.

  2. 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.

  3. En fait, on peut quand même faire des applications en QBasic ... Il faut juste passer via dosbox

  4. spoiler : le SDK s'installe via android studio et le NDK s'installe à part.

  5. Comme la création d'un installeurs windows, ou la création de packages rmp ou deb.