Metin2 Server Source Kod Yapısı – Yeni Başlayanlar İçin Geliştirici Rehberi

  • Konuyu açan Konuyu açan Hayalet
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 3
  • Gösterim Gösterim 238

Hayalet

Üye
Üye
Mesaj
142
Çözümler
2
Beğeni
113
Puan
709
Ticaret Puanı
0
Merhaba arkadaşlar,

Yeni başlayan geliştiricilerin en çok zorlandığı konulardan biri olan source kod mimarisini anlama problemi üzerine kapsamlı bir rehber hazırladım.


Metin2 server source ilk bakışta oldukça karmaşık görünebiliyor.
Game server, DB server, packet sistemi, event sistemi ve onlarca farklı modül birbiriyle etkileşim halinde çalışıyor.


Bu yüzden özellikle source kodu yeni öğrenmeye başlayan geliştiriciler için detaylı bir analiz dokümanı hazırladım.




Rehberde Neler Var?​


Hazırladığım dokümanda şu konular detaylı şekilde anlatılıyor:


1. Metin2 Server Architecture​


  • Game Server
  • DB Server
  • MySQL bağlantısı
  • Client iletişimi
  • Packet sistemi
  • Event sistemi




2. Source Klasör Yapısı​


Source içindeki tüm klasörlerin detaylı açıklaması:


  • common
  • game
  • db
  • libgame
  • liblua
  • libsql
  • libthecore
  • libpoly
  • libmysql
  • serverkey

Her klasörün ne işe yaradığı ve hangi sistemleri içerdiği açıklanıyor.




3. Dosya Analizleri​


Source içindeki önemli dosyalar tek tek açıklanıyor.


Özellikle:


  • .cpp dosyaları ne yapar
  • .h dosyaları ne içerir
  • header yapısı nasıl çalışır
  • Metin2 source neden bu şekilde tasarlanmıştır



4. Oyun Sistemleri Nasıl Geliştirilir​


Yeni sistem eklemek isteyen geliştiriciler için:


  • Yeni item sistemi
  • Yeni skill sistemi
  • NPC davranışları
  • Quest sistemi
  • Packet işlemleri
  • Komut sistemi
  • Combat mekanikleri

hangi dosyalarda yazılır tek tek anlatılıyor.




5. Packet ve Network Sistemi​


Packet akışı detaylı şekilde anlatılıyor:
Kod:
Genişlet Daralt Kopyala
Client → Game Server → DB Server → MySQL
Hangi dosyalar:
  • Packet parse eder
  • Packet gönderir
  • Network iletişimini yönetir
bunlar detaylı şekilde açıklanıyor.




6. Database Sistemi​


Server’ın MySQL ile nasıl konuştuğu anlatılıyor.


Özellikle:


  • Character loading
  • Item saving
  • Player data
  • Query sistemi




7. Core Sistem Analizleri​


Metin2’nin en kritik sistemleri:


  • Character sistemi
  • Item sistemi
  • Skill sistemi
  • Event sistemi
  • Command sistemi
  • Quest sistemi




8. Gerçek Developer Workflow​


Profesyonel geliştiricilerin source ile çalışma şekli:


  • Yeni sistem ekleme
  • Debug yapma
  • Doğru dosyayı bulma
  • Kod karmaşasını çözme




Kimler İçin Faydalı?​


Bu rehber özellikle:

  • Metin2 source öğrenmek isteyenler
  • Yeni sistem yazmak isteyenler
  • Packet sistemini anlamak isteyenler
  • Server mimarisini öğrenmek isteyenler
için hazırlanmıştır.




Not:
Bu rehber hazırlanırken doküman yapısının oluşturulması ve bazı teknik açıklamaların düzenlenmesi sürecinde yapay zekâ araçlarından da destek alınmıştır. Ancak içerikte yer alan teknik bilgiler, analizler ve yapılandırma Metin2 server source kodu üzerine yapılan incelemeler doğrultusunda hazırlanmıştır.PDF de baz alınan klasör ağaçlandırması üzerinden toplanan veri ve bilgiler ile dökümantasyon haline getirilmiştir.



 

Dosya Eklentileri

Son düzenleme:
aşağıdaki bilgilerde faydalı olabilir

1. Binding (Bağlama)​

Binding, farklı programlama dillerinin veya kütüphanelerin birbiriyle iletişim kurmasını sağlayan "köprü"dür. Genellikle performans odaklı dillerle (c/c++), esneklik odaklı dillerin (python, lua) birleştirilmesinde kullanılır.
  • Örnek: oyunun ana motoru C++ ile yazılmıştır ancak arayüz veya görevler Python ile yönetilmek isteniyordur. C++ fonksiyonlarını python içinden çağrılabilir hale getiren koda "python binding" denir.
    [/Lıst]

    2. Wrapper (Sarmalayıcı)​

    Wrapper, mevcut bir kod parçasını (fonksiyon, sınıf veya kütüphane) çevreleyerek ona yeni bir arayüz kazandıran yapıdır. Orijinal kodu değiştirmeden onun davranışını basitleştirmek veya standartlaştırmak için kullanılır.
    • Örnek: çok karmaşık ve kullanımı zor olan bir ağ kütüphaneniz var. Bu kütüphaneyi kullanan, sadece Gonder() ve Al() komutlarını içeren basit bir sınıf yazarsanız, bu yeni sınıf orijinal kütüphanenin wrapper'ı olur.
      [/Lıst]

      3. Boilerplate (Kalıp Kod)​

      Bir programın çalışması için gerekli olan ancak iş mantığına doğrudan katkısı bulunmayan, her projede tekrar tekrar yazılan standart kod bloklarıdır.
      • Örnek: bir c++ dosyasının başına her seferinde yazdığın #include satırları ve int main() { ... return 0; } yapısı bir boilerplate örneğidir.
        [/Lıst]

        4. Refactoring (Yeniden Düzenleme)​

        Kodun dış davranışını (çıktısını) değiştirmeden, iç yapısını daha temiz, okunabilir ve performanslı hale getirmek için yapılan iyileştirme sürecidir.
        • Motto: "çalışıyorsa dokunma" değil, "çalışıyor ama daha iyi yazılabilir" yaklaşı mıdır?
          [/Lıst]

          5. Middleware (Ara Yazılım)​

          İki farklı uygulama, veri tabanı veya sistem arasında "tercüman" görevi gören yazılım katmanıdır. İstekleri bir taraftan alır, işler ve diğer tarafa iletir.

          6. Mocking (Taklit Etme)​

          Özellikle test aşamalarında, henüz tamamlanmamış veya erişilemeyen bir sistemi (örneğin bir ödeme apı'si) taklit eden "sahte" objeler oluşturma işle midir?

          7. Overhead (Ek Yük)​

          Bir işlemin asıl amacı dışında harcadığı kaynak (zaman, bellek, cpu).
          • Örnek: bir veriyi şifrelemek verinin güvenliğini sağlar ama işlemciye ek bir yük bindirir. Bu ek yüke overhead denir.
            [/Lıst]

            Özet Tablo​

            TerimNe Yapar?Benzetme
            Bindingİki dili birbirine bağlar.Elektrik prizi ve fiş dönüştürücü.
            WrapperMevcut kodu paketler.Hediyeyi paketleyip üzerine kurdele takmak.
            BoilerplateTekrar eden gereklilikler.Form doldururken her seferinde yazılan Ad-Soyad kısmı.
            RefactoringKodu temizler.Dağınık bir odayı eşyaların yerini değiştirmeden toplamak.
 
Geri
Üst