Fasikül 03 - Teknik
Zar Nereye Atılır? Rastgeleliğin Kararla İmtihanı
Rastgelelik, oyunlardan çıkarılabilecek bir şey değil, yönetilecek bir şeydir. Tamamen öngörülebilir bir oyun ezberlenir; ezberlenen oyun sıkar. Ama kontrolsüz rastgelelik de emeği anlamsızlaştırır. Bu yazıda, iki uç arasındaki dar koridorda hangi tekniklerin kullanıldığını, prototip tarafında nasıl uyguladığımızı anlatacağım.
Zarın karardan önce mi sonra mı atıldığı, sistemin oyuncuya verdiği mesajı tamamen değiştirir.
Ayrım noktası: kararın öncesi mi, sonrası mı?
Bütün tartışmayı tek bir soruya indirgeyebiliriz: rastgelelik kararın öncesinde mi, sonrasında mı devreye giriyor?
Kararın öncesinde gelen rastgelelik keyif verir. Haritada kaynakların farklı yerlerde çıkması, turun hangi hedefle başlayacağının bilinmemesi, oyuncuyu her seferinde yeniden düşünmeye zorlar. Burada rastgelelik bir girdidir; oyuncu onu görür, değerlendirir ve buna göre plan yapar. Beceri, verilen duruma en iyi cevabı üretmektir.
Kararın sonrasında gelen rastgelelik ise sinirlendirir. Doğru nişan alıp doğru zamanlamayla ateş ettiğiniz hâlde vuruşun rastgele ıskalaması, tasarımın oyuncuya "emeğin sayılmadı" demesidir. Burada rastgelelik bir çıktıdır; oyuncu doğru kararı vermiş olsa bile sonucu değiştiremez. Bu tür rastgelelik öğrenmeyi de bozar, çünkü oyuncu neyi yanlış yaptığını çıkaramaz.
Sık yapılan hata
"Rastgelelik heyecan katıyor" gerekçesiyle sonuç hesabına varyans eklemek, kısa vadede maçları değişken gösterir ama uzun vadede oyuncunun gelişim hissini yok eder. Değişkenlik isteniyorsa girdi tarafına eklenmeli, çıktı tarafına değil.
Varyansı sınırlamak: üç pratik teknik
Rastgeleliği girdi tarafına yerleştirmek tek başına yeterli değil. Girdinin de bir sınırı olması gerekir, yoksa bazı turlar başlamadan kaybedilmiş olur. Uygulamada üç teknik yaygın olarak kullanılır.
Aralık sınırlama
Bir değerin ne kadar sapabileceği önceden bir aralıkla tanımlanır. Örneğin bir kaynak noktasının uzaklığı, ortalamadan yüzde yirmiden fazla sapamaz. Bu, uç durumların ortaya çıkma ihtimalini tamamen sıfırlamaz ama tur başında oyuncunun hazırlanabileceği bir tahmin penceresi bırakır. Prototiplerde bu genellikle en basit ve en etkili müdahaledir.
Seri yumuşatma
Uç sonuçların art arda gelmesi yumuşatılır. Saf rastgelelikte aynı kötü sonucun beş kez üst üste çıkması matematiksel olarak mümkündür ve oyuncu bunu "bozuk sistem" olarak okur. Seri yumuşatmada, bir sonuç tekrarlandıkça tekrar etme olasılığı azaltılır. Sonuç istatistiksel olarak daha az "rastgele" olur ama oyuncu tarafında çok daha adil hissettirir.
Tohumlanmış rastgelelik
Aynı turda tüm oyuncuların aynı rastgele diziyi görmesi sağlanır. Herkes aynı haritayı, aynı kaynak dağılımını, aynı kural değişikliğini alır. Böylece rastgelelik bir eşitsizlik kaynağı olmaktan çıkıp ortak bir bulmacaya dönüşür. Değişken Duvar prototipinde tam olarak bu yöntemi kullanıyoruz: kural her turda değişir, ama tur başında ilan edilir ve herkes için aynıdır.
Tekniklerin karşılaştırması
| Teknik | Neyi çözer | Uygulama maliyeti | Yan etkisi |
|---|---|---|---|
| Aralık sınırlama | Uç durumlar | Düşük | Çeşitlilik bir miktar azalır |
| Seri yumuşatma | Art arda tekrar | Orta | Deneyimli oyuncu deseni öğrenir |
| Tohumlanmış dizi | Oyuncular arası eşitsizlik | Orta | Tur tekrarında sürpriz kalmaz |
| Önceden ilan | Sürprizin haksızlığa dönmesi | Çok düşük | Keşif hissi azalır |
Teknikler birlikte kullanılabilir; çoğu modda en az ikisi aynı anda devrededir.
İlan edilen rastgelelik, haksızlık olmaktan çıkar
Uygulamada en ucuz ve en etkili müdahale, rastgeleliği önceden ilan etmektir. Tur başında "bu turda yerçekimi düşük" yazdığınızda, aynı bilgi herkeste olur ve uyum sağlamak beceri hâline gelir. Aynı değişikliği tur ortasında habersiz uyguladığınızda ise oyuncular onu kendilerine yapılmış bir müdahale olarak okur.
Bunun teknik karşılığı da var: ilan edilen bir değişiklik, istemci tarafında önceden hesaplanabilir ve arayüzde gösterilebilir. Habersiz değişiklik ise sunucu ile istemci arasında ek senkronizasyon yükü doğurur. Yani şeffaflık burada sadece bir tasarım tercihi değil, aynı zamanda daha ucuz bir mühendislik çözümü.
Rastgelelik nerede hesaplanır?
Kritik bir ayrıntı: rastgele değerler istemcide üretilmez. Vuruş kaydı, hasar hesabı ve kaynak dağılımı gibi sonuca etki eden her şey sunucu tarafında hesaplanır. Bunun sebebi yalnızca güvenlik değil, tutarlılıktır; iki oyuncunun aynı olayı farklı görmesi, adalet hissini en hızlı bozan durumlardan biridir.
Bağlantı kalitesi burada devreye girer. Paket kaybı yaşandığında, kaybolan her paket için konum tahminle doldurulur; bu tahmin bir tür rastgelelik gibi hissedilir ama tasarımın değil, hattın ürünüdür. Ping ve tick rate değerlerinin oyuna etkisini Ölçek bölümünde ayrıntılı olarak ele alıyoruz.
Kapanırken
Oyuncu sürprizi sever, keyfiliği sevmez. Aradaki fark tek bir cümleyle özetlenebilir: sürpriz karar vermeden önce gelir, keyfilik karardan sonra. Bir sistem tasarlarken kendinize sorulacak soru "ne kadar rastgelelik olsun" değil, "rastgelelik hangi anda devreye girsin" olmalı.
Sonraki yazıda beceri tabanı ile tavanı arasındaki mesafeyi ele alıyoruz. Prototipleri denemek isterseniz tezgâh bölümü açık; platformun güncel duyuruları ve BetRupi haberleri için yama tahtasına, doğrudan erişim için BetRupi resmi adres sayfasına bakabilirsiniz.
İlgili yazılar
Değişken Duvar
Tur başında ilan edilen kural değişimini doğrudan deneyebileceğiniz prototip.
Paket Kaybı ve Netcode
Hattan gelen belirsizliğin tasarımdan gelen belirsizlikle karışmaması neden önemli?
Şikâyet Doğru, Teşhis Yanlış
Varyans şikâyetlerinin gerçekten varyanstan kaynaklanıp kaynaklanmadığını anlamak.
Önceki yazı
Simetri Kolay Cevaptır, Asimetri Cesur Olanı
Sonraki yazı