Jump to content

[Wiki] Como compilar en linux (ubuntu) - Traducción


AzoG

Recommended Posts

*********

NOTA 1: Esta guía está traducida literalmente de ésta otra: https://getmangos.eu/index.php/topic,18444.0.html, los derechos de autor corren por cuenta de dicha(s) persona(s)

NOTA 2: Las URLs de los repositorios del código de MaNGOS han cambiado. Cataclysm 4.3.4 es ahora el principal y WoTLK 3.3.5a ha sido movido a MaNGOS-wotlk. Para más detalles, referirse a la sección de Anuncios (Announcements) y a los stickies de "mangos source/projects list". (Nota del Traductor: Con el tiempo iré traduciendo también los anuncios y otras cosas, comienzo por las guias)

*********

Dado que siempre me encuentro buscando por una guía como ésta y que la mayoría de las mismas estan generalmente desactualizadas; aquí esta mi intento. Éste ejemplo asume que estas comenzando desde tu directorio "home".

Instalamos los paquetes necesarios para compilar y ejecutar MaNGOS

sudo apt-get install build-essential gcc g++ automake git-core autoconf make patch libmysql++-dev mysql-server libtool libssl-dev grep binutils zlibc libc6 libbz2-dev cmake

Bajamos el codigo fuente de MaNGOS y ScriptDev2. Yo les creo un directorio llamado "mangos" en lugar de bajarlos directamente al directorio home.

mkdir mangos
cd mangos
git clone git://github.com/mangos/server.git
cd server
git clone git://github.com/mangos/scripts.git src/bindings/ScriptDev2

Ahora parcheamos SD2 en el directorio de MaNGOS

git apply src/bindings/ScriptDev2/patches/MaNGOS-*-ScriptDev2.patch

Compilando (con un directorio de instalación /opt/mangos-server) Nota: si /opt/mangos-server no existe, creenlo y denle permisos chown al usuario con el que piensan compilar el código.

mkdir objdir
cd objdir
cmake .. -DPREFIX=/opt/mangos-server
make
make install

Extrayendo dbc, maps y vmaps.

Copien los contenidos del directorio "server/contrib/extractor_binary" al directorio de ubicación de su cliente de WoW. Luego ejecuten lo siguiente:

C:\\Users\\Public\\Games\\World of Warcraft>ad.exe

C:\\Users\\Public\\Games\\World of Warcraft>vmapExtractor4
C:\\Users\\Public\\Games\\World of Warcraft>vmap_assembler.exe buildings vmaps

También podrían ejecutar el script "ExtractResources.sh"; sin embargo, necesitarían instalr el bash de git u otro tipo de consola para ejecutarlo dentro de Windows

Por organizacion me gusta crear un directorio aparte para estos archivos llamados "data" en el directorio "/opt/mangos-server". Muevan los directorios (dbc, maps y vmaps) que fueron creados con los previamente mencionados comandos en Windows, a tu directorio "/opt/mangos-server/data". (Nota: La ubicacion del directorio de los archivos "data" esta configurada en el archivo "/opt/mangos-server/etc/mangosd.conf") Pueden borrar los archivos copiados desde "/contrib/extractor_binary" y los directorios (creados por el mismo motivo) una vez hayan finalizado ya que no serán necesarios para ejecutar el cliente.

Conseguir la Base de Datos

cd ~/mangos
git clone git://github.com/mangos/database.git

Configurando las Bases de Datos

Existen cuatro bases de datos que necesitarás configurar. "characters", "mangos", y "realmd" se encuentran en tu directorio "sql"; "ScriptDev2" se encuentra en tu directorio "src/bindings/ScriptDev2/sql" (Nota del traductor: En characters se encuentra la info de los personajes, en mangos la info del mundo de WoW, en realmd la info de las cuentas de los personajes, y en ScriptDev2, todo lo relacionado a los scripts del juego. A grandes rasgos, esa seria la mejor definicion, por si eventualmente necesitan buscar algo en la base de datos)

Creando las bases de datos y la estructura de las mismas

cd ~/mangos/server/sql
mysql -u root -p < create_mysql.sql
mysql -u root -p characters < characters.sql
mysql -u root -p mangos < mangos.sql
mysql -u root -p realmd < realmd.sql

Base de datos de ScriptDev2:

cd ~/mangos/server/src/bindings/ScriptDev2/sql
mysql -u root -p < scriptdev2_create_database.sql
mysql -u root -p scriptdev2 < scriptdev2_create_structure_mysql.sql
mysql -u root -p scriptdev2 < scriptdev2_script_full.sql

Base de datos de MaNGOS:

cd ~/mangos/database
./make_full_db.sh
mysql -u root -p mangos < full_db.sql

Archivos de configuración

Finalmente, antes de ejecutar el server, necesitarían modificar los archivos ".conf" en el directorio "/opt/mangos-server/etc". Primero copien los archivos "mangosd.conf.dist", "realmd.conf.dist" y "scriptdev2.conf.dist" de identica manera pero que solo sean *.conf (Ejemplo: mangosd.conf, realmd.conf, scriptdev2.conf)

cd /opt/mangos-server/etc
cp mangosd.conf.dist mangosd.conf
cp realmd.conf.dist realmd.conf
cp scriptdev2.conf.dist scriptdev2.conf

Estos archivos contienen la información de cómo el server se comunica con la base de datos, en qué ip y puerto está corriendo el server, y otras varias coniguraciones relacionadas al juego en si.

Aquí se encuentran las primeras lineas de mi archivo "mangosd.conf" (por supuesto, con mi contraseña y dominio actual removidos). Si en el caso de uds. corren la base de datos en un server separado, recuerden cambiar 127.0.0.1 para que refleje el ip correcto del server de la base de datos.

RealmID = 1
DataDir = "/opt/mangos-server/data"
LogsDir = "/opt/mangos-server/logs"
LoginDatabaseInfo   = "127.0.0.1;3306;mangos;PASSWORD;realmd"
WorldDatabaseInfo   = "127.0.0.1;3306;mangos;PASSWORD;mangos"
CharacterDatabaseInfo = "127.0.0.1;3306;mangos;PASSWORD;characters"
LoginDatabaseConnections = 1
WorldDatabaseConnections = 1
CharacterDatabaseConnections = 1
MaxPingTime = 30
WorldServerPort = 8085
BindIP = "mangos.YOURDOMAIN.com"

Si uds. no quieren que el server sea visto desde el mundo exterior, pueden modificar solamente la direccion IP en la variable BindIP. Para que el server SEA visto desde afuera, tuve que modificar mi archivo "/etc/hosts" y agregué:

192.168.0.2  mangos.YOURDOMAIN.com

También necesitarán modificar el DNS para que las ip's routeables sean resueltas hacia "mangos.YOURDOMAIN.com" de la misma forma. En mi caso, creé un "CNAME record" para mi "mangos.XXXXXX.com"

Logs del Server

Como habrán notado, le he configurado que loguee los errores, ya que es de gran ayuda en la resolución de problemas. Creen el directorio "/opt/mangos-server/logs". Luego configuren "LogsDir = "/opt/mangos-server/logs"" en los archivos "mangosd.conf" y "realmd.conf".

También necesitarán modificar la base de datos "realmd", en la tabla "realmlist", "address record". Dado que, a diferencia de "WotLK", éste DEBERÁ ser la dirección IP del servidor.

Configuración del Router

Si lo que quieres, es compartir éste servidor con la gente de afuera de tu red, necesitarás redireccionar los puertos TCP 8085 y TCP 3724 para mangosd y realmd, respectivamente hacia tu servidor.

Configuracion del Cliente

Necesitarán modificar "World of Warcraft\\Data\\enUS\\realmlist.wtf" para que apunte al servidor.

set realmlist mangos.YOURDOMAIN.com
set patchlist mangos.YOURDOMAIN.com
set realmlistbn ""
set portal us

Además, si se encuentran utilizando "mangos.YOURDOMAIN.com" en sus archivos de configuracion (.conf), deberán asegurarse de que su DNS tiene la IP del servidor apuntando a "mangos.YOURDOMAIN.com" ó pueden modificar el archivo "C:\\Windows\\System32\\drivers\\etc\\hosts" para que incluya la misma linea que le pusieron al servidor en el archivo "/etc/hosts".

Recuerden ejecutar "Wow.exe" y no así "Launcher.exe" cuando quieran correr el cliente. En caso de ejecutar "Launcher.exe" comenzaría un proceso de parches y uds. no querrán que ésto suceda.

Para actualizar el codigo fuente del server y la base de datos

cd ~/mangos/server
git pull
cd src/bindings/ScriptDev2
git pull
cd ~/mangos/database
git pull

Ejecutar el server utilizando "screen". Crear los siguientes dos archivos y hacerlos "+x" (es decir, ejecutables) con (chmod +x {nombre_de_archivo}) y ubicarlos en "/usr/local/bin"

mangos-world

#!/bin/sh
cd /opt/mangos-server/bin
screen -A -m -d -S mangosworld ./mangosd

mangos-realm

#!/bin/sh
cd /opt/mangos-server/bin
screen -A -m -d -S mangosrealm ./realmd

*******************************************

Any suggestions, or modifications, just let me know. And feel free to give me any advice for this tutorial.

Cualquier sugerencia, o modificación, sólo haganmeló saber. Y sientansé libres de darme cualquier consejo sobre ésta guía.

Regards!!! // Saludos!!!

PS: Yet to review some spanish grammar in this text // PD: Aún me queda por revisar un poco mas de gramática al respecto.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use