NMORPG Notları: Harita Tasarımı
4 min read

NMORPG Notları: Harita Tasarımı

Ne biraz koşturunca sınıra varılacak kadar ufak olsun, ne de tasarımda beni yoracak kadar büyük olsun diyerek 1km² boyutunda bir arazi oluşturarak başladım test haritasına. Tüm araziyi çimen yeşiline; yerleşim bölgesi, savaş alanı, yolları ise toprak rengine boyadım.


Boyamadan bahsetmemin sebebi, prosedürel olarak haritaya yerleştirilen bir çok nesnenin bazı temel parametrelere bağlı olması: zemin rengi, eğim, yükseklik ve sıklık. Misal; ağaç, kaya ve çimenlerin yol ve binaların altında, hendeklerde ve dik yamaçlarda bulunmaması, kaya ve ağaçların birbirine çok yakın olaması gerekiyor.

Kullandığım sistem aslen bitki örtüsü için tasarlansa da, doğal kaynaklar ya da hayvanların yaşam alanları gibi elle yerleştirmenin gerekmediği durumlarda da hayat kurtarıyor. Oyuncu her 100 metrede bir maden filizine, her 300 metrede bir hayvana denk gelsin diyebiliyorum. Bitki örtüsüne benzer şekilde, maden minerallerinin yol ortasında görünmemesi, geyiklerin kasabalarda gezinmemesi; ilk başta belirlediğim “zemin rengi” kuralına bağlı.


Bu karar verme kısmı kolay olsa da aynı türdeki hayvanların farklı renk ve şekillerde olması, loop’a girmiş gibi tahmin edilebilir bir rotada ilerlememesi ve oyuncuyla etkileşime girebilmesi için ayrı ayrı “paketlenmesi” gerekiyor, ve elle yapılan bir iş olduğundan modelleme yapmış kadar vakit alabiliyor.

Aşağıda prosedürel olarak renk ve şekilleri değişen hayvanların bir kısmı görülebilir. İlk paketleme sırasında belirli kuralları belirledikten sonra, haritaya yerleştirme sırasında fazla emek harcamak gerekmeyecek.

Haritalarda kompozisyon oluşturmak, biraz yemek yapmak gibi. Tüm bileşenler tencere atmaya hazırsa iş çok eğlenceli ve hızlı :)


Mutlaka elle yapılması gereken işlerin bir diğeri, binaların tasarımı. Duvar, çatı, merdivenler, köprüler, eşyalar için kullandığım modeller önceden hazır ancak bunları bir bina haline getirmek biraz zahmetli. Aşağıda, önceden birleştirilmiş bir kule modeli bulunuyor.

Karakterin bina içinde hareket edebilmesi için taban ve duvarların farklı “işaretlenmesi” gerekiyor. Merdivenlerin ve arazinin de öyle. Bol mavi renkli ekran, hangi alanların yürünebilir olduğunun takip edilebildiği NavMesh görünümü, açık yeşil çizgiler ise karakterin duvarlardan geçememesini sağlayan “collider” sınırları.

Sonraki karelerde, binanın katmanlarının katman katman gizlenmiş halleri var. Oyuncu hangi katta ise, üstteki katlar ve çatı gizleniyor. Böylece iç mekanlarda, FPS/TPS oyunlardaki gibi kameranın dar bir alana sıkışması gerekmiyor.

Her kapı ve merdivende, kat değiştirme işinin akıcı bir şekilde gerçekleşmesi için de bir dizi “teleport” noktası var. Hangi kapı hangi odaya/kata açılacak, hangi katlar gizlenecek gibi işlemler için ufak bir bina yönetim sistemi kodladım.

Sistemin istediğim gibi işlemesi için binayı tasarlarken bileşenleri gruplamak, her büyük parçayı mümkün olduğunca tekrar kullanılabilir şekilde tutmak ve her farklı bina türü için bunu yapmam elzem. Kod organizasyonu önemli, e zaten backend geliştiricisisin bunu biliyor olmalısın diyenler için not: Unity’de fazla iç içe gruplar oluşturmak performans açısından “sıkıntılı”. Editörde bana rahatlık sağlayan bir pratik, oyun sırasında yavaşlamalara sebep olabiliyor.

Vakit alan, ama tamamlayınca 20000 parçalık King’s Landing LEGO seti heyecanı veren, bina parçalarını hazırlama işi sanırım en uzun zaman isteyen ve zorlayan kısım. Yukarıdaki tek parçalı model; düz duvar, ok pencereli duvar, köşe sütunu, mazgallı siper ve çıkmalar gibi toplam 20 parçadan oluşuyor.

Sur oluşturmanın ilk adımı bu. Sonrası duvarları birleştirme, çatıyı oturtma, varsa merdivenleri ve teleport noktalarını ekleme, eğer ara katlar varsa eşyalarla doldurma derken işler katlanarak artıyor.

Bu LEGO birleştirme işi, kaleler biterse bir de kasabalar için olacak. Kasabaların, kale surlarına göre daha detay gerektirdiği düşünülürse, ilk sürümdeki yerleşim birimleri umduğum(uz) kadar şık olmayacak büyük ihtimalle.


Açık kullanıcı testleri için bitmesi gerekenler bir bir azalıyor, ama vakit geçtikçe de listeye yeni öğeler ekleniyor. Mümkün olduğunca seçici davranmaya çalışıyorum ancak bazı temel özellikler öngöremediğim başka özelliklerin hazır olmasını gerektiriyor.

Discord sunucusu açıp orada bir topluluk oluşturma niyetim var, ama önce topuluğa sunacak bir test sürümünü hazır etmek, ve bunu yaparken “eee bu mu yani” tepkisi vermeyecek düzeyde içerik sunmak isityorum.

Oyun öğelerinden yoksun, ama temel mekaniklerin bulunduğu; özelliklerin hangilerinin gerekli/gereksiz olduğunu, hangilerinin yanlış kurgulandığını ve neler eklenirse/değiştirilirse oyunda iyileşme sağlanacağını ortaya çıkaracak bu test, üzerimdeki “şunu yapsam mı?” yükünü biraz hafifletebileceği gibi, hiç aklıma gelmeyecek özellikleri yapılacaklar listesine eklememle sonuçlanabilir ve oyun topluluğun yönlendirmesiyle ilerleyebilir.

Görüşmek üzere.

Enjoying these posts? Subscribe for more