tamga_studio.devlog( )

Geliştirici Günlüğü

Projelerimizin perde arkası: tasarım kararları, teknik zorluklar ve öğrendiklerimiz.

LOG.001 — 2026

Merge Fruit'i Nasıl Yaptık?

Merge Fruit, stüdyomuzun ilk yayınlanan oyunu. Hedefimiz netti: tarayıcıda saniyeler içinde açılan, dokunmatik ekranda da klavyede de aynı keyfi veren, fizik tabanlı bir birleştirme oyunu.

// Fizik motoru

Hazır bir fizik kütüphanesi yerine oyunun ihtiyacına göre sadeleştirilmiş kendi çarpışma sistemimizi yazdık. Meyveler daire olarak modellendiği için çarpışma testi Math.hypot(dx, dy) < r1 + r2 kadar basit tutulabildi; bu da düşük donanımlı telefonlarda bile akıcı bir deneyim sağladı.

// Birleştirme hissi

İki meyve birleştiğinde oyuncunun "doyurucu" bir geri bildirim alması gerekiyordu. Ölçek yaylanması, parçacık efekti ve skor sayacının aynı karede tetiklenmesi üzerine epey ince ayar yaptık. Oyun hissinin yarısı bu küçük detaylarda saklı.

// Yayın

Oyun kendi sitemizde yayında; CrazyGames gibi platformlara yükleme için paket yapısını baştan platform gereksinimlerine uygun kurduk. Skor ve ilerleme yalnızca oyuncunun tarayıcısında, localStorage'da tutuluyor.

JavaScriptCanvasFizikHTML5
LOG.002 — 2026

Kod Tüneli: Sinematik Açılışın Perde Arkası

Sitemize ilk girdiğinizde gördüğünüz kod yağmuru ve scroll ile içine uçtuğunuz 3D tünel, yüzlerce DOM elemanı yerine tek bir <canvas> üzerinde çiziliyor. Neden? Çünkü tarayıcıda yüzlerce elemanı 3D ölçeklemek performansı öldürür; canvas üzerinde ise her kare tek render geçişinde tamamlanır.

// Perspektif matematiği

Her kod satırının sanal bir derinliği (z) var. Ekrandaki boyutu klasik perspektif bölmesiyle hesaplanıyor: scale = FOCAL / (z - kamera.z). Scroll ilerledikçe kamera ileri gidiyor; yakınlaşan satırlar üstel olarak büyüyor ve "kafanızın yanından geçip" kayboluyor.

// Scroll köprüsü

Lenis pürüzsüz kaydırmayı, GSAP ScrollTrigger ise scroll pozisyonunu kamera derinliğine çeviren köprüyü yönetiyor. Belirli bir eşikte zaman çizelgesi tetikleniyor: tünel parlamayla dağılıyor ve site kendini gösteriyor.

// Detaylar

Gerçekçilik için satırlar gerçek JavaScript, C++ ve Python sözdiziminden oluşuyor ve basit bir tokenizer ile renklendiriliyor. CRT tarama çizgileri ve rastgele glitch dilimleri de retro-terminal dokusunu tamamlıyor.

CanvasGSAPLenisWebGL-Style
LOG.003 — 2026

TypeRush: Botlara Karşı Yazma Yarışı Tasarlamak

TypeRush'ın çıkış noktası basitti: yazma pratiği sıkıcı, yarışmak eğlenceli. İkisini birleştirince ortaya botlara karşı klavye yarışı çıktı.

// Adil hissettiren botlar

Botlar sabit hızda yazsaydı ya hep kazanır ya hep kaybederdiniz. Bunun yerine her bota dalgalanan bir WPM profili verdik: tur boyunca hızlanıp yavaşlıyorlar, küçük "hata duraksamaları" yaşıyorlar. Böylece yarışın sonu son kelimeye kadar belli olmuyor.

// WPM ölçümü

Hız, endüstri standardı olan 5 karakter = 1 kelime kabulüyle hesaplanıyor. Hatalı vuruşlar düzeltilene kadar ilerlemeyi kilitliyor; bu da gerçek doğruluğu ödüllendiriyor.

// PWA & çevrimdışı

Oyun bir service worker ile statik varlıklarını önbelleğe alıyor: bir kez açtıysanız internetsiz de oynayabilirsiniz. Manifest sayesinde telefona uygulama gibi eklenebiliyor.

JavaScriptPWAService WorkerUX
◂ Ana Sayfaya Dön