rpgmaker / README.md
Cnass's picture
Claude Opus 5.5
Fix missing game files on Android and unsigned release APKs
a859d16
|
Raw History Blame Contribute Delete
4.96 kB
---
title: Riaslink Port Builder
emoji: 🏮
colorFrom: yellow
colorTo: red
sdk: docker
app_port: 7860
pinned: false
license: apache-2.0
---
# Riaslink Port Builder
Bir RPG Maker MV/MZ web dışa aktarımını (`www/` klasörü) Android APK'ya
dönüştürür ve oyuna otomatik olarak **taverna temalı bir menü** ile
**FPS sayacı** eklentisi enjekte eder.
Bu Space, [Ludens](https://github.com/yoimerdr/ludens) projesinden yalnızca
"Android WebView port" fikrini ödünç alır (Ludens'in kod tabanı doğrudan
kullanılmaz); menü, eklentiler ve build pipeline'ı sıfırdan yazılmıştır.
Ayrıntılar için `android-template/README.md` dosyasına bakabilirsin.
## Mimari
Arayüz düz **FastAPI + statik HTML/CSS/JS** ile yazılmıştır — hiçbir UI
framework'ü (Gradio, Streamlit vb.) kullanılmaz. Bunun nedeni tarihsel:
ilk sürüm Gradio ile yazılmıştı, ama o sürümün kullandığı Gradio sürümünde
(5.9.1) art arda farklı iç route/şema hataları çıktı — her düzeltme farklı
bir iç mekanizmayı bozdu. Az sayıda, sade route'a sahip kendi FastAPI
uygulamamızı yazmak, üzerinde kontrolümüz olmayan bir kütüphanenin iç
davranışına bağımlı kalmaktan daha güvenilir çıktı.
```
hf-space/
├── app.py FastAPI backend: form, build başlatma, SSE log akışı, indirme
├── build_pipeline.py Asıl iş: zip enjeksiyonu, plugin kaydı, Gradle çağrısı
├── static/
│ ├── index.html Build formu (taverna temalı)
│ ├── style.css Aynı --ria-* renk paleti, RIA_TavernMenu.js ile tutarlı
│ └── app.js Form gönderimi, sürükle-bırak, canlı log (Server-Sent Events)
└── android-template/ Native Android port + menü eklentileri (bkz. kendi README'si)
```
**Backend route'ları:**
| Route | Ne yapar |
|---|---|
| `GET /` | Build formunu döner (`static/index.html`) |
| `POST /api/build` | Formu + zip'i alır, arka planda build başlatır, `{build_id}` döner |
| `GET /api/build/{id}/stream` | Server-Sent Events ile canlı log satırları |
| `GET /api/build/{id}/download` | Tamamlanan APK'yı indirir |
Her build, bellekte tutulan bir `BuildState` nesnesiyle takip edilir (log
satırları + durum). `stream_build_log`, bu state'i yarım saniyede bir
kontrol edip yeni log satırlarını tarayıcıya SSE ile akıtır; build bitince
(`success` ya da `failed`) akış otomatik kapanır ve indirme linki (varsa)
gösterilir. Tek process içinde çalıştığı için harici bir kuyruk/veritabanı
gerekmez — bu, tek instance'lı bir Space için yeterlidir.
## Nasıl çalışır
1. RPG Maker'da projeni web'e dışa aktar (Deploy Masterpiece).
2. Oluşan `www` klasörünü (ya da içeriğini) zip'le.
3. Bu Space'e yükle, uygulama adı / paket adı / versiyon bilgilerini gir.
4. "APK Oluştur" — arka planda `android-template/` projesi kopyalanır,
`www/` senin oyununla değiştirilir, `RIA_FPSCounter.js` ve
`RIA_TavernMenu.js` eklentileri `js/plugins/` altına konur ve projenin
kendi `js/plugins.js` dosyasına (mevcut eklentilerine dokunmadan)
kaydedilir, ardından Gradle ile APK derlenir. Build günlüğü sağ panelde
canlı olarak akar.
## Release imzalama
Release APK'lar varsayılan olarak konteynerin debug anahtarıyla imzalanır
(kurulabilir, ama Space yeniden başladığında anahtar değişir ve yeni sürüm
eskisinin üzerine güncelleme olarak kurulamaz). Kalıcı imza için Space
ayarlarında şu **secret**'ları tanımla:
| Secret | Değer |
|---|---|
| `RIASLINK_KEYSTORE_B64` | `.jks`/`.keystore` dosyasının base64 hali (`base64 -w0 release.jks`) |
| `RIASLINK_KEYSTORE_PASSWORD` | keystore şifresi |
| `RIASLINK_KEY_ALIAS` | anahtar alias'ı |
| `RIASLINK_KEY_PASSWORD` | anahtar şifresi (boşsa keystore şifresi kullanılır) |
## Sınırlamalar
- `release` build'i imzasızdır (unsigned) — kendi keystore'unla imzalamadan
cihaza kurulamaz. Test için `debug` seçeneğini kullan.
- Build süresi, oyunun asset boyutuna ve Space'in donanımına bağlı olarak
birkaç dakika sürebilir.
- Bu Space'in Docker imajı derleme sırasında Android SDK ve Gradle
indirdiğinden, ilk build (soğuk başlatma) internet erişimi gerektirir;
Hugging Face'in Space build ortamı bunu otomatik sağlar.
- Build durumu bellekte tutulur; Space yeniden başlarsa devam eden build'ler
kaybolur (yeniden başlatmak gerekir).
## Yerel geliştirme
```bash
docker build -t riaslink-port-builder .
docker run -p 7860:7860 riaslink-port-builder
```
Ya da Docker olmadan, sadece Python tarafını test etmek için:
```bash
pip install -r requirements.txt
python3 app.py
# http://localhost:7860
```
(`android-template/` build'i için yine de Android SDK + Gradle gerekir —
bu yol sadece formu/arayüzü test etmek içindir.)
Android projesini Space dışında (örn. Android Studio'da) elle de
açabilirsin — bkz. `android-template/README.md`.