MCPcopy Index your code
hub / github.com/VadimBoev/FlappyBird

github.com/VadimBoev/FlappyBird @v1.9.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.9.2 ↗ · + Follow
147 symbols 337 edges 19 files 10 documented · 7% updated 51d agov1.9.2 · 2026-05-17★ 2,4235 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

game

Readme на русском языке

Dev blog in Telegram (ENG/RU)

🐦 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:

Visual Studio Code (Windows)

  1. Create .env from .env.example
  2. Run build.bat

Linux and macOS (Makefile)

For Linux and macOS users, you can build the project using the provided Makefile:

  1. Install the Android command-line tools.
  2. Set up your environment variables in a .env file in the project root directory (see .env.example for an example).
  3. Build the project: bash cd FlappyBird make

For more detailed instructions, please refer to BUILDING.md.

The signed APK will be generated at: FlappyBird/app/build/outputs/apk/FlappyBird-signed.apk

📄 Copyright:

I do not claim any copyright. The rights to the game and resources belong to DotGEARS. 📜

🌟 Inspiration:

🌠 Star History

Star History Chart


🎉 Enjoy the game and don't forget to star it! 🌟

Core symbols most depended-on inside this repo

ScaleY
called by 68
FlappyBird/app/src/main/jni/game.c
ScaleX
called by 52
FlappyBird/app/src/main/jni/game.c
Log
called by 48
FlappyBird/app/src/main/jni/utils.c
LoadTexture
called by 42
FlappyBird/app/src/main/jni/texture.c
ToApp
called by 17
FlappyBird/app/src/main/jni/android_native_app_glue.c
RenderTexture
called by 13
FlappyBird/app/src/main/jni/texture.c
android_app_write_cmd
called by 12
FlappyBird/app/src/main/jni/android_native_app_glue.c
read_bits
called by 9
FlappyBird/app/src/main/jni/upng.c

Shape

Function 124
Class 18
Enum 5

Languages

C93%
C++7%

Modules by API surface

FlappyBird/app/src/main/jni/upng.c40 symbols
FlappyBird/app/src/main/jni/android_native_app_glue.c36 symbols
FlappyBird/app/src/main/jni/game.c25 symbols
FlappyBird/app/src/main/jni/audio.c9 symbols
FlappyBird/app/src/main/jni/texture.c8 symbols
FlappyBird/app/src/main/jni/main.c7 symbols
FlappyBird/app/src/main/jni/android_native_app_glue.h6 symbols
FlappyBird/app/src/main/jni/init.c4 symbols
FlappyBird/app/src/main/jni/utils.c3 symbols
FlappyBird/app/src/main/jni/upng.h3 symbols
FlappyBird/app/src/main/jni/mouse.c3 symbols
FlappyBird/app/src/main/jni/shaders.c2 symbols

For agents

$ claude mcp add FlappyBird \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact