Metin2 Server Güncelleme: Proto, Quest ve Çekirdek Değişikliklerini Güvenle Yayınlama

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

photo-1542751371-adc38448a05e

📌 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

  1. Bakım nasıl duyurulur, sunucu nasıl kapatılır?
  2. Hangi değişiklik /reload ile gelir, hangisi yeniden başlatma ister?

    1. /reload p ne yapar, nerede risklidir?
    2. /reload q neden canlıda risklidir?

    Çalışan bir Metin2 sunucusunda değişikliklerin çok azı yeniden başlatmadan uygulanır. /reload p eşya, canavar, beceri ve yasaklı kelime tablolarını bütün kanallarda, /reload a GM listesini yeniler; quest, cube, balıkçılık ve kanal durumu için olan /reload komutları ise yalnız komutun yazıldığı oyun çekirdeğinde çalışır.

    1. Bakım nasıl duyurulur, sunucu nasıl kapatılır?
    1. Bakımı sitede ve Discord'da başlama saati ve tahmini süresiyle önceden duyur.
    2. Oyunda /notice ya da /big_notice yaz; ikisi de P2P üzerinden bütün çekirdeklere gider.
    3. /shutdown yaz. 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.
    4. sh admin_panel.sh 2 ile stop.py'yi çalıştır: önce auth ve oyun çekirdekleri, en son db kapanır. db syslog'unda MainLoop exited, Starting cache flushing satırını ve sürecin çıktığını gör.
    5. Soğuk yedeği al (yedekleme).

    2. Hangi değişiklik /reload ile gelir, hangisi yeniden başlatma ister?

    Bütün /reload komutları IMPLEMENTOR yetkisi ister (GM komutları rehberi). Argümansız /reload, u, p ve s'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

    Questler sh admin_panel.sh 777 ile derlenir; bu seçenek pre_qc.py -ac çalıştırır. Betik önce object klasörünü siler, sonra quest_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 install hedefi share/bin/game dosyasını silip yenisini kopyalar, eskisini saklamaz. Önce cp -p share/bin/game share/bin/game.eski gibi 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-core1 gibi) 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 ve gen.py yeniden ç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 error ya da item table size error yazı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. MIRROR2DB açı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:
    1. Bakımda alınan soğuk yedek; share klasörünün, CONFIG'lerin ve conf.txt'nin arşivi; eski game ve db ikilileri; object.eski.
    2. Geri dönüş kararını neye göre vereceğini önceden yaz: art arda çöken çekirdek, bozuk oyuncu verisi, oynanamayan bir sistem.
    3. Geri dönüşte stop.py ile 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.
    4. İ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.
 
Geri
Üst