A very long time ago (two decades), in a distant land (Belgium), a promising high school student (me) discovered calculator programming (a casio graph 60).
It was very rudimentary, no functions, no strings, but access to the screen and three colors offered great perspectives…
When the batteries were recharging, I remember sleepless nights writing my programs on paper, planning to use the 29 variables to finish the next day in math class (but not only).
My first program was an artillery game (which had some success since the whole class had shared it in frenzied tournaments). Each player, in turn, entered the amount of powder and the angle. The shell hollowed out the ground a little on impact and you won by hitting the opposing tower. It was of course necessary to adapt to the landscape and to the wind which changed from one part to another.
Then I discovered QBasic, a revolution since I then had functions, character strings and above all, a 320x200 screen in 256 colors (a true orgy)…
I then went through Lisp, Ada, Pascal, Java, C, Nasm, PHP, C ++ and then I discovered OpenGL…
As we do not develop programs as we did at the time, I started by following a tutorial on the subject (it has since disappeared …). In 7 rather quick steps, we obtain a 2048 all that is honorable.
In order to customize the version a bit, I decided to code the values
of the tiles on 1 byte (
uint8_t). It is therefore
impossible to obtain 2048 since when we add 128 + 128, the result
overflows and gives 0 (modulo 256). Hence the name: byte
overflow, a nod to the vulnerability of the same name.
I admit, in real life I typed in “uint_8” without paying attention and when I saw the overflow, I thought “ho, the good idea”. Typical example of serendipity.
After this tutorial, I had to discover the Loader system to do a splashscreen, install the SDK and Android NDK (disclosure, SDK installs via android studio and NDK installs separately), all the intricacies of deployment via Google Play and that kind of details that nobody tells you about (like creating a windows installers, or the creation of packages rmp or deb).
The first step is done, the application works and is available on Google Play. I still have a few details to settle. I would like to get my hands on internationalization and sound management. I would also like to set up a CI to publish packages for android, windows and linux automatically.
Edit on January 2024: Following a big cleaning, this project does not exists anymore.