Android için Flappy Bird, C diliyle yazıldı, 100KB'ın altında
(github.com/VadimBoev)- Flappy Bird, yalnızca C, Java/Kotlin olmadan, APK boyutu (armeabi-v7a +arm64-v8a) < 100 kilobayt
Geçmiş:
- 2021'de
rawdrawandroiddeposunu keşfetti - Mümkün olduğunca küçük APK boyutuna sahip basit bir oyun yapmak için motivasyon kazandı
- Flappy Bird oyununun bir klonunu yapmaya karar verdi
- İlk deneme C++ ve ImGui kullanılarak yapıldı ancak başarısız oldu
- APK boyutu yaklaşık 1 megabayttı
- Oyunun çökme ihtimali vardı
- APK yalnızca
armeabi-v7akütüphanesini içeriyordu - Proje yapısı karmaşıktı ve düzenli değildi
Motivasyon:
- 14 Eylül 2024'te Raylib Discord kanalında C# ile Flappy Bird yapan birini gördü
- C diliyle Android için APK boyutunu 100 kilobaytın altına indirme fikrine meydan okumak istedi
- Günümüzde APK boyutlarının 500 megabayta ulaştığı bir ortamda bunu 100 kilobaytın altında tutmak çok zor bir işti
- Sonunda başardı ama kolay olmadı
Gerçekleme:
- İlk olarak C ile Hello World derleyip, kütüphaneleri APK olarak paketleyerek USB üzerinden cihaza aktardı
- Oyunun kaynaklarını araştırmaya başladı
- İlk başta
oggformatında ses kullandı ancak sorun yaşadı; ardındanmp3formatına geçip sıkıştırdı - Sesi oynatmak için BASS kullanmaya çalıştı ancak ağır olduğu için OpenSLES çalışarak
MP3formatını sorunsuz okuyacak hale getirdi pnggörseller kullandı vestb_image'dan daha hafif olanupng'yi bularak kod çözme sorununu çözdü- OpenGL ES 2 + shader ile render alma, OpenSLES ile ses çalma,
upngilepngçözme ve Android Native Activity kullanıldı
Derleme:
- Visual Studio 2022'yi indirin
- Visual Studio Installer'ı açın
- "Edit"e tıklayın
- C++ klasik uygulama geliştirme, C++ mobil uygulama geliştirme seçeneklerini işaretleyin
- Android Studio'yu indirin (
apktool,sdk,ndkgerekli)- NDK 25.2.9519653'ü kurun (daha üst sürümler de kullanılabilir)
- Proje ayarı "Debug ARM" olarak yapılandırılmıştır ancak
build.batiçinde yolun düzeltilmesi gerekir CTRL + Bile derleyin
Telif hakkı:
- Telif hakkı iddia edilmiyor. Oyun ve kaynakların hakları DotGEARS'a aittir
İlham:
rawdrawandroid- Flapper
- Raylib
- ImGui
GN⁺ özeti:
- Bu proje, C diliyle Android için Flappy Bird oyunu geliştirmeye yönelik iddialı bir denemedir
- APK boyutunu 100 kilobaytın altında tutarken oyunu başarıyla gerçekleştirmiştir
- Kaynakları optimize etmek için OpenGL ES 2, OpenSLES ve
upnggibi çeşitli teknolojiler kullanılmıştır - Bu proje, yazılım mühendislerine küçük boyutlu ve verimli oyun geliştirme konusunda içgörü sunar
- Benzer işlevlere sahip projeler arasında Raylib ve
rawdrawandroidbulunur
1 yorum
Hacker News görüşleri
Uygulama mağazasında "10 MB altı uygulamalar" filtresi olsa keşke
İnsanların neden Flappy Bird oynadığına dair bir literatür incelemesi yazma deneyimini paylaşıyor
Nim ile benzer bir projeyi 2020'de yayımlama deneyimini paylaşıyor
Kod 4k LOC'nin altında
Super Mario Bros 40 KB idi
Android APK oluşturmak için Java ile glue code gerektiğini sanıyordu
1 MB'ın altında Android uygulamaları görmek gerçekten harika
Keşke adı "Floppy Bird" olsaymış
Şişirilmiş üçüncü taraf bileşenler yerine "özenle hazırlanmış" programlar/oyunlar/uygulamalar görmek ferahlatıcı ve güzel
rawdrawandroid kullanarak Android'de C uygulaması yazma tekniğinin raylib (ve diğer C framework'leri) ile de kullanılıp kullanılamayacağını merak ediyor