[SRC] MAP_ALLOW Limitini 64'e Yükseltmek

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 59

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Geçtiğimiz günlerde oyunu başlatırken MAP_ALLOW ile ilgili sıkıntı yaşadım. Max. 32 harita açılabiliyordu.
ch1_1 gibi core sistemleriyle halledebileceğiniz gibi, kaynak kodlarıyla da sorunu çözebilirsiniz.

GAME düzenlemeleri:

desc_client.cpp

-- BUL --

Kod:
[COLOR=#000000]map_allow_copy(p.alMaps, 32);[/COLOR]

-- DEĞİŞTİR --

Kod:
map_allow_copy(p.alMaps, 64);

Satır: 167

inut_db.cpp

-- BUL --

Kod:
for (int i = 0; i < 32; ++i)

-- DEĞİŞTİR --

Kod:
for (int i = 0; i < 64; ++i)

Satır: 1335

-- BUL --
Kod:
void CInputDB::MapLocations(const char * c_pData)

BYTE yazılarını INT olarak değiştir.

DB Düzenlemeleri:

Peer.h

-- BUL --

Kod:
long m_alMaps[32];

-- DEĞİŞTİR --

Kod:
long m_alMaps[64];

Satır: 71

COMMON düzenlemeleri:

tables.h

-- BUL --

Kod:
long alMaps[32];

-- DEĞİŞTİR --

Kod:
long alMaps[64];

Satır: 805

-- BUL --

Kod:
long alMaps[32];

-- DEĞİŞTİR --

Kod:
long alMaps[64];

Satır: 793

- Bu sayede 32 olan MAP_ALLOW limitini 64 yaparak daha fazla harita açabileceksiniz.
- Sayıları 64 yerine 128 olarak yaparsanız sanıyorum ki, çalışır, denemedim.
MAP_ALLOW Limitini 64'e Yükseltmek

Metin2 özel sunucularında performans ve kapasite artırımı için önemli adımlardan birisi olan MAP_ALLOW limitinin yükseltilmesi, özellikle büyük haritaların barındırıldığı sunucularda kritik öneme sahiptir.

Metin2 özel sunucu geliştirme sürecinde, bazı sınırlamalarla karşılaşabilirsiniz. Bu sınırlamalardan biri de MAP_ALLOW değeridir. Varsayılan olarak 32 olan bu değer, sunucunuzda aynı anda bulunabilecek maksimum harita sayısını belirler. Ancak bazı gelişmiş sunucularda bu sayı yetersiz kalabilir. Özellikle çok haritalı PvP sistemlerinde, turnuvalar veya özel alanlar için bu değerin artırılması gerekir. Bu yazıda, MAP_ALLOW limitini 64'e yükseltmeyi adım adım ele alacağız.

MAP_ALLOW Nedir?
MAP_ALLOW, Metin2 oyun sunucusunda aynı anda aktif olabilen harita sayısını sınırlayan bir yapıdır. Varsayılan değer 32'dir ve bu değer, sunucu yapılandırmasında belirlenir. Bu sınırı aşmak istiyorsanız, hem game hem de client tarafında değişiklik yapmanız gerekir.

Neden 64 Yapılır?
64 sayısı, hem performans hem de ölçeklenebilirlik açısından ideal bir orta noktadır. Sunucuda birçok özel harita barındıran PvP sistemlerinde, bu sayı arttıkça daha fazla haritada oynama imkanı doğar. Ancak bu artış, doğru yapılandırılmazsa sunucu yükünü artırabilir. Bu nedenle, 64 gibi dengeli bir sayı tercih edilir.

Değişiklikler Nerede Yapılır?
MAP_ALLOW limitini yükseltmek için iki temel dosyada değişiklik yapılması gerekir:

1. Game Server Kaynak Kodları (src/game/...)
2. Client Kaynak Kodları (src/client/...)

Adım Adım MAP_ALLOW Değerini 64 Yapmak

1. Game Server Tarafı
Sunucu tarafında src/server/game/map/ dizininde bulunan constants.h ya da benzeri bir dosyada MAP_ALLOW sabiti tanımlıdır. Bu satır genellikle şöyle görünür:

Kod:
define MAX_MAP_INDEX 32

Bu satırı şu şekilde değiştirin:

Kod:
define MAX_MAP_INDEX 64


Ayrıca, mapmanager.cpp gibi dosyalarda harita indeksi kontrol eden fonksiyonlar varsa, burada da değişiklikler yapılması gerekebilir. Örneğin, indeksin 64'ten küçük olduğuna dair kontrollerin güncellenmesi gerekir.

2. Client Tarafı
Client tarafında da benzer şekilde src/client/game/ dizinindeki ilgili dosyalarda MAP_ALLOW sabiti bulunur. Genellikle constants.py ya da system.py gibi Python dosyalarında yer alır.

Kod:
MAP_ALLOW = 32


Bu satırı şu şekilde güncelleyin:

Kod:
MAP_ALLOW = 64


Ayrıca, bazı GUI dosyalarında harita indeksleriyle ilgili sabitler de olabilir. Bu durumda uiscript dosyalarında da gerekli güncellemeler yapılmalıdır.

Derleme ve Test
Tüm değişiklikleri yaptıktan sonra, hem game hem de client tarafını yeniden derlemeniz gerekir. Derleme işlemi sırasında herhangi bir hata almıyorsanız, yapılandırma başarılıdır. Ardından, test sunucunuzda harita indeksi 32'nin üzerinde olan haritalarda oynama yaparak ayarların doğru çalışıp çalışmadığını kontrol edebilirsiniz.

Dikkat Edilmesi Gerekenler
- Client ve server taraflarında eş zamanlı olarak yapılmayan değişiklikler bağlantı sorunlarına neden olabilir.
- Sunucu performansını etkileyebilecek yüksek harita sayısı, donanım kaynaklarını da göz önünde bulundurun.
- Bazı sistemlerde harita indeksi 64'ü aştığında hatalar oluşabilir; bu yüzden test aşaması çok önemlidir.

Metin2 Özel Sunucu Geliştirme İçin Kaynaklar
Metin2 Lobby olarak sunucu geliştirme konusunda deneyimli geliştiriciler için kaynaklar sunuyoruz. C++ source edit, Python sistemler, PvP sistemleri, DB yapıları ve daha fazlası için sitemizi ziyaret edin.


Raising MAP_ALLOW Limit to 64

In Metin2 private servers, increasing the MAP_ALLOW limit is one of the critical steps for improving performance and capacity, especially for servers hosting multiple maps.

During the process of developing Metin2 private servers, you may encounter certain limitations. One of these is the MAP_ALLOW value. By default set to 32, this value determines the maximum number of maps that can be active on your server simultaneously. However, in some advanced servers, this number may become insufficient. In particular, for PvP systems with many maps, tournaments, or special areas, raising this value becomes necessary. In this article, we will detail how to increase the MAP_ALLOW limit to 64 step by step.

What Is MAP_ALLOW?
MAP_ALLOW is a structure that limits the number of active maps allowed in a Metin2 game server at once. The default value is 32 and is defined in the server configuration. To exceed this limit, you must make modifications both in the game and client sides.

Why Set It to 64?
The number 64 is considered a balanced middle point in terms of both performance and scalability. In PvP systems that host many custom maps, increasing this number allows gameplay across more maps. However, if not configured correctly, this increase may raise server load. For this reason, a balanced number like 64 is often preferred.

Where Should Changes Be Made?
To raise the MAP_ALLOW limit, modifications must be made in two main files:

1. Game Server Source Code (src/game/...)
2. Client Source Code (src/client/...)

Step-by-Step Guide to Set MAP_ALLOW to 64

1. Game Server Side
On the server side, the MAP_ALLOW constant is defined in a file such as constants.h located under src/server/game/map/. This line typically looks like:

Kod:
define MAX_MAP_INDEX 32

Change this line to:

Kod:
define MAX_MAP_INDEX 64


Additionally, in files like mapmanager.cpp, where functions check map indices, updates might be needed. For example, checks ensuring the index is less than 64 should be updated accordingly.

2. Client Side
On the client side, similarly, the MAP_ALLOW constant can be found in Python files like constants.py or system.py within the src/client/game/ directory.

Kod:
MAP_ALLOW = 32


Update this line to:

Kod:
MAP_ALLOW = 64


Also, some GUI files may contain fixed values related to map indices. In such cases, the relevant updates must be applied in uiscript files as well.

Compiling and Testing
After making all changes, you need to recompile both the game and client sides. If no errors occur during compilation, the configuration is successful. Then, you can test whether the settings work correctly by playing on maps with an index higher than 32 on your test server.

Important Considerations
- Changes made asynchronously between the client and server sides may cause connection issues.
- High numbers of maps affecting server performance should also consider hardware resources.
- Some systems may produce errors when the map index exceeds 64; therefore, testing is crucial.

Resources for Metin2 Private Server Development
Metin2 Lobby provides resources for experienced developers in server development. Visit our site for C++ source editing, Python systems, PvP systems, DB structures, and more.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt