- Moderatör
- #1
- Kayıtlı
- 1 Yıl 9 Ay 15 Gün
- Katılım
- 10 Ocak 2025
- Konular
- 76
- Mesajlar
- 166
- Tepkime puanı
- 25
- Online süresi
- 8h 31m
- Puan
- 53
- Konum
- Türkiye
- Web sitesi
- www.zyncra.shop
Metin2 Server Güncelleme: Proto, Quest ve Çekirdek Değişikliklerini Güvenle Yayınlama
Konu İçeriği — Hızlı Bakış (
Metin2 • ⏱ ~4 dk okuma •
Kod: Lua)
01. Bakım nasıl duyurulur, sunucu nasıl kapatılır?
02. Hangi değişiklik /reload ile gelir, hangisi yeniden başlatma ister?
03. Quest güncellemesi: derleme ve kayıtlı ilerleme
04. Yeni game ve db ikilisi nasıl yayınlanır?
05. Test sunucusu nasıl kurulur?
06. Geri dönüş planı ve oyuncu verisi
- Bakım nasıl duyurulur, sunucu nasıl kapatılır?
- Hangi değişiklik /reload ile gelir, hangisi yeniden başlatma ister?
/reload p ne yapar, nerede risklidir?- /reload q neden canlıda risklidir?
Çalışan bir Metin2 sunucusunda değişikliklerin çok azı yeniden başlatmadan uygulanır./reload peşya, canavar, beceri ve yasaklı kelime tablolarını bütün kanallarda,/reload aGM listesini yeniler; quest, cube, balıkçılık ve kanal durumu için olan/reloadkomutları ise yalnız komutun yazıldığı oyun çekirdeğinde çalışır.
1. Bakım nasıl duyurulur, sunucu nasıl kapatılır?
- Bakımı sitede ve Discord'da başlama saati ve tahmini süresiyle önceden duyur.
- Oyunda
/noticeya da/big_noticeyaz; ikisi de P2P üzerinden bütün çekirdeklere gider. /shutdownyaz. Bütün oyun çekirdeklerinde 10 saniyelik bir sayım başlar: önce "Oyun 10 saniye sonra kapanacak.", sonra her saniye "%d saniye sonra oyun kapanacak." yazar. Sayım bitince GM olmayan oyuncular oyundan çıkarılır, 10 saniye sonra kalan bağlantılar da kapanır. Çekirdekler bundan sonra yeni giriş almaz ama süreçler açık kalır; auth bu komuttan etkilenmez.sh admin_panel.sh 2ilestop.py'yi çalıştır: önce auth ve oyun çekirdekleri, en son db kapanır. db syslog'undaMainLoop exited, Starting cache flushingsatırını ve sürecin çıktığını gör.- Soğuk yedeği al (yedekleme).
2. Hangi değişiklik /reload ile gelir, hangisi yeniden başlatma ister?
Bütün/reloadkomutları IMPLEMENTOR yetkisi ister (GM komutları rehberi). Argümansız/reload,u,pves'yi birlikte çalıştırır.
"Yalnız o çekirdek" yazan komutlar, GM'in o anda bulunduğu haritayı taşıyan oyun çekirdeğinde çalışır. Değişikliği bütün çekirdeklere geçirmenin pratik yolu yeniden başlatmadır.
3. Quest güncellemesi: derleme ve kayıtlı ilerleme
Questlersh admin_panel.sh 777ile derlenir; bu seçenekpre_qc.py -acçalıştırır. Betik önceobjectklasörünü siler, sonraquest_list'teki questleri sırayla derler ve ilk hatada "Error occured on quest " yazıp durur.
4. Yeni game ve db ikilisi nasıl yayınlanır?
- Eski ikiliyi sakla. Makefile'daki
installhedefishare/bin/gamedosyasını silip yenisini kopyalar, eskisini saklamaz. Öncecp -p share/bin/game share/bin/game.eskigibi bir kopya al; db için de aynısı. - Bağları kontrol et. Çalışan süreçler eski dosyayla devam eder, yeni ikili çekirdekler yeniden başlayınca devreye girer. Çekirdek adları (
srv1-ch1-core1gibi)share/bin/game'e sembolik bağ olmalıdır. Dosyalar Windows üzerinden taşındıysa bağlar sabit bağa ya da ayrı kopyaya dönüşmüş olabilir; o zaman çekirdekler eski ikiliyi açmaya devam eder vegen.pyyeniden çalıştırılmalıdır (server dosyaları). - game ile db'yi birlikte derle. Oyun çekirdeği açılışta db'den gelen tabloların boyutunu kendi tanımlarıyla karşılaştırır; uyuşmazsa
mob table size errorya daitem table size erroryazıp kapanır. - İstemciyle eşleştir. Paket yapısını değiştiren bayraklar sunucuda ve istemcide birlikte değişmelidir; uyumsuzlukta istemci "Unknown packet header" ile kapanır (source derleme).
5. Test sunucusu nasıl kurulur?
Test sunucusu canlı verinin kopyasıyla çalışmalıdır. En son yedeği ayrı bir MySQL'e yüklemek hem test verisini hazırlar hem yedeği denemiş olur.
Test db çekirdeğini hiçbir zaman canlı MySQL'e bağlama.MIRROR2DBaçıkken proto tablolarını yeniden yazar, önbelleğindeki karakterleri de canlı verinin üstüne kaydeder.
6. Geri dönüş planı ve oyuncu verisi
Yayından önce geri dönüşü hazırla:
- Bakımda alınan soğuk yedek;
shareklasörünün, CONFIG'lerin ve conf.txt'nin arşivi; eski game ve db ikilileri;object.eski. - Geri dönüş kararını neye göre vereceğini önceden yaz: art arda çöken çekirdek, bozuk oyuncu verisi, oynanamayan bir sistem.
- Geri dönüşte
stop.pyile kapat, dosyaları ve ikilileri eski hâline getir, yeniden aç ve kontrol et. Veritabanını yalnız yeni sürüm veriyi değiştirdiyse ya da tablo yapısı değiştiyse geri yükle; aksi hâlde bakımdan sonra oynanan saatler boşa gider. - İstemci yaması paket yapısını değiştirdiyse istemciyi de geri al.
Lua ile Metin2 Quest Yapısı
Kod:quest biolog_system begin state start begin when 20084.chat."Biyolog Araştırması" begin say_title("Biyolog Chaegirab:") if pc.get_level() < 30 then say_reward("Bu görev için en az 30. seviye olmalısın.") return end say("Ork Dişi örneklerini incelemeye hazırım.") end end end
7. İlgili sayfalar
- Metin2 cube.txt Tarif Yazımı (Server kurma)
- Metin2 Drop Dosyaları: mob_drop_item ve special_item_group Biçimi (Server kurma)
- Metin2 Giriş Akışı: auth, db ve game; Giriş Hataları (Server kurma)
- Metin2 GM Komutları: En Çok Kullanılan Komutlar ve Yetki Seviyeleri (Server kurma)
Sıkça Sorulan Sorular (SSS)
Soru 1: Metin2 Server Güncelleme: Proto, Quest ve Çekirdek Değişikliklerini Güvenle Yayınlama rehberindeki ayarlar tüm sunucu yapılarında geçerli mi?
Evet, rehberde paylaşılan temel mekanikler hem emek (zor) hem de orta/vs'lik sunucu kurgularında doğrudan uygulanabilir; sunucu oranlarına göre küçük ince ayarlar yapılabilir.
Soru 2: En yüksek verim için hangi sıralama takip edilmeli?
Öncelikle karakter/sistem temel gereksinimlerini tamamlayıp ardından konu içerisindeki adım adım dizilim ve optimizasyon tavsiyelerini sırasıyla uygulamanız en yüksek performansı sağlar.

