Hassasiyet Sorunu
En başından beri, mühendislik ekibi sürekli dünyanın motor ve içerik tasarımını önemli ölçüde etkileyeceğini biliyordu ve asıl mesele sayısal kararlılıktı. İki karakter arayla doğuda başlayarak doğuya doğru ilerleyen iki karakterin hayal edin. Bir noktada, birbirlerine olan uzaklık, başlangıç noktasına olan mesafeden çok fazladır ve karakterler “aynı konumda” görünecektir.
Kayan nokta ile, menşeden ne kadar uzaklaşırsanız, o kadar çok hassasiyet kaybedersiniz, bu da her türlü kötü soruna neden olabilir. İşler doğru sıralanmaz, bitişik ağlar arasında çatlaklar ortaya çıkar, alan ölçülmeye başlar ve kediler ve köpekler birlikte yaşamaya başlar. Dungeon Siege, belirgin performans avantajları ve video donanımının doğal hassasiyetiyle eşleşmesi için FPU'yu tek hassasiyet modunda kullanır. Bununla birlikte, hassasiyeti artırsak bile, sonuçta problemi asla çözemezdi çünkü dünya inanılmaz derecede büyük olması planlandı ve sonuçlandı.
Kesinlik sorunu, diğer oyunların çoğunda olduğu gibi birleşik bir dünya koordinat alanına sahip olmanın mümkün olmadığı anlamına geliyordu. Bunun yerine, çözüm sürekli dünyayı bir dizi bağımsız koordinat alanına ayırmak ve hassasiyeti sıfırlamak için periyodik olarak aralarında geçiş yapmaktı. Bu kısıtlamalar dahilinde çeşitli fikirler denendi ve sonunda standart bir portal sisteminin bir varyasyonuna karar verdik.
Çözümümüz, her bir geometri yığınının (Siege Node) kendi koordinat alanına sahip olduğu ve bu komşularla ortak olarak paylaştığı kapılar aracılığıyla komşu geometriye mekansal olarak bağlı olduğu ilişkisel düğüm tabanlı bir koordinat sisteminden oluşur. Kapılarla birbirine bağlanan düğümlerin düzenlenmesi, tüm dünya haritasını temsil eden sürekli bir grafik oluşturur. Bu düğüm sistemi, zaman içinde FPU hassasiyetini sürdürme konusundaki orijinal amacından, alanı verimli bir şekilde alt bölümlere ayırmanın ve sayısız optimizasyonun kökü haline gelmek için gelişti.
3B konum kavramını belirli bir düğüme göre kapsüllemek için geleneksel (x, y, z) vektörü bir düğüm kimliği (x, y, z, düğüm) ile arttırılmalı ve başlangıç noktasından bir ofseti temsil etmeliydi belirli bir düğümün Bu 4 demet Kuşatma Düğümü Konumu veya SiegePos olarak kapsüllenmiştir. Daha sonra, düğümler arasındaki yönelimler arasındaki karşılaştırmaları işlemek için bir SiegeRot (kuaterniyon, düğüm) ekledik.
“Dünyada yer yok” ifadesi takıma bir mantra oldu, ancak kelimenin tam anlamıyla herkesin ne anlama geldiğini tam olarak anlaması yıllar sürdü.