Metin2 Database Rehberi: MySQL Yapısı ve Navicat Tablo Yönetimi

ezikdemebana · 1 Ekim 2026 · 1 görüntülenme · 0 cevap

Metin2 pvp server projelerinde oyuncu hesaplarından karakter statülerine, envanterdeki eşyalardan lonca verilerine kadar oyundaki tüm kalıcı bilgilerin saklandığı ve işlendiği merkez Database (Veritabanı) altyapısıdır. Metin2 sunucuları varsayılan olarak Linux (FreeBSD) üzerinde çalışan MySQL veritabanı motorunu kullanır. Bu veritabanını görsel olarak yönetmek, tabloları düzenlemek ve oyuncu verilerine müdahale etmek için ise geliştiriciler genellikle Navicat programını tercih ederler. Bu rehberde, Metin2 database yapısını ve en önemli tabloların işlevlerini ele alıyoruz.


Metin2 Veritabanı Klasörleri ve Şemaları

Navicat ile sunucunuza bağlandığınızda karşınıza temelde beş farklı ana veritabanı şeması çıkar. Bunların her biri oyunun farklı bir alanını kaydeder:

account: Tamamen oyuncu hesaplarının yönetildiği yerdir. Yeni kayıt olan oyuncuların kullanıcı adları, şifrelenmiş parolaları (password), ban durumları ve nesne market kuponları gibi hesap düzeyindeki tüm bilgiler bu şemadaki account tablosunda saklanır.

common: Sunucunun genel kurallarını ve krallık ayarlarını barındırır. GM karakterlerin yetkilerinin ve isimlerinin belirlendiği gmlist tablosu ile sunucudaki engelli kelimelerin yönetildiği tablolar burada yer alır.

player: Oyunun en yoğun çalışan ve en kritik şemasıdır. Karakterlerin isimleri, seviyeleri, statüleri ve koordinatları player tablosunda; oyuncuların envanterindeki, deposundaki tüm eşyalar ve bu eşyaların üzerindeki efsunlar ise item tablosunda benzersiz birer kimlik numarası (ID) ile saklanır. Ayrıca lonca verileri (guild) ve yetenek seviyeleri de bu şemadadır.

TXT ve SQL Ayrımı (Proto Yönetimi)

Eski nesil Metin2 files yapılarında eşya ve canavar özellikleri (item_proto ve mob_proto) doğrudan Navicat içerisindeki player şemasından düzenlenirdi. Ancak modern source altyapılarında veri tabanı güvenliğini ve okuma hızını artırmak amacıyla bu sistem değiştirilmiştir.

Güncel altyapılarda oyun bu verileri Navicat'ten değil, sunucu içerisindeki /share/locale/turkey dizininde bulunan item_proto.txt ve mob_proto.txt dosyalarından okur. Eğer sunucunuz TXT tabanlı çalışıyorsa, Navicat üzerinden yaptığınız eşya ve canavar değişiklikleri oyuna kesinlikle yansımaz. Düzenlemeleri önce sunucudaki txt dosyalarından yapmalı, ardından oyunu yeniden başlatarak verilerin otomatik olarak Navicat tablolarına senkronize olmasını sağlamalısınız.

Database Güvenliği ve Yedekleme (Backup)

Metin2 projelerinde database yönetirken yapılacak en ufak bir sütun hatası veya yanlış SQL sorgusu çalıştırmak, tüm oyuncu verilerinin silinmesiyle (wipe) sonuçlanabilir. 

Bu nedenle Navicat üzerinde işlem yapmadan önce mutlaka ilgili şemaya sağ tıklayıp "Dump SQL File" seçeneğiyle yerel bilgisayarınıza yedek almalısınız. Ayrıca oyunun açık olduğu esnada veritabanına doğrudan elle çok yoğun veri yazmak sorgu kuyruklarını (queries) kilitleyebileceğinden, büyük düzenlemeleri ve bakım çalışmalarını her zaman sunucuyu kapatıp (sh kapat.sh komutu ile) güvenli modda gerçekleştirmek en doğrusudur.