Lezzet İmparatorluğu
Three.js · Vite · Capacitor · NestJS · WebSocket · node:sqlite · Docker

Lezzet İmparatorluğu bir restoran tycoon oyunu. Kaldırımdan geçen yayalar tabelanıza, itibarınıza ve fiyatlarınıza bakarak içeri girip girmemeye karar veriyor; siz masaya oturtuyor, sipariş balonunu okuyor, doğru mutfak istasyonunu seçip servis ediyorsunuz. Çay ikramı bahşişi ikiye katlıyor, yanlış yemek para ve itibar kaybettiriyor. Tedarik siparişi yaklaşık yirmi beş saniyede geliyor; menü fiyatını artırmak marjı büyütüyor ama kuyruğu inceltiyor.
Tek bir web kod tabanı. İstemci Vite ve Three.js - prosedürel olarak kurulan 3D sahne, delta-tick simülasyon ve dokunmatik öncelikli arayüz - ve aynı derleme Capacitor üzerinden Google Play'e çıkıyor; native tarafta AdMob, Google ile giriş ve Play Games Services var. Backend NestJS: bakiye ve bildirim güncellemeleri için WebSocket push, scrypt ve HMAC token ile kimlik doğrulama, beş saniyede bir otomatik kaydedilen bulut kayıtları.
Veri deposu bilinçli olarak küçük: node:sqlite, yani Node 24'ün içine gömülü SQLite modülü - ayakta tutulacak harici bir veritabanı yok. Tümü bir Docker imajına derleniyor ve GitHub Actions üzerinden, girişte sağlık kontrolüyle birlikte bir VPS'e dağıtılıyor.
En zor kısım teknik değildi. Tüm geliştirmeler satın alındığında tycoon döngüsü kendini tekrar etmeye başlıyor; benzer oyunların bunu nasıl kırdığını - prestijle döngüyü sıfırlamak, olaylarla yeni değişken enjekte etmek, ya da döngüyü bir bulmacaya bağlamak - çekirdek döngünün üzerine lig, sıralama ve hediye katmanlarını kurmadan önce araştırıp yazdım.
Öne çıkanlar
- Tek web derlemesi hem tarayıcı oyunu hem Capacitor ile Google Play uygulaması olarak çıkıyor
- Tek veri deposu node:sqlite - Node 24'ün içine gömülü SQLite - harici veritabanı yok
- Beş saniyede bir otomatik kaydedilen bulut kayıtları, bakiye ve bildirimler için WebSocket push
- Geç oyun tekrarı üzerine yazılmış bir araştırmanın ardından çekirdek döngüye eklenen lig, sıralama ve hediye katmanları