Koordinat Savaşı, oynanış sırasında üç farklı koordinat alanı kullanır:
Dünya alanı: Objeleri oyun dünyasına Verse API fonksiyonları aracılığıyla yerleştirmek için kullanılan koordinat alanı.
Tahta alanı: Objeleri oyuncu oyun tahtalarında konumlandırmak için kullanılan koordinat alanı.
Mini tahta alanı: Oyunculara kendi tahtalarının bir görünümünü göstermek için kullanılan koordinat alanı.
Bu koordinat alanlarının tamamı, oyuncuya geçerli oyun durumu ve oynanış performansı hakkında doğru bir görünüm verir.
Kapsamlı bir koordinat alanı yönetimi tasarlamak için planlama ve değerlendirme gerekir. Çalışmanın büyük bir kısmı, dünya alanındaki vektörleri oyun tahtasındaki koordinatlarla ve mini tahtadaki koordinatlarla güvenilir bir şekilde eşleştirebilmen, sonra da bunu geriye doğru tekrar yapabilmen için koordinat alanları arasında dönüştürme yapmandan oluşacaktır.
Tahta alanını, yukarıdaki görselin ortasında yer alan oyun tahtası şeklinde temsil edilmiş olarak (1), mini tahta alanını ise yukarıdaki görselin sol üst köşesinde mini tahta ile temsil edilmiş olarak (2) görebilirsin.
Dünya alanı, UEFN ve Verse API fonksiyonlarının altında yatan kalıcı koordinat sistemidir. UEFN, Sol-Yukarı-İleri (LUF) üç boyutlu koordinat sistemini kullanır.
Bu koordinat sistemi hakkında daha fazla bilgi için Sol-Yukarı-İleri Koordinat Sistemi dokümantasyonuna bakabilirsin.
Koordinat Alanları
Bu deneyimdeki koordinat alanlarının her biri, oyun objelerinin dünyada doğru bir şekilde yerleştirilebilmesi için konumların farklı yüzeylere ve farklı türlere dönüştürülmesini gerektirir. Aşağıda bu alanların her birinin açıklamaları yer almaktadır. Bunlar eğitimin sonraki bölümlerinde daha ayrıntılı olarak ele alınacaktır.
Dünya Alanı
Dünya alanı, UEFN ve Verse’ün, oyun dünyasında objeleri konumlandırmak için kullandığı varsayılan alandır. Bu oyun örneği ağırlıklı olarak creative_device objelerini kullanır. Sonuç olarak, cihazlar için oyun dünyasında konumları temsil etmek üzere kullanılan Verse sınıfı, aşağıdaki tanıma sahip olan, /UnrealEngine.com/Temporary/SpatialMath modülündeki transform’dur.
transform<public> := struct<concrete><computes>:
Scale<public>:vector3
Rotation<public>:rotation
Translation<public>:vector3
Buradaki vector3 şu şekilde tanımlanır:
vector3<public> := struct<concrete><computes><persistable>:
X<public>:float
Y<public>:float
Z<public>:float
transform, bir objenin nerede yer aldığını (Translation), hangi yöne baktığını (Rotation) ve ne kadar büyük olduğunu (Scale) tanımlar.
creative_object sınıfından türeyen tüm objeler, aşağıdakileri yapmak için Verse API fonksiyonlarına erişime sahiptir:
GetTransform: Bir objenin geçerli dönüşüm verilerini alır.TeleportTo: Bir objeyi girdi hedefine animasyonsuz olarak taşır.MoveTo: Hareketi, girdi hedefine animasyonlu hale getirir.
Bu API fonksiyonlarıyla birlikte transform’un tanımı, bir objenin oyun dünyasında nerede bulunduğunu tanımlamak ve onu oraya yerleştirmek için ihtiyacın olan her şeyi sağlar.
Tahta Alanı
Tahta alanı, yukarıdaki görselde açıklama balonu (1) ile tanımlanan Koordinat Savaşı’ndaki ana oyun tahtası için kullanılan alandır. Bu alan, oyun tahtasının merkezine göre tahtada boşluklar veya kareler belirlemek için kullanılır.
Mini Tahta Alanı
Mini tahta, oyunculara kendi tahtalarının bir görünümünü gösterir. İsabet işaretleyicileri, bir tahta karesinin saldırıya uğradığını ve rakibin o karedeki bir piyonu başarıyla yok ettiğini gösterir. Iskalama işaretleyicileri, bir tahta karesinin saldırıya uğradığını ve rakibin hiçbir şeyi vuramadığını gösterir. Mini tahtanın kendisi, oyun kullanıcı arayüzünün bir parçası olarak görünmesi için oynanış kamerasına göre yerleştirilmiş bir statik örgüdür.
Oluşturma Adımları
Etkili bir oynanış deneyimi oluşturmak amacıyla bu üç koordinat alanını birlikte kullanmak için şunları yapman gerekir:
Tahta alanında bir karenin gösterimini tanımla.
Tahta alanının sınırlarını tanımla.
Tahta alanının dünya alanı içinde nerede yer aldığını tanımla.
Tahta alanı ile dünya alanı arasında dönüştürme yap.
Piyonu tahta üzerinde belirli bir konuma yerleştir.
Tahtadan bir piyon al.
Bir piyonu tahtadan kaldır.
Tüm piyonları tahta üzerine rastgele bir şekilde yerleştir.
Mini tahta alanında bir karenin gösterimini tanımla.
Mini tahta alanının sınırlarını tanımla.
Mini tahta alanının dünya alanında nerede yer aldığını tanımla.
Mini tahta üzerine bir işaretleyici yerleştir.
Mini tahta alanı, tahta alanı ve dünya alanı arasında dönüştürme yap.
Oyun hamlelerini tanımla.
Oyun döngüsünü oluştur.
Bir kazanma koşulunun ne zaman karşılandığını belirle.