Introducción y requisitos
Este documento explica qué trae IGK Emulator, qué hace cada servidor, qué necesita la máquina (VPS o PC) para funcionar, qué puertos usa cada programa y para qué sirve cada carpeta de MuServer.
La instalación paso a paso está en 02_INSTALACION_SERVIDOR.md y la configuración del juego en 03_CONFIGURACION_GAMESERVER.md.
Qué es IGK Emulator
IGK Emulator es un paquete completo para montar un servidor de MU Online Season 6 (Episodio 3). Trae:
- Los servidores (carpeta
MuServer): ConnectServer, JoinServer, DataServer, GameServer, GameServerCS y WebBridge. Todos son programas de Windows de 64 bits. - El cliente para PC (Windows), Android (APK) y navegador (PC y celular). Los tres juegan juntos en el mismo servidor, con las mismas cuentas y personajes.
- Herramientas para el dueño: Encoder (
MainInfo), IGK StartUp, IGK Connect, IgkGamers HD Tools y WebPacker. - La base de datos del juego en SQL Server (base
MuOnline) y los scripts de actualización enMuServer\DataBase\SQL.
Los servidores: qué hace cada uno
Todos los servidores van dentro de la carpeta MuServer, cada uno en su propia carpeta, y leen su configuración de la carpeta Data que tienen al lado del .exe. Los dos GameServer leen además los archivos del juego de la carpeta común MuServer\Data.
| Servidor | Carpeta | Qué hace | Usa la base de datos |
|---|---|---|---|
| ConnectServer | MuServer\ConnectServer | Es la "puerta de entrada". El cliente se conecta primero aquí y recibe la lista de servidores (la pantalla donde se elige el servidor). | No |
| JoinServer | MuServer\JoinServer | Controla las cuentas: inicio de sesión, contraseña, cuentas ya conectadas, registro de cuentas desde el juego, bans por IP y HWID. | Sí |
| DataServer | MuServer\DataServer | Lee y guarda los personajes y todo lo demás del juego en la base: inventario, baúl, guild, rankings, Gremory Case, Season Pass, etc. | Sí |
| GameServer | MuServer\GameServer | El juego en sí: mapas, monstruos, combate, eventos, comandos, tiendas, drops. Puede haber varios (subservidores). | No (lo hace a través del JoinServer y el DataServer) |
| GameServerCS | MuServer\GameServerCS | Un GameServer especial para Castle Siege (asedio del castillo) y los mapas que dependen de él. | No |
| WebBridge | MuServer\WebBridge | El puente del cliente web: el navegador no puede abrir conexiones normales, así que se conecta al WebBridge y este lo pasa al ConnectServer y a los GameServer. Solo hace falta si usas el cliente de navegador. | No |
ConnectServer (lista de servidores)
- Recibe a los jugadores en su puerto TCP (
ConnectServerPortTCP) y les manda la lista de servidores deConnectServer\Data\ServerList.dat. - Recibe por UDP (
ConnectServerPortUDP) el estado de cada GameServer y del JoinServer. Un servidor solo aparece en la lista si el JoinServer está conectado y ese GameServer le está mandando su estado. - Limita las conexiones por IP (
MaxIpConnection) y por PC (MaxHWIDConnection). - Su ventana muestra "ENLACE CON JOINSERVER": ACTIVE MODE (verde) cuando el JoinServer está conectado, STANDBY MODE (rojo) cuando no.
JoinServer (cuentas)
- Comprueba cuenta y contraseña en la base (
MEMB_INFO). - Avisa si una cuenta ya está conectada.
- Maneja el registro de cuentas desde la pantalla de login (
RegisterSwitch,RegisterDelay,RegisterMaxPerIp). - Comprueba y aplica los bans por IP y HWID (tabla
IGK_Ban, cadaBanCheckSecondssegundos). - Su ventana muestra ACTIVE MODE cuando al menos un GameServer está conectado a él.
DataServer (personajes y datos)
- Carga y guarda personajes, items, guilds, amigos, rankings y los sistemas custom.
- Revisa los nombres prohibidos de personajes (
DataServer\Data\BadSyntax.txt). - Su ventana muestra ACTIVE MODE cuando al menos un GameServer está conectado a él.
GameServer y GameServerCS (el juego)
- Cada GameServer tiene un código (
ServerCode), un puerto (ServerPort) y un nombre (ServerName) en su archivoData\GameServerInfo - Common.dat. - Se conecta al JoinServer, al DataServer y al ConnectServer. Su ventana muestra "ESTADO DEL SERVIDOR": ACTIVE MODE cuando está conectado al JoinServer y al DataServer; STANDBY MODE si le falta alguno.
- Los mapas que atiende cada GameServer se definen en
MuServer\Data\MapServerInfo.dat. - En los archivos que vienen con IGK: el GameServer normal es el código 0 (
SV-01) y atiende todos los mapas menos los de Castle Siege; el GameServerCS es el código 19 (SV-CS), está oculto en la lista y atiende Castle Siege (30), Land of Trials (31), Crywolf (34), Barracks (41), Refuge (42) y Loren Market (79). Cuando un jugador entra a uno de esos mapas, pasa solo al GameServerCS.
WebBridge (cliente de navegador)
- Escucha en su puerto (
PortdeWebBridge\WebBridge.ini) y, si se configura, en una puerta segurawss://(TlsPort). - Solo se conecta a los puertos de la lista
ServerPortsen la misma máquina (127.0.0.1). - Le dice a los servidores la IP real de cada jugador web, para que los límites por IP, los bans y los logs funcionen igual que con PC y Android.
- Toda su configuración está explicada en
MuServer\WebBridge\LEEME.txt.
IGK StartUp (administrador de servidores)
MuServer\IGKStartUp\IGKStartUp.exe arranca los servidores en orden, los reinicia si se caen, los cierra limpio, hace backups y abre los puertos en el firewall. Se explica en 11_IGK_HOST_STARTUP_CONNECT.md.
La carpeta MuServer\StartUp tiene el lanzador anterior (ServerStartUp.exe), que solo abre los servidores en orden.
Los clientes
| Cliente | Qué es | Gráficos |
|---|---|---|
| PC | Main.exe para Windows de 64 bits | DirectX 11, DirectX 12 o Vulkan |
| Android | App (APK) para celulares | Vulkan, u OpenGL ES en celulares sin Vulkan |
| Navegador | Se juega desde Chrome, Edge, Firefox o Safari (también iPhone), sin instalar nada. Necesita el WebBridge. | WebGPU |
El cliente de PC sabe a qué servidor conectarse por MainInfo\MainConnect.ini (sección [MainInfo]): IpAddress (la IP pública del ConnectServer), IpAddressPort (el puerto TCP del ConnectServer), ClientVersion y ClientSerial. Estos dos últimos tienen que ser iguales a ServerVersion y ServerSerial del GameServerInfo - Common.dat de cada GameServer. Después de cambiarlos hay que generar el cliente otra vez con el Encoder.
Herramientas para el dueño
| Herramienta | Para qué sirve |
|---|---|
Encoder (MainInfo\Encoder.exe) | Genera los archivos de configuración del cliente (IP, versión, opciones, textos, interfaces). |
| IGK StartUp | Arranca, vigila y reinicia los servidores; backups; firewall. Ver 11_IGK_HOST_STARTUP_CONNECT.md. |
| IGK Connect | Abre los archivos del servidor como una unidad de disco en tu PC y la base de datos con HeidiSQL por un túnel cifrado. Ver 11_IGK_HOST_STARTUP_CONNECT.md. |
| IgkGamers HD Tools | Convierte las texturas del cliente a HD y prepara el paquete de texturas para celulares. |
| WebPacker | Prepara el cliente web para publicarlo en un hosting. |
Requisitos de la máquina
Sistema operativo
- Windows de 64 bits. Todos los servidores son de 64 bits: no funcionan en Windows de 32 bits.
- Windows Server 2008 R2 o más nuevo (2012, 2016, 2019, 2022). Windows 10 u 11 de 64 bits sirve para probar en casa.
- No hace falta instalar Visual C++ Redistributable para los servidores: ConnectServer, JoinServer, DataServer, GameServer, GameServerCS y WebBridge solo usan componentes que ya trae Windows.
- IGK StartUp necesita .NET Framework 4.8.
SQL Server
- La base de datos va en Microsoft SQL Server 2008 o más nuevo. Los scripts de IGK funcionan desde SQL Server 2008.
- En Windows Server 2008 R2 se puede instalar como máximo SQL Server 2014. Las versiones 2016 y posteriores ya no se instalan en 2008 R2.
- La edición Express (gratis) sirve. Tiene un límite de tamaño por base (10 GB), que un servidor de MU normal no suele alcanzar.
- SQL Server puede ir en la misma máquina que los servidores (lo más común) o en otra.
Driver ODBC y DSN de 64 bits
- El JoinServer y el DataServer se conectan a la base con un DSN de ODBC llamado, en los archivos de IGK,
MuOnline(JoinServerODBCenJoinServer\Data\JoinServer.iniyDataServerODBCenDataServer\Data\DataServer.ini). - Como los servidores son de 64 bits, el DSN tiene que crearse en el administrador ODBC de 64 bits:
C:\Windows\System32\odbcad32.exe. El deC:\Windows\SysWOW64\odbcad32.exees el de 32 bits y los servidores no lo ven. - Cómo crearlo: ver
02_INSTALACION_SERVIDOR.md.
Puertos que usa cada servidor
Valores de los archivos que vienen con IGK. Si cambias un puerto, cámbialo en todos los archivos donde aparece (columna "También en").
| Programa | Puerto | Tipo | Para qué | Dónde se configura | También en | ¿Abrir en el firewall? |
|---|---|---|---|---|---|---|
| ConnectServer | 44405 | TCP | Los jugadores piden la lista de servidores | ConnectServer\Data\ConnectServer.ini → ConnectServerPortTCP | MainInfo\MainConnect.ini → IpAddressPort; WebBridge.ini → ServerPorts | Sí |
| ConnectServer | 55557 | UDP | Los GameServer y el JoinServer le avisan que están vivos | ConnectServer.ini → ConnectServerPortUDP | GameServerInfo - Common.dat → ConnectServerPort; JoinServer.ini → ConnectServerPort | No (es interno) |
| JoinServer | 55970 | TCP | Los GameServer validan cuentas | JoinServer\Data\JoinServer.ini → JoinServerPort | GameServerInfo - Common.dat → JoinServerPort | No |
| DataServer | 55960 | TCP | Los GameServer leen y guardan personajes | DataServer\Data\DataServer.ini → DataServerPort | GameServerInfo - Common.dat → DataServerPort | No |
| GameServer (SV-01) | 55901 | TCP | Los jugadores juegan | GameServer\Data\GameServerInfo - Common.dat → ServerPort | ServerList.dat, MapServerInfo.dat, WebBridge.ini → ServerPorts | Sí |
| GameServerCS (SV-CS) | 55919 | TCP | Castle Siege y sus mapas | GameServerCS\Data\GameServerInfo - Common.dat → ServerPort | ServerList.dat, MapServerInfo.dat, WebBridge.ini → ServerPorts | Sí |
| WebBridge | 44480 | TCP | El cliente de navegador | WebBridge\WebBridge.ini → Port | Configuración web (WebPacker) | Solo si los jugadores web se conectan directo al VPS (ver WebBridge\LEEME.txt) |
| WebBridge (wss) | TlsPort (0 = apagado; 443 u 8443 si se usa) | TCP | Conexión segura directa del navegador | WebBridge.ini → TlsPort | WebPacker.ini → BridgeURL | Sí, si se usa |
| SQL Server | 1433 (por defecto de SQL Server) | TCP | La base de datos | Configuración de SQL Server | — | No (nunca lo abras a internet) |
Cada subservidor nuevo usa su propio puerto (por ejemplo 55902, 55903...). Ese puerto también hay que abrirlo en el firewall y agregarlo a ServerPorts del WebBridge si se usa el cliente web (en los archivos de IGK ya está el rango 55901-55919).
IGK StartUp puede abrir solo estos puertos en el firewall de Windows (OpenServerPorts = 1 en IGKStartUp.ini).
Cómo se conectan los servidores entre sí
Jugador (PC / Android) Jugador (navegador)
| |
| 1) TCP 44405: pide la lista | WebBridge (44480 o wss)
v v
ConnectServer <--- UDP 55557 (estado) --- JoinServer y GameServers
|
| 2) el jugador elige servidor y se conecta a la IP:puerto de ServerList.dat
v
GameServer (55901) / GameServerCS (55919)
| |
| TCP 55970 | TCP 55960
v v
JoinServer DataServer
\ /
\---- SQL Server (base MuOnline, por el DSN de ODBC) ----/
- El JoinServer y el DataServer solo aceptan GameServers de las IP que están en su
Data\AllowableIpList.txt. En los archivos de IGK solo está127.0.0.1: los GameServer tienen que estar en la misma máquina. Si pones un GameServer en otra máquina, agrega su IP en los dos archivos. - Si un GameServer pierde la conexión con el JoinServer, desconecta a todos sus jugadores. Se vuelve a conectar solo cuando el JoinServer vuelve.
Estructura de carpetas de MuServer
MuServer\
├── ConnectServer\ ConnectServer.exe + Data\ (ConnectServer.ini, ServerList.dat) + LOG\
├── JoinServer\ JoinServer.exe + Data\ (JoinServer.ini, AllowableIpList.txt) + LOG\
├── DataServer\ DataServer.exe + Data\ (DataServer.ini, AllowableIpList.txt, BadSyntax.txt) + LOG\
├── GameServer\ GameServer.exe + Data\ (GameServerInfo - *.dat) + GHRS.txt + Reset.ini + LOGS\
├── GameServerCS\ GameServerCS.exe + Data\ (GameServerInfo - *.dat) + GHRS.txt + Reset.ini + LOGS\
├── Data\ Archivos del juego que usan TODOS los GameServer
├── DataBase\ Scripts de la base de datos (carpeta SQL)
├── WebBridge\ WebBridge.exe + WebBridge.ini + LEEME.txt
├── IGKStartUp\ Administrador de servidores (ver 11_IGK_HOST_STARTUP_CONNECT.md)
├── StartUp\ Lanzador anterior (ServerStartUp.exe)
└── SQL\ Consultas opcionales de diagnóstico y mantenimiento (no son parte de la instalación)
Carpeta de cada servidor
| Ruta | Contenido |
|---|---|
ConnectServer\Data\ConnectServer.ini | Puertos TCP/UDP, límites de conexiones por IP y por PC. |
ConnectServer\Data\ServerList.dat | La lista de servidores que ve el jugador (nombre, IP, puerto, visible u oculto). |
JoinServer\Data\JoinServer.ini | DSN, usuario y clave de SQL, puerto, registro de cuentas, log de cuentas, bans. |
DataServer\Data\DataServer.ini | DSN, usuario y clave de SQL, puerto. |
JoinServer\Data\AllowableIpList.txt y DataServer\Data\AllowableIpList.txt | IP de los GameServer que se pueden conectar. |
DataServer\Data\BadSyntax.txt | Palabras prohibidas en nombres de personaje (al crear, comprobar y cambiar nombre). En los archivos de IGK está vacío. |
GameServer\Data\GameServerInfo - *.dat | La configuración del GameServer (siete archivos: Common, Character, ChaosMix, Command, Custom, Event, Skill). Ver 03_CONFIGURACION_GAMESERVER.md. |
GameServer\GHRS.txt y GameServer\Reset.ini | Límite global de resets y su aumento diario. Ver 03_CONFIGURACION_GAMESERVER.md. |
LOG\ o LOGS\ | Registros de cada servidor (se crean solos). |
GameServerCS tiene los mismos archivos que GameServer, con su propio código, puerto y eventos.
Carpeta común MuServer\Data
Los GameServer leen los archivos del juego desde MuServer\Data (la carpeta Data que está al lado de las carpetas de los servidores). Por eso cada carpeta de GameServer tiene que estar dentro de MuServer, junto a Data.
| Carpeta / archivo | Qué contiene | Se explica en |
|---|---|---|
CashShop\ | Productos y paquetes de la tienda X (Cash Shop) | 03_CONFIGURACION_GAMESERVER.md |
Character\DefaultClassInfo.txt | Stats iniciales de cada clase | 03_CONFIGURACION_GAMESERVER.md |
Custom\ | Sistemas custom (VIP, joyas, alas, rankings, Season Pass, MOBA, bots...) | 06_SISTEMAS_CUSTOM.md |
Event\ | Horarios y premios de los eventos | 04_EVENTOS.md |
EventItemBag\ y EventItemBagManager.txt | Qué sueltan las cajas, monstruos y eventos | 03_CONFIGURACION_GAMESERVER.md |
Hack\ | Protección contra speed hack y paquetes | 03_CONFIGURACION_GAMESERVER.md |
Item\ | Lista de items, drops especiales, opciones, valores, items apilables | 03_CONFIGURACION_GAMESERVER.md |
Monster\ | Lista de monstruos y su inteligencia | 03_CONFIGURACION_GAMESERVER.md |
MonsterSetBase\ | Dónde aparecen los monstruos y NPC, un archivo por mapa | 03_CONFIGURACION_GAMESERVER.md |
Move\ | Puertas (Gate), el comando /move, revivir | 03_CONFIGURACION_GAMESERVER.md |
Quest\ y QuestWorld\ | Quests de cambio de clase y quests de Gens | 03_CONFIGURACION_GAMESERVER.md |
Script\ | Scripts Lua | 16_LUA.md |
Shop\ y ShopManager.txt | Tiendas de los NPC | 03_CONFIGURACION_GAMESERVER.md |
Skill\ | Skills, árbol Master, skills por mapa | 03_CONFIGURACION_GAMESERVER.md |
Terrain\ | Mapas de terreno (TerrainN.att) | 03_CONFIGURACION_GAMESERVER.md |
Util\ | Tabla de experiencia, filtro de chat, GMs, avisos, tablas de reset | 03_CONFIGURACION_GAMESERVER.md |
Command.txt | Comandos del juego | 05_COMANDOS.md |
ConnectMember.txt | Cuentas que entran en mantenimiento | 03_CONFIGURACION_GAMESERVER.md |
Effect.txt | Buffs y efectos | 03_CONFIGURACION_GAMESERVER.md |
MapManager.txt | Opciones por mapa (PK, experiencia, drop, comercio...) | 03_CONFIGURACION_GAMESERVER.md |
MapServerInfo.dat | Qué mapas atiende cada GameServer | 02_INSTALACION_SERVIDOR.md |
Message.txt | Mensajes del servidor | 03_CONFIGURACION_GAMESERVER.md |
Mining.txt | Minería | 03_CONFIGURACION_GAMESERVER.md |
Carpeta DataBase
| Ruta | Contenido |
|---|---|
DataBase\SQL\UpdateNN - nombre.sql | Scripts que agregan tablas, columnas y procedimientos que usan los servidores. Se ejecutan sobre la base MuOnline. Ver 02_INSTALACION_SERVIDOR.md. |
DataBase\Query Reset DB EMU - XOA TK DE OPEN.sql | Script que borra las cuentas, personajes, guilds y logs de la base (para dejarla vacía antes de abrir el servidor). Es destructivo: solo con un backup y nunca con jugadores reales. |
Niveles de cuenta (AL0 a AL3)
Muchas opciones terminan en _AL0, _AL1, _AL2 y _AL3. Es el nivel de cuenta (VIP) del jugador, y cada uno puede tener un valor distinto:
| Sufijo | Nivel | Nombre en el juego (Message.txt) |
|---|---|---|
_AL0 | 0 | Free Account |
_AL1 | 1 | Bronze Account |
_AL2 | 2 | Silver Account |
_AL3 | 3 | Gold Account |
Ejemplo: AddExperienceRate_AL0 = 100 y AddExperienceRate_AL3 = 300 dan a las cuentas Gold el triple de experiencia que a las Free.
Preguntas frecuentes
P: ¿Los servidores de IGK funcionan en Windows de 32 bits? R: No. Todos los servidores son de 64 bits. Hace falta Windows de 64 bits (Windows Server 2008 R2 o más nuevo, o Windows 10/11 de 64 bits para pruebas).
P: ¿Tengo que instalar Visual C++ Redistributable? R: No para los servidores: no lo necesitan. IGK StartUp sí necesita .NET Framework 4.8.
P: Mi VPS tiene Windows Server 2008 R2. ¿Qué SQL Server instalo? R: Como máximo SQL Server 2014 (puede ser Express). Las versiones 2016 y posteriores no se instalan en 2008 R2.
P: ¿Qué puertos tengo que abrir en el firewall? R: El TCP del ConnectServer (44405 en los archivos de IGK) y el de cada GameServer (55901 el normal, 55919 el de Castle Siege, y el de cada subservidor que agregues). El WebBridge solo si los jugadores web se conectan directo al VPS. Nunca abras los puertos del JoinServer, del DataServer ni de SQL Server.
P: ¿Para qué sirve el GameServerCS? R: Es el GameServer de Castle Siege. Atiende el castillo, Land of Trials, Crywolf, Barracks, Refuge y Loren Market. Está oculto en la lista: los jugadores pasan a él solos al entrar a esos mapas.
P: ¿Necesito el WebBridge? R: Solo si quieres que se juegue desde el navegador. Para PC y Android no hace falta.
P: ¿Por qué el ConnectServer dice STANDBY MODE?
R: Porque no le llega el estado del JoinServer. Revisa que el JoinServer esté abierto y conectado a la base, y que ConnectServerAddress y ConnectServerPort de JoinServer.ini apunten al ConnectServer (127.0.0.1 y 55557 en los archivos de IGK).
P: ¿Puedo poner un GameServer en otra máquina?
R: Sí. En su GameServerInfo - Common.dat pon la IP del JoinServer, DataServer y ConnectServer, y agrega la IP de esa máquina en AllowableIpList.txt del JoinServer y del DataServer. Esa máquina también necesita la carpeta Data al lado de la carpeta del GameServer.
P: ¿Qué significan los sufijos _AL0, _AL1, _AL2, _AL3? R: Son los niveles de cuenta (VIP): 0 Free, 1 Bronze, 2 Silver, 3 Gold. Cada uno puede tener su propio valor.
P: ¿Dónde pongo la IP del servidor para que los jugadores se conecten?
R: En el cliente, en MainInfo\MainConnect.ini (IpAddress), y en el servidor, en ConnectServer\Data\ServerList.dat y MuServer\Data\MapServerInfo.dat. Los pasos están en 02_INSTALACION_SERVIDOR.md.
P: ¿Qué es el archivo "Query Reset DB EMU - XOA TK DE OPEN.sql"? R: Un script que borra todas las cuentas, personajes, guilds y logs de la base, para empezar de cero antes de abrir. No lo ejecutes en un servidor con jugadores sin hacer antes un backup.