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