Pronto Pronto — Lateral Thinking Bulmaca Oyunu
Ortaçağ meyhanesinde bir barmene evet/hayır soruları sorarak gizemi çözmeye çalıştığın mobil bulmaca oyunu. Gemini API, Firebase ve Clean Architecture ile inşa edildi. Google Play, App Store ve Steam için geliştiriliyor.
Görseller
Proje Detayları
Proje Hakkında
Kasım 2025'ten bu yana geliştirmekte olduğum ilk ticari mobil oyunum. Ortaçağ meyhanesi atmosferinde geçen lateral thinking bulmaca oyunu: oyuncu, sessiz bir barmene evet/hayır soruları sorarak gizli bir hikayenin çözümüne ulaşmaya çalışır. Barmenin yanıtları Gemini API tarafından üretilir — her soru gerçek zamanlı AI değerlendirmesinden geçer.
Görsel varlıkların bir kısmı şu an geçici; arka plan, barmen animasyonları ve bira görselleri kız arkadaşım tarafından çiziliyor. Oyun tamamlandığında tüm varlıklar el yapımı olacak. Google Play, App Store ve Steam'de yayınlanacak.
Oyun Mekaniği
Oyuncu her oturumda en fazla 20 soru hakkına sahiptir. Her soru Gemini API'ye gönderilir; AI hikayenin bağlamına göre üç kategoriden birini döner:
**POSITIVE** — soru hikayeyle örtüşüyor
**NEGATIVE** — soru hikayeyle örtüşmüyor
**IRRELEVANT** — soru konuyla ilgisiz
Barmen yanıta göre farklı bir yüz ifadesi ve Türkçe metin gösterir. Yeterince ipucu toplayan oyuncu cevabını tahmin eder; doğruysa Dinar kazanır, yanlışsa Dinar kaybeder. Soru sorma klavye veya sesli komutla yapılabilir.
Teknik Mimari
Oyun **Clean Architecture** ile üç katmana ayrılmıştır:
**Domain** — Saf C#, sıfır Unity bağımlılığı. `SessionManager`, `StorySelectionService`, `UserService` bu katmanda yaşar
**Infrastructure** — Firebase Firestore ve Gemini API erişimi. `FirebaseStoryRepository`, `FirebaseUserRepository`, `ImageCacheService` bu katmanda tanımlanır
**Presentation** — Unity UI ve animasyon sistemi. Domain ile konuşur, Infrastructure'a hiçbir zaman direkt erişmez
Tüm bağımlılıklar **VContainer** ile enjekte edilir. Her sahnenin kendi `LifetimeScope`'u vardır; `AuthLifetimeScope` ve `GameLifetimeScope` birbirinden tamamen izole çalışır.
Soru-Cevap Akışı
```
Oyuncu girişi (klavye / ses)
→ SessionManager.TryAskQuestion() — kalan soru hakkı düşer
→ Firebase Cloud Function (HTTP)
payload: { soru, hikaye_bağlamı, çözüm, konuşma_geçmişi }
→ Gemini API → { yanıt: POSITIVE / NEGATIVE / IRRELEVANT }
→ ResponseManager → Türkçe metin seç (ResponseDatabase ScriptableObject)
→ SpeechBubbleView → ekranda göster
→ SessionManager geçmişe ekle
```
Final tahmin aşamasında barmen tıklanır, parşömen paneli açılır, oyuncu cevabını yazar.
Ekonomi Sistemi
Hikayeler Firestore'dan gelir; her hikayenin kendi `entryFee`, `winReward`, `losePenalty` ve art arda kazanma için `streakBonus1/2/3` değerleri vardır. Hiçbir ekonomi değeri kod içine gömülü değildir — tümü uzak yapılandırmadan okunur.
Geliştirme Durumu
Aktif geliştirme sürüyor. Tamamlanan sistemler: Firebase Auth + Google Sign-In, Firestore hikaye yükleme, Gemini API entegrasyonu, barmen animasyon sistemi, Ken Burns intro sekansı, Dinar ekonomisi.