Foruma hoş geldin, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

OynFrm Reklam Alani OynFrm Reklam Alani
OynFrm Reklam Alani OynFrm Reklam Alani

Mount & Blade II: Bannerlord Dev Blog 11/10/18

Greatking Çevrimdışı

Greatking

Admin
Katılım
23 Tem 2013
Mesajlar
909
Tepkime puanı
54
Puanları
28
Yaş
36
Web sitesi
Discord
greatking
Cinsiyetiniz
Bay
Şube
Bursa
ddc5004bddf6691ad45579a46e3d21d12f7d2be3.jpg


Selamlar Kalradya savaşçıları!

Oyun geliştirmek, ustalık ve dikkat isteyen bir iştir. Bazen elinizde olan bir teknoloji ya da araç, yapmak istediğiniz şeyi tam olarak yapamaz ya da umduğunuz kadar verimli olmaz. Bu da sizi verilmesi zor bir karar ile baş başa bırakır: ya tasarımınızı değiştirin ya da kendi özel çözümünüzü yaratın.

Bannerlord için kullanıcı arayüzü (UI) üzerinde çalışırken, fark ettiğimiz şeylerden biri buydu. Daha önceleri, kullanıcı arayüzümüzü geliştirmek için oyun endüstrisinde gerçekten de oldukça yaygın bir yöntem olan Flash ve Scaleform’un bir kombinasyonunu kullanıyorduk. Scaleform’u kullanarak kullanıcı arayüzünü oyunun içinde çalışır hale getirmeden önce, onu Flash’ta geliştirmeye başlıyorduk. Teknik olarak hem Scalefrom, hem de Flash mükemmel bir şekilde çalışıyor ve kullanıcı arayüzünü istediğimiz şekilde uygulayabilmemizi sağlıyordu. Ancak, adreslemeye ihtiyaç olduğunu düşündüğümüz kullanıcı arayüzünü hazırlama ve uygulama sürecinde, bazı sorunlar olduğunu fark etmemiz fazla uzun sürmedi.

Her şeyden önce süreç, aslında oldukça yavaştı. Kullanıcı arayüzünde yapılacak herhangi bir değişikliğin, test edilecek oyuna eklenmeden önce Flash’ta hazırlanması gerekiyordu. Ekranlar karmaşıklaştıkça .swf dosya oluşturmak daha uzun sürecekti. Ve yaptığımız her bir değişiklikte, sonucu görebilmek için oyunun yeniden yüklenmesi gerekiyordu. Bir nesneyi 5 piksel sola kaydırmak gibi küçük bir değişiklik bile tüm süreci baştan almamızı gerektiriyordu.

Ayrıca Scaleform da, Flash da üzerlerinde kısıtlı kontrolümüz olan üçüncü taraf sistemlerdi. Bu sistemleri ihtiyaçlarımıza uygun olarak değiştirme ve modifiye etmenin zorluğu, bizim onu çalışır duruma getirmek için ortaya koyduğumuz çabamızı sorgulamamıza neden oldu.

Sonunda, kullanıcı arayüzü üzerinde harcadığımız zamanımızın ve enerjimizin bizi gerçekten yavaşlattığını ve oyunumuz için vizyonumuza uygun bir kullanıcı arayüzüne sahip olmamızın tek yolunun kendi arayüz kütüphanemizi geliştirmek olduğunu fark ettik. Sonuçta her işte bir hayır vardır!

Mevcut kullanıcı arayüzüne de binlerce saat ayırdığımızdan, gerçekten biraz korkutucu bir beklentiydi. Neyse ki geliştirme sürecinin başlarında kullanıcı arayüzü oluşturmak için, MVVM adında bir paradigma kullanmaya karar vermiştik. Bu, kodumuzun bir kısmının herhangi bir özel kullanıcı arayüz kütüphanesine bağlı olmayan, düzenli C# sınıflarında olduğu ve geri kalan kısmını tekrar yapmak zorunda kalsak bile, işimizin bu kısmını tekrar kullanabileceğimiz anlamına geliyordu. Gerçekten harikaydı!

Ardından yeni kullanıcı arayüz kütüphanemizin nasıl olacağına karar verdik. Gereksinimlerimizin bir listesini yaptık:

  • Yeni kütüphane hızlı ve çevik olmalıydı. Motor ekibimiz, render döngüsünden bir milisaniye bile kesmek için gerçekten çok çalıştı ve birikimlerinin kullanıcı arayüzünün zayıf performansıyla harcanmasını kabul edemezlerdi.
  • Ayrıca yeni kütüphane ile çalışılması kolay ve üzerinde gerekli olan her değişik anında yapılabiliyor olmalıydı. Metin tabanlı dosyalar birden çok geliştiricinin işbirliğini daha kolay hale getirdiğinden, tercihen XML gibi bir metin bazlı özellik kullanmalıydı.
  • Sistem, son derece etkileşimli kullanıcı arayüzleri oluşturmayı kolaylaştırmalıydı.
  • Kullanıcı arayüz tasarımı, görsel olarak nasıl görüneceğinden bağımsız olmalıydı. Böylece UI tasarımcısının grafikerlerden bağımsız çalışabilmesine olanak verebilecekti.

Yeni kullanıcı arayüz sistemimizin adını Gauntlet koymaya karar verdik (tamamen kulağa havalı geldiğini düşündüğümüzden bu adı seçtik!). Gauntlet ile her an değişiklik yapabiliyoruz. Bu demektir ki, herhangi bir dosya oluşturmaya ya da herhangi bir ek iş yapmaya gerek duymadan, oyunu bir kez kapatmadan bir ekranı düzenleyebiliriz. Bir ekranın .XML dosyasında değişiklikler yaptığımızda, dosyayı kaydeder kaydetmez sonuçları görüyoruz. Ve sistem üzerinde tam kontrole sahip olduğumuzdan, ihtiyacımıza göre değişiklikler de yapabiliyoruz.

Peki nasıl çalışıyor? Aslında sistem oldukça basit. Ekran açıldığında oyunun yüklendiği, oyunun içindeki ekrana bir .xml dosyası yerleştiriyoruz. Ekranın tüm tasarım bilgileri bu dosyada belirtiliyor. Ayrıca eğer bir defadan fazla kullanacağımızı bildiğimiz bir kullanıcı arayüz öğesi oluşturursak (yani diğer ekranlarda), o öğeyi referans gösterebileceğimiz anlamına gelen, her .xml’de diğer .xml dosyalarını referans gösterebiliyoruz. Bu, bizim dosyada değişiklik yapmamıza ve bu değişikliklerin o .xml’i referans gösterdiğimiz her yerde gerçekleşmesine olanak veriyor.

Ayrıca HTML sayfalarında kullanılan CSS dosyaları gibi çeşitli öğelerin nasıl görüneceğini belirten bir dizi ayrı .xml dosyamız da var. Bu skinning sistemi çok güçlü ve grafikerler bir kullanıcı arayüz öğesinin nasıl görüneceği ve davranacağı hakkındaki her detayı kolayca belirtebilir. Örneğin, kullanıcı fareyi hareket ettirdiğinde bir düğme renk değiştirebilir ve kullanıcı üzerine tıkladığında bir animasyon çalışabilir.

blog_post_61_taleworldswebsite_02.jpg

Envanter ekranı .xml

blog_post_61_taleworldswebsite_03.jpg

Oyun içi envanter ekranı

Gauntlet’in, mod geliştirici topluluğumuzun hoşuna gidecek bir ek olmasını umuyoruz. Warband’de kullanıcı arayüzünü düzenlemek her zaman biraz sorun yaratmıştı ve üstesinden gelinemeyen bazı kısıtlamalar vardı. Gauntlet ile mod geliştiricilerin tek kısıtlamaları kendi hayal güçleri olacak ve mod geliştiriciler her ekran üzerinde tam kontrol sahibi olabileceklerdir.

Gelecek haftanın bloğunda yardımcı tasarımcımız Cihan Şekercioğlu ile konuşacağız. Kendisine sormak istedikleriniz varsa yorum kısmına yazabilir, içlerinden bir tanesini yanıtlaması için kendisine sormamızı sağlayabilirsiniz.
 

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kayıt ol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Şimdi kayıt ol
Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap

Tema düzenleyici

Tema özelletirmeleri

Grafik arka planlar

Granit arka planlar