Awesome
<img src="flappy.gif" alt="game" width="250px">🐦 Flappy Bird in C: APK Size < 100 Kilobytes! 🚀
📜 History:
It all started in 2021 when I stumbled upon rawdrawandroid. My goal was simple: to create a game with the minimal APK size, yet still be understandable and interesting. 🎯
The idea of making a Flappy Bird clone seemed logical, given that this game had already been ported to many languages. 🐤
In 2021, I also studied Raylib, but my first attempt to make a game in C++ using ImGui failed. 💔
The problems were everywhere: the APK size was around 1 MB, the game crashed, and the APK only contained the armeabi-v7a library (Google's 2022 requirements state that the arm64-v8a library must be included!). 🤯
💡 Motivation:
In September 2024, seeing Flappy Bird in C# in the Raylib Discord channel, I decided to try implementing this game in C for Android with an APK size of less than 100 KB. 🚀
The idea seemed crazy, but the competitive interest took over. 💪
🛠️ Implementation:
I started by compiling a "Hello World" in C and packaging the library into an APK. 📦
Sounds were compressed to MP3 format, and OpenSLES was used for playback. 🎵
For PNG file decoding, I chose upng. 🖼️
All of this was combined using OpenGL ES 2, shaders, and Android Native Activity. 🎮
🔧 Build:
- Download Visual Studio 2022.
- Install components: C++ Desktop Development and C++ Mobile Development.
- Download Android Studio (for apktool, sdk, ndk).
- Install NDK 27.1.12297006 and Android SDK Platform 30.
- Configure the project for "Debug ARM" and make changes to build.bat.
- Compile via CTRL + B. 🛠️
📄 Copyright:
I do not claim any copyright. The rights to the game and resources belong to DotGEARS. 📜
🌟 Inspiration:
🌠 Star History
🎉 Enjoy the game and don't forget to star it! 🌟