Puan
0
Çözümler
0
- Katılım
- 18 Ocak 2025
- Mesajlar
- 52
- Tepkime puanı
- 2
- Konum
- Bursa
- Web sitesi
- ko-turkey.net
Konu Sahibi
Bu konuda, Knight Online server dosyalarında bulunan SMD (Server Map Data) dosyasının ne olduğunu, nasıl çalıştığını, hangi verileri içerdiğini ve hangi durumlarda işe yaradığını detaylı şekilde inceleyeceğiz.
SMD, İngilizce “Server Map Data” ifadesinin kısaltmasıdır. Türkçe anlamıyla, sunucu tarafında kullanılan harita verilerini taşıyan özel bir dosya formatıdır.
Knight Online server yapısında her harita için bir adet .smd dosyası bulunur. Bu dosya, ilgili haritanın çeşitli bilgilerini binary formatta (ikili veri olarak) tutar ve server tarafından harita yüklenirken kullanılır.
Server, bir harita yüklerken ilgili .smd dosyasını bulmak için şu yolu izler:
Bu işlem sonucunda, haritaya özel bilgiler .smd dosyasından alınarak server’a yüklenir.
.smd dosyası temel olarak bir harita hakkında aşağıdaki bilgileri içerir:
Ancak dikkat edilmesi gereken önemli bir nokta var:
Yükseklik ve Collision verileri server tarafında kullanılmaz. Bunlar client ile eşleşme amacıyla tutulur ama server herhangi bir işlem yapmaz.
Her .smd dosyasının başında harita boyutu yer alır ve bu bilgi sabit bir formülle hesaplanır:
Örnek:
Aşağıda, bir .smd dosyasında hangi veriler hangi sırayla yer alır, detaylı olarak listelenmiştir:
Bu iki bölüm RAM kullanımı açısından gereksiz yük oluşturur.
Evet. Eğer ileri düzey bilgiye sahipseniz ve server’ı optimize etmek istiyorsanız:
Bu sayede:
SMD dosyası, Knight Online server yapısında haritalara dair çeşitli verileri barındıran kritik bir yapıdır. Ancak bu dosyada bulunan birçok bilgi (özellikle yükseklik ve çarpışma verileri) server tarafından kullanılmaz. Bu nedenle dosyanın sistemden kaldırılması ve gerekli verilerin veritabanına aktarılması, performans ve verimlilik açısından tercih edilen bir yöntem olabilir.
1. SMD Nedir?
SMD, İngilizce “Server Map Data” ifadesinin kısaltmasıdır. Türkçe anlamıyla, sunucu tarafında kullanılan harita verilerini taşıyan özel bir dosya formatıdır.
Knight Online server yapısında her harita için bir adet .smd dosyası bulunur. Bu dosya, ilgili haritanın çeşitli bilgilerini binary formatta (ikili veri olarak) tutar ve server tarafından harita yüklenirken kullanılır.
2. SMD Dosyasına Server Nasıl Ulaşır?
Server, bir harita yüklerken ilgili .smd dosyasını bulmak için şu yolu izler:
- Veritabanında ZONE_INFO tablosuna gider.
- Bu tabloda yer alan strZoneName sütunundan, yüklenecek haritanın dosya adını alır.
- Ardından server içerisindeki MAP klasöründe, bu isimle eşleşen .smd uzantılı dosyayı bulur ve okur.
Bu işlem sonucunda, haritaya özel bilgiler .smd dosyasından alınarak server’a yüklenir.
3. SMD Dosyası Ne İşe Yarar?
.smd dosyası temel olarak bir harita hakkında aşağıdaki bilgileri içerir:
- Harita boyutu
- Yükseklik verileri
- Collision (çarpışma) verileri
- Objeler (Anvil, Gate, Lever vb.)
- Tile sistemi (etkinlik bölgeleri, ışınlanma alanları)
- Respawn (Regene) noktaları
- Teleport Gate – Warp listesi
Ancak dikkat edilmesi gereken önemli bir nokta var:
Yükseklik ve Collision verileri server tarafında kullanılmaz. Bunlar client ile eşleşme amacıyla tutulur ama server herhangi bir işlem yapmaz.
4. Gerçek Örnek Üzerinden Açıklama
Harita Boyutu Hesaplama
Her .smd dosyasının başında harita boyutu yer alır ve bu bilgi sabit bir formülle hesaplanır:
Java:
Harita Boyutu = (Gerçek Harita Genişliği / 4) + 1
- Luferson Castle haritası 2048x2048 boyutundadır.
- (2048 / 4) + 1 = 513
- Yani bu haritanın .smd dosyasındaki ilk değer: 513
SMD Dosyası İçeriği ve Sıralaması
Aşağıda, bir .smd dosyasında hangi veriler hangi sırayla yer alır, detaylı olarak listelenmiştir:
- Harita Boyutu
(2048 / 4) + 1 gibi hesaplanır. Integer olarak tutulur (4 byte). - UnitDistance
Float türünde sabit olarak 4.0 değeri yer alır. Teknik olarak işlevsizdir, dikkate alınmaz. - Yükseklik Verileri
Harita boyutu kadar 2D array (örneğin 513 x 513). Server bu veriyi kullanmaz, yalnızca taşır. - Collision Verileri
Haritada objelerin içinden geçilip geçilemeyeceğini belirten bilgiler. Client'ta işlevlidir, server yine kullanmaz. - Objeler (Objects)
Lever, Gate, Anvil gibi oyun içi nesnelerin konum ve bilgileri burada yer alır. Server dosyaları bu bilgileri doğrudan kullanır. - Tile Sistemi
Haritanın özel bölgelerini belirten tile verileridir. Event sistemleri (örneğin Lunar War ışınlanmaları) bu bilgilerle çalışır. EVENT tablosu ile eşleştirilir. - Regene (Respawn) Noktaları
Oyuncuların yeniden doğduğu bind noktaları. Örnek: Luferson Castle’daki şehir spawn noktası. - Teleport Gate – Warp Listesi
Haritalar arası veya harita içi geçişlerin tanımlandığı bölümdür. Warp sistemleri buradan alınır.
5. Server Kullanımı Açısından Önemli Noktalar
SMD Dosyasının Server Açısından Gerekli Olmayan Kısımları
- Yükseklik Verileri: Yalnızca client için işlevsel. Server işlem yapmaz.
- Collision Verileri: Aynı şekilde sadece görüntüsel olarak anlamlıdır. Server bu bilgiyi kontrol etmez.
Bu iki bölüm RAM kullanımı açısından gereksiz yük oluşturur.
6. Öneri: SMD Dosyasını Sistemden Kaldırmak Mümkün mü?
Evet. Eğer ileri düzey bilgiye sahipseniz ve server’ı optimize etmek istiyorsanız:
- .smd dosyasını tamamen sistemden kaldırabilirsiniz.
- Harita ile ilgili temel bilgileri şu şekilde taşıyabilirsiniz:
- Harita boyutu: ZONE_INFO tablosuna
- Harita yetenekleri (warp kontrolü, PvP durumu vb.): ZONE_ABILITY tablosundaki zoneFlag sütununa
Bu sayede:
- Bellek (RAM) kullanımı azalır,
- SMD dosyasına bağımlılık kalkar,
- Veri kontrolü daha şeffaf hale gelir.
7. Sonuç
SMD dosyası, Knight Online server yapısında haritalara dair çeşitli verileri barındıran kritik bir yapıdır. Ancak bu dosyada bulunan birçok bilgi (özellikle yükseklik ve çarpışma verileri) server tarafından kullanılmaz. Bu nedenle dosyanın sistemden kaldırılması ve gerekli verilerin veritabanına aktarılması, performans ve verimlilik açısından tercih edilen bir yöntem olabilir.