Metin2'yi Unity'ye aktarmak ne kadar büyük bir iş?
Metin2'yi Unity'ye aktarmak, oyunun pack arşivlerindeki verileri açıp Granny (.gr2) biçimindeki modelleri ve animasyonları FBX'e çevirerek Unity'ye almakla başlar. Ama işin asıl büyük kısmı bundan sonra gelir: haritalar, efektler, arayüz ve sunucuyla konuşan ağ katmanı ayrı ayrı yeniden kurulmalıdır. Bu yazıda süreci adım adım ve gerçekçi biçimde anlatıyoruz.
Baştan dürüst olalım: oynanabilir bir Metin2 Unity port'u birkaç hafta sonunda bitecek bir proje değildir. Model dönüştürme, işin görünen ve görece kolay kısmıdır. Sunucuyla sorunsuz konuşan, dokunmatik ekrana göre tasarlanmış ve orta seviye telefonlarda akıcı çalışan bir client ise uzun soluklu, birçok uzmanlık isteyen bir yazılım işidir.
Telif notu: Metin2'ye ait modeller, dokular, sesler ve diğer oyun varlıklarının hakları sahiplerine (Webzen/Gameforge) aittir. Bu varlıkları dönüştürmeden ve kullanmadan önce kendi kullanım hakkını kontrol et. Metin2, Webzen/Gameforge'un tescilli markasıdır.
Adım 1: Pack arşivlerini açmak
Metin2 client verileri tek tek dosyalar halinde değil, paket arşivlerinde durur. Her paket bir dizin dosyası (.eix) ve bir veri dosyasından (.epk) oluşur. Modeller, dokular, harita verileri, arayüz grafikleri ve betik dosyaları bu arşivlerin içindedir.
İlk iş bu arşivleri açıp klasör yapısını korumaktır. Klasör yapısı önemlidir, çünkü modeller dokulara, animasyon betikleri de modellere göreli yollarla başvurur. Yapı bozulursa sonraki adımlarda eksik doku ve kayıp animasyonla uğraşırsın. Arşivlerin şifreleme ve sıkıştırma yöntemi files'a göre değişebilir; özel files'larda paket biçimi tamamen değiştirilmiş olabilir.
Adım 2: GR2 dosyalarını FBX'e çevirmek
Metin2'nin 3D modelleri ve animasyonları Granny 3D biçimindedir (.gr2). Unity bu biçimi doğrudan okumaz, bu yüzden modeller FBX'e çevrilir. Dönüştürmede üç ayrı şey taşınır:
- Mesh (model geometrisi): karakterlerin, canavarların, silahların ve binaların şekli. UV koordinatları ve normaller de eksiksiz gelmelidir.
- İskelet: hareketli modellerde kemik hiyerarşisi. Kemik isimleri ve deri (skin) ağırlıkları doğru gelmezse animasyonlar bozulur.
- Animasyonlar: yürüme, koşma, saldırı ve beceri hareketleri genelde ayrı .gr2 dosyalarında durur. Her animasyonun doğru iskelete bağlanması gerekir.
Karakterlerde ek bir zorluk var: zırh, saç ve silah gibi parçalar ayrı modellerdir ve oyunda birleşerek görünür. Bu parçaların aynı iskeleti paylaştığından ve birlikte doğru hareket ettiğinden emin olmak gerekir.
Sitemizdeki PC araçları arasında bu iş için bir GR2→FBX dönüştürücü de bulunuyor. Mobil arayüz ve 3D harita görüntüleyici gibi diğer araçlarla birlikte Metin2 Unity araçları bölümünden inceleyebilirsin.
Adım 3: Dokular (DDS)
Metin2 dokuları büyük ölçüde DDS biçimindedir. Mobil için en temiz yol, dokuları kayıpsız bir ara biçime alıp sıkıştırmayı Unity'ye bırakmaktır. Böylece Unity, Android ve iOS için uygun mobil sıkıştırmayı (örneğin ASTC) kendisi uygular. Alfa kanalı olan dokulara (saç, yaprak, tül) ayrıca dikkat et. Şeffaflık ayarı yanlış olursa model kenarları kirli ya da kesik görünür.
Adım 4: Unity'ye içe aktarma ayarları
FBX dosyalarını Unity'ye aldıktan sonra şu ayarları gözden geçir:
- Ölçek: Metin2 verisi ile Unity farklı birim ölçekleriyle çalışabilir. İçe aktarmadaki ölçek çarpanını tüm modellerde tutarlı tut ki karakter ile bina arasındaki oran bozulmasın.
- Eksen: veriler Unity'nin Y-yukarı düzeninden farklı bir yönelimle gelebilir. Dönüşümü tek bir yerde ve tutarlı biçimde yap. Her modeli elle döndürmek ileride sorun çıkarır.
- Materyal ve shader: dönüştürülen materyaller genelde sade gelir. Mobil için hafif, tek geçişli shader'lar kullan. Şeffaf ve alfa testli materyalleri ayrı ele al.
- Animasyon tipi: Unity'de Generic ve Humanoid seçenekleri var. Humanoid, animasyonları farklı insansı iskeletler arasında paylaşmayı sağlar ama Metin2 iskeletinin yapısına her zaman uymaz. Canavarlar ve hayvanlar için Generic doğal seçimdir. Karakterlerde hangisinin uygun olduğuna iskelet yapısına göre test ederek karar ver.
- Döngü ve kök hareketi: yürüme ve bekleme gibi animasyonlarda döngüyü aç. Kök hareketini (root motion) kullanıp kullanmayacağına baştan karar ver, çünkü bu karar hareket senkronizasyonunu etkiler.
Adım 5: Haritalar, arazi ve efektler
Haritalar ve arazi
Metin2 haritaları parça parça saklanan yükseklik verileri, doku katmanları ve üzerine yerleştirilmiş nesnelerden oluşur. Bunları Unity'de yeniden kurmak için yükseklik verisini bir arazi mesh'ine ya da Unity Terrain'e çevirmek, doku katmanlarını karıştırmak ve ağaç, bina, kaya gibi nesneleri doğru konum ve dönüşle yerleştirmek gerekir. Su yüzeyleri ve gökyüzü ayrıca ele alınır. Sunucudaki koordinatlarla client'taki koordinatların birebir örtüşmesi şarttır. Aksi halde karakterler havada yürür ya da duvarların içinden geçiyormuş gibi görünür.
Efektler
Beceri, vuruş ve ortam efektleri Metin2'nin kendi efekt betikleriyle tanımlanır. Unity'de bunların genellikle Particle System ile yeniden oluşturulması gerekir. Oyunda çok sayıda efekt olduğu için bu, en çok zaman alan aşamalardan biridir.
Sesler ve müzik
Ses dosyaları da pack arşivlerinden çıkar. Unity'de mobil için uygun sıkıştırma ayarlarıyla içe aktarılmalı, kısa efekt sesleri ile uzun müzik parçaları farklı yükleme ayarlarıyla ele alınmalıdır. Aksi halde müzik dosyaları gereksiz yere belleği doldurur.
Adım 6: Mobil arayüz ve ağ protokolü
Arayüz baştan tasarlanır
PC arayüzünü küçültüp telefona koymak işe yaramaz. Butonlar parmakla basılacak boyutta olmalı, pencereler küçük ekranda rahat yönetilebilmeli. Sanal joystick, düzenlenebilir beceri butonları, dokunmatik envanter, sohbet ve ticaret pencereleri sıfırdan tasarlanır. Bizim client'ımızda bu iş için 4 sekmeli 6×8 envanter, emoji halkası ve tek dokunuşla otomatik av gibi mobile özgü çözümler geliştirildi.
Ağ protokolü C# ile yazılır
Client'ın sunucuya bağlanabilmesi için Metin2'nin ağ protokolünün C# ile yeniden yazılması gerekir: bağlantı ve el sıkışma, şifreleme, giriş, karakter seçimi, hareket senkronizasyonu, savaş, envanter, ticaret, grup ve lonca paketleri. Paket yapıları files'a göre farklılık gösterebilir. PC client ile aynı sunucuya bağlanmanın yolu bu protokolü eksiksiz uygulamaktır. Ancak o zaman PC ve mobil oyuncular aynı sunucuda buluşabilir.
Adım 7: Mobil performans
Masaüstünde sorunsuz çalışan bir sahne telefonda kare hızını hızla düşürebilir. Dikkat edilecek başlıca noktalar:
- Draw call: her ayrı materyal ve nesne ek çizim çağrısı demektir. Doku atlasları, statik birleştirme ve GPU instancing ile azalt.
- Doku sıkıştırma: ASTC gibi mobil biçimler kullan, gereğinden büyük dokuları küçült.
- LOD: uzaktaki karakter ve nesneler için daha az poligonlu sürümler hazırla.
- Görüş mesafesi: kalabalık şehirlerde ve etkinliklerde ekrandaki karakter sayısı performansı belirler. Görüş mesafesini ve ayrıntı düzeyini ayarlanabilir yap.
- Bellek ve ısınma: düşük RAM'li cihazlarda dokuları akıllıca yükle, uzun oturumlarda telefonun ısınmasını hesaba kat.
Hazır çözüm: sıfırdan yapmak yerine
Bu adımların her biri ayrı uzmanlık ister ve hepsi birlikte uzun bir geliştirme süreci demektir. Sunucu sahibiysen ve amacın oyuncularını telefona taşımaksa, bu işi sıfırdan yapmak yerine hazır bir Unity client kullanmak çok daha pratik olabilir. Metin2 mobil files sayfasında Android ve iOS için hazır mobil client'ın içeriğini ve sunucuna kurulum sürecini, satın alma sayfasında source ve kapalı derleme seçeneklerini bulabilirsin.
Sonucu görmek istersen Metin2 Mobil demosunu dene. Android'de APK kurulumu, iPhone'da TestFlight kurulumu birkaç dakika sürer.
Sık sorulan sorular
GR2 dosyası Unity'de doğrudan açılır mı?
Hayır. Unity Granny biçimini doğrudan okumaz. Modellerin ve animasyonların önce FBX'e çevrilmesi gerekir.
Metin2 haritaları Unity'ye aktarılabilir mi?
Evet, ama yükseklik verisi, doku katmanları ve nesne yerleşimi ayrı ayrı ele alınmalıdır. Sunucu koordinatlarıyla örtüşmesi de şarttır.
Humanoid mi Generic mi seçmeliyim?
Canavarlar için Generic doğal seçimdir. Karakterlerde iskelet yapısına göre test ederek karar vermek gerekir.
Metin2 Unity port'u ne kadar sürer?
Ekibe ve kapsama göre çok değişir. Model dönüştürme kısa sürse de harita, efekt, arayüz ve ağ katmanı uzun soluklu bir iştir.
Dönüştürdüğüm modelleri kendi oyunumda kullanabilir miyim?
Varlıkların hakları Webzen/Gameforge'a aittir. Kullanmadan önce kendi kullanım hakkını kontrol etmelisin.