Oyun & Eğlence Teknolojileri

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 önü tekrar üretmeye çalışıyorsunuz. Kulağa çocuk oyuncağı gibi geliyor — ama pratikte, özellikle üçüncü turda, insan fena hâlde 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.

Dür 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 işe 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 insanı gelmiştir. Çünkü insanlar renkleri aynı görmüyor, aynı hatırlamıyor, aynı yorumlamıyor. Kimisi köyü 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 sızı 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 türün 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 hâle 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 hâliyle 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 tarihî 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: Süper 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, köyü arka plan, hafif fütüristik 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 ölür

Şöyle söyleyeyim, Ama işin diğer yüzünü de söyleyeyim. Ekip büyürse saf JS’nın bakimi zorlaşabilir — bu gerçek. Yani küçük startup için mış 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ü işe 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 mimarı görmek isteyenlere örnek ölür.
  • Sosyal rekabet sevenlere günlük geri dönüş sebebi verir.

Ben en çok şu kısmını sevdim: Sistemin sızı 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 işe “ö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.

Sıkça Sorulan Sorular

DialIn tam olarak ne tür bir oyun?

DialIn, gördüğünüz bir rengi aklınızda tutup sonra renk seçiciyle yeniden üretmeye çalıştığınız bir hafıza/odak oyununa benziyor. Sistem de tahmininizin ne kadar yakın olduğunu puanlayarak geri bildirim veriyor. Yani sadece “doğru mu yanlış mı” değil, renk tercihlerinizin nasıl kaydığını da hissettiriyor.

Renk hafızası neden bu kadar zorlayıcı oluyor?

Çünkü renk tek başına “kırmızı” ya da “mavi” değil; ton, doygunluk ve parlaklık birlikte çalışıyor. Ben de kendi mini görsel test aracımda şunu fark etmiştim: Aynı hissedilen renk, cihaz/ışık ve ekrana göre bambaşka davranabiliyor. Bu yüzden üçüncü tur gibi devam ettikçe beyin daha çok “tahmin”e kayıyor ve hata artıyor.

Oyun nasıl puan veriyor ve seviye nasıl değişiyor?

Genelde her tur sonunda seçtiğiniz rengin hedefe ne kadar yakın olduğuna göre puan alıyorsunuz. Yazıda geçen “beş tür” mantığı da tur bitiminde puan + seviye etkisi yaratıyor. İyi oynadığınızda yükselirken zorlandığınızda düşmeniz, oyunun sürekli sizi biraz daha denemeye iten kısmı.

DialIn’de bağımlılık yapan şey sadece zorluk mu?

Sadece zorluk değil; küçük geri bildirim döngüsü ve “bir daha dene” hissi daha baskın. Renk seçiciyle tahmin yaparken beyniniz istemsizce bir strateji kuruyor: “Bu sefer daha doygun yapayım”, “Ton biraz kayıyor gibi…” Benim için en etkileyici tarafı da buydu; her turda öğreniyorsunuz ve bu fark hemen oyuna yansıyor.

Kaynaklar ve İleri Okuma

Azure AI Vision (Computer Vision) dokümantasyonu

Azure Architecture Center

GitHub

Azure AI Services genel giriş

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.

← 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

İçindekiler
← Netflix Playground: Çocuk Oyun...
Claude Code ile Kişisel Bir OS... →