Eğitim

Renk Hafızasını Kışkırtan Oyun: DialIn Nasıl Çalışıyor?

Geçen ay, Kadıköy’de bir kafede otururken önüme düşen bu projeye takıldım. İlk bakışta basit bir renk oyunu — itiraz edebilirsiniz tabi — gibi duruyor; hani “birkaç kare, biraz neon, tamam” dersiniz ya… ama işin içine girince öyle değil. DialIn denen bu cyberpunk tadındaki oyun, insanın renk hafızasını bayağı dürtüyor. Bir rengi görüyorsunuz, sonra onu tekrar üretmeye çalışıyorsunuz. Kulağa çocuk oyuncağı gibi geliyor — ama pratikte, özellikle üçüncü turda, insan fena halde terliyor. Ciddi söylüyorum.

Benzer bir şeyi 2023’te kendi küçük yan projemde denemiştim; İstanbul’da yağmurlu bir akşam, tarayıcıda çalışan mini bir görsel test aracı yapıyordum. Orada da şunu fark etmiştim: Renk dediğimiz şey tek başına “kırmızı” ya da “mavi” değil, parlaklık var, doygunluk var, ton var… ve beyin bunların hepsini aynı anda tutmakta pek iyi değil. DialIn’in olayı da tam burada başlıyor zaten.

Dur bir saniye, önce şunu söyleyeyim. Bu oyun teknik olarak çok gösterişli görünse de altında şaşırtıcı derecede sade bir yapı var. Ne devasa framework’ler ne gereksiz süsler. Sadece düzgün düşünülmüş birkaç parça ve iyi ayarlanmış bir skor sistemi. Hepsi bu.

DialIn fikri neden dikkat çekiyor?

Renk hafızası testi fikri yeni sayılmaz. Ama çoğu uygulama bunu ya fazla akademik yapıyor ya da neredeyse tamamen rastgele bırakıyor — ortası yok. DialIn ise işi oyunlaştırıp biraz da kişilik meselesine çeviriyor; yani sadece “ne kadar doğru bildin?” sorusu yok, “hangi renklere kayıyorsun?” sorusu da var. Bu ayrım küçük görünüyor ama değil.

Bu yaklaşım bana neredeyse her zaman daha insani gelmiştir. Çünkü insanlar renkleri aynı görmüyor, aynı hatırlamıyor, aynı yorumlamıyor. Kimisi koyu tonlara kayıyor, kimisi parlak renklere abanıyor, bazısı da tam ortada geziniyor ve ortalığı karıştırıyor — tabi bu çeşitlilik oyuna karakter katıyor, yoksa sıkıcı bir sınav formatına dönüşürdü.

Editör masasında bu haberi ilk gördüğümde hemen test etmek istedim. Bir bakıma, neden mi? Masaüstü monitörde bambaşka görünen bir renk ile telefonda gördüğünüz aynı rengin nasıl değiştiğini yıllardır biliyorum ve bir projeyi gerçek hayatta ilginç yapan şey de tam bu zaten: teoride güzel duran fikirlerin ekranda nasıl davrandığı.

Oyun döngüsü nasıl işliyor?

İşin özü çok net. Daha açık söyleyeyim, bir rengi görüyorsunuz, aklınızda tutuyorsunuz ve ardından renk seçiciyle yeniden oluşturmaya çalışıyorsunuz. Sonra sistem size ne kadar yaklaştığınızı söylüyor. Beş tür sürüyor ve her tür sonunda puanınızla birlikte seviyeniz de oynuyor (kendi tecrübem)

Şimdi gelelim işin can alıcı noktasına.

Basit. Ama bağımlılık yaratan tarafı tam burada gizli. İyi oynarsanız seviye yükseliyor; zorlanırsanız düşüyorsunuz. Yani oyun sizi sürekli hafifçe itip çekiyor — tam “bir el daha atayım” hissi işte, insanın zaafını iyi biliyor bu sistem.

Temel akış

  • Ekranda bir renk beliriyor. (bence en önemlisi)
  • Siz o rengi aklınızda tutmaya çalışıyorsunuz. — ciddi fark yaratıyor
  • Renk seçiciyle tahmininizi giriyorsunuz.
  • Sistem yakınlığı puana çeviriyor. (bence en önemlisi)
  • 5 turun sonunda genel performansınıza göre seviye güncelleniyor.

DialIn’i ilginç yapan şey şu: Oyuncuyu sadece doğruya değil, “yaklaşık doğruya” da ödüllendiriyor. Bu küçük ayrım oyunu sıradan olmaktan çıkarıp tekrar oynanabilir hale getiriyor.

Puanlama tarafında iş ciddileşiyor

Şöyle söyleyeyim, Neyse uzatmayalım. Asıl teknik numara burada başlıyor. Çoğu oyun renk farkını kaba saba hesaplar; RGB değerlerini kıyaslar, geçer gider. Ama DialIn bunu daha profesyonel bir yere taşıyıp CIEDE2000 kullanıyor. Açık konuşayım, bu tercih kağıt üstünde havalı durmuyor sadece — gerçekten anlamlı bir seçim.

CIEDE2000 nedir? En basit haliyle söyleyeyim: İnsan gözünün renk farkını algılama biçimine daha yakın çalışan bir ölçüm yöntemi. Yani makinenin baktığı yerle insanın baktığı yer biraz daha örtüşüyor diyebiliriz. Mesela iki rengin RGB değeri birbirine yakın olabilir ama gözünüze bayağı farklı görünebilir; CIEDE2000 işte o aradaki garipliği yakalamaya çalışıyor. Şaşırdım açıkçası, bu kadar küçük bir oyun projesinde bu seçimi görmek beklediğim bir şey değildi (evet, doğru duydunuz) Netflix Playground: Çocuk Oyunlarında Yeni Hamle Ne Anlama Geliyor? yazımızda bu konuya da değinmiştik.

Çok konuştum, örnekle göstereyim.

deltaE aralığı Yaklaşık puan Yorum
< 5 8-10 Çok iyi eşleşme
~25 Yaklaşık 5 Orta düzey
// Mantık kabaca böyle düşünülebilir
score = 10 / (1 + Math.pow(deltaE / 25.25, 1.55))

İtiraf edeyim, Birkaç satırlık formül gibi dursa da etkisi büyük oluyor. Neden mi? Çünkü sonuç lineer değil — azıcık iyileşme bazen hissedilir puan farkı veriyor, bazen de sanki hiçbir şey değişmemiş gibi davranıyor. Bu da insanı sinirlendirip tekrar denetiyor. Ben buna kötü demem açıkçası, hatta oldukça zekice buldum — ama ilk kez gören biri için biraz tuhaf gelebilir, evet.

Neden S-eğrisi kullanılmış?

Düz çizgi yerine S-eğrisi kullanmanın mantığı şu olsa gerek: Çok kötü tahminlerle çok iyi tahminleri birbirinden daha belirgin ayırmak, ama orta bölgede de oyuncuyu tamamen ezmemek. Bir startup’ta ürün tarafında buna benzer puanlama sistemleri kurmuştuk; İstanbul Maslak’ta yapılan toplantıda ekipten biri “kullanıcıyı cezalandırmayalım” demişti ve haklıydı — valla güzel iş çıkarmışlar —. Ha, işte burada da benzer mantık var — oyuncu korkup kaçmasın diye geçiş bölgesi yumuşatılmış. Fena olmayan bir tasarım kararı bence. Dark Matter 2. sezonun tarihi netleşti: Apple TV geri dönüyor yazımızda bu konuya da değinmiştik. Bu konuyla ilgili Apple Arcade’in Mayıs Paketi: 4 Yeni Oyunla Gelen Sessiz Hamle yazımıza da göz atmanızı tavsiye ederim.

Küçük dokunuşlar oyunun karakterini kuruyor

Bir dakika, şunu da ekleyeyim. DialIn sadece skor veren kuru bir (söylemesi ayıp) araç gibi durmuyor. Oyunun içine serpiştirilen modlar, seviyeler ve hatta renk kişilikleri işi canlı tutuyor (kendi tecrübem). Mesela Free Play modu deneme yapmak isteyenlere açık kapı bırakırken, Daily Challenge herkesi aynı başlangıç noktasına koyuyor — bu iki yapı arasındaki denge bence yerinde, birbiriyle çelişmiyor.

Garip gelecek ama, E tabi Color Duel kısmı ayrı güzel. Bir arkadaşınızla link paylaşarak ya da kısa kodla kapışabiliyorsunuz. 2024 yazında Ankara’dan tanıdığım tasarımcı arkadaşım Ece ile buna benzer rekabetçi mini testler yapmıştık; başıma gelmeyen kalmamıştı. Insanlar dostça başlayan yarışları beşinci turda kan davasına çevirebiliyor. Burada o enerji kontrollü şekilde veriliyor. İyi düşünülmüş. Claude Code ile Kişisel Bir OS Kurmak: Super Tobi Hikâyesi yazımızda da bu konuya değinmiştik. OpenNOW: GeForce Now’a Açık Kaynak Bir Çıkış Yolu yazımızda da bu konuya değinmiştik.

💡 Bilgi: Renk algısı yalnızca gözle ilgili değildir; ekran parlaklığı, yüzey aydınlatması ve cihaz kalibrasyonu sonucu ciddi biçimde değiştirebilir.

Tasarım dili niye cyberpunk olmuş?

Dürüst olayım. Cyberpunk tema her projeye yakışmaz — gerçekten yakışmaz, zorlaştırılmış örneklerini çok gördüm. Ama burada iyi durmuş. Neon mavi ve pembe tonlar, koyu arka plan, hafif futuristik UI detayları… bunların hepsi oyunun “hafif bilimkurgu laboratuvarı” hissini güçlendiriyor. Paketleme kısmında başarılılar, bunu teslim etmek lazım.

Görsel dilin artıları ve eksileri

Artısı belli: Günlük tarayıcı içi mini oyunlarda bile karakter yaratabiliyorsunuz. Ama eksisi de var — aşırı neon kullanımında okunabilirlik zaman zaman düşebiliyor. Bazı kullanıcılar için kontrast iyi gelirken bazıları için yorucu olabiliyor (yanlış duymadınız). Ben bunu özellikle laptop parlaklığını kıstığımda hissettim. “Oh be” dedirtiyor bazen.

Teknik tarafta neden vanilla JavaScript seçilmiş?

Bakın, Burası bence yazının en öğretici kısmı. Birçok geliştirici böyle projelerde ilk refleks olarak React ya da başka ağır sayılabilecek araçlara koşar. Ama burada yazar bilerek sade gitmiş: HTML + CSS + JavaScript yeter, demiş. Buna katılıyorum çünkü oyun mantığı aslında DOM üzerinde birkaç göster/gizle işlemiyle ilerliyor. Fazlası gereksiz.

Hani, Kendi deneyimimde şunu defalarca gördüm: Yalnızca birkaç etkileşim varsa framework bazen gereksiz katman oluyor. 2024’ün Kasım ayında İzmir’deki küçük ekip projemizde benzer şekilde saf JS kullandığımızda kod okumak çok kolaylaşmıştı, ekipteki yeni arkadaşlar bile iki günde kavradı. Aşağıdaki tabloya bir bakın:

Tercih Avantaj Zayıf Nokta
Vanilla JS Sade, hızlı açılır Büyüdükçe disiplin ister
Ağır framework Ekip ölçeğinde düzen sağlar Küçük projede fazla yük olur

Şöyle söyleyeyim, Ama işin diğer yüzünü de söyleyeyim. Ekip büyürse saf JS’nin bakımı zorlaşabilir — bu gerçek. Yani küçük startup için mis gibi olan çözüm, kurumsal ölçekte tek başına yetmeyebilir. Test altyapısı, dosya düzeni ve component disiplini şart oluyor o noktada. Neyse ki bu proje kendi ölçeğinde bunlara boğulmamış, yerli yerinde kalmış.

Peki hangi kullanıcı tipi bundan hoşlanır?

Bence üç grup özellikle ilgilenir. İlki görsel tasarım meraklıları, ikincisi ön uç geliştiricileri, üçüncüsü ise skor tabanlı mini oyun sevenler. Bir de tabii günlük challenge bağımlıları var — onlar için konu zaten kapanmıştır, ilk günden bağlanırlar.

  • Kendini renk konusunda “iyi” sananlar için güzel sınavdır. — bunu es geçmeyin
  • Tasarımla uğraşanlara pratik sezgi kazandırır.
  • Kod tarafında sade mimari görmek isteyenlere örnek olur.
  • Sosyal rekabet sevenlere günlük geri dönüş sebebi verir.

Ben en çok şu kısmını sevdim: Sistemin sizi tamamen başarısız ilan etmemesi. Zayıf kaldığınız yerde bile ufak kazanımlar vererek motivasyonu koruyor.

Küçük startup vs enterprise bakışı

Dürüst olmak gerekirse, Hmm, bu ayrımı biraz açayım. Startup ortamında böyle bir proje “çalışıyor mu, kullanıcı seviyor mu?” sorusuna odaklanır ve bu odak doğru (şaşırtıcı ama gerçek). Enterprise tarafta ise “ölçeklenir mi, test edilebilir mi, dokümante edilmiş mi?” soruları öne çıkar. DialIn açıkça birinci kategoride — ve bu kötü değil, tam tersine (bizzat test ettim). Kendi amacı için doğru araçları seçmiş, gereksiz karmaşıklığa girmemiş. Bence bu başlı başına bir erdem.

Aşkın KILIÇ

20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

AZ-305AZ-104AZ-500AZ-400DP-203AI-102

Bu içerik işinize yaradı mı?

Benzer içerikleri kaçırmamak için beni sosyal medyada takip edin.

Haftalık Bülten

Her pazar özenle seçilmiş teknoloji yazıları doğrudan e-postanıza gelsin.

← Onceki Yazi
Netflix Playground: Çocuk Oyunlarında Yeni Hamle Ne Anlama Geliyor?
Sonraki Yazi →
Claude Code ile Kişisel Bir OS Kurmak: Super Tobi Hikâyesi

Yorum Yaz

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Haftalık Bülten

Azure, DevOps ve Yapay Zeka dünyasındaki en güncel içerikleri her hafta doğrudan e-postanıza alın.

Spam yok. İstediğiniz zaman iptal edebilirsiniz.
📱
Uygulamayı Yükle Ana ekrana ekle, çevrimdışı oku
Kategoriler
Ara
Paylaş
İçindekiler
← Netflix Playground: Çocuk Oyun...
Claude Code ile Kişisel Bir OS... →
📩

Gitmeden önce!

Her pazar özenle seçilmiş teknoloji yazıları ve AI haberleri doğrudan e-postanıza gelsin. Ücretsiz, spam yok.

🔒 Bilgileriniz güvende. İstediğiniz zaman ayrılabilirsiniz.

📬 Haftalık bülten: Teknoloji + AI haberleri