Azure ve google cloud gibi sağlayıcılardan alınan vps'lerin karakter ekranından ch ekranına tekme yemesinin çözümü

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

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
Martysama server fileslerde büyük ihtimal ekli geliyor ama genede anlatımını yapmak istedim.

char.cpp açılır ve aratılır

p.lAddr = lAddr;

altına

if (!g_stProxyIP.empty())
p.lAddr = inet_addr(g_stProxyIP.c_str());

yapıştırılır

config.cpp açılır ve bulunur

uint32_t g_dwSkillBookNextReadMax = 43200;

altına

std::string g_stProxyIP = "";

yapıştırılır

aratılır

fprintf(stdout, "SKILLBOOK_NEXTREAD_MAX: %u\n", g_dwSkillBookNextReadMax);

altına

TOKEN("proxy_ip")
{
g_stProxyIP = value_string;
}

yapıştırılır

config.h açılır
ve
bulunur

extern uint32_t g_dwSkillBookNextReadMax;

altına

extern std::string g_stProxyIP;

eklenir.

desc.cpp açılır ve bulunur

for (int i = 0; i < PLAYER_PER_ACCOUNT; ++i)
{
CGuild* g = CGuildManager::instance().GetLinkedGuild(rTable.players.dwID);

if (g)
{
p.guild_id = g->GetID();
strlcpy(p.guild_name, g->GetName(), sizeof(p.guild_name));
}
else
{
p.guild_id = 0;
p.guild_name[0] = '\0';
}
}

altına


if (!g_stProxyIP.empty())
rTable.players.lAddr=inet_addr(g_stProxyIP.c_str());

eklenir

input_db.cpp açılır ve bulunur

if (!CMapLocation::instance().Get(rTab.players.x, rTab.players.y, lIndex, rTab.players.lAddr, rTab.players.wPort))
{
sys_err("cannot find server for mapindex %d %d x %d (name %s)",
lIndex,
rTab.players.x,
rTab.players.y,
rTab.players.szName);

continue;
}

altına eklenir

if (!g_stProxyIP.empty())
rTab.players.lAddr=inet_addr(g_stProxyIP.c_str());

bulunur

struct in_addr in;

altına eklenir

if (!g_stProxyIP.empty())
rTab.players.lAddr=inet_addr(g_stProxyIP.c_str());

aratılır

pack.player = pPacketDB->player;

altına eklenilir

if (!g_stProxyIP.empty())
pack.player.lAddr=inet_addr(g_stProxyIP.c_str());

Oyunu derledikten sonra CONFIG'lere eklenir

PROXY_IP: senin ip
BIND_IP:10.0.0.x


KAYNAK : FUNKY EMULATOR

Azure ve Google Cloud VPS'lerde Metin2 Sunucu Geliştirme: Karakter Ekranından Ch Ekranına Geçişte Tekme Sorunu ve Çözümü

Metin2 özel sunucularında çalışırken karşılaşılan sorunlardan birisi, Azure veya Google Cloud gibi bulut sağlayıcılarından alınan VPS üzerinde çalışan sunucularda, oyuncunun karakter ekranından doğrudan ch (channel) ekranına geçerken sunucudan atılmasıdır. Bu durum, genellikle ağ yapılandırması, bağlantı zaman aşımı ayarları veya VPS sunucusunun ağ politikalarından kaynaklanabilir. Bu yazıda bu sorunun detaylarına inerek, Metin2 sunucu geliştirme sürecinde karşılaşılabilecek bu teknik problemi nasıl çözebileceğimizi ele alacağız.

Sorunun Temel Nedenleri

Bu sorun genellikle iki temel nedenden dolayı meydana gelir:

1. Ağ Gecikmesi ve Zaman Aşımı: Azure ve Google Cloud gibi platformlarda bazı sunucular, düşük gecikme süresi sunarken bazılarında bağlantı sürekliliği sağlanamaz. Bu da oyuncunun karakter seçim ekranından kanal seçim ekranına geçerken bağlantısının kopmasına neden olur.

2. Güvenlik Duvarı ve NAT Ayarları: Bulut sağlayıcıların kullandığı güvenlik yapılandırmaları, bazı Metin2 sunucu sistemlerinin doğru çalışmasını engelleyecek şekilde ayarlanmış olabilir. Özellikle auth server ile game server arasındaki bağlantılar etkilenebilir.

Çözüm Adımları

1. Sunucu Zaman Aşımı Ayarlarını Değiştirin: Metin2 server_src dosyalarında bulunan clientmanager_imp.cpp veya heartbeat.cpp gibi dosyalarda yer alan ping zamanlayıcı değerlerini artırarak, bağlantı sürekliliğini sağlayabilirsiniz. Örneğin, ping değeri varsayılan olarak 60 sn ise, bunu 120 sn yapabilirsiniz.

2. NAT ve Güvenlik Duvarı Ayarlarını Kontrol Edin: Azure portal üzerinden 'Network Security Group' veya Google Cloud Console üzerinden 'Firewall Rules' üzerinden gelen ve giden trafiğin tamamının açık olduğundan emin olun. Özellikle 13000-15000 port aralıklarında açık olmalıdır.

3. Sunucu IP Ayarlarını Doğru Yapın: clientinfo.py veya addr files dosyalarında belirttiğiniz IP adresinin, VPS'nin dış IP'siyle aynı olduğundan emin olun. Aksi takdirde, istemci doğru sunucuya bağlanamaz ve bağlantı kopabilir.

4. Python Root ve Py GUI Ayarları: Eğer Py GUI tabanlı bir yönetim paneli kullanıyorsanız, buradaki IP ve port ayarlarının, gerçek VPS ayarlarıyla uyumlu olduğundan emin olun. Py Root üzerinden yapılan ayarlar doğrudan sunucu bağlantısını etkileyebilir.

Ekstra Notlar

Metin2 özel sunucu dünyasında, özellikle PvP sistemleri ve C++ source düzenlemeleriyle çalışan geliştiriciler için, bu tür bağlantı problemleri ciddi performans ve kullanıcı deneyimi kaybına yol açabilir. Bu nedenle, sunucu altyapısı seçerken hem fiyat hem de ağ stabilitesi göz önünde bulundurulmalıdır. Martysama[/COORD] ve diğer geliştirici toplulukları bu konuda birçok kaynak sunmaktadır.

Sonuç

Azure veya Google Cloud üzerinde barındırılan Metin2 sunucularında, karakter ekranından ch ekranına geçerken kopmalar, doğru yapılandırma ile çözülebilir. Ağ ayarlarını, zaman aşımını ve güvenlik duvarını kontrol ederek bu sorunu ortadan kaldırabilirsiniz. Metin2 lobby olarak, bu tür teknik zorluklarla karşılaşan geliştiricilere destek olmayı amaçlıyoruz.


Metin2 Server Development on Azure and Google Cloud: Solving the Kick Issue from Character Screen to Channel Screen

One of the issues encountered during Metin2 private server development occurs when players are kicked from the server upon transitioning directly from the character selection screen to the channel selection screen on VPS servers hosted by providers like Azure or Google Cloud. This issue typically stems from network configurations, connection timeout settings, or the network policies of the VPS provider. In this article, we will examine the details of this problem and explore how to solve this technical issue during the Metin2 server development process.

Root Causes of the Problem

This issue generally arises due to two main reasons:

1. Network Latency and Timeout: While some servers on platforms like Azure and Google Cloud offer low latency, others may not maintain consistent connections. This can cause disconnections when players transition from the character selection screen to the channel selection screen.

2. Firewall and NAT Settings: The security configurations used by cloud providers might interfere with the correct operation of certain Metin2 server systems. Especially the connection between auth server and game server can be affected.

Solution Steps

1. Adjust Server Timeout Settings: Increase the ping timer values found in files such as clientmanager_imp.cpp or heartbeat.cpp within the Metin2 server_src. For instance, if the default ping value is 60 seconds, you can increase it to 120 seconds to ensure connection continuity.

2. Check NAT and Firewall Settings: Ensure that all incoming and outgoing traffic is allowed through the 'Network Security Group' on Azure Portal or 'Firewall Rules' on Google Cloud Console. Particularly, port ranges between 13000-15000 should be open.

3. Verify Server IP Configuration: Confirm that the IP address specified in files like clientinfo.py or addr files matches the external IP of your VPS. Otherwise, the client cannot connect to the correct server, resulting in disconnection.

4. Configure Python Root and Py GUI Settings: If you are using a management panel based on Py GUI, ensure that IP and port settings match the actual VPS configuration. Settings made via Py Root can directly affect server connections.

Additional Notes

In the world of Metin2 private servers, especially for developers working with PvP systems and C++ source modifications, such connection issues can lead to significant performance and user experience losses. Therefore, both price and network stability should be considered when selecting server infrastructure. Martysama and other developer communities provide numerous resources on this topic.

Conclusion

Disconnections from the character screen to the channel screen on Metin2 servers hosted on Azure or Google Cloud can be resolved with proper configuration. By checking network settings, timeouts, and firewall rules, you can eliminate this issue. As Metin2 lobby, we aim to support developers facing such technical challenges.
 

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

Geri
Üst Alt