Metin2 Server Geliştirme Rehberi: Game ve DB Source Derleme Mantığı
Metin2 pvp server projelerinin arkasındaki beyni, veri akışını ve oyun kurallarını yöneten mekanizmaya Server (Sunucu) tarafı adı verilir. Client tarafı sadece görselleri ve arayüzü ekrana yansıtırken; hasar hesaplamaları, eşya düşme oranları, ticaret kontrolleri ve veritabanı kayıtları tamamen server dosyaları (server files) tarafından gerçekleştirilir. Güvenli, hilesiz ve sıfır gecikmeli bir oyun sunmak tamamen server optimizasyonuna bağlıdır. Bu rehberde, Metin2 server geliştirme süreçlerini ve core mimarisini ele alıyoruz.
Server Files Dosya Yapısı ve Kanallar
Bir Metin2 sunucusunun Linux (FreeBSD) işletim sistemi üzerinde çalışan altyapısı temelde iki ana klasör ve kanallardan (Channel) oluşur:
Share Klasörü: Sunucunun kalbidir. Oyunun ana çalıştırılabilir dosyası olan
game, veritabanı yöneticisi olan db ve tüm harita, quest, proto verileri bu dizinde saklanır.Kanal Yapısı (CH): Oyuncuların bağlandığı kanallar, kendi içlerinde bağımsız çalışan alt çekirdeklerden (Core) oluşur. Her CH dosyasının içinde kendine ait bir
CONFIG belgesi bulunur. Bu belgeler üzerinden kanalın port numaraları, oyuncu limiti ve bağlanacağı IP adresleri manuel olarak yapılandırılır.Game ve DB Source (Kaynak Kod) Derleme Nedir
Oyun mekaniklerine köklü müdahaleler yapmak, hileleri engellemek veya seviye sınırını değiştirmek için C++ ile yazılmış olan sunucu kaynak kodlarını (Server Source) düzenlemeniz ve FreeBSD üzerinde derlemeniz (Build) gerekir.
Geliştirme Adımları: Bilgisayarınızda veya sunucunuzda
/usr/src dizinine server source dosyalarınızı yükleyin. Kod bloklarında (Örn: char_battle.cpp veya item.cpp içinde) yapmak istediğiniz düzenlemeleri tamamlayın.Putty Üzerinden Derleme: Düzenleme bittikten sonra Putty terminalini açarak source dizinine geçiş yapın. Sunucunuzda yüklü olan derleyici sürümüne göre (Örn: g++8, g++9 veya clang) terminale
gmake clean ve ardından gmake -j4 (çekirdek sayısına göre) komutunu yazarak derleme işlemini başlatın. İşlem başarıyla tamamlandığında sistem size yeni bir
game ve db dosyası verir. Bu dosyaları /share dizinine atıp sunucuyu yeniden başlattığınızda, yaptığınız teknik geliştirmeler sunucu tarafında resmi olarak devreye girer.