IGK Emulator

Instalación del servidor

Desde la versión 1.0.0 19 min de lectura Para: Dueño Actualizada el 29-10-2026

Esta guía lleva un servidor IGK desde cero hasta tener jugadores conectados: base de datos, scripts SQL, DSN de ODBC, IPs, lista de servidores, subservidores, orden de arranque, cómo saber si todo conecta bien y firewall.

Antes de empezar, revisa los requisitos en 01_INTRODUCCION_Y_REQUISITOS.md (Windows de 64 bits, SQL Server, DSN de 64 bits).

Resumen del orden:

  1. Copiar la carpeta MuServer al VPS.
  2. Instalar SQL Server.
  3. Crear o restaurar la base MuOnline.
  4. Ejecutar los scripts de MuServer\DataBase\SQL.
  5. Crear el DSN de ODBC de 64 bits.
  6. Poner usuario y clave de SQL en el JoinServer y el DataServer.
  7. Configurar las IPs (lista de servidores, MapServerInfo, GameServer, cliente).
  8. Abrir los puertos en el firewall.
  9. Arrancar los servidores en orden y comprobar que conectan.

Paso 1: copiar MuServer al VPS

  • Copia la carpeta MuServer completa a un disco del VPS (por ejemplo C:\MuServer). La ruta puede ser cualquiera.
  • No separes las carpetas: cada GameServer lee los archivos del juego desde la carpeta Data que está al lado de su carpeta (MuServer\Data). Si mueves GameServer fuera de MuServer, no encuentra sus archivos.

Paso 2: instalar SQL Server

  • Instala SQL Server 2008 o más nuevo (Express sirve). En Windows Server 2008 R2, como máximo SQL Server 2014.
  • Si los servidores van a entrar con un usuario de SQL (por ejemplo sa), durante la instalación elige el modo de autenticación mixto (Windows y SQL Server) y pon una clave segura al usuario sa.
  • Instala también SQL Server Management Studio (SSMS) para restaurar la base y ejecutar los scripts. También puedes usar HeidiSQL con IGK Connect (ver 11_IGK_HOST_STARTUP_CONNECT.md).

Paso 3: crear o restaurar la base MuOnline

Los servidores trabajan con una base llamada MuOnline (es el nombre que usan los scripts de IGK y el DSN de los archivos que vienen con IGK).

Restaurar desde un respaldo (.bak):

  1. Abre SSMS y conéctate a tu SQL Server.
  2. Clic derecho en Databases → Restore Database...
  3. Elige Device, busca el archivo .bak y acéptalo.
  4. En Destination / Database escribe MuOnline.
  5. Pulsa OK y espera el mensaje de que terminó.

El respaldo de la base no viene dentro de la carpeta MuServer (por confirmar con soporte cómo se entrega la base inicial).

Si ya tienes una base MuOnline de otro servidor Season 6, puedes usarla, pero ejecuta igual los scripts del paso 4 para que tenga todas las tablas que usan los servidores de IGK.

Empezar de cero antes de abrir: MuServer\DataBase\Query Reset DB EMU - XOA TK DE OPEN.sql borra todas las cuentas, personajes, guilds, rankings y logs. Úsalo solo antes de abrir el servidor y con un backup hecho.


Paso 4: ejecutar los scripts de MuServer\DataBase\SQL

Los scripts de MuServer\DataBase\SQL agregan las tablas, columnas y procedimientos que necesitan los sistemas de IGK (Gremory Case, Item Bank, Season Pass, rankings, League of Masters, bans por IP y HWID, etc.).

Cómo se llaman

Cada archivo se llama UpdateNN - nombre.sql: NN es el número de la actualización y nombre dice qué agrega. Algunos archivos viejos tienen un espacio (Update 2, Update 3) y otros no (Update6, Update9): lo que importa es el número.

En qué orden

Ejecútalos por número, de menor a mayor. Ojo: el Explorador de Windows ordena por texto y muestra Update6 y Update9 después de Update30; no sigas ese orden, sigue el número.

NúmeroScripts
2Update 2 - WZ_SetReward.sql, Update 2 - WZ_SetRewardAll.sql
3Update 3 - CustomGiftSQL.sql, Update 3 - CustomQuestSQL.sql, Update 3 - CustomTop.sql, Update 3 - Fix Gens Join.sql, Update 3 - Procedure SetCoin.sql, Update 3 - Tables King of Mu.sql, Update 3 - WZ_DeleteCharacter.sql, Update 3 - WZ_SetGuildDelete.sql
4Update 4 - Kills and Deads.sql
6Update 6 - Custom Ranking.sql, Update6 - Procedure WZ_RankingBloodCastle.sql
7Update 7 - Lock.sql
9Update9 - Create Table RankingTvT.sql, Update9 - Procedure WZ_RankingTvT.sql
11Update11 - Ban columns.sql, Update11 - CustomAttack Table.sql, Update11 - Procedure WZ_DesblocAccount.sql, Update11 - WarehouseGuild Table.sql
13Update13 - CustomNpcQuest Table.sql
14Update14 - Add Item Start column.sql
16Update16 - Add Colum Power.sql, Update16 - InventoryExpansion.sql, Update16 - WZ_CustomRanking.sql
22Update22 - Add HolyInventory Column.sql, Update22 - Fixed view Frient List.sql, Update22 - WZ_CreateCharacter.sql
23Update23 - Custom Systems.sql (Item Bank, Daily Reward, límite diario de eventos, baúles extra)
24Update24 - Gremory Case.sql
25Update25 - Custom Ranking.sql (reemplaza el procedimiento de ranking de los Update 6 y 16; ejecútalo después de ellos)
27Update27 - Custom Quest Panel.sql
28Update28 - Season Pass.sql
29Update29 - League of Masters.sql
30Update30 - IGK_Ban table and procedures.sql, Update30 - MEMB_STAT HWID.sql
31Update31 - WZ_SetCoin charges coins.sql (los cobros en monedas se descuentan; el saldo nunca baja de 0)
32Update32 - Lua scripts data.sql (tabla Lua_Data: los datos que guardan los scripts Lua, ver 16_LUA.md)

Cómo ejecutarlos

  1. En SSMS: File → Open → File... y elige el script.
  2. Arriba, en la lista de bases, elige MuOnline (muchos scripts no la eligen solos).
  3. Pulsa Execute (F5) y revisa la pestaña Messages.

¿Se pueden ejecutar más de una vez?

  • Desde Update23 en adelante (23, 24, 25, 27, 28, 29 y 30): sí. Solo crean lo que falta y no borran datos. Si tienes dudas de si ya los ejecutaste, ejecútalos otra vez.
  • Los viejos (Update 2 a Update22) crean tablas y columnas sin comprobar si ya existen. Si tu base ya los tiene, SQL Server responde con errores como "There is already an object named ..." o "Column names in each table must be unique": no pasa nada, ese script ya estaba aplicado.
  • Cuidado con Update22 - Add HolyInventory Column.sql: además de crear la columna, pone en cero el HolyInventory de todos los personajes. No lo vuelvas a ejecutar en una base con jugadores.
  • Update14 - Add Item Start column.sql marca a todos los personajes existentes como que ya recibieron los items iniciales.

Scripts propios

Si escribes tus propios scripts, usa números desde Update33 en adelante para no chocar con los de IGK, y hazlos de forma que se puedan ejecutar más de una vez.

Qué pasa si falta un script

Los servidores avisan en su consola. Ejemplos reales:

  • Sin Update28 - Season Pass.sql: el GameServer muestra [SeasonPass] DataServer could not read SeasonPass/SeasonPassMission (run Update28 - Season Pass.sql).
  • Sin Update29 - League of Masters.sql: el modo funciona, pero el ranking no se guarda (el log del GameServer lo avisa).
  • Sin Update25 - Custom Ranking.sql: las listas del ranking del juego (F4 → Ranking) salen vacías.

Paso 5: crear el DSN de ODBC de 64 bits

El JoinServer y el DataServer se conectan a la base por un DSN de sistema. En los archivos de IGK se llama MuOnline.

  1. Abre C:\Windows\System32\odbcad32.exe (el administrador ODBC de 64 bits). No uses el de C:\Windows\SysWOW64\: ese es de 32 bits y los servidores de IGK no ven sus DSN.
  2. Pestaña System DSN (DSN de sistema) → Add...
  3. Elige un driver de SQL Server instalado (por ejemplo SQL Server, que viene con Windows, u ODBC Driver 17/18 for SQL Server).
  4. Name: MuOnline (el mismo nombre que pondrás en los .ini).
  5. Server: el nombre de tu SQL Server. En la misma máquina suele ser (local) o .\SQLEXPRESS si instalaste Express.
  6. Autenticación:
    • SQL Server (usuario y clave, por ejemplo sa): pon el usuario y la clave.
    • Windows: sin usuario ni clave (solo si SQL Server está en la misma máquina y los servidores corren con un usuario de Windows que tiene acceso a la base).
  7. Change the default database to: MuOnline.
  8. Termina y pulsa Test Data Source... Tiene que decir que la prueba fue exitosa.

Con ODBC Driver 18 marca también Trust server certificate: ese driver cifra la conexión por defecto y sin certificado falla.


Paso 6: usuario y clave de SQL en el JoinServer y el DataServer

JoinServer\Data\JoinServer.ini

ClaveQué esEn los archivos de IGK
JoinServerODBCNombre del DSNMuOnline
JoinServerUSERUsuario de SQL Server. Vacío = el DSN usa autenticación de Windowssa
JoinServerPASSClave de ese usuario(pon la tuya)
JoinServerPortPuerto donde escucha a los GameServer55970
ConnectServerAddressIP del ConnectServer (para avisarle que está vivo)127.0.0.1
ConnectServerPortPuerto UDP del ConnectServer55557
CaseSensitive1 = distingue mayúsculas y minúsculas en el nombre de cuenta al controlar cuentas conectadas0
MD5Encryption1 = las contraseñas están guardadas en la base como MD5; 0 = como texto normal0
RegisterSwitchRegistro de cuentas desde la pantalla de login: 0 apagado, 1 encendido1
RegisterDelaySegundos mínimos entre dos intentos de registro desde la misma IP10
RegisterMaxPerIpCuentas nuevas por IP en 24 horas (0 = sin límite)3
WriteAccountLog1 = escribe LOG\ACCOUNT_LOG (entradas con IP, salidas y cuentas creadas, sin contraseñas)1
BanCheckSecondsCada cuántos segundos busca bans nuevos (tabla IGK_Ban) para expulsar a los conectados con esa IP o PC. 0 = solo se comprueba al entrar10

DataServer\Data\DataServer.ini

ClaveQué esEn los archivos de IGK
DataServerODBCNombre del DSNMuOnline
DataServerUSERUsuario de SQL Server (vacío = autenticación de Windows)sa
DataServerPASSClave de ese usuario(pon la tuya)
DataServerPortPuerto donde escucha a los GameServer55960

El usuario y la clave tienen que ser los mismos que funcionan en el DSN. Recuerda que estos .ini viajan con la carpeta MuServer: no compartas la carpeta con tu clave de SQL adentro.

AllowableIpList.txt (JoinServer y DataServer)

JoinServer\Data\AllowableIpList.txt y DataServer\Data\AllowableIpList.txt tienen las IP de los GameServer que se pueden conectar. Formato:

0
"127.0.0.1"
end

Con los GameServer en la misma máquina no hay que tocarlo. Si un GameServer está en otra máquina, agrega su IP entre comillas en una línea nueva, en los dos archivos.


Paso 7: configurar las IPs

Hay dos tipos de IP:

  • IP pública del VPS: la que usan los jugadores desde internet. Va en la lista de servidores, en MapServerInfo.dat y en el cliente.
  • 127.0.0.1: la que usan los servidores para hablar entre ellos cuando están en la misma máquina. Va en los .ini y en GameServerInfo - Common.dat.

En los archivos que vienen con IGK, ServerList.dat y MapServerInfo.dat traen una IP de red local de ejemplo: cámbiala por la IP pública de tu VPS.

7.1 ConnectServer\Data\ConnectServer.ini

ClaveQué esEn los archivos de IGK
ConnectServerPortTCPPuerto donde se conectan los jugadores (tiene que ser igual al IpAddressPort del cliente)44405
ConnectServerPortUDPPuerto UDP donde recibe el estado de los GameServer y del JoinServer55557
ConnectServerVersionVersión para el sistema de actualización del launcher1
MaxIpConnectionConexiones a la vez desde una misma IP5
MaxHWIDConnectionConexiones a la vez desde una misma PC5
ProxyAddressSolo si pones un proxy o anti-DDoS delante (ver WebBridge\LEEME.txt). Sin la clave vale 127.0.0.1 (el WebBridge)(no está)

7.2 ConnectServer\Data\ServerList.dat (la lista de servidores)

Es la lista que ve el jugador al entrar. En los archivos de IGK:

0
//ServerCode   ServerClient    ServerName   ServerAddress   ServerPort   ServerType
0              "MuOnline"      "SV-01"      "IP_PUBLICA"    55901        "SHOW"
19             "MuOnline"      "SV-CS"      "IP_PUBLICA"    55919        "HIDE"
end
ColumnaQué es
(número suelto antes de la lista)El grupo de servidores, de 0 a 9. Cada grupo es un "servidor" de la lista y tiene hasta 20 subservidores.
ServerCodeNúmero del subservidor dentro del grupo (0 a 19). El código real es grupo × 20 + número: en el grupo 0, el código es el mismo número; en el grupo 1, el subservidor 0 es el código 20. Tiene que ser igual al ServerCode del GameServerInfo - Common.dat de ese GameServer.
ServerClientNombre que ve el jugador en la lista (con ServerDefaultName = 0 en MainInfo\MainInfo.ini [Interface], que es como viene).
ServerNameNombre que se ve en la consola del ConnectServer.
ServerAddressIP pública a la que se conecta el jugador para ese GameServer.
ServerPortPuerto del GameServer (igual a su ServerPort).
ServerType"SHOW" = aparece en la lista; "HIDE" = oculto (como el de Castle Siege, al que se llega entrando a sus mapas).

Un servidor de la lista solo se ve si su GameServer está abierto y conectado, y si el JoinServer está conectado al ConnectServer.

Para ver los cambios de ServerList.dat hay que reiniciar el ConnectServer.

7.3 MuServer\Data\MapServerInfo.dat (qué mapas atiende cada GameServer)

Este archivo lo leen todos los GameServer. En los archivos de IGK:

0
//ServerCode   MapServerGroup   InitSetVal   IpAddress       Port
0              0                1            SIP_PUBLICA     55901
19             0                0            SIP_PUBLICA     55919
end

1
//ServerCode   NotMoveOption   NextMap   NextServerCode
0              0               30        19
...
19             1               30        -1
...
end

Sección 0 (un renglón por GameServer):

ColumnaQué es
ServerCodeEl código del GameServer (igual que en ServerList.dat y en su Common.dat). Cada GameServer tiene que tener su renglón: si falta, el GameServer muestra el error "This GameServerCode (N) doesn't Exist at file" y no arranca bien.
MapServerGroupGrupo (igual al grupo de ServerList.dat). Los jugadores solo pasan entre GameServers del mismo grupo.
InitSetVal1 = este GameServer atiende todos los mapas, menos los que la sección 1 manda a otro. 0 = no atiende ninguno, solo los que la sección 1 le asigna.
IpAddressIP pública del GameServer, con una letra delante (en los archivos de IGK, S). El servidor ignora el primer carácter: escribe por ejemplo S123.45.67.89. Si borras la letra, la IP queda mal. Es la IP a la que se manda al jugador cuando cambia de GameServer por un mapa.
PortPuerto del GameServer.

Sección 1 (mapas que se atienden en otro GameServer):

ColumnaQué es
ServerCodeEl GameServer al que se aplica la regla.
NotMoveOption0 = cuando un jugador de este GameServer va al mapa NextMap, pasa al GameServer NextServerCode. 1 = este GameServer atiende el mapa NextMap (va con NextServerCode = -1).
NextMapNúmero de mapa.
NextServerCodeGameServer de destino (o -1).

En los archivos de IGK, el GameServer 0 manda los mapas 30, 31, 34, 41, 42 y 79 al GameServer 19 (Castle Siege), y el GameServer 19 atiende solo esos mapas.

7.4 GameServer\Data\GameServerInfo - Common.dat (cada GameServer)

En la parte de arriba del archivo:

ClaveQué esGameServerGameServerCS
ServerNameNombre del GameServer (sale en la ventana y en mensajes)SV-01SV-CS
ServerCodeCódigo (igual que en ServerList.dat y MapServerInfo.dat)019
ServerPortPuerto donde se conectan los jugadores5590155919
ServerVersionVersión del cliente que acepta (igual a ClientVersion del cliente)1.04.051.04.05
ServerSerialSerial del cliente que acepta (igual a ClientSerial del cliente)(el tuyo)(el tuyo)
ServerMaxUserNumberJugadores a la vez (como máximo 1000)10001000
DataServerAddress / DataServerPortDónde está el DataServer127.0.0.1 / 55960127.0.0.1 / 55960
JoinServerAddress / JoinServerPortDónde está el JoinServer127.0.0.1 / 55970127.0.0.1 / 55970
ConnectServerAddress / ConnectServerPortDónde está el ConnectServer (puerto UDP)127.0.0.1 / 55557127.0.0.1 / 55557

En la sección "Customer Settings", CustomerName es la clave de tu licencia (ver 18_LICENCIA.md). LicenseID y CustomerHardwareId ya no se usan.

Los cambios de estas claves (código, puerto, direcciones, versión, serial) se leen al arrancar: reinicia el GameServer después de cambiarlas.

7.5 El cliente (MainInfo\MainConnect.ini)

En la sección [MainInfo]:

  • IpAddress = la IP pública del VPS (o un dominio que apunte a ella).
  • IpAddressPort = el ConnectServerPortTCP (44405 en los archivos de IGK).
  • ClientVersion y ClientSerial = iguales a ServerVersion y ServerSerial de los GameServer.

Después de cambiarlo, genera el cliente con el Encoder (MainInfo\Encoder.exe).

7.6 Probar en tu propia PC o en el mismo VPS

  • Para probar en casa, en la red local, usa la IP local de la PC del servidor (por ejemplo 192.168.x.x) en ServerList.dat, MapServerInfo.dat y el cliente.
  • Un cliente de PC abierto en el propio VPS tiene que conectarse a la IP pública, no a 127.0.0.1: los servidores reservan 127.0.0.1 para el WebBridge (ver WebBridge\LEEME.txt).

Lista de servidores y subservidores

Agregar un subservidor (por ejemplo SV-02)

  1. Copia la carpeta MuServer\GameServer y pégala como MuServer\GameServer2 (tiene que quedar dentro de MuServer, junto a Data).
  2. En GameServer2\Data\GameServerInfo - Common.dat cambia:
    • ServerName = SV-02
    • ServerCode = 1
    • ServerPort = 55902
  3. En ConnectServer\Data\ServerList.dat, dentro del grupo 0, agrega: 1 "MuOnline" "SV-02" "IP_PUBLICA" 55902 "SHOW"
  4. En MuServer\Data\MapServerInfo.dat:
    • Sección 0: 1 0 1 SIP_PUBLICA 55902
    • Sección 1: copia los renglones del servidor 0 cambiando el código a 1 (para que los mapas de Castle Siege vayan al GameServer 19): 1 0 30 19, 1 0 31 19, 1 0 34 19, 1 0 41 19, 1 0 42 19, 1 0 79 19
  5. Abre el puerto 55902 en el firewall.
  6. Si usas el cliente web, revisa que el puerto esté en ServerPorts de WebBridge.ini (en los archivos de IGK ya está el rango 55901-55919).
  7. Si usas IGK StartUp, agrega el nuevo GameServer a su lista (ver 11_IGK_HOST_STARTUP_CONNECT.md).
  8. Reinicia el ConnectServer (para leer ServerList.dat) y los GameServer (para leer MapServerInfo.dat).

Cada subservidor puede tener su propia configuración (experiencia, drop, eventos) en sus propios GameServerInfo - *.dat. Los archivos de MuServer\Data son los mismos para todos.

Importante: dos GameServer con el mismo ServerCode no pueden estar abiertos a la vez: el segundo muestra "Could not open GameServer".

Agregar otro servidor (otro grupo de la lista)

Usa otro número de grupo en ServerList.dat (por ejemplo 1, con su end) y en MapServerGroup de MapServerInfo.dat. Los códigos de ese grupo empiezan en 20 (subservidor 0 del grupo 1 = código 20, que va en ServerCode = 20 de su Common.dat).


Paso 8: firewall

Abre en el Firewall de Windows (reglas de entrada, TCP):

  • El puerto del ConnectServer: 44405.
  • El puerto de cada GameServer: 55901, 55919 y el de cada subservidor.
  • El WebBridge (44480 o su TlsPort) solo si los jugadores web se conectan directo al VPS.

No abras 55557 (UDP del ConnectServer), 55970 (JoinServer), 55960 (DataServer) ni el de SQL Server: son internos.

Ejemplo con la consola de Windows (como administrador):

netsh advfirewall firewall add rule name="MU ConnectServer" dir=in action=allow protocol=TCP localport=44405
netsh advfirewall firewall add rule name="MU GameServer" dir=in action=allow protocol=TCP localport=55901
netsh advfirewall firewall add rule name="MU GameServerCS" dir=in action=allow protocol=TCP localport=55919

IGK StartUp puede abrir y mantener estas reglas solo (OpenServerPorts = 1 en IGKStartUp.ini).

Si tu VPS tiene además un firewall en el panel del proveedor, abre los mismos puertos allí.


Paso 9: orden de arranque

Arranca los servidores en este orden (es el que usa IGK StartUp):

  1. DataServer
  2. JoinServer
  3. ConnectServer
  4. GameServer (y los subservidores)
  5. GameServerCS
  6. WebBridge (solo si usas el cliente web)

Para apagar, al revés: el DataServer al final, para que guarde todo lo que le mandan los GameServer.

Si un GameServer arranca antes que el JoinServer o el DataServer, se queda en STANDBY MODE y se conecta solo cuando ellos estén abiertos.

IGK StartUp hace todo esto solo (arranca en orden, reinicia si se cae, cierra limpio, reinicio diario con aviso). Ver 11_IGK_HOST_STARTUP_CONNECT.md.


Cómo saber si todo conecta bien

Lo que se ve en cada ventana

ServidorBienMal
DataServerACTIVE MODE (verde) cuando hay al menos un GameServer conectadoSTANDBY MODE: ningún GameServer conectado todavía, o no se conectó a la base (ver mensajes en rojo)
JoinServerACTIVE MODE cuando hay al menos un GameServer conectadoSTANDBY MODE: ningún GameServer conectado, o no se conectó a la base
ConnectServer"ENLACE CON JOINSERVER" en ACTIVE MODESTANDBY MODE: no le llega el JoinServer. En la consola: [ServerList] JoinServer offline
GameServer"ESTADO DEL SERVIDOR" en ACTIVE MODE (conectado al JoinServer y al DataServer)STANDBY MODE: le falta el JoinServer o el DataServer

Al cargar, el GameServer muestra en azul una línea por cada grupo de archivos: [ServerInfo] Common loaded successfully, [ServerInfo] Custom loaded successfully, Event loaded, Item loaded, Monster loaded, Move loaded, Quest loaded, Shop loaded, Skill loaded, Util loaded. Si falta una o sale un cuadro de error, hay un archivo con un error de formato.

Mensajes cuando falla la conexión a la base

El JoinServer y el DataServer dicen por qué falló la conexión a la base, con el mensaje del driver ODBC:

[QueryManager] ODBC 'MuOnline' (64 bits), usuario 'sa': no se pudo conectar
[QueryManager] State (XXXXX), Native (N): <mensaje del driver>
Could not connect to database

Y además, según el caso:

  • [QueryManager] Sin usuario en el .ini: el DSN tiene que usar autenticacion de Windows, o poner usuario y clave en el .ini
  • [QueryManager] Servidor de 64 bits: el DSN va en C:\Windows\System32\odbcad32.exe (el de SysWOW64 es de 32 bits)

Estados de ODBC más comunes:

StateQué significaQué hacer
IM002No encuentra el DSN ("Data source name not found")Crea el DSN en el ODBC de 64 bits (System32\odbcad32.exe), como DSN de sistema, con el mismo nombre que JoinServerODBC / DataServerODBC.
28000Usuario o clave incorrectos ("Login failed for user")Revisa JoinServerUSER/JoinServerPASS y DataServerUSER/DataServerPASS. Si usas sa, SQL Server tiene que estar en modo mixto y sa habilitado.
08001No encuentra el servidor SQLRevisa el nombre del servidor en el DSN (por ejemplo .\SQLEXPRESS) y que el servicio de SQL Server esté encendido.
42000 / 4060No puede abrir la baseLa base no se llama MuOnline o el usuario no tiene permiso sobre ella.

Otros mensajes útiles

MensajeDóndeQué significa
[ServerList] GameServer offline (SV-01) (0)ConnectServerEse GameServer dejó de mandar su estado (cerrado, colgado o con la IP/puerto UDP del ConnectServer mal puestos).
[ServerList] JoinServer offlineConnectServerEl JoinServer dejó de mandar su estado. Sin JoinServer la lista sale vacía.
Could not start GameServerGameServerEl puerto ServerPort está ocupado (otro programa u otro GameServer lo usa).
Could not open GameServerGameServerYa hay otro GameServer abierto con el mismo ServerCode.
"This GameServerCode (N) doesn't Exist at file"GameServerFalta el renglón de ese código en la sección 0 de MapServerInfo.dat.
[Ban] Cuenta X rechazada: IP/HWID ... baneado. Motivo: ...JoinServerAlguien intentó entrar desde una IP o PC baneada.

Prueba final

  1. Abre el cliente: tiene que aparecer la lista con tu servidor.
  2. Elige el servidor, entra con una cuenta y crea un personaje.
  3. En la consola del GameServer debe aparecer la conexión; el contador "JUGADORES EN LINEA" sube.

Preguntas frecuentes

P: La lista de servidores sale vacía. ¿Qué reviso? R: Que el JoinServer esté abierto y conectado a la base (el ConnectServer debe decir ACTIVE MODE), que el GameServer esté en ACTIVE MODE, que su ServerCode exista en ServerList.dat con "SHOW", y que ConnectServerAddress/ConnectServerPort de Common.dat y de JoinServer.ini apunten al puerto UDP del ConnectServer (55557).

P: Veo la lista, pero al elegir el servidor no entra o se queda conectando. R: La IP o el puerto de ese servidor en ServerList.dat están mal, o el puerto del GameServer está cerrado en el firewall. La IP tiene que ser la pública del VPS.

P: El JoinServer dice "Could not connect to database". ¿Qué hago? R: Mira las líneas [QueryManager] de arriba: dicen el motivo. Lo más común es el DSN creado en el ODBC de 32 bits (debe ser C:\Windows\System32\odbcad32.exe), o usuario y clave de SQL incorrectos en el .ini.

P: Creé el DSN y el "Test Data Source" funciona, pero el servidor dice que no lo encuentra. R: Lo creaste en el ODBC de 32 bits (SysWOW64) o como DSN de usuario. Créalo en C:\Windows\System32\odbcad32.exe, pestaña System DSN.

P: ¿En qué orden ejecuto los scripts SQL? R: Por número, de menor a mayor (2, 3, 4, 6, 7, 9, 11, 13, 14, 16, 22, 23, 24, 25, 27, 28, 29, 30), no por el orden alfabético del Explorador.

P: ¿Puedo ejecutar un script SQL dos veces? R: Los de Update23 en adelante sí, sin problema. Los viejos dan error de "ya existe" si ya estaban aplicados, lo que es normal; pero no repitas Update22 - Add HolyInventory Column.sql en una base con jugadores porque vacía el HolyInventory de todos.

P: Cambié la IP en ServerList.dat y no cambia nada. R: Reinicia el ConnectServer. Y si cambiaste MapServerInfo.dat, reinicia también los GameServer.

P: Los jugadores entran a Lorencia, pero al ir a Crywolf o Castle Siege se desconectan. R: Esos mapas los atiende el GameServerCS (código 19). Revisa que esté abierto, que su puerto (55919) esté abierto en el firewall y que su IP en MapServerInfo.dat sea la pública, con la letra S delante.

P: ¿Cómo agrego un subservidor? R: Copia la carpeta GameServer dentro de MuServer, cámbiale ServerName, ServerCode y ServerPort en su Common.dat, y agrégalo en ServerList.dat y MapServerInfo.dat. Los pasos completos están arriba en "Agregar un subservidor".

P: Abrí dos GameServer y el segundo dice "Could not open GameServer". R: Tienen el mismo ServerCode. Cada GameServer necesita un código y un puerto distintos.

P: ¿Puedo abrir el cliente en el mismo VPS para probar? R: Sí, pero conectándote a la IP pública del VPS, no a 127.0.0.1.

P: ¿En qué orden prendo los servidores? R: DataServer, JoinServer, ConnectServer, GameServer, GameServerCS y WebBridge. Para apagar, al revés. IGK StartUp lo hace solo.

P: ¿Tengo que abrir el puerto de SQL Server? R: No. Los servidores se conectan a SQL Server dentro de la misma máquina. Para administrar la base desde tu PC usa IGK Connect (ver 11_IGK_HOST_STARTUP_CONNECT.md).

¿No encontraste lo que buscabas? Si eres cliente, pregúntale a tu asistente de soporte: responde con esta misma documentación. Si todavía no lo eres, escríbenos: