Barbar Smash
Bir smash burger restoranı için tarayıcıda oynanan 3D restoran telaşı oyunu

Genel bakış
Barbar Smash, İstanbul Mimaroba’daki smash burger restoranı Barbar Street Food için yaptığım, Diner Dash tarzında 3D bir restoran oyunu. Restoranın salonu bir Viking uzun evi olarak yeniden yorumlanıyor ve logodaki miğferli, sakallı maskot Barbar salonu tek başına çeviriyor: aç barbar gruplarını masalara oturtuyor, siparişlerini gerçek menüden alıyor, burgerleri yuvarlak kalkanında taşıyor ve hesabı topluyor.
Oyun, yemek pişerken masada oynanmak için tasarlandı: bir gün yaklaşık bir buçuk ile üç dakika sürüyor ve ilk gün başlık ekranı olmadan başlıyor. Dikey ya da yatay tutulan telefonda, tablette ve fare ile klavyeyle masaüstünde oynanıyor; çevrimdışı da çalışan bir web uygulaması olarak yüklenebiliyor. Oyun Türkçe.
Oynanış
- Tek fiil, dokunmak: kapıdaki misafirlere, sonra boş bir masaya dokunup onları oturtuyorsunuz; sipariş almak, tepsi götürmek ve hesabı toplamak için masalara dokunuyorsunuz. Dokunuşlar sıraya giriyor, böylece rotanızı önceden planlayabiliyorsunuz.
- Gerçek menü: misafirler restoranın kendi burgerlerini, tavuklarını, yan ürünlerini ve içeceklerini sipariş ediyor; sonraki günlerde cheddar gibi ekstralar ve sos istekleri geliyor.
- Zincir ve SMASH: aynı işi art arda yapmak zincir bonusu kazandırıyor. Salon kaynamaya başlayınca Barbar kalkanını yere vuruyor: ızgaradakiler pişiyor, her misafirin sabrı artıyor ve zaman bir an duruyor.
- Fırlatılan içecekler: 5. günden itibaren kutular tezgâhtan alınıp salonun öbür ucundaki masaya fırlatılıyor.
- Altı çeşit misafir: köylüler, aç kurtlar, kalkan kızlar, çocuklu aileler, bir ozan ve muhafızlarıyla bir kral; her birinin kendi silüeti, rengi ve huyu var.
- On gün: her gün için en fazla üç yıldız, Barbar Pazarı’ndaki yükseltmeler için altın, sunulan yemeklerin Lezzet Defteri ve kahraman için kozmetikler. Kimse takılıp kalmıyor: bir yıldız sonraki günü açıyor.
Nasıl yapıldı
- Tarayıcıda 3D: ortografik kameralı bir Three.js sahnesi, instanced karakterler ve cihaza da uyum sağlayan düşük, orta ve yüksek kademeli bir kalite ayarı.
- Kod olarak modeller: karakterler, yemekler ve salon repodaki Blender Python betikleri; arayüzsüz Blender’da derlenip gltfpack ile paketleniyor. Modeller derlemede gzip ile sıkıştırılıp tarayıcıda açılıyor.
- Ses dosyası olmadan ses: müzik, efektler ve barbarların homurtuları Web Audio API ile sentezleniyor; her sesin görsel bir karşılığı var, bu yüzden oyun sessizde de tamamen oynanabiliyor.
- Deterministik simülasyon: oyun mantığı yalnızca tam sayı kullanıyor ve seed’li; bir günün tüm rastgele içeriği yüklenirken üretiliyor. Aynı komutlar her tarayıcıda aynı altını veriyor, yarım kalan bir gün 30 dakika içinde komut kaydından devam ediyor ve her günün yıldız hedeflerini bot oyuncular belirliyor.
- Yüklenebilir web uygulaması: telefonda saniyeler içinde açılıyor, çevrimdışı çalışıyor; yeni bir sürüm, oyunu yarıda kesmeyeceği ana kadar bekliyor.
Teknolojiler
- TypeScript, Vite, Three.js, postprocessing, WebGL 2, Web Audio API
- Blender (Python betikleri), gltfpack
- Yüklenebilir web uygulaması (PWA); restoranın web sitesinden ve Cloudflare Workers üzerinden yayında
Kalite
- Yaklaşık 1.840 Vitest birim testi ve gerçek bir tarayıcıda günleri baştan sona oynayan, her modeli, efekti ve ekranı gösteren bir galeriyi de kapsayan 300 Playwright testi
- İndirme boyutu, açılış süresi ve kare süresi için her yayından önce denetlenen bütçeler
