Metin2 Python Geliştirme Rehberi: Client Arayüzü ve UI Düzenleme

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

Metin2 istemcisinin (client) görsel yüzünü, pencerelerini, butonlarını ve oyuncunun etkileşime girdiği tüm panelleri yöneten temel yazılım dili Python'dır. Oyunun ana motoru C++ ile yazılmış olsa da, arayüzün dinamik olarak yüklenmesi ve yönetilmesi için Python scriptlerinden yararlanılır. Bir pvp sunucusuna yeni bir sistem ekleneceğinde veya mevcut pencerelerin tasarımları değiştirileceğinde uğranılması gereken ilk yer client pack dosyalarının içerisindeki Python kodlarıdır. Bu rehberde, Metin2 Python geliştirme süreçlerinin mantığını ve en kritik dosyaların işlevlerini ele alıyoruz.


Root Paketi ve Ana Python Dosyaları

İstemcinin en önemli Python kodları root.epk/.eix paketinin içerisinde saklanır. Bu paketi açtığınızda karşınıza oyunun akışını kontrol eden onlarca .py uzantılı dosya çıkar:

serverinfo.py: Sunucu IP adreslerinin, port numaralarının ve kanal isimlerinin (CH) tanımlandığı, istemcinin sunucuya bağlanmasını sağlayan en temel dosyadır.

interfacemodule.py: Oyundaki tüm pencerelerin (Envanter, Karakter Ekranı, Lonca Paneli, Ticaret Penceresi vb.) oyun motoruna tanıtıldığı ve tetiklendiği ana yönetim merkezidir. Yeni bir sistem yazıldığında pencerenin oyunda açılabilmesi için mutlaka bu dosyaya kaydedilmesi gerekir.

game.py: Oyuncunun klavye ve fare hareketlerini, sohbet satırına yazılan komutları ve oyun dünyasındaki anlık sistem mesajlarını işleyen, istemcinin kalbi niteliğindeki dosyadır.

UI Script Yapısı ve Görsel Tasarım Mantığı

Metin2'de pencerelerin tasarımı (butonların nerede duracağı, arka plan görselinin boyutu vb.) kodlardan ayrıştırılmıştır. Tasarımlar uiscript.epk paketi altındaki Python dosyalarında belirlenir.

Bu klasördeki dosyalar (Örn: inventorywindow.py) tamamen pencerenin koordinatlarını ve buton şablonlarını barındıran birer sözlük (dictionary) yapısındadır. Görsel pencereler tasarlanırken oyunun ana doku klasöründe (ymir work/ui) bulunan .tga veya .sub uzantılı resim dosyaları bu scriptler içerisinden çağrılarak konumlandırılır.

Python Kodlarken Dikkat Edilmesi Gereken Kritik Kurallar

Metin2, çok eski bir Python sürümü (genellikle Python 2.2 veya 2.7) altyapısıyla çalışır. Bu nedenle modern Python kütüphaneleri ve fonksiyonları oyunda doğrudan çalışmaz.

En çok karşılaşılan ve client çökmesine neden olan hata "IndentationError" yani sekme (Tab) hatasıdır. Kod yazarken boşluk tuşu (Space) ile sekme tuşu (Tab) birbirine karıştırılmamalıdır. Kodlama yaparken mutlaka Notepad++ veya VS Code gibi gelişmiş editörler kullanılmalı ve editör ayarlarından "Blokları Göster" seçeneği aktif edilerek hizalamaya ekstra dikkat edilmelidir. Yapılan en ufak hizalama hatası, oyunun açılırken syserr vermesine ve hiçbir hata göstermeden doğrudan masaüstüne kapanmasına yol açar.