Son 5 aydır AI modellerini (Claude, Codex) kullanarak Flutter, Riverpod ve Firebase tabanlı bir mobil oyun altyapısı kuruyorum.
Başta her şeyi AI'a bırakmanın projeyi hızlıca "spagetti koda" dönüştürdüğünü fark ettim. Bu yüzden kod yazmayı durdurup önce bir
"Mimari Anayasa" belirledim. Şu an sistemi kağıt üzerinde tasarlayıp, AI'a sadece kurallara uygun amelelik yaptırıyorum.
Sistemin temel dinamiklerini, planladığım modül haritasını ve nihai hedefimi aşağıya bırakıyorum. Tecrübeli arkadaşlardan
"Şu yaklaşımın yanlış" veya
"Canlıda şu maddeden dolayı patlarsın" tarzı acımasız eleştiriler bekliyorum.
1. Kurallar ve Denetim Mekanizması (Linters & Clean Architecture)
AI'ın katmanları delmesini önlemek için projeye 60'tan fazla
Custom Dart Lint kuralı ekledim AI hata yaparsa lint sistemi hata fıraltıyor ve ai mecbur düzeltmek zorunda kalıyor.:
- Clean Architecture: Domain katmanına Flutter/Firebase importu veya UI'dan Repository çağrısı yapmak yasaktır (Linter build'i durdurur).
- Server-Authoritative: İstemci (Client) aptaldır. Hasar, XP, altın, kutu RNG'si veya ELO asla telefonda hesaplanmaz. Sadece intent yollanır, Cloud Functions (CF) kararı verir.
- Sıfır Yatay Bağımlılık: Modüller (features/) birbirini import edemez. Sadece Event Spine (Olay Omurgası) üzerinden haberleşirler.
Burası işin Kodlama kısmıydı Peki proje tamamlanınca ne olacak.
2. Sistemin Modül Haritası (Feature List) Çekirdek Motorlar (Core Foundation - Sistem Kalbi)
Sistemdeki tüm oyunların ortak olarak kullanacağı, hiçbir oyuna özel mantık içermeyen katmandır.
- Güvenlik ve Kimlik (core/auth & core/user_identity): Kullanıcı girişleri ve oyuncu profil verisinin (AppUser) tek sahibi. Veri sınırları ADR-023 ile kesin olarak çizilmiştir.
- Vezne ve Ödül (core/reward_distributor): Sistemdeki tek ödül dağıtım noktasıdır (ADR-022). Görevler, başarımlar veya maç sonu altın/XP veremez; sadece bu fonksiyona istek atarlar.
- Kayıt ve Hafıza (core/stats_engine): Maç istatistiklerini (totalWins, playTime vb.) tutan, hiçbir şeye karar vermeyen saf hafızadır. Başarımlar buradan beslenir.
- Laboratuvar ve Takvim (core/dynamic_config & core/experiments): LiveOps etkinliklerinin, A/B testlerinin ve global konfigürasyonların yönetildiği tek merkezdir.
- Diğer Çekirdekler: core/economy, core/analytics, core/notifications, core/theme ve core/events.
2. Oyun Fiziği Katmanı (Game & Plugins - Dokunulmaz)- game_plugins/Castle Duel : Kendi fiziği ve kuralı olan mevcut oyunumuz. Esnektir, yarın başka bir oyunla (örn: Match3) değiştirilebilir (ADR-015).
- game/character_engine: Karakterlerin görsel render (animasyon/VFX) motoru.
- game/inventory: Eşya uyumluluk (Item Compatibility) ve envanter mantığı.
3. İlerleme ve Motivasyon (Tier 1 Features)
Oyuncuyu oyunda tutan, stats_engine'den okuyup reward_distributor'a emir veren mantık katmanlarıdır.
- features/achievements: Kural motoru (Rule Engine) ile çalışır. JSON kurallarına göre çalışıp kalıcı ödüller tetikler (ADR-024).
- features/quest: Günlük/Haftalık sıfırlanan görev sistemi (ADR-017).
- features/progression & features/mastery: Oyuncunun ana seviyesi (Level/XP) ve silahlara/karakterlere özel ustalık seviyeleri.
- features/daily_streak: Günlük giriş serisi ödül sistemi.
- features/trophy_road: Veri sahibi olmayan, diğer ilerlemeleri birleştirip ekrana çizen ana ilerleme yolu (Aggregator).
4. Rekabet ve Ekonomi (Tier 2 Features)- features/competition: ELO hesabı, Lig sistemi (Bronz, Gümüş vb.) ve sezonluk sıfırlamaların yönetimi (ADR-026).
- features/leaderboard: Rekabet sonuçlarının (Sıralamaların) gösterildiği arayüz.
- features/battle_pass: Ücretsiz ve Premium (VIP) ödül yolu.
5. Sosyal Ağ ve Vitrin (Tier 3 Features)- features/friends & features/clans: RTDB üzerinden çalışan anlık çevrimiçi (presence) durumu ve klan yapısı.
- features/inbox: Sistemden gelen ödüllerin toplandığı (claim edildiği) posta kutusu.
- features/profile, features/titles, features/match_history: Oyuncunun geçmiş maçlarını, kazandığı unvanları ve detaylı kimliğini diğer oyunculara sergilediği vitrin modülleri.
3. Hedef: Bu Sistem Bitince Ne Olacak?
Amacım tek bir oyun yapmak değil. Bu yapı bittiğinde elimde bir
"White-Label Engine" (Şablon Motor) olacak.
- core/ ve features/ klasörleri (yukarıdaki tüm modüller) tamamen sabit kalacak.
- Sadece game_plugins/ klasörü altındaki "Castle Duel" oyununu silip, yerine "Match3" plugin'i koyduğumda, tek satır altyapı kodu değiştirmeden 2 hafta içinde yepyeni bir oyun çıkarabileceğim değişecek tek şey görseller UI ve UX katmanları olacak.
- Oyun tipine göre bazı modüller olmayabilir mesela bir Match3 yani şeker patlatmaca oyununda battle pass yok ise bu modülü devreden çıkaracağız klasör silinecek sadece 2 noktada kodda 2 satır silinecek ve bu modül artık bu oyunda kullanılmaycak. Yada lig istemediysek league klasörünü siliyoruz olay bitiyor. yada clan olmaycakmı klan klasörünü siliyorsun sistem onu tamamen unutuyor.
Proje bayağı yol aldı ilerde bu işe publisher bulma yada hızlı oyun çıkarma fikrine ne diyorsunuz