R10DEV.NET HABER SİTESİ AÇILDI!R10DEV.NET HABER SİTESİ AÇILDI!

Metin2 Core Restart Veri Kaybı Fix Pack
admin
Katılım
23 Eki 2022
Mesajlar
7,883
Çözümler
12
Tepkime puanı
4,593
Puanları
113
Yaş
28

[Paylaşım] Metin2 Core Restart Veri Kaybı Fix Pack | Anlık P2P Senkronizasyonlu Gelişmiş Sunucu Altyapısı


Metin2 Core Restart Veri Kaybı Fix Nedir?

Merhaba değerli forum üyeleri ve geliştirici dostlarım, bugün Metin2 private server altyapılarında (Game Core) çığır açacak, özellikle büyük projelerin, yüksek online oyuncuya sahip sunucuların en büyük kabusu olan "Core Restart / Çökme Esnasında Veri Kaybı" sorununu kökten çözen devasa bir C++ Source güncellemesini paylaşıyorum.

Bildiğiniz gibi, standart oyun çekirdeklerinde (game core) bir çökme yaşandığında ya da reboot / restart işlemi yapıldığında veritabanı (DB Cache) ile oyun kanalları (Cores) arasındaki asenkron senkronizasyon kopar. Bu durum oyuncuların seviyelerinin geri sarmasına, eşyalarının kaybolmasına ve klan/grup yapılarının tamamen bozulmasına sebep olur.

Paylaştığım bu gelişmiş optimizasyon paketi sayesinde, tüm oyuncu verileri, envanter durumları ve grup ilişkileri oyun içi anlık asenkron işleyicilerle (Pulse/Heartbeat) ve optimize edilmiş P2P (Peer-to-Peer) veri yayınlama mekanizmasıyla sürekli güncel tutulur. Core kapansa veya çökse bile, sistem ayağa kalktığı salise her şeyi veritabanından eksiksiz ve kayıpsız yükler knk!


Geliştirme Detayları ve Değişim Günlüğü (Changelog)

Proje üzerinde yapılan köklü mimari değişiklikler ve sistemin eski (Sorunlu) hali ile yeni (Stabil) hali arasındaki farklar şu şekildedir:

Önceki Sorunlar (Before)

  • Seviye ve EXP Kaybı: Çekirdek yeniden başladığında oyuncuların son kazandığı seviyeler (level) ve EXP miktarları DB'ye anlık yazılmadığı için geri sarıyordu.
  • Beceri (Skill) Kayıpları: Perfect Master veya Grand Master yapılan becerilerin güncel aşamaları kayboluyordu.
  • Envanter ve Ekipman Silinmesi: Normal envanterdeki (inventario) ve karakterin üzerindeki giyili ekipmanların (equipment inventar) durumları senkronize olamadığı için item kayıpları/kopyalamaları (dupe açıkları) oluşuyordu.
  • Statü Kayıpları: Karakterlerin verdiği son statü (HP, SP, STR, DEX) puanları sıfırlanıyordu.
  • Arkadaş Listesi (Friend List): Arkadaş listesine eklenen yeni oyuncular restart sonrası siliniyordu.
  • Grup ve Parti Bozulması: Aktif zindan (dungeon) veya kasılma grupları çökme anında tamamen dağılıyordu.

Güncelleme Sonrası Stabilite (After)

  • Anlık Seviye & EXP Yüklemesi: Core restart attığı anda tüm oyuncuların seviye ve EXP verileri saliseler içinde kayıpsız olarak yüklenir.
  • Anlık Skill & Statü Restorasyonu: Tüm beceri seviyeleri ve statü puanları sorunsuz bir şekilde hafızaya geri getirilir.
  • Kusursuz Envanter Senkronizasyonu: Normal ve giyili tüm envanter yapısı en son haliyle eksiksiz olarak sisteme aktarılır; dupe açıkları tamamen kapatılır.
  • Kalıcı Arkadaş Listesi: Restart öncesi yapılan tüm sosyal etkileşimler anında belleğe yazılır.
  • P2P Destekli Akıllı Grup/Parti Hafızası: Grup ve parti yapıları, arka planda çalışan P2P Peer sistemi sayesinde birbirleriyle sürekli haberleşir. Core kapansa bile grup bağları asla kopmaz, her zaman hatırlanır ve kaldığı yerden devam eder!

Eklenen Yeni Sistemler ve Görsel Kod Analizi

Paylaşılan kaynak kod görselinde de görebileceğiniz üzere, sunucunun ana döngüsüne (Heartbeat/Pulse) sistem yükünü sıfıra indirecek asenkron otomatik yenileme (Autoreload) ve sorgu motorları dahil edilmiştir knk:
1778864256411.png



1778778474454.png



1778765278394.png


  • NEXUS_QUERY (Gelişmiş Ekonomi Sistemi): #ifdef ENABLE_Nexus_QUERY kontrolü ile entegre edilen bu yeni sistem, g_iEconomyCheckSeconds parametresine bağlı olarak (Varsayılan: her 10 saniyede bir) CShopManager üzerinden CheckAndReloadEconomyPrices() fonksiyonunu tetikler. Böylece oyun içi ekonomi ve piyasa fiyat değişiklikleri anlık olarak güncellenir.
  • PLAYER_POSITION (Anlık P2P Koordinat Yayını): Her saniye tüm oyuncu (PC) koordinatlarını P2P peer'lara asenkron olarak yayınlar (BroadcastPositions()). Core çöktüğünde karakterlerin haritada bugda kalmasını veya eski haritaya ışınlanmasını tamamen engeller.
  • QUEST & CUBE AUTORELOAD (Anlık Dosya Kontrolü): Her 3 saniyede bir quest dosyalarındaki değişiklikleri (CheckQuestReload()), her 5 saniyede bir ise cube.txt (Arındırma/Crafting) ve fishing.txt (Balıkçılık sistemi) dosyalarındaki değişimleri kontrol ederek oyunu kapatmadan canlı olarak günceller.

Kurulum ve Source Entegrasyon Rehberi

Sistemi kendi Metin2 source (Server/Game) altyapınıza entegre etmek için ana döngünün bulunduğu kaynak dosyanızı (Örn: input_main.cpp, char.cpp veya ana heartbeat/pulse döngüsünün döndüğü constants / main dosyası) açarak görselde yer alan mantığa göre pulse kontrollerini eklemeniz gerekir knk.

İndirme Bağlantısı ve Teknik Destek

Metin2 sunucunuza kurumsal bir altyapı kazandıracak, oyuncuların veri kaybı (rollback) yaşamasını tamamen engelleyecek bu gelişmiş Core Restart Fix Pack & Nexus Query sisteminin kaynak kod indirme bağlantısı aşağıda yer almaktadır. C++ derleme aşamalarında (gcc/clang) pulse veya passes_per_sec eksik tanımlama (undeclared identifier) hataları alırsanız, P2P fonksiyonlarını sourcenıza entegre ederken takılırsanız, aldığınız hata satırıyla birlikte doğrudan konu altından sormaktan çekinmeyin knk, en kısa sürede yardımcı oluruz. Paylaşılan bu harika altyapı projesine destek olmak için konuya bir teşekkür mesajı ve yorum bırakmayı ihmal etmeyin. Herkese keyifli geliştirmeler ve sorunsuz, bol online'lı sunucular dilerim!


İndirme Bağlantısı

  • Metin2 Core Restart Veri Kaybı Fix Pack Full C++ İndir:
 
Üst
Reklam Ver
R10dev.net'i ana ekrana ekle!