Metin2 Server Dosyaları: Klasör Yapısı ve Her Dosyanın Görevi
Hazırlayan: Metin2VIP Editörleri Yayın: 8 dk okuma
İçindekiler
- Ana klasörde hangi dosyalar var?
- srv1 klasörünün yapısı
- Aynı dosyalar neden her klasörde var?
- share/bin: game ve db ikilileri
- share/conf: komut, sürüm ve proto dosyaları
- share/locale/turkey: oyunun ayar dosyaları
- share/data, package ve panama
- auth klasörü
- chan klasörü: kanallar ve çekirdekler
- db klasörü
- Çekirdeklerin kendi yazdığı dosyalar
- baks klasörü: yedekleme
- 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: mastersatırı bu çekirdeği auth yapar;PLAYER_SQLsatı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,MIRROR2DBgibi satırlar.item_proto.txt,item_names.txt,mob_proto.txt,mob_names.txt:share/conf'a bağlar.PROTO_FROM_DB 0iken 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
- Metin2 CONFIG Ayarları: Game Çekirdeği Seçenekleri ve Anlamları (Server kurma)
- Metin2 Harita Ekleme: Sunucu ve Client Tarafı Adım Adım (Server kurma)
- Metin2 item_proto Rehberi: Sütunlar, Türler ve Bayraklar (Server kurma)
- Metin2 Kanal ve Port Yapısı: auth, ch1, ch99 ve P2P (Server kurma)
- Metin2 Quest Nasıl Yazılır? Lua Quest Yapısı, State ve When Blokları (Server kurma)
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?