R 1
Roksam
[DEV]AB 1
[DEV]AB
noisiv 1
noisiv
Manwe Work 1
Manwe Work
mavzermete 1
mavzermete
Hikaye Ekle

Unity Metin2 Mobile Client Prototip

  • Konuyu başlatan Konuyu başlatan kuzgun2
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 15
  • Görüntüleme Görüntüleme 1K

Ekli dosyayı görüntüle 186400

1. Metin2 TCP Paket Protokolü & C# Parser​

C++ tabanlı orijinal Metin2 paket yapısını C# binary reader ile sıfırdan yazdım.

  • Auth (11002) ve Game (13000) portlarıyla doğrudan soket bağlantısı kuruyor.
  • Oyuna giriş, karakter seçimi, Warp (ışınlanma) paketleri sorunsuz çalışıyor.
  • Etraftaki diğer oyuncuların hareketleri, NPC'ler ve canavarlar sunucudan anlık paket geldikçe sahneye spawn oluyor.
Metin2 veritabanındaki global koordinatlar (santimetre cinsinden) ile Unity'nin metre sistemi uyuşmuyordu. Bunu çözmek için (DB_Pos - BasePos) / 100.0f matematiksel dönüşümünü entegre ettim. Ayrıca karakterin hangi haritada (Mavi 1, Sarı 1, Çöl vb.) olduğunu otomatik tespit eden dinamik bir BasePosition algılayıcı ekledim. Böylece ışınlandığınızda koordinat kayması yaşanmıyor.

Metin2 haritalarını 3D model (FBX) olarak Unity'ye aktardığımızda karakterlerin yokuşları çıkamaması veya havada kalması problemi vardı. Fonksiyon gökyüzünden zemin collider'ına doğru otomatik ışın atarak karakterin ve canavarların ayaklarını tam olarak zemin seviyesine basmasını sağlıyor.

Savaşçı, Sura, Ninja ve Şaman karakterlerinin rig yapılarını Unity standardına uyarladım. WASD tuşlarıyla yürüme, koşma ve bekleme animasyon geçişleri ile Space tuşuna basıldığında sunucuya saldırı paketi gönderip hasar vurma mekaniği şu an çalışır durumda.

Binaların boyutları ile karakterlerin boyutları uyuşmadığında devasa karakterler oluşabiliyordu. Unity editöründe GameNetworkManager bileşenine eklediğim globalEntityScale çarpanı sayesinde tek bir değerle (örneğin 0.6 yaparak) tüm dünyayı orantılı şekilde küçültüp büyütebiliyorsunuz.


İDNİR:
  1. Projeyi Unity 2022 veya Unity 6 ile açın.
  2. Assets/Scenes/Login.unity sahnesini yükleyin.
  3. Sahnedeki GameNetworkManager objesini seçip kendi yerel veya VPS sunucunuzun IP adresini, giriş bilgilerinizi yazın.
  4. Harita modelinizin Inspector panelinden Mesh Collider ekli olduğundan emin olun (yükseklik takibi için bu şart).
  5. Editörde başlat butonuna bastığınızda karakteriniz sunucuya bağlanıp oyuna dahil olacaktır.

Proje geliştirmeye tamamen açıktır. Pull request atarak veya kendi projelerinize entegre ederek dilediğiniz gibi kullanabilirsiniz.
eline sağlık, gr2 içeriğindeki bazı özellikleri fbx taşıyamıyor, piyasada paylaşılan bir sdk var, onunla kendi mesh okuyucusunu yapmak çok daha iyi olacaktır diye düşünüyorum.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst