Metin2 Source Build Rehberi
Merhaba,
Bu rehber, Metin2 geliştiriciliğine yeni başlayan ve source build konusunda sorun yaşayan kişiler için hazırlanmıştır.
Amacımız, source dosyalarında yaptığımız değişiklikleri build ederek oyuna aktarmak ve oluşan yeni game ile db dosyalarını sunucumuza kurmaktır.
Build Nedir?
Öncelikle build işleminin ne olduğunu anlamamız gerekiyor.
Metin2'nin source (kaynak) dosyaları üzerinde herhangi bir değişiklik yaptığımızda, yaptığımız değişikliklerin oyun içerisinde çalışabilmesi için source dosyalarını build etmemiz gerekir.
Örneğin:
C++ source kodunda bir sistem değiştirdiniz → Build gerekir.
Game veya DB source koduna yeni bir özellik eklediniz → Build gerekir.
Bir fonksiyonda değişiklik yaptınız → Build gerekir.
Ancak her değişiklik için build yapılmaz.
Örneğin bir itemin iconunu değiştirmek istiyorsanız source dosyalarında herhangi bir değişiklik yapmadığınız için build yapmanıza gerek yoktur. Gerekli pack dosyasını değiştirmeniz yeterlidir.
Kısacası:
Source dosyalarında değişiklik yaptıysanız build yapmanız gerekir.
FreeBSD Hazırlığı
Build işlemine başlamadan önce kullandığınız FreeBSD sisteminde gerekli paketlerin kurulu olması gerekir.
Bunun için iki farklı yolunuz var.
Yol – Mevcut FreeBSD'yi hazırlamak
Hali hazırda kullandığınız FreeBSD sürümüne gerekli paketleri kendiniz yükleyebilirsiniz.
Bununla ilgili rehber:
Build ederken gmake komutu çalışmıyorsa yapılması gerekenler
Yol – Hazır FreeBSD kullanmak
Mevcut FreeBSD sürümünüzü kullanmak yerine gerekli ek paketleri hazır olarak içerisinde bulunduran FreeBSD sürümünü kullanabilirsiniz.
Hazır FreeBSD sürümü
Bu iki yöntemden birini seçip FreeBSD sistemimizi build işlemine hazır hale getirdikten sonra source build işlemine geçebiliriz.
Source Dosyalarını Sunucuya Atmak
İnternetten indirdiğiniz server files içerisinde source dosyaları genellikle iki farklı şekilde bulunur.
Dosya isimlerinin LemonHaze olduğunu varsayalım.
Yöntem – Source dosyaları ZIP içerisindeyse
Örneğin elimizde:
LemonHaze.tar.gz
isimli bir arşiv olduğunu düşünelim.
Arşivin içerisinde:
LemonHaze
isimli klasör bulunuyor ve bu klasörün içerisinde:
source
extern
klasörleri bulunuyor.
Bazı fileslerde ise arşivin içerisinde doğrudan:
source
extern
klasörleri bulunabilir.
Her iki durumda da yapacağımız işlem aynıdır.
Yöntem – Source klasör olarak verildiyse
Bazı fileslerde ise ZIP dosyası bulunmaz.
Bunun yerine doğrudan:
source
extern
klasörleri verilir.
Bu durumda arşiv açmamıza gerek yoktur.
Bu iki klasörü doğrudan oluşturacağımız source klasörünün içerisine atabiliriz.
/usr/src İçerisinde Source Klasörü Oluşturmak
FTP programı olarak FileZilla kullanabilirsiniz.
FileZilla ile:
/usr/src
klasörüne gidiyoruz.
Burada yeni bir klasör oluşturuyoruz.
Bu rehberde klasörümüzün adını:
LemonHazesrc
olarak kabul edeceğiz.
Sonuç olarak source dosyalarımızın ana yolu:
/usr/src/LemonHazesrc
olacak.
ZIP Dosyası Kullanıyorsanız
Eğer source dosyalarınız:
LemonHaze.tar.gz
şeklinde bir arşiv içerisindeyse bu dosyayı:
/usr/src/LemonHazesrc
içerisine atıyoruz.
Daha sonra PuTTY'e bağlanıyoruz.
Öncelikle oluşturduğumuz klasöre giriyoruz:
cd /usr/src/LemonHazesrc
Arşivi çıkartıyoruz:
tar zxvf LemonHaze.tar.gz
Bir süre bekledikten sonra arşivin içerisindeki:
source
ve
extern
klasörlerinin çıkartıldığını göreceksiniz.
Arşiv artık gerekli olmadığı için isterseniz silebilirsiniz:
rm -rf LemonHaze.tar.gz
Dikkat: rm -rf komutu dosya ve klasörleri doğrudan siler. Komutu çalıştırmadan önce doğru dizinde olduğunuzdan emin olun.
Source Klasörleri Zaten Hazırsa
Eğer size:
source
ve
extern
klasörleri ZIP olmadan doğrudan verildiyse işlem daha basittir.
Bu iki klasörü FileZilla üzerinden:
/usr/src/LemonHazesrc
içerisine atmanız yeterlidir.
Build İşlemini Başlatmak
Artık source dosyalarımız hazır.
PuTTY'e geçiyoruz ve source klasörüne giriyoruz:
cd /usr/src/LemonHazesrc/source
Burada önce eski build dosyalarını temizliyoruz:
gmake clean
Ardından build işlemini başlatıyoruz:
gmake all
Bundan sonra source dosyalarının derlenmesi başlayacaktır.
Build işleminin tamamlanması, kullandığınız source ve sunucunun donanımına göre bir süre alabilir.
Bu işlem ile /usr/src/LemonHazesrc/source yolu üzerinden full build yapmış oluyoruz.
Eğer yalnızca belirli bir bölüm üzerinde build yapmak istiyorsanız, ilgili klasörün yoluna göre işlem yapmanız gerekir.
Build Sonucunda Oluşan Game ve DB
Build işlemi başarılı bir şekilde tamamlandığında:
/usr/src/LemonHazesrc/Source/game
klasörü içerisinde:
game_xxxx
benzeri bir dosya,
/usr/src/LemonHazesrc/Source/db
klasörü içerisinde ise:
db_xxxxx
benzeri bir dosya oluşacaktır.
Burada:
game_xxxx → Build edilmiş game
db_xxxxx → Build edilmiş db
dosyamızdır.
Game ve DB Dosyalarının İsimlerini Değiştirmek
Oluşan dosyaların isimlerini standart hale getiriyoruz.
game_xxxx
dosyasının ismini:
game
olarak değiştiriyoruz.
db_xxxxx
dosyasının ismini:
db
olarak değiştiriyoruz.
Böylece elimizde:
game
ve
db
isimli build edilmiş dosyalarımız bulunuyor.
Game Dosyasını Paketlemek
PuTTY üzerinden game klasörüne gidiyoruz:
cd /usr/src/LemonHazesrc/Source/game
Ardından game dosyasını arşivliyoruz:
tar cvzf game.tar.gz game
Bunun sonucunda:
game.tar.gz
isimli arşiv oluşacaktır.
DB Dosyasını Paketlemek
Şimdi DB klasörüne geçiyoruz:
cd /usr/src/LemonHazesrc/Source/db
DB dosyasını arşivliyoruz:
tar cvzf db.tar.gz db
Bunun sonucunda:
db.tar.gz
isimli arşiv oluşacaktır.
Yeni Game ve DB Dosyalarını Sunucuya Atmak
Artık elimizde iki adet arşiv var:
game.tar.gz
db.tar.gz
Bu iki dosyayı FileZilla ile:
/usr/game/share
klasörünün içerisine atıyoruz.
Eski Game ve DB Dosyalarını Silmek
PuTTY üzerinden:
/usr/game/share
klasörüne giriyoruz:
cd /usr/game/share
Burada mevcut sunucumuzun kullandığı:
game
ve
db
dosyaları bulunuyor.
Yeni build ettiğimiz dosyaların eski dosyaların yerini alması için eski dosyaları siliyoruz.
Eski game dosyasını silmek için:
rm -rf game
Eski db dosyasını silmek için:
rm -rf db
ÖNEMLİ: Bu dosyaları silmeden önce mutlaka yedek almanızı öneririm. Bir sorun yaşamanız durumunda eski game ve db dosyalarına geri dönebilmeniz önemlidir.
Yeni Game ve DB Dosyalarını Çıkartmak
Şu anda:
/usr/game/share
içerisinde:
game.tar.gz
ve
db.tar.gz
dosyalarımız bulunuyor.
Game dosyasını çıkartıyoruz:
tar zxvf game.tar.gz
DB dosyasını çıkartıyoruz:
tar zxvf db.tar.gz
İşlem tamamlandığında yeni build ettiğimiz:
game
ve
db
dosyaları /usr/game/share içerisinde yerini almış olacak.
İşlemi Tamamlamak
Build edilmiş yeni game ve db dosyalarımız artık sunucumuza yerleştirilmiş durumda.
Son olarak sunucuyu yeniden başlatıyoruz:
reboot
Sunucu yeniden başladıktan sonra build ettiğimiz yeni game ve db dosyaları kullanılacaktır.
Böylece source üzerinde yaptığımız değişiklikleri build edip sunucumuza aktarmış olduk.
Kısaca İşlem Sırası
FreeBSD'yi gerekli paketlerle hazırlıyoruz.
Source dosyalarını /usr/src/LemonHazesrc içerisine atıyoruz.
Source klasörüne giriyoruz:
cd /usr/src/LemonHazesrc/source
Temizlik yapıyoruz:
gmake clean
Build ediyoruz:
gmake all
Oluşan game_xxxx dosyasını game, db_xxxxx dosyasını db olarak yeniden adlandırıyoruz.
Game'i paketliyoruz:
tar cvzf game.tar.gz game
DB'yi paketliyoruz:
tar cvzf db.tar.gz db
game.tar.gz ve db.tar.gz dosyalarını /usr/game/share içerisine atıyoruz.
Eski game ve db dosyalarını yedekleyip siliyoruz.
Yeni dosyaları çıkartıyoruz:
tar zxvf game.tar.gz
tar zxvf db.tar.gz
Sunucuyu yeniden başlatıyoruz:
reboot
İşlem tamamdır.
Bu rehber sayesinde source dosyalarında yaptığınız değişiklikleri build ederek game ve db dosyalarına dönüştürebilir ve sunucunuza aktarabilirsiniz.