Whistle

Ruhsuz :/
Kurucu
Geliştirici
Yardımsever Üye
Mesaj
11.940
Çözümler
566
Beğeni
13.618
Puan
5.915
Ticaret Puanı
2
Merhaba arkadaşlar,
Bu rehber serimizde kraizy.tgz dosyalarını kullanarak sıfırdan metin2 server files geliştireceğiz.
Bu rehber serisinde anlatacaklarım biraz daha ileri seviye bilgi birikimine sahip olanlar içindir. Daha önce bu işlerle uğraşmadıysanız Metin2 Geliştirici Eğitimi Video Serisine bakabilirsiniz.
İleri seviye bilgi gerekeceğinden dolayı videolarda anlattıklarımı dikkatle dinler ve adım adım ilerlerseniz bi sorun yaşayacağınızı düşünmüyorum.

Neden böyle bi rehber hazırlıyorum?
:disney-is-frozen6:

  • Günümüz fileslerinde çok fazla sistem eklentileri olduğu için çoğu kişi altyapı server files arayışına girdi. Piyasada altyapı filesleri bolca bulunmakta. Fakat ben sıfırdan ana dosyaları kullanarak altyapı filesi hazırlamayı göstereceğim.
  • Server files nasıl hazırlanır, source dosyaları nasıl build edilir, source dosyaları nasıl güncellenir, makefile hataları nasıl düzeltilir, db hataları nasıl düzeltilir. Bunları öğreneceğiz.
  • Gerçekten bu işlerle uğraşmak isteyenler için ileri seviye bi rehber serisi olacak.
  • Seride altyapı filesi bitirdikten sonra MMO Tutkunları Altyapı Filesi olarak yayına sunulacak. Detaylar: MMO Tutkunları Altyapı Filesi Hazırlama Hakkında

Yapılacaklar Listesi
  • Kraizy.tgz dosyalarını kullanarak game ve db build edilecek. Bunun için freebsd kurulumu gösterilecek. (bitti)
  • ServerFiles hazırlanacak ve derlediğimiz game ve db dosyaları ile oyunu açmaya çalışacağız. (bitti)
  • Client'in Visual Studio 2019 sürümünde build edilebilmesi için Extern güncellemesi ve kaynak kodlarında düzenlemeler yapılacak. (bitti)
    • boost 1.43 -> 1.73.0
    • devil 1.6.1 -> 1.8.0
    • cryptopp 5.6.1 -> cryptopp 8.2.0
    • libjpeg-6b -> libjpeg-9d
    • lzo-2.03 -> lzo-2.10
    • python 2.2 -> python 2.7
  • Oyuna Giriş yapabilmek için pack ve client dosyaların ayarlanması. (bitti)
  • Oyunu başlatmak ve kapatmak için shell scriptlerini yazmak. (bitti)
  • Temizlik için shell scriptini yazmak. (bitti)
  • Server'in güncel freebsd sürümlerinde build edilebilmesi için. Extern güncellemesi, gereksiz eklentilerin kaldırılması (serverkey, gtest vs.) ve kaynak kodlarında düzenlemeler yapılacak. (bitti)
    • boost 1.4.3 -> 1.73.0
    • devil 1.6.1 -> 1.7.8
    • cryptopp 5.6.1 -> cryptopp 8.2.0
    • lzo-2.0.3 -> lzo-2.10
    • gcc4 -> gcc9
  • Server files için mysql80 ve mariadb desteği getirilecek. Tablolar bunlara göre düzenlenecek. (bitti)
  • Güvenlik açıklarını kapatmak (bitti)
  • Source warningleri çözülecek (bitti.)
    • DB (bitti)
    • Game (bitti)
  • Ekstra CONFIG'lerin ayarlanması. (bitti)
  • Client ve Server Bütünlüğü kontrolü. (Bitti)
  • Server files tablolarının rahatça kurulması için shell scripti yazılacak. (bitti)
  • Firewall ayarlarının oluşturulması için shell scripti yazılacak. (hazırlanıyor..)
  • Server filesin belirli zaman aralıklarında yedeklenmesi için shell scripti yaz
  • Veritabanının belirli zaman aralıklarında yedeklenmesi için shell scripti yaz
  • Yedeklenen dosyaları geri yüklemek için yönetim scriptleri
  • Server filesi yönetmek için yönetim scripti (oyunu açma, yedek aldırma vs tüm işlemler toplu bir hale getirilecek)
  • Diğer projeler çıkan warninglerin çözümü (libsql vs)
  • Gereksiz kodları kaldırma girişimi 2. adım (hackshield, xtrap vs.)
  • FreeBSD 13.0'a geçiş ve Externlerin güncellenmesi

:disney-is-frozan12:

Yeni bölümlere erkenden erişmek ve bazı özel bölümler için bu rehber serisini udemy kursuna kayıt olarak da takip edebilirsiniz: Online Oyun Geliştirme Eğitimi (MMORPG)

Rehber için indirmeniz gereken dosyalar
Kraizy.tgz:
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.

Freebsd 12.2:
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.
(12. bölümden sonra kullanılacak.)

Freebsd 9.3:
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.

Freebsd kurulumu yapmak istemiyorsanız hazır vdi indirebilirsiniz: Freebsd 9.3 32bit Hazır Vdi
Freebsd 9.3'de Kullanacağımız Paketler;


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

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

Fillezila veya Winscp;
  1. Filezilla:
    Linkleri görebilmek için giriş yap veya kayıt ol.
  2. Winscp:
    Linkleri görebilmek için giriş yap veya kayıt ol.

Navicat veya Mysql Workbench;
  1. Navicat:
    Linkleri görebilmek için giriş yap veya kayıt ol.
  2. Mysql Workbench:
    Linkleri görebilmek için giriş yap veya kayıt ol.

Visual Studio 2019:
Linkleri görebilmek için giriş yap veya kayıt ol.
(c++ game development paketini kurmalısınız.)

Server Filesi hazırlamak için gerekli dosyalar:
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.

Client:
Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.


Extern için gereken dosyaların nereden indirileceğini videolarda gösteriyorum. Başlayabilmek için bunları indirmeniz yeterlidir.


Müfredat (Link eklenen bölümler yayınlanmıştır. Tıklayarak başlayabilirsiniz.)

Metin2 server source 64bit build etmek için şu konuya bakabilirsiniz: Metin2 Server Source 64bit Build

Client warningleri çözümü (@Trashy 'e teşekkürler): Çözüldü - VS 2019 Güncellemesi Karşılaştığım Hatalar ve Warningler
Çözüldü - Client Build libjepg Warning

Şu an için planlanan bölümler bunlardır. Metin2 Geliştirici Eğitimi Video Serisi gibi uzun soluklu olmayacaktır. Mümkün olduğunca kısa bi seri olacak.

İlginizi çekebilecek konular;
Metin2 ID ve Şifre Otomatik Girmesini Sağlamak
Metin2 Dead-die fonksiyonunu ekleme
Source dosyalarından gereksiz/kullanılmayan kodları kaldırmak isteyenlere liste ve birkaç bilgi (@Denizeri24)

Seriyi bitirdikten sonra artık kendinize ait filesiniz ve kaynak kodlarınız olmuş olacak. Kendi oyun türünüze göre düzenlemelere devam etmeniz gerekecek. Oyunda sıklıkla karşılayacağınız problemlerin çözümü için aşağıda verdiğim konulara bakabilirsiniz.
Metin2 Toplu BK Okuma Fix
NPC'den 0 Yang'a İtem Alamama Sorunu Çözümü
Metin2 Beceri Kitabı Okuma Süresini Kaldırmak
Metin2 Beceri Kitabı Okuma Süresini Değiştirmek
Metin2 İtem Yansıtırken İç Görü Küresini Kapatma
Metin2 Dead-die fonksiyonunu ekleme
FreeBSD 12.1 .vdi

Karşılaşabileceğiniz syserr hataları için çözümler
'LoginWindow' object has no attribute 'timeOutMsg' Çözümü

:disney-is-frozen23::disney-is-frozen29::b.m.z12:
 
Son düzenleme:
İlk üç bölüm yayınlanmıştır. Orta ve ileri seviye konular olduğu için daha önce bu işlerle uğraşmayanlar zorlanabilir. Videoda gösterdiğim şeyleri adım adım yaparsanız bi sorun yaşayacağını düşünmüyorum. Fakat anlamadığınız yerler olursa sormaktan çekinmeyin.
Öneri ve eleştirinizi bu konu altından yazabilirsiniz...
 
Sıfırdan Server Files hazırlama rehberimizin gelecek bölümlerinden bir kare. :)

Sifirdan Server Files Yapımı Oyun İci Goruntu.jpg



Bu demek oluyor ki her şey başarılı bir şekilde devam ediyor.
Bu aşamaya kadar gelmek benim için baya yorucu oldu ama sonunda başardık. Şimdi dinlenme zamanı :matrix_gf:

:disney-is-frozen32:
 
8. bölüme kadar olan bölümler hazırlanmıştır. Yeni bölümler her hafta Cuma 17:00'da
Linkleri görebilmek için giriş yap veya kayıt ol.
kanalında yayınlanacaktır.

5. bölüm: 12 Haziran 2020
6. bölüm: 19 Haziran 2020
7. bölüm: 26 Haziran 2020
8. bölüm: 3 Temmuz 2020
 
Merhaba ilginç bir sorun yaşıyorum, serverdb.tgz dosyalarını atınca reboottan sonra mysql bağlanmıyor /tmp/mysql.sock' hatası veriyor. başka bişeydenmi diyip pkg delete ile mysql silip tekrar kuruyorum. sonra yaptıgım her işlemde reboot atıp denedim bu accountu vs cikartinca bu hata veriyor sebebi ne olabilir?
 
Merhaba ilginç bir sorun yaşıyorum, serverdb.tgz dosyalarını atınca reboottan sonra mysql bağlanmıyor /tmp/mysql.sock' hatası veriyor. başka bişeydenmi diyip pkg delete ile mysql silip tekrar kuruyorum. sonra yaptıgım her işlemde reboot atıp denedim bu accountu vs cikartinca bu hata veriyor sebebi ne olabilir?
Veritabanını yeniden kurarken reboot atmanıza gerek yok.
Yeniden kurmadan önce şu komutları yazınız.

Kod:
Genişlet Daralt Kopyala
service mysql-server stop
rm -rf /var/db/mysql

Daha sonra tekrardan mysql kurmaya yönelebilirsiniz.
 
Veritabanını yeniden kurarken reboot atmanıza gerek yok.
Yeniden kurmadan önce şu komutları yazınız.

Kod:
Genişlet Daralt Kopyala
service mysql-server stop
rm -rf /var/db/mysql

Daha sonra tekrardan mysql kurmaya yönelebilirsiniz.

Reboot atma sebebim farklı. Anlatamadım sanırım şimdi mysql i sizin serverdb ile kurunca sorun yok fakat sonrasında reboot atarsam mysql gidiyor. Açılmıyor hata veriyor yukarıda yazdıgım gibi. ve ben sorunu tar ile serverdb.tgz cikarmak yerine sql olarak verdiklerinizi import ederek yükleyerek çözdüm ve bu sorun bana ait olamaz mysql falan yanlıs kurulmadı zaten dedigim gibi sql yükleyince oldu tar ile cikarinca acilmiyor baskalarıda yasayabilir bir baksanız iyi olur bence benim ki çözüldü
 

Dosya Eklentileri

SYSERR: Jun 24 04:46:52 :: socket_connect: HOST 127.0.0.1:15900, could not connect.
SYSERR: Jun 24 04:46:55 :: socket_connect: HOST 127.0.0.1:15900, could not connect.
SYSERR: Jun 24 04:46:58 :: socket_connect: HOST 127.0.0.1:15900, could not connect.
SYSERR: Jun 24 04:47:01 :: socket_connect: HOST 127.0.0.1:15900, could not connect.
SYSERR: Jun 24 04:47:04 :: socket_connect: HOST 127.0.0.1:15900, could not connect.
SYSERR: Jun 24 04:47:07 :: socket_connect: HOST 127.0.0.1:15900, could not connect.
SYSERR: Jun 24 04:47:10 :: socket_connect: HOST 127.0.0.1:15900, could not connect.
SYSERR: Jun 24 04:47:13 :: socket_connect: HOST 127.0.0.1:15900, could not connect.
connection refused yazıyor ekranda
bu şekilde bir hata alıyorum auth acarken herşeyi birebir yaptım sorun ne olabilir?
 
Merhaba ilginç bir sorun yaşıyorum, serverdb.tgz dosyalarını atınca reboottan sonra mysql bağlanmıyor /tmp/mysql.sock' hatası veriyor. başka bişeydenmi diyip pkg delete ile mysql silip tekrar kuruyorum. sonra yaptıgım her işlemde reboot atıp denedim bu accountu vs cikartinca bu hata veriyor sebebi ne olabilir?
Aynı sorun bende de var. Özetlemek gerekirse tüm kurulumu yaptim, her şey olması gerektigi gibi calisiyordu. Daha sonra sisteme reboot attiktan sonra ./db & sleep 5 komutuyla db'yi çalıştırmak istediğim de arkadasin da almış olduğu tmp/mysql.sock hatasını aldim. Hatanın büyük ihtimal sebebi reboot attıktan sonra mysql serverinin kapanmış olmasi. Dolayısıyla sisteme reboot attıktan sonra mysql serveri tekrar calistirmak gerekiyor. "service mysql-server start" komutunu kullanarak MySQL serveri çalıştırmaya calistim, fakat bir sebepten ötürü calismadi. Yarın daha detaylı bir açıklama yazarim hata ile ilgili. Cözümü için bir kaç farklı yol denedim fakat sonuç alamadim. Belki yarına kadar benden önce biri çözer diye yazayim dedim.
 
Aynı sorun bende de var. Özetlemek gerekirse tüm kurulumu yaptim, her şey olması gerektigi gibi calisiyordu. Daha sonra sisteme reboot attiktan sonra ./db & sleep 5 komutuyla db'yi çalıştırmak istediğim de arkadasin da almış olduğu tmp/mysql.sock hatasını aldim. Hatanın büyük ihtimal sebebi reboot attıktan sonra mysql serverinin kapanmış olmasi. Dolayısıyla sisteme reboot attıktan sonra mysql serveri tekrar calistirmak gerekiyor. "service mysql-server start" komutunu kullanarak MySQL serveri çalıştırmaya calistim, fakat bir sebepten ötürü calismadi. Yarın daha detaylı bir açıklama yazarim hata ile ilgili. Cözümü için bir kaç farklı yol denedim fakat sonuç alamadim. Belki yarına kadar benden önce biri çözer diye yazayim dedim.

Sanırım tüm mesajlarımı okumadın ben çözdüm. Herşeyi videodaki gibi olması gerektiği gibi yap sadece serverdb.tgz yi tar ile unixden cikartmak yerine o rar dosyasında bide .sql versiyonları var

CREATE TABLE komutu ile freebsdden olusturduktan sonra databaseleri sqlleri okutarak yükle. Burada sorun onları tar gz ile eklerken sanırım ( benim tahminim ) belki character collationlar falan düzgün aktarılmıyordur emin değilim. Ama tgz de sorun olduğu kesin ben çözdüm şuan sorunsuz

Bu arada udemy üzerinizden izliyorum eğitimi. Mükemmel gidiyorsunuz emeğinize sağlık @Whistle 26 haziranda yeni video gelecek diye hatırlıyorum ama hala yüklenmedi bir sorun yoktur umarım eğitimin yarıda kalması bizi üzer.
 
Sanırım tüm mesajlarımı okumadın ben çözdüm. Herşeyi videodaki gibi olması gerektiği gibi yap sadece serverdb.tgz yi tar ile unixden cikartmak yerine o rar dosyasında bide .sql versiyonları var

CREATE TABLE komutu ile freebsdden olusturduktan sonra databaseleri sqlleri okutarak yükle. Burada sorun onları tar gz ile eklerken sanırım ( benim tahminim ) belki character collationlar falan düzgün aktarılmıyordur emin değilim. Ama tgz de sorun olduğu kesin ben çözdüm şuan sorunsuz

Bu arada udemy üzerinizden izliyorum eğitimi. Mükemmel gidiyorsunuz emeğinize sağlık @Whistle 26 haziranda yeni video gelecek diye hatırlıyorum ama hala yüklenmedi bir sorun yoktur umarım eğitimin yarıda kalması bizi üzer.

Hmm, cozumu yazdiginiz yer gozumden kacmis. Dediginiz gibi yaptiktan sonra sorun cozuldu. Biraz zaman aldi, bir kac kere tamamen silip yüklemek zorunda kaldim mysql'u fakat cozuldu. Tesekkurler. Belki bu sorunu alan baska arkadaslar icin biraz daha detayli bir aciklama yapilabilir. Buyuk ihtimal tek alan kisiler biz olmayacagiz.

Merak ettigim sey ise neden tar olarak extract ettigimiz zaman calismiyor oldugu? Daha da cok merak ettigim sey ise biz de calismayip, @Whistle hocam da nasil calistigi? Acaba biz mi bir seyi yanlis yaptik, db kurulum islemini yaparken.
 
SYSERR: Jun 24 04:46:52 :: socket_connect: HOST 127.0.0.1:15900, could not connect.
SYSERR: Jun 24 04:46:55 :: socket_connect: HOST 127.0.0.1:15900, could not connect.
SYSERR: Jun 24 04:46:58 :: socket_connect: HOST 127.0.0.1:15900, could not connect.
SYSERR: Jun 24 04:47:01 :: socket_connect: HOST 127.0.0.1:15900, could not connect.
SYSERR: Jun 24 04:47:04 :: socket_connect: HOST 127.0.0.1:15900, could not connect.
SYSERR: Jun 24 04:47:07 :: socket_connect: HOST 127.0.0.1:15900, could not connect.
SYSERR: Jun 24 04:47:10 :: socket_connect: HOST 127.0.0.1:15900, could not connect.
SYSERR: Jun 24 04:47:13 :: socket_connect: HOST 127.0.0.1:15900, could not connect.
connection refused yazıyor ekranda
bu şekilde bir hata alıyorum auth acarken herşeyi birebir yaptım sorun ne olabilir?
Db çekirdeği çalışmadığı için bu hatayı veriyor. Eğer dbyi açtığınızı düşünüyorsanız dbnin çökmesine neden olan bir sürü şey olabilir. Bu konu akışı bozulmaması için soru-cevap kısmına syserr hatalarınız ile beraber konu açabilirsiniz.

Bu arada udemy üzerinizden izliyorum eğitimi. Mükemmel gidiyorsunuz emeğinize sağlık @Whistle 26 haziranda yeni video gelecek diye hatırlıyorum ama hala yüklenmedi bir sorun yoktur umarım eğitimin yarıda kalması bizi üzer.
Zaten yarısını geçtik. Önümüzdeki bölümlerde server extern güncellemesi, freebsd 12’de build edilmesi filan anlatacağım. Daha sonralarında server srcde gereksiz eklentileri temizlemeyi ve mysql80 ve mariadb desteğini anlatacağım. Eğer ilgi devam ederse 4 envanter, grup kutsama gibi temel olması gereken sistemleri eklemeyide anlatabilirim

Bu tarz videoları hazırlamak baya zahmetli önden aylarca hazırlık yapmam gerekiyor. Bu şekilde videolar daha akıcı ve güzel oluyor. Benim elimde olmayan durumlar (ölüm, pc bozulması vs) harici yarım bırakmayı düşünmüyorum.

Merak ettigim sey ise neden tar olarak extract ettigimiz zaman calismiyor oldugu? Daha da cok merak ettigim sey ise biz de calismayip, @Whistle hocam da nasil calistigi? Acaba biz mi bir seyi yanlis yaptik, db kurulum islemini yaparken.
Belki izinlerden kaynaklı olabilir. Sql olarak okutmak daha pratik aslında. :)
 
Üst