- Katılım
- 11 Eylül 2025
- Mesajlar
- 22
- Tepkime puanı
- 0
- Puanları
- 1
Harika bir konuyla serimize devam ediyoruz!
Knight Online'ın motor kaputunu açmıştık, LUA ile oyunun dinamik dünyasına göz atmıştık. Şimdi ise o motorun en derinlerine, veri okyanusunun kalbine, yani veritabanı (database) katmanına iniyoruz. Bu dünyada iki sihirli kelime her şeyi yönetir: Query (Sorgu) ve Prosedür (Procedure).
Bu terimler size ilk başta çok teknik ve sıkıcı gelebilir, ama panik yapmayın.
Her zamanki gibi, bu karmaşık görünen kavramları basit, anlaşılır ve bol Knight Online örneğiyle dolu bir rehbere dönüştüreceğiz.
Hazırsanız, karakterinizin her bir eşyasının, her bir tecrübe puanının nerede ve nasıl saklandığını keşfetmeye başlayalım.
Oyundan çıktığınızda tüm bu bilgiler nereye gidiyor?
Ertesi gün oyuna girdiğinizde her şeyi bıraktığınız gibi nasıl buluyorsunuz?
Tüm bu devasa bilgi, oyunun "beyni" veya "hafızası" diyebileceğimiz dev bir dijital kütüphanede, yani veritabanında (database) saklanır.
Bu veritabanı, genellikle Microsoft SQL Server gibi sistemler kullanır ve her bilgi, düzenli tablolar halinde tutulur. İşte bu kütüphaneden bilgi almak, oraya yeni bilgi eklemek veya mevcut bilgiyi değiştirmek için kullandığımız özel komutlara Query ve Prosedür diyoruz.
Knight Online'dan Somut Örnekler:
Tıpkı kütüphaneciye "Her ayın başında en çok okunan 10 kitabı listele, listeyi müdüre e-posta at ve eski listeyi arşivle" gibi karmaşık bir görev emri vermek gibidir. Bu emri ona bir kez öğretirsiniz ve sonra sadece "Aylık Raporu Çalıştır" demeniz yeterli olur.
Prosedürler, oyun içinde sürekli tekrar eden ve birden fazla adımı olan işlemleri otomatikleştirmek için kullanılır. Bu hem daha hızlı hem de daha güvenlidir.
Knight Online'dan Somut Örnekler:
Bizim oyun ekranında yaptığımız her tıklama, her hareket, arka planda bu dil aracılığıyla veritabanında bir anlam bulur. Query'ler bilgi almamızı sağlayan sorularımız, Prosedürler ise oyunu dinamik ve işlevsel kılan karmaşık görev emirlerimizdir.
Bu sistem olmadan, karakterlerimizin ilerlemesi kaydedilemez ve Knight Online dünyası cansız bir manzaradan ibaret olurdu.
Knight Online'ın motor kaputunu açmıştık, LUA ile oyunun dinamik dünyasına göz atmıştık. Şimdi ise o motorun en derinlerine, veri okyanusunun kalbine, yani veritabanı (database) katmanına iniyoruz. Bu dünyada iki sihirli kelime her şeyi yönetir: Query (Sorgu) ve Prosedür (Procedure).
Bu terimler size ilk başta çok teknik ve sıkıcı gelebilir, ama panik yapmayın.
Her zamanki gibi, bu karmaşık görünen kavramları basit, anlaşılır ve bol Knight Online örneğiyle dolu bir rehbere dönüştüreceğiz.
Hazırsanız, karakterinizin her bir eşyasının, her bir tecrübe puanının nerede ve nasıl saklandığını keşfetmeye başlayalım.
Knight Online'ın Hafızası ve “Query” ve “Prosedür” Kodları Rehberi
Bir an için karakterinizi düşünün. Üzerindeki zırhlar, envanterindeki iksirler, bankasındaki değerli eşyalar, ait olduğu klan, kazandığı tecrübe puanları, hatta arkadaş listesi...Oyundan çıktığınızda tüm bu bilgiler nereye gidiyor?
Ertesi gün oyuna girdiğinizde her şeyi bıraktığınız gibi nasıl buluyorsunuz?
Tüm bu devasa bilgi, oyunun "beyni" veya "hafızası" diyebileceğimiz dev bir dijital kütüphanede, yani veritabanında (database) saklanır.
Bu veritabanı, genellikle Microsoft SQL Server gibi sistemler kullanır ve her bilgi, düzenli tablolar halinde tutulur. İşte bu kütüphaneden bilgi almak, oraya yeni bilgi eklemek veya mevcut bilgiyi değiştirmek için kullandığımız özel komutlara Query ve Prosedür diyoruz.
Query (Sorgu) Nedir? Veritabanı Kütüphanesine Soru Sormak
En basit tanımıyla Query (Sorgu), veritabanına soru sormak ve ondan bir cevap istemektir. Bu soruları, SQL (Structured Query Language - Yapılandırılmış Sorgu Dili) adını verdiğimiz özel bir dille yazarız. Tıpkı bir kütüphaneciden belirli bir kitabı istemek gibi.Knight Online'dan Somut Örnekler:
- Pazar Gezmesi Sorgusu:Siz Moradon'da pazar (merchant) gezerken, arama çubuğuna "Iron Bow" yazdığınızda ve en düşük fiyattan sıralamasını istediğinizde, arka planda şöyle bir sorgu çalışır:
- "MERCHANT_ITEMS (Pazar Eşyaları) tablosundan, adı 'Iron Bow' olan tüm eşyaları bul ve bana fiyatlarına göre küçükten büyüğe sıralayarak listele."
- Karakter Bilgisi Sorgusu:Oyuna giriş yaptığınızda (login olduğunuzda), oyun sunucusu veritabanına sizin karakterinize ait bilgileri sorar:
- "USER_DATA (Kullanıcı Verisi) tablosundan, kullanıcı adı 'MakaleYazici' olan karakterin seviyesini, gücünü (STR), sağlığını (HP), envanterindeki eşyaları ve bankasındaki parayı bana getir."
- Sıralama (Ranking) Sorgusu:Ronark Land'deki NP (National Point) sıralamasına baktığınızda, aslında çok basit bir sorgunun sonucunu görürsünüz:
- "USER_DATA tablosundan, tüm kullanıcıların NP'lerini al ve en yüksekten en düşüğe doğru sıralayarak ilk 100 tanesini göster."
Prosedür (Procedure) Nedir? Otomatikleştirilmiş Görev Emirleri
Prosedür (Stored Procedure) ise bir adım daha ilerisidir. Tek bir sorgu yerine, belirli bir işi yapmak için yazılmış, paketlenmiş ve isimlendirilmiş bir dizi komut ve sorgu zinciridir.Tıpkı kütüphaneciye "Her ayın başında en çok okunan 10 kitabı listele, listeyi müdüre e-posta at ve eski listeyi arşivle" gibi karmaşık bir görev emri vermek gibidir. Bu emri ona bir kez öğretirsiniz ve sonra sadece "Aylık Raporu Çalıştır" demeniz yeterli olur.
Prosedürler, oyun içinde sürekli tekrar eden ve birden fazla adımı olan işlemleri otomatikleştirmek için kullanılır. Bu hem daha hızlı hem de daha güvenlidir.
Knight Online'dan Somut Örnekler:
- Karakter Ölüm Prosedürü (USER_DEAD): Bir yaratık tarafından öldürüldüğünüzde arka planda neler olur? Bu tek bir işlem değildir ve bir prosedür tarafından yönetilir:
- Adım 1: Karakterin tecrübe puanından (EXP) seviyesine göre belirli bir miktar düşürülür (UPDATE).
- Adım 2: Eğer üzerinde NP varsa, NP'sinin bir kısmı düşürülür (UPDATE).
- Adım 3: Karakterin konumu, kendi ırkının "town" koordinatları olarak güncellenir (UPDATE).
- Adım 4: Tüm bu işlemlerin kaydı, bir "log" tablosuna yazılır (INSERT). İşte tüm bu adımlar, USER_DEAD gibi tek bir prosedür çağrılarak saniyeler içinde gerçekleştirilir.
- Eşya Yükseltme Prosedürü (ITEM_UPGRADE): Anvil'e gidip bir "Raptor"u +7'den +8'e basmaya çalıştığınızda olanlar da bir prosedürdür:
- Adım 1: Oyuncunun envanterinde yeterli "Bus" (Blessed Upgrade Scroll) ve para olup olmadığı kontrol edilir (SELECT).
- Adım 2: Sunucuda tanımlı başarı oranına göre bir zar atılır (hesaplama yapılır).
- Adım 3 (Başarılıysa): Oyuncunun envanterindeki "+7 Raptor" silinir (DELETE), yerine "+8 Raptor" eklenir (INSERT). Bus ve para envanterden silinir.
- Adım 4 (Başarısızsa): "+7 Raptor", "Bus" ve para, oyuncunun envanterinden silinir (DELETE). Bu karmaşık "eğer... o zaman..." mantığı, tek bir prosedür ile güvenli bir şekilde yönetilir.
LUA, Query ve Prosedür Birlikte Nasıl Çalışır?
Bu üçlü, muhteşem bir uyum içinde çalışır. Önceki rehberimizdeki LUA'yı hatırlayalım:- LUA (Yönetmen): Bir NPC'ye tıklarsınız. NPC'nin LUA script'i çalışır ve der ki: "Oyuncu benden görev ödülünü istiyor."
- Prosedür (Görev EmGIVE_QUEST_REWARDri): LUA, bu isteği sunucuya iletir ve sunucu da veritabanındaki (Görev Ödülünü Ver) prosedürünü çağırır.
- Query (Sorgular): Prosedürün içinde sorgular çalışır. Önce oyuncunun görevi gerçekten bitirip bitirmediği kontrol edilir, sonra envanterine ödül item'ı eklenir ve görev kaydı "tamamlandı" olarak güncellenir.
Bizim oyun ekranında yaptığımız her tıklama, her hareket, arka planda bu dil aracılığıyla veritabanında bir anlam bulur. Query'ler bilgi almamızı sağlayan sorularımız, Prosedürler ise oyunu dinamik ve işlevsel kılan karmaşık görev emirlerimizdir.
Bu sistem olmadan, karakterlerimizin ilerlemesi kaydedilemez ve Knight Online dünyası cansız bir manzaradan ibaret olurdu.
Son düzenleme: