Metin2 Unity Mobile Client – C# TCP Parser ve Client Source
admin
Katılım
23 Eki 2022
Mesajlar
9,752
Çözümler
14
Tepkime puanı
9,594
Puanları
113
Yaş
28
Web sitesi
farming-simulator.r10dev.net

Unity Metin2 Mobile Client Prototype – C# TCP Parser, Unity Metin2 Client Source ve Server Entegrasyonu

Unity Metin2 Mobile Client Prototype, orijinal Metin2 TCP paket yapısıyla doğrudan haberleşebilen, C# ve Unity kullanılarak geliştirilmiş açık bir Metin2 client prototipidir.

Proje; Metin2 Unity Client, mobil Metin2 client, özel Metin2 client geliştirme ve modern 3D Metin2 projeleri için başlangıç altyapısı olarak kullanılabilir.

C++ tabanlı orijinal Metin2 paket yapısı C# tarafında sıfırdan oluşturulan özel bir Binary Reader ve TCP Packet Parser sistemiyle işlenmektedir.
1786915447784.webp

Temel Özellikler

  • C# ile yazılmış Metin2 TCP Packet Parser
  • Orijinal Metin2 TCP paket yapısına uyumlu iletişim
  • Auth Server bağlantısı
  • Game Server bağlantısı
  • 11002 Auth port desteği
  • 13000 Game port desteği
  • Login sistemi
  • Karakter seçimi
  • Warp ve harita değiştirme
  • Oyuncu senkronizasyonu
  • NPC senkronizasyonu
  • Canavar senkronizasyonu
  • Anlık hareket paketleri
  • Metin2 global koordinat sistemi
  • Dinamik BasePosition algılama
  • Unity metre sistemine koordinat dönüşümü
  • FBX Metin2 harita desteği
  • Mesh Collider tabanlı zemin algılama
  • Warrior, Sura, Ninja ve Shaman desteği
  • Unity rig ve animasyon sistemi
  • WASD hareket sistemi
  • Yürüme, koşma ve bekleme animasyonları
  • Server'a saldırı paketi gönderme
  • Temel combat/damage sistemi
  • Global entity scale sistemi
  • Unity 2022 desteği
  • Unity 6 desteği

Metin2 TCP Paket Protokolü ve C# Parser

Metin2'nin C++ tabanlı paket yapısı C# içerisinde yeniden oluşturuldu.

Unity client, Metin2 Auth ve Game serverlarına doğrudan TCP socket bağlantısı kurarak login, karakter seçimi, warp ve oyun sırasında gelen paketleri işleyebilmektedir.

Bu yapı özellikle Metin2 C# Client, Unity Metin2 Client, Metin2 Client Source ve özel Metin2 client projeleri geliştirmek isteyenler için kullanılabilir.

Metin2 Koordinat Sistemi

Metin2 server tarafındaki global koordinatlar santimetre cinsinden tutulurken Unity metre sistemi kullanmaktadır.

Bu nedenle proje içerisinde:

(DB_Pos - BasePos) / 100.0f

dönüşümü uygulanmaktadır.

Ayrıca mevcut haritanın BasePosition değerini otomatik olarak tespit eden dinamik bir sistem bulunmaktadır.

Bu sistem sayesinde Mavi 1, Sarı 1, Çöl ve diğer Metin2 haritalarında teleport veya warp sonrasında oluşabilecek koordinat kaymaları engellenmektedir.

Unity Metin2 Harita ve Zemin Sistemi

Metin2 haritaları FBX gibi 3D modeller halinde Unity'ye aktarıldığında karakterlerin yokuşları takip edememesi veya zeminin üzerinde havada kalması gibi problemler oluşabilir.

Bu prototipte gökyüzünden zemine doğru raycast gönderilerek karakter ve canavarların gerçek zemin yüksekliği otomatik olarak hesaplanmaktadır.

Harita modelinde Mesh Collider bulunması gerekmektedir.

Bu sistem sayesinde:

  • Yokuşlar
  • Tepeler
  • Eğimli zeminler
  • Düzensiz terrain
  • Özel FBX haritalar
üzerinde daha doğru karakter yüksekliği elde edilebilir.

Metin2 Karakter ve Animasyon Sistemi

Prototipte Metin2'nin klasik karakter sınıfları desteklenmektedir:

  • Savaşçı
  • Sura
  • Ninja
  • Şaman
Karakter rig yapıları Unity animasyon sistemiyle çalışacak şekilde düzenlenmiştir.

WASD ile hareket, yürüme, koşma ve idle animasyon geçişleri bulunmaktadır.

Space tuşuna basıldığında server tarafına saldırı paketi gönderilerek temel savaş mekanizması çalıştırılabilmektedir.

Unity Metin2 Combat Sistemi

Client tarafından Metin2 serverına saldırı paketi gönderilebilmekte ve serverdan dönen combat bilgileri işlenebilmektedir.

Bu sistem ileride:

  • Skill sistemi
  • PvP
  • PvE
  • Damage synchronization
  • Target sistemi
  • Canavar savaşları
  • Karakter statları
  • Attack animation
  • Item ve ekipman sistemleri
gibi özelliklerle genişletilebilir.

Global Entity Scale

Unity'ye aktarılan Metin2 haritalarında bina, karakter ve diğer nesnelerin ölçekleri birbirinden farklı olabilir.

Bu problemi çözmek için GameNetworkManager içerisine globalEntityScale parametresi eklenmiştir.

Örneğin:

globalEntityScale = 0.6

değeri kullanılarak tüm entity'lerin ölçeği tek bir değer üzerinden küçültülebilir veya büyütülebilir.

Bu sayede her karakteri veya objeyi tek tek yeniden ölçeklendirmek gerekmez.

Metin2 Mobile Client Geliştirme

Bu proje ileride Android ve iOS tabanlı bir Metin2 Mobile Client geliştirmek için temel olarak kullanılabilir.

Eklenebilecek sistemler:

  • Mobil joystick
  • Touch kontroller
  • Android desteği
  • iOS desteği
  • Mobil UI
  • Inventory
  • Equipment
  • Skill sistemi
  • Quest sistemi
  • Chat
  • Party
  • Guild
  • Mount
  • Shop
  • Character customization
  • MMORPG UI
  • Mobil optimizasyon
  • Network optimization

İndirme

Metin2 Unity Mobile Client Prototype:


[/REPLYANDTHANKS]

Kurulum

  1. Projeyi Unity 2022 veya Unity 6 ile açın.
  2. Assets/Scenes/Login.unity sahnesini açın.
  3. GameNetworkManager objesini seçin.
  4. Kendi local veya VPS Metin2 server IP adresinizi ve giriş bilgilerinizi girin.
  5. Harita modelinizde Mesh Collider bulunduğundan emin olun.
  6. Unity Editor içerisinden Play butonuna basın.
  7. Client Metin2 serverına bağlanarak oyuna dahil olacaktır.

Açık Geliştirmeye Uygun Metin2 Unity Client

Proje tamamen geliştirilmeye ve farklı Metin2 projelerine entegre edilmeye açıktır.

Geliştiriciler kaynak kodunu değiştirebilir, mevcut sistemleri kendi projelerine entegre edebilir, yeni Metin2 paketlerini ekleyebilir ve client altyapısını mobil veya PC platformları için geliştirebilir.

Pull request ve topluluk katkıları memnuniyetle karşılanmaktadır.
 
Son düzenleme:
Üst
Reklam Ver
R10dev.net'i ana ekrana ekle!