Voxel Tabanlı Oyun Tasarımı: Neyi Çözer, Neye Mal Olur
Voxel tabanlı oyunlar genelde gerçekçilik başlığı altında anlatılır. Oysa voxel'in poligona karşı asıl kazandığı yer başka: dünyayı çalışma anında değiştirebilmek. Bunun bedeli de belli, veri hacmi çözünürlükle birlikte kübik büyüyor. Karar bu takasta veriliyor; yıkılabilirlik oyunun mekaniğiyse voxel doğru temel, sadece görünüş içinse pahalı bir tercih.
Voxel ne yapar, poligon neyi yapamaz
Poligon ağı bir nesnenin yüzeyini tarif eder, içi boştur. Voxel ise hacmi tarif eder, yani nesnenin içi de veridir. Fark tek bir anda ortaya çıkıyor: nesneyi kesip açtığınızda. Poligon tarafında bir duvarı kırmak istiyorsanız o duvarın kırık halini önceden modellemeniz gerekir, sanatçı üç beş parçaya ayrılmış bir versiyon hazırlar ve motor çarpma anında modeli onunla değiştirir. Voxel tarafında kırık hal zaten oradadır, çünkü duvarın içi de tanımlıdır.
Voxel'i gerçekçiliğe bağlamam. Yüksek poligonlu bir model, iyi bir ışıklandırmayla hâlâ daha inandırıcı görünüyor. Minecraft'ın ya da Teardown'ın kazandığı yer görüntü değil, oyuncunun dünyaya yaptığı değişikliğin kalıcı olması ve oyunun buna cevap verebilmesi.
Pratik ayrım şu: duvar üç sabit parçaya ayrılıyorsa poligon yeter ve ucuzdur. Oyuncu duvarda istediği yerde istediği büyüklükte delik açabilecekse voxel'e geçmek zorundasınız.
Maliyet çözünürlükle kübik büyür
Voxel'in faturası burada kesiliyor. Izgara üç boyutlu olduğu için kenar uzunluğunu yarıya indirdiğinizde hücre sayısı sekiz katına çıkar. Bir metrelik bloklardan on santimetreye inmek bin kat daha fazla hücre demek. "Santimetre çözünürlüklü voxel dünya" cümlesini bu yüzden ihtiyatla okuyun.
Pratikte kimse ızgarayı düz bir dizi olarak tutmuyor. Seyrek voxel octree'leri boş hacmi tek düğümde topluyor, açık hava neredeyse bedava oluyor. Asıl yük çizim değil, değişiklik: oyuncu kazdığı anda o parçanın yüzeyi yeniden üretilmek zorunda. Bütçeyi toplam voxel sayısıyla değil, kare başına düşen yeniden meshleme sayısıyla yapın.
Bu konudaki metinlerde sık geçen "bulut bu sorunu çözüyor" iddiası da burada zayıflıyor. Yıkılabilir bir dünyanın darboğazı işlem gücü değil, durumun taşınması. Çok oyunculu bir oturumda her kazma hareketi diğer istemcilere gitmek zorunda ve fark paketleri gecikmeye duyarlı. Sunucuya çekirdek eklemek bunu çözmüyor.
Prosedürel üretim çeşitlilik değil, varyasyon verir
Kural tabanlı üretim voxel dünyalarla iyi eşleşiyor, çünkü ızgara zaten algoritmayla doldurulmaya uygun bir yapı. Ama "sonsuz dünya" vaadi ile oyuncunun gördüğü şey aynı değil. Gürültü fonksiyonu size varyasyon üretir, anlam üretmez. Yirminci vadiden sonra oyuncu kalıbı çözer ve dünya birden küçülür.
İşe yarayan kullanım, prosedürel üretimi taban katman olarak bırakıp üstüne elle yerleştirilmiş işaret noktaları koymak. Arazi algoritmadan gelsin, oyuncunun hatırlayacağı şeyler elden çıksın.
Bir de test tarafı var ve genelde atlanıyor. Sonsuz dünyayı test edemezsiniz, ancak üreteci test edebilirsiniz. Bu da tohum değerinin baştan sona tek belirleyici olmasını şart koşuyor. Aynı tohum aynı dünyayı vermiyorsa gelen hata raporu tekrar üretilemez hale gelir; üretece rastgelelik kaynağı olarak sistem saatini ya da kare sayacını karıştırmak, o hatayı bir daha hiç göremeyeceğiniz anlamına gelir.
Nerede işe yarar
Karar oyunun mekaniğine bakarak verilir, modaya bakarak değil.
- Kazmak, yıkmak, inşa etmek oyunun kendisiyse voxel doğru temel.
- Karakterler, yüzler ve animasyonlu canlılar için poligon ve iskelet sistemi hâlâ açık ara üstün. İkisini karıştırmak olağan bir yol, ortamı voxel tutup karakterleri poligon bırakan yapımlar var.
- Sadece blok estetiği arıyorsanız aynı görünümü poligonla da alırsınız, üstelik yıkılabilirlik maliyetini ödemeden.
Kaynaklar