Metin2 Server Source 64bit Build

Whistle

Ruhsuz Filozof
Kurucu
Kurumsal Üye
Geliştirici
Yardımsever Üye
Mesaj
11.495
Çözümler
546
Beğeni
12.048
Puan
5.864
Merhaba arkadaşlar,
Eğer metin2 server source dosyalarını 64 bit modunda build etmek isterseniz devil ve cryptopp'un 64bit hali gerekiyor. Birkaç gün önce bunun üzerinde uğraştım ve build başarıyla gerçekleşti.

metin2 64bit game.jpg metin2 64bit game libler.jpeg

64bit ile derleme çalışmasında kullandığım kaynak kodları Metin2 Sıfırdan Altyapı Server Files Hazırlama Rehberi 'nde oluşturduğumuz dosyalardır.
Linkleri görebilmek için giriş yap veya kayıt ol.
adresinden kaynak kodlarına erişebilirsiniz. Açıklama kısmında gerekli paketleri nasıl kurulması gerektiği yazıyor.

İşlemlere başlamadan önce 64bit freebsd kurmanız gerekmektedir. Ben çalışmalarımı freebsd 12.2 amd64 üzerinde gerçekleştirdim. Kurulum için gerekli dosyayı
Linkleri görebilmek için giriş yap veya kayıt ol.
tıklayarak edinebilirsiniz.
Eğer freebsd kurulumunu daha önce yapmadıysanız
Linkleri görebilmek için giriş yap veya kayıt ol.
bakabilirsiniz..

Gerekli materyalleri hazırladıktan sonra konuya devam edebilirsiniz.
Uyarı: Daha önce bu işler ile uğraşmadıysanız ilk önce Metin2 Sıfırdan Altyapı Server Files Hazırlama Rehberi 'ni bitiriniz.
Eğer gerekli her şey hazırsa bu konuya devam edebilirsiniz...

Yapmanız gerekenler;
  1. Kaynak kodunda Makefile dosyalarında -m32 yazan yerleri -m64 olarak değiştirmek.
  2. libhackshield'i kaldırmak. Rehber konusu: Metin2 Server Source HackShield Kaldırma
  3. Verdiğim linkteki lib dosyalarınızı Extern/lib içerisine atmak.
Ya da şu videoyu izleyerek libleri nasıl derlediğimi öğrenebilirsiniz.


Not: Video 32bit freebsd kurulumunda anlatılmıştır. 64 bit freebsd'de de aynı şekilde elde edebilirsiniz.

Freebsd 12 64bit devil libleri indirme linki
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.


Linkleri görebilmek için giriş yap veya kayıt ol.


Not2: Kaynak kodlarını 64bit ile build ettikten sonra sorunlar meydana gelebilir. Bu konu denemek isteyenler için açılmıştır.


Not3: #8 numaralı yorumdan dolayı 3. notu ekleme gereği duydum. Sanırsam bu konu yanlış anlaşılmış ve üstte yazdığım not tam olarak durumu açıklamaya yetmemiş. Bu konu 64bit ile build edebilmek için nelerin yapılması gerektiğini anlattım. Benim gibi uğraşmak isteyenler için nereden başlanacağını anlattım. En basitinden 64 ile build ederken yeni warningler ortaya çıkıyor, proto dosyaları okurken core veriyor, oyuna bağlanılmıyor, çoğu veri tiplerinin güncellenmesi gerekiyor vs. Bunları düzeltmek gerekiyor...
 
Son düzenleme:
pkg install -y devil

whereis cryptopp

cd (whereis output) && make install BATCH="YES"

5 dakika bile sürmüyor açıkcası..
 
Şimdi bunu alır diğer forumda paylaşırlar alıntı bile yazma zahmetine girmezler.
 
Şimdi bunu alır diğer forumda paylaşırlar alıntı bile yazma zahmetine girmezler.
Eskisi kadar bu durumu kafaya takmıyorum artık. Keşke kaynak gösterip paylaşsalar...
Zaten herkesin faydalanabilmesi için paylaştım bunları.
Çünkü 64bit ile ilgili sorular geliyordu. Gece de uyku tutmayınca uğraşmak istedim. :D

Ha nereden aklıma geldiğini de söyleyeyim. Çözüldü - Source 64-BİT Build? bu konu sayesinde oldu :D
 
Şimdi bunu alır diğer forumda paylaşırlar alıntı bile yazma zahmetine girmezler.

Diğer forumlarda paylaşmazlar çünkü -m64 ile build edip oyuna giremezsin direkt.

değişmeyen 1 dosya kalmıyor 64 bit yaptığında, açıkcası diğer forumlarda bunu paylaşırsan sana bir tarafıyla gülerler:poke:
 
Güncelleme;
db açılırken proto dosyalarının okunması sırasında bus error hatası ile karşılaştım.
db buss error proto_reader.jpg

Kod:
[1]  + 2431 bus error (core dumped)  ./db

Hatanın kaynağını tespit etmek için ilk önce gdb ile baktım..
buss error core proto reader gdb.jpg

Daha sonra db/src/ProtoReader.cpp dosyasını açtım ve kodları analiz etmeye başladım. Ekrana mesajlar yazdırdım vs.
C++:
static string* StringSplit(string strOrigin, string strTok)
{
    /*fprintf(stdout, "string %s tok %s", strOrigin.c_str(), strTok.c_str());
    fprintf(stdout, "cutat %ld - %ld\n", strOrigin.find_first_of(strTok), strOrigin.npos);*/
    unsigned int    cutAt;                            //자르는위치
    int                index     = 0;                    //문자열인덱스
    string* strResult = new string[30];          //결과return 할변수

    //strTok을찾을때까지반복
    while ((cutAt = strOrigin.find_first_of(strTok)) != strOrigin.npos)
    {
       if (cutAt > 0)  //자르는위치가0보다크면(성공시)
       {
           //fprintf(stdout, "sira %d\n", index);
           strResult[index++] = strOrigin.substr(0, cutAt);  //결과배열에추가
       }
       strOrigin = strOrigin.substr(cutAt+1);  //원본은자른부분제외한나머지
    }

İşaretlediğim alanda (15. satır) dizi sınırını aştığı için bu hatayı verdiğini fark ettim. Burayı kısa süreliğine devredışı bıraktım ve while döngüsünün sonsuz döngüye girdiğini fark ettim. Kaynak kodları 64bit ile build ettiğim için strOrigin.find_first_of(strTok) ve strOrigin.npos çıktıları long int türünde olduğunu fark ettim. cutAt değişkeni ise uint türünde olduğu için uyuşmazlık sebebi ile karşılaştırma yapamıyordu. Bu yüzden while döngüsü ve koşullar düzgün çalışmıyordu.

C++:
    unsigned int    cutAt;                            //자르는위치

Yukarıdaki kodu şu şekilde değiştirdim;
C++:
    unsigned long int    cutAt;                            //자르는위치

Ve başarılı bir şekilde proto dosyalarımı okuyup veritabanına aktardı. :)
bus error proto reader cozum kanit.jpg


Anlayacağınız üzere 64bit ile build almak kolay ancak serveri çalıştırmak için yapılması gereken çok şey var. Zaten konuyu da benim gibi uğraşmak isteyenler için paylaşmıştım. Bu yüzden linki geliştirici rankına sahip kullanıcıların görmesi şekilde ayarlamıştım. 64bit buildi merak edip nereden başlayacağını bilmeyenler içindi bu konu.
 
Bir iki saatlik uğraş sonucunda 64 bit derlemeyi yaptım. Birisi vardı üye o 400 euro isteyebileceği kadar zor bir işlem değil. Tabi beni ilgilendirmez ne kadar isteyeceği kimsenin emeğine fiyat biçmek bana kalmaz. Biraz kod düzenlemesi ve veri tiplerinin değiştirilmesi ile (
Linkleri görebilmek için giriş yap veya kayıt ol.
) sorunsuz derlenip oyuna giriş yapılabiliyor. Tabi bu derleme sonucunda yeni warningler veya başka sorunlar çıkabilir bunları çözmekte elbette geliştiriciye kalıyor. Libleri derlemekle uğraşmayın konudan direk indirin kullanın bsd sürümü fark etmiyor. Libleri derleyip bizler ile paylaştığı için @Whistle teşekkürlerimi sunarım. Herkese iyi çalışmalar.
 
Son düzenleme:
Biraz bilgi ve uğraş ile hemen hemen her şey yapılabilir. Bende bi merak ile başladım ve başarıyla derlemeyi aldım. 64bit derleme ile ilgili çok soru geliyordu. Bu konuyu da başlangıç kısmı için açtıydım. Olumlu bi yorum ile karşılaşınca mutlu oldum doğrusu. :)
Rica ederim. İyi çalışmalar...
 
Biraz bilgi ve uğraş ile hemen hemen her şey yapılabilir. Bende bi merak ile başladım ve başarıyla derlemeyi aldım. 64bit derleme ile ilgili çok soru geliyordu. Bu konuyu da başlangıç kısmı için açtıydım. Olumlu bi yorum ile karşılaşınca mutlu oldum doğrusu. :)
Rica ederim. İyi çalışmalar...
Şunu da eklemek istiyorum. Metin2dev sitesinde derlemeye hazır mainline source var. Sıfır altyapı ile başlayacaklar direk o sourceyi indirip kullanabilir hazır client ve game source yanında hazır freebsd vhd ile birlikte yayınlanmış.
 
Link dursun o halde faydalanmak isteyenler oradan da indirebilir. :)
 
@Whistle
/usr/local/bin/ld: skipping incompatible /usr/local/lib/gcc10/gcc/x86_64-portbld -freebsd12.2/10.3.0/../../../libstdc++.so when searching for -lstdc++
/usr/local/bin/ld: skipping incompatible /usr/local/lib/gcc10/gcc/x86_64-portbld -freebsd12.2/10.3.0/../../../libstdc++.a when searching for -lstdc++
/usr/local/bin/ld: cannot find -lstdc++
derlemenin sonunda böyle bir hata alıyorum tüm dosyalar derleniyor gameyi oluşturcakken bunu veriyor
 
Hangi kaynak kodlarını derliyorsunuz?
pkg install llvm yazdıktan sonra yeniden deneyebilir misiniz
 
gcc10 kullanıyorum martysama v5.3 şuan kuruyorum llvm yi daha önce hep hazır bsdler kullandığım için paketler hakkında pek bilgim yok daha dün ilk defa freebsd kurdum :)

Malesef yine aynı hatayı verdi
 
Bu konu 64 build almak için. Farklı kaynak kodu kullanmışsınız. Belki düzenlenmesi gereken başka yerler vardır. Konuda verdiğim kaynak kodlarını derlemeye çalışır mısınız? Bakalım olacak mı
 
Bu konu 64 build almak için. Farklı kaynak kodu kullanmışsınız. Belki düzenlenmesi gereken başka yerler vardır. Konuda verdiğim kaynak kodlarını derlemeye çalışır mısınız? Bakalım olacak mı
Şuanda sorunsuz çalışıyor sorun yok freebsd dosyalarında sorun varmış başka bi bsdden elle alıp attım uyumsuz so ve a dosyalarını ciddi derecede build hızı arttı mariadb10.5 kullanıyorum ondada hız artışı var normalde bir item alıp envantere efsun falan attımmı arkasından 1 dakika sonra reboot attımı kayıt etmiş oluyordu şuan bu sere 35 40 saniye civarında
 
Geri
Üst