O maior portal de MU Online do Brasil — desde 2003
Tutorial Avançado Servidor

Como configurar subservers e balancear a carga no MU Online

Configure múltiplos servidores (server select) no MU Online — como adicionar sub-servidores, configurar o ConnectServer para múltiplos GameServers, e balancear a carga entre servidores.

EQ Equipe ViciadosMU · Atualizado em 1 jul 2026 · ⏱ 22 min de leitura
Resposta rápida

Um servidor de MU Online com múltiplos "servers" (como "Servidor 1", "Servidor 2" na tela de seleção) usa o ConnectServer para distribuir os jogadores entre diferentes instâncias do GameServer. Cada instância tem sua própria configuração mas compartilha o mesmo banco de dados.

Um servidor de MU Online com múltiplos "servers" (como "Servidor 1", "Servidor 2" na tela de seleção) usa o ConnectServer para distribuir os jogadores entre diferentes instâncias do GameServer. Cada instância tem sua própria configuração mas compartilha o mesmo banco de dados.

Arquitetura multi-server

                    BANCO SQL (único)
                         │
              ┌──────────┼──────────┐
              │          │          │
         DataServer  DataServer  DataServer
              │          │          │
         JoinServer  JoinServer  JoinServer
              │          │          │
         GameServer1 GameServer2 GameServer3
         (porta 55901)(porta 55902)(porta 55903)
              │          │          │
              └──────────┼──────────┘
                         │
                   ConnectServer
                   (porta 44405)
                         │
                      JOGADOR
                   (vê seleção de servidor)

Cada GameServer é uma instância completa com seus próprios processos DataServer e JoinServer. O ConnectServer centraliza as conexões e redireciona cada jogador ao servidor escolhido.

Configurar o ConnectServer para múltiplos GameServers

Arquivo de configuração do ConnectServer

O ConnectServer lê a lista de GameServers de um arquivo de configuração:

ConnectServer/
├── ConnectServer.exe
├── ServerList.txt        ← lista de servidores disponíveis
├── ServerListConfig.txt  ← configuração alternativa (por distribuição)
└── Setting.xml           ← ou arquivo XML de configuração

ServerList.txt — formato

; ServerList.txt
; Formato: Index  IP  Port  Name  MaxUsers  FillRate
; FillRate: 0=sem jogadores, 30=lotado (valor visual na seleção)

0  127.0.0.1  55901  "Servidor 1 - EXP 100x"  1000  0
1  127.0.0.1  55902  "Servidor 2 - EXP 50x"   1000  0
2  127.0.0.1  55903  "Servidor 3 - PVP"        500   0

; Se os GameServers estão em VPSs diferentes:
0  45.90.100.10  55901  "Server 1"  1000  0
1  45.90.100.11  55901  "Server 2"  1000  0

Setting.xml — formato XML (distribuições mais recentes)

<?xml version="1.0" encoding="utf-8"?>
<ServerList>
    <Server>
        <ServerCode>0</ServerCode>
        <ServerName>Servidor 1 - EXP 100x</ServerName>
        <IP>127.0.0.1</IP>
        <Port>55901</Port>
        <MaxUsers>1000</MaxUsers>
        <CurrentUsers>0</CurrentUsers>
        <Visible>1</Visible>
    </Server>
    <Server>
        <ServerCode>1</ServerCode>
        <ServerName>Servidor 2 - EXP 50x</ServerName>
        <IP>127.0.0.1</IP>
        <Port>55902</Port>
        <MaxUsers>1000</MaxUsers>
        <CurrentUsers>0</CurrentUsers>
        <Visible>1</Visible>
    </Server>
</ServerList>

Configurar múltiplos GameServers na mesma máquina

Para rodar dois GameServers na mesma VPS, cada um precisa de:

  1. Uma pasta separada;
  2. Arquivos de configuração próprios (GameServer.ini);
  3. Uma porta diferente.

Estrutura de pastas

MuServer/
├── Server1/                    ← Servidor 1
│   ├── DataServer/
│   │   └── DataServer.ini
│   ├── JoinServer/
│   │   └── JoinServer.ini
│   └── GameServer/
│       ├── GameServer.exe
│       └── GameServer.ini
│
├── Server2/                    ← Servidor 2
│   ├── DataServer/
│   │   └── DataServer.ini
│   ├── JoinServer/
│   │   └── JoinServer.ini
│   └── GameServer/
│       ├── GameServer.exe
│       └── GameServer.ini
│
└── ConnectServer/
    ├── ConnectServer.exe
    └── ServerList.txt

GameServer.ini — Servidor 1

[General]
ServerCode=0               ← code do servidor (deve bater com ServerList)
ServerName=Servidor 1

[Network]
GameServerIP=127.0.0.1
GameServerPort=55901       ← porta do GameServer 1

[JoinServer]
JoinServerIP=127.0.0.1
JoinServerPort=55555       ← porta do JoinServer 1 (única por servidor)

[Database]
DSN=MuOnline              ← mesmo banco para todos os servidores

GameServer.ini — Servidor 2

[General]
ServerCode=1               ← code diferente
ServerName=Servidor 2

[Network]
GameServerIP=127.0.0.1
GameServerPort=55902       ← porta diferente do Servidor 1

[JoinServer]
JoinServerIP=127.0.0.1
JoinServerPort=55556       ← JoinServer com porta diferente

[Database]
DSN=MuOnline              ← mesmo banco

DataServer.ini — Servidor 1

[DataServer]
DataServerPort=55557       ← porta do DataServer 1

[Database]
DSN=MuOnline

DataServer.ini — Servidor 2

[DataServer]
DataServerPort=55558       ← porta diferente

[Database]
DSN=MuOnline              ← mesmo banco

JoinServer.ini — Servidor 1

[JoinServer]
JoinServerPort=55555

[DataServer]
DataServerIP=127.0.0.1
DataServerPort=55557

JoinServer.ini — Servidor 2

[JoinServer]
JoinServerPort=55556       ← porta diferente

[DataServer]
DataServerIP=127.0.0.1
DataServerPort=55558

ConnectServer.ini

[ConnectServer]
Port=44405                 ← porta única do ConnectServer

[GameServer1]
IP=127.0.0.1
Port=55901

[GameServer2]
IP=127.0.0.1
Port=55902

Configurações de EXP por servidor

Cada GameServer pode ter configurações de EXP diferentes — criando servidores com características distintas:

GameServer.ini — Servidor 1 (EXP alto)

[EXP]
ExpRate=100                ; EXP 100x
MasterExpRate=50           ; ML EXP 50x
EventExpRate=200           ; EXP 200x em eventos

GameServer.ini — Servidor 2 (EXP médio)

[EXP]
ExpRate=50                 ; EXP 50x
MasterExpRate=25
EventExpRate=100

Script de inicialização (batch)

Para iniciar todos os servidores na ordem correta:

@echo off
echo Iniciando MultiServer MU Online...
echo.

echo [1/6] Iniciando DataServer - Servidor 1...
start "" "Server1\DataServer\DataServer.exe"
timeout /t 3

echo [2/6] Iniciando DataServer - Servidor 2...
start "" "Server2\DataServer\DataServer.exe"
timeout /t 3

echo [3/6] Iniciando JoinServer - Servidor 1...
start "" "Server1\JoinServer\JoinServer.exe"
timeout /t 3

echo [4/6] Iniciando JoinServer - Servidor 2...
start "" "Server2\JoinServer\JoinServer.exe"
timeout /t 3

echo [5/6] Iniciando GameServer 1...
start "" "Server1\GameServer\GameServer.exe"
timeout /t 5

echo [6/6] Iniciando GameServer 2...
start "" "Server2\GameServer\GameServer.exe"
timeout /t 5

echo [7/7] Iniciando ConnectServer...
start "" "ConnectServer\ConnectServer.exe"
timeout /t 2

echo.
echo Todos os servidores iniciados!
pause

Monitorar jogadores por servidor

-- Jogadores online por servidor (se o GameServer registra no banco)
SELECT MapNumber, COUNT(*) AS Online
FROM Character
WHERE ConnectStat = 1
GROUP BY MapNumber
ORDER BY Online DESC;

-- Ver distribuição entre servidores (tabela de sessão, se existir)
SELECT ServerCode, COUNT(*) AS Online
FROM GameServerSessions   -- nome da tabela varia por distribuição
WHERE IsOnline = 1
GROUP BY ServerCode;

-- Total online em todos os servidores
SELECT COUNT(*) AS TotalOnline
FROM Character
WHERE ConnectStat = 1;

Portas que precisam ser abertas no firewall

Com 2 GameServers na mesma VPS, abrir as portas correspondentes:

# ConnectServer (todos os jogadores se conectam aqui)
netsh advfirewall firewall add rule name="MU Connect" dir=in action=allow protocol=TCP localport=44405

# GameServer 1 e 2
netsh advfirewall firewall add rule name="MU Game1" dir=in action=allow protocol=TCP localport=55901
netsh advfirewall firewall add rule name="MU Game2" dir=in action=allow protocol=TCP localport=55902

# DataServer e JoinServer — apenas locais (NÃO abrir para internet)
# 55557, 55558, 55555, 55556 — comunicação interna apenas

Checklist multi-server

PLANEJAMENTO
[ ] Quantos servidores? (começar com 2 no máximo)
[ ] Qual diferença entre eles? (EXP, drop, estilo)
[ ] Mesma VPS ou VPSs separadas?

CONFIGURAÇÃO
[ ] Pasta separada para cada server
[ ] ServerCode único para cada GameServer
[ ] Porta diferente para cada GameServer (55901, 55902...)
[ ] Porta diferente para cada JoinServer (55555, 55556...)
[ ] Porta diferente para cada DataServer (55557, 55558...)
[ ] ConnectServer com ServerList apontando para todos

BANCO DE DADOS
[ ] Todos os servers usando o mesmo DSN/banco
[ ] ODBC 32-bit configurado para a DSN

REDE
[ ] Portas 44405, 55901, 55902 abertas no firewall
[ ] Portas internas (DataServer/JoinServer) bloqueadas externamente

TESTES
[ ] Cliente conecta e mostra seleção de servidor
[ ] É possível entrar em cada servidor separadamente
[ ] Personagem é o mesmo nos dois servidores
[ ] EXP/drop corretos em cada servidor
Nota: Para servidores pequenos com menos de 200 jogadores, um único GameServer geralmente é suficiente. Múltiplos servers adicionam complexidade de configuração e manutenção. Só adicione um segundo servidor quando o primeiro estiver próximo do limite de capacidade ou quando quiser oferecer experiências distintas.

Perguntas frequentes

Para que servem múltiplos servers no MU Online?

Para aumentar a capacidade total de jogadores (cada GameServer suporta um limite de players simultâneos), criar ambientes diferentes (Server 1 = Exp x100, Server 2 = Exp x50), ou separar comunidades (PVP vs. PVM).

Quantos GameServers posso ter?

Teoricamente ilimitado, mas o ConnectServer lista todos. O limite prático é a capacidade da VPS e a quantidade que faz sentido para a sua playerbase.

Preciso de VPS separadas para cada GameServer?

Não necessariamente. Múltiplos GameServers podem rodar na mesma máquina, usando portas diferentes (55901, 55902, 55903...). VPSs separadas são para servidores grandes com muitos jogadores.

Sub-servers compartilham o banco de dados?

Sim — todos os GameServers do mesmo servidor de MU conectam ao mesmo banco SQL. O personagem existe em um banco único e pode ser acessado de qualquer GameServer.

EQ

Equipe editorial do ViciadosMU — portal de MU Online no ar desde 2003.

Continue lendo

Artigos relacionados