İçeriğe geç

Metin2 Server Dosyaları: Klasör Yapısı ve Her Dosyanın Görevi

Hazırlayan: Metin2VIP Editörleri Yayın: 8 dk okuma

Kısaca: Metin2 server dosyaları srv1 klasöründe toplanır. share bütün çekirdeklerin ortak dosyalarını (game ve db ikilileri, protolar, harita, quest ve ayar dosyaları) tutar; auth giriş çekirdeğinin, chan/ch1 ve chan/ch99 kanal çekirdeklerinin, db ise veritabanı önbellek çekirdeğinin klasörüdür. Çekirdek klasörlerindeki dosyaların çoğu share'e bağlantıdır; her çekirdeğe özel olan CONFIG, log dosyaları ve pid'dir.
İçindekiler
  1. Ana klasörde hangi dosyalar var?
  2. srv1 klasörünün yapısı
  3. Aynı dosyalar neden her klasörde var?
  4. share/bin: game ve db ikilileri
  5. share/conf: komut, sürüm ve proto dosyaları
  6. share/locale/turkey: oyunun ayar dosyaları
  7. share/data, package ve panama
  8. auth klasörü
  9. chan klasörü: kanallar ve çekirdekler
  10. db klasörü
  11. Çekirdeklerin kendi yazdığı dosyalar
  12. baks klasörü: yedekleme
  13. sql klasörü

Metin2 sunucu dosyaları tek bir ana klasörde toplanır: kökte yönetim betikleri, srv1 klasöründe sunucunun kendisi bulunur. srv1 altında share bütün çekirdeklerin ortak dosyalarını tutar, auth, chan ve db ise çekirdeklerin çalıştığı klasörlerdir. Çekirdek klasörlerindeki dosyaların çoğu share'e giden bağlardır; her çekirdeğe özel olan yalnız CONFIG, log dosyaları ve pid gibi çalışma dosyalarıdır.

Anlatılan yapı, kanal klasörlerini gen.py ile üreten yaygın sunucu paketine aittir. Başka paketlerde klasör adları farklı olabilir; çekirdeklerin aradığı dosya adları ise kaynak koddan gelir ve aynıdır.

Ana klasörde hangi dosyalar var?

game/
├── admin_panel.sh        yönetim menüsü
├── gen.py                kanal yapısını üretir
├── gen_settings.py       kanal, harita, port ve SQL ayarları
├── start.py, stop.py     başlatma ve durdurma
├── clear.py              log temizleme
├── daemon.sh             çöken çekirdekleri yeniden açma döngüsü
├── start.list, clear.list  gen.py çıktısı, elle düzenlenmez
├── ipfw.rules            gen.py'nin ürettiği güvenlik duvarı kuralları
├── baks/                 yedekleme Makefile'ları
├── sql/                  veritabanı şemaları ve güncellemeler
└── srv1/                 sunucunun kendisi

admin_panel.sh menüsü Türkçedir ve seçenekler numarayla ya da adla verilebilir (sh admin_panel.sh 1 ile sh admin_panel.sh baslat aynı işi yapar). Paketle gelen İngilizce README eski seçenek adlarını kullanır; numaralar aynıdır.

Seçenek Ad Yaptığı iş
1 / 1s baslat / baslats start.py: önce db, 3 saniye sonra auth ve kanallar; 1s hangi kanalların açılacağını sorar
2 / 2s durdur / durdurs stop.py: önce auth ve kanallar, hepsi kapanınca db
1h / 2h baslath / durdurh daemon.sh ile başlatıp durdurma
3 / 33 temizle / temizleh clear.py ile log temizliği; 33 yedekleri de siler
4 / 5 bak1 / bak2 MySQL yedeği / sunucu klasörü yedeği
666 yarat gen.py ile kanal yapısını üretir
777 quest Questleri derler
999 ara Bütün CONFIG'lerdeki HOSTNAME ve PORT satırlarını listeler

Betikler #!/usr/local/bin/python2.7 satırıyla başlar ve Python 2.7 sözdiziminde yazılmıştır. daemon.sh ise python3 start.py çağırdığı için bu haliyle çalışmaz. start.list ve clear.list JSON dosyalarıdır, gen.py her çalıştığında yeniden yazılır.

srv1 klasörünün yapısı

srv1/
├── auth/                 giriş (auth) çekirdeği
├── chan/
│   ├── ch1/core1, core2, core3   kanal 1 çekirdekleri
│   ├── ch99/core99       bütün kanallara açık haritalar
│   └── mark/             lonca işaretleri
├── db/                   veritabanı önbellek çekirdeği
├── logs/srv1/...         her çekirdeğin log ve cores klasörü
└── share/
    ├── bin/              game ve db ikilileri
    ├── conf/             CMD, CRC, BANIP, VERSION, state_user_count, protolar
    ├── data/             hareket dosyaları
    ├── locale/turkey/    harita, quest ve oyun ayar dosyaları
    ├── package/          istemci paket şifre bilgisi
    └── panama/           eski paket şifre listesi

Aynı dosyalar neden her klasörde var?

gen.py her dosyanın tek kopyasını share altında tutar ve çekirdek klasörlerine sembolik bağ kurar. Örneğin srv1/chan/ch1/core1/CMD aslında share/conf/CMD dosyasıdır; share/conf/CMD düzenlenince değişiklik bütün çekirdeklere yansır. Klasörler de bağdır: her oyun çekirdeğinin içindeki data, locale, package ve panama share'deki klasörleri, mark ise ortak chan/mark klasörünü gösterir.

Bağlar göreli yolla kurulduğu için ana klasör sunucuda istenen yere taşınabilir. Dosyalar Windows üzerinden kopyalandıysa bağlar bozulur ya da kaybolur; bu durumda sh admin_panel.sh 666 ile gen.py yeniden çalıştırılır.

share/bin: game ve db ikilileri

share/bin/game ve share/bin/db 32-bit FreeBSD için derlenmiş, statik bağlı çalıştırılabilir dosyalardır. Auth çekirdeği de kanal çekirdekleri de aynı game dosyasını çalıştırır; hangi işi yapacağını kendi klasöründeki CONFIG belirler. srv1-auth, srv1-ch1-core1, srv1-db gibi adlar bu iki dosyaya giden bağlardır. Her sürecin farklı adla çalışması, start.py ve stop.py'nin süreç listesinde doğru çekirdeği bulmasını sağlar.

Kaynak koddan yeni çekirdek derlendiğinde yalnız share/bin/game ya da share/bin/db değiştirilir, bütün bağlar yeni dosyayı kullanır.

share/conf: komut, sürüm ve proto dosyaları

Dosya Kim okur Görevi
CMD oyun çekirdekleri GM komutlarının yetki seviyesini değiştirir, satır biçimi komut SEVİYE
CRC oyun çekirdekleri Geçerli istemci CRC değerleri, satır başına iki sayı
BANIP yalnız auth Engellenen IP ya da sekmeyle ayrılmış IP aralıkları
state_user_count oyun çekirdekleri Kanal durumunun "dolu" ve "yoğun" eşikleri, varsayılan 500 ve 10
VERSION hiçbiri Bu kaynakta okunmuyor
item_proto.txt, item_names.txt db Eşya tablosu ve eşya adları
mob_proto.txt, mob_names.txt db Canavar tablosu ve canavar adları

İstemci sürüm denetimi VERSION dosyasıyla değil, CONFIG'deki CHECK_VERSION_SERVER ve CHECK_VERSION_VALUE satırlarıyla yapılır. state_user_count dosyasında ilk sayı "dolu", ikinci sayı "yoğun" eşiğidir; kanaldaki oyuncu sayısı bunları geçtikçe istemcide kanal durumu yoğun ya da dolu görünür. Proto dosyalarının sütunları item_proto yazısında.

share/locale/turkey: oyunun ayar dosyaları

Sunucunun yerel ayarı turkey olduğunda çekirdek ayar, harita ve quest dosyalarını locale/turkey altında arar. Bu klasördeki dosyaların hepsi sunucu ayarıdır: değiştirildiğinde oyunun davranışı değişir.

Dosya ya da klasör Görevi
conf/GENERAL_CONFIG Bütün çekirdeklere uygulanan ortak CONFIG satırları
locale_string.txt Sunucu iletilerinin Türkçe karşılıkları
map/ index dosyası ve her haritanın klasörü
quest/ Quest kaynakları, quest_list, derleyici qc, derlenmiş object klasörü
cube.txt, blend.txt, fishing.txt, dragon_soul_table.txt Üretim, iksir karışımı, balıkçılık ve simya tabloları
common_drop_item.txt, etc_drop_item.txt, mob_drop_item.txt, drop_item_group.txt, special_item_group.txt Drop ve sandık tabloları
group.txt, group_group.txt Canavar grupları
oxquiz.lua OX etkinliğinin soruları
forkedmapindex.txt Üç yol savaşı haritaları; yoksa oyun çekirdeği açılmaz
settings.lua, translate.lua Quest ortamına yüklenen Lua dosyaları

GENERAL_CONFIG çekirdeğin kendi CONFIG'inden sonra okunur; aynı satır ikisinde de varsa ortak dosyadaki değer geçerli olur. Kanal ya da çekirdeğe göre ayrım gerekirse GENERAL_CONFIG_CHANNEL_1 ve GENERAL_CONFIG_CHANNEL_1_HOSTNAME_srv1-ch1-core1 gibi dosyalar da sırayla okunur. HOSTNAME, CHANNEL, PORT, P2P_PORT, MAP_ALLOW, AUTH_SERVER ve SQL satırları bu ortak dosyalardan okunmaz, her çekirdeğin kendi CONFIG'inde kalır. Satırların anlamı CONFIG ayarları yazısında.

Her harita klasöründe en az Setting.txt (boyut ve başlangıç koordinatı), Town.txt (şehir ve krallık başlangıç noktaları) ve server_attr (geçilmez alan, su ve PvP yasak bölge bilgisi) bulunur. Canavar ve NPC yerleşimi regen.txt, npc.txt, boss.txt ve stone.txt dosyalarındadır. Çekirdek yalnız kendi MAP_ALLOW listesindeki haritaları yükler. Yeni harita eklemenin adımları harita ekleme yazısında.

share/data, package ve panama

data klasörü karakterlerin ve canavarların hareket dosyalarını tutar. Oyun çekirdeği data/pc, data/pc2 ve data/pc3 altındaki .msa dosyalarından saldırı ve yürüme sürelerini, data/monster/<klasör>/motlist.txt ve .msa dosyalarından canavar hareketlerini okur. Hangi canavarın hangi klasörü kullanacağını mob_proto'daki folder sütunu belirler. Klasörde istemciden kalma model ve doku dosyaları da bulunur, sunucu bunları kullanmaz.

package istemci paketlerinin şifre bilgisi için, panama eski bir paket şifreleme listesi (panama/panama.lst) içindir. Pakette ikisi de boştur; dosya bulunmaması çekirdeğin açılmasını engellemez.

auth klasörü

Auth çekirdeği oyuncunun hesap adı ve parolasını doğrular, oyuncuyu kanal seçimine geçirir. Klasörde şunlar bulunur:

  • CONFIG: AUTH_SERVER: master satırı bu çekirdeği auth yapar; PLAYER_SQL satırı account veritabanını gösterir.
  • BANIP, CMD, CRC, VERSION, state_user_count: share/conf'a bağlar. BANIP'i yalnız auth okur.
  • srv1-auth: share/bin/game'e bağ.

Auth çekirdeğinin oyun dünyası olmadığı için harita listesi ve mark bağı yoktur.

chan klasörü: kanallar ve çekirdekler

Her kanal bir klasördür (ch1, ch99), her kanal klasöründe haritaları paylaşan çekirdekler bulunur (core1, core2, core3). Bir çekirdeğin harita listesi 32 haritayla sınırlıdır, gen.py 32 ve üzerinde uyarı verir. Aynı harita bir çekirdeğin MAP_ALLOW listesine iki kez yazılırsa çekirdek açılmaz. Bir kanalın haritaları birden fazla çekirdeğe dağıtıldığında oyuncu, çekirdekler arasında geçtiğini fark etmez; yeni çekirdeğin adresini db çekirdeği bildirir.

Kanal 99 özeldir: üzerindeki haritalar bütün kanallardaki oyunculara açılır. Pakette bu kanalda düğün haritası (81), OX haritası (113) ve 110 numaralı harita durur. chan/mark lonca işaretlerinin (mark_index ve .tga dosyaları) tutulduğu ortak klasördür. Kanal ve port planı kanal ve portlar yazısında.

db klasörü

db çekirdeği MySQL ile oyun çekirdekleri arasında durur: protoları ve tabloları yükleyip çekirdeklere dağıtır, oyuncu ve eşya verisini önbellekte tutup aralıklarla MySQL'e yazar. Klasörde şunlar vardır:

  • conf.txt: SQL bağlantıları, BIND_PORT, PROTO_FROM_DB, MIRROR2DB gibi satırlar.
  • item_proto.txt, item_names.txt, mob_proto.txt, mob_names.txt: share/conf'a bağlar. PROTO_FROM_DB 0 iken protolar bu dosyalardan okunur.
  • srv1-db: share/bin/db'ye bağ.

Veritabanı tarafının ayrıntısı Metin2 veritabanları yazısında.

Çekirdeklerin kendi yazdığı dosyalar

Her çekirdek çalıştığı klasöre şu dosyaları yazar:

Dosya İçeriği
pid Sürecin numarası; çekirdek kapanınca silinir. Yazılamazsa çekirdek açılmaz
stdout Çekirdeğin standart çıktısı
syslog Genel kayıt
syserr Hata kaydı; açılış sorunlarında ilk bakılacak yer
PTS Performans izi: olay, ağ ve sorgu süreleri
VERSION.txt Çekirdeğin derleme numarası ve derlendiği makine bilgisi
log/ Döndürülmüş eski kayıtlar
cores/ Çökme dökümleri için ayrılmış klasör

syslog her saat log/YYYYAAGG/syslog.SS adıyla taşınır ve üç gün önceki günün klasörü silinir. log ve cores aslında srv1/logs/srv1/... altındaki klasörlere bağdır. Bazı yönetim komutlarıyla packet_info.txt ve profile.txt gibi ek dosyalar da oluşur. clear.py bunları, syslog, syserr, stdout ve *.core dosyalarını siler.

baks klasörü: yedekleme

baks/db/Makefile mysqldump ile account, common ve player'ı tam, log'u ise yalnız tablo yapısıyla (--no-data) yedekler; hotbackup yedeklenmez. baks/fs/Makefile önce logları temizler, sonra srv1 klasörünü mt2_<tarih>.tgz olarak arşivler. İkisinde de 7 günden eski yedekleri silen wclean hedefi ve geri yükleme için recovery hedefi vardır. README saatlik yedek ve haftalık temizlik için crontab satırları önerir.

Yedekleme Makefile'ında MySQL kullanıcısı ve parolası düz metin olarak yazılır ve komut satırında kullanılır. Bu dosyanın okuma izinleri kısıtlanmalı, yedekler başka bir makineye de kopyalanmalıdır.

sql klasörü

sql klasörü veritabanlarını sıfırdan kurmak için gereken dosyaları tutar: base/ (veritabanı ve kullanıcı oluşturma), account.sql, common.sql, log.sql, player.sql (şemalar), updates/ (sonradan eklenen tablolar ve sütunlar), acce_system/, protos/ (proto düzeltmeleri) ve sırayı gösteren run.sh. Kurulum sırası server kurulumu yazısında.

Sık sorulan sorular

Metin2 server dosyalarında CONFIG nerede?
Her çekirdeğin kendi klasöründe: srv1/auth/CONFIG, srv1/chan/ch1/core1/CONFIG gibi. db çekirdeğinin ayar dosyası srv1/db/conf.txt'dir. Bütün çekirdeklerde ortak olacak ayarlar share/locale/turkey/conf/GENERAL_CONFIG dosyasına yazılabilir.
srv1-ch1-core1 dosyası nedir?
share/bin/game ikilisine giden bir bağdır. Auth ve bütün kanal çekirdekleri aynı game dosyasını farklı adlarla çalıştırır; ad, başlatma ve durdurma betiklerinin süreci bulabilmesi içindir.
Log dosyaları neden kendi kendine taşınıyor?
Çekirdekler syslog dosyasını her saat log klasörüne syslog.SS adıyla taşır, üç gün önceki günün klasörünü siler. clear.py ve admin_panel.sh 3 kalan logları elle temizler.

İlgili sayfalar

Kategori: Server Kurma Server Kurulumu config server kurulumu server dosyaları freebsd

Bu sayfadaki bilgiler Metin2'nin sunucu yazılımındaki hesaplamalara ve standart oyun dosyalarına dayanır. Oyun dosyalarını değiştiren sunucularda değerler farklı olabilir. İçerikleri nasıl hazırlıyoruz?

Bu sayfa işine yaradı mı?

Giriş yap, oy ver ya da sayfayı kaydet. Okumak için üyelik gerekmez. WhatsApp X'te paylaş
Yanlış ya da eksik bir bilgi mi gördün? Bildir
Neyin yanlış olduğunu, doğrusunun ne olduğunu ve bunu nereden bildiğini yaz. Mesajın editörlere gider; yazı, kontrol edildikten sonra düzeltilir.
Yalnız editör görür.

Tartışma

Kurallar

Henüz yorum yok. Bu konuda bir deneyimin ya da sorun varsa ilk yorumu sen yaz.

Giriş yap ya da kayıt ol, sonra yorum yaz. Metin2VIP üyeliği hiçbir oyun sunucusunun hesabı değildir.