Cómo Crear tu Propio Server de SMO

Logo Smo

Para poder usar mi script (GeSmoC), necesitas tener un servidor donde obtener los datos, así que ahora pongo a su dispocición el tutorial sobre como crear su propio servidor de stepmania online

Éste tutorial lo haré bajo el entorno Windows, sin embargo solo varía para Linux en el modo de obtener el servidor, la configuración y utilización es la misma para ambos S.O.

El tutorial está basado en el oficial encontrado en la wiki de SMO, sólo que además de estar traducido, he rellenado algunas lagunas que quedan al leer el tutorial original.

Obtención del Servidor

Usaremos la versión más reciente (SMOnline 2.5 rc2), para poder bajarlo pueden usar 2 métodos:

1.- Bajar Directo desde SourceForge (Recomendado para Windows)

Deben ir a esta página y bajar el archivo SMOnline-2.5rc2-win32.zip que contiene el servidor compilado y listo para usarse, la mejor opción para windows y usuarios inexpertos.

Para el código fuente deben bajar el archivo SMOnline-2.5rc2.tar.bz2 y compilarlo.

2.- Usar Cvs Checkout (Bajarán siempre la última versión existente)

Windows

Para Poder bajar por cvs, necesitan un programa especial llamado
tortoisecvs , luego de instalarlo, al hacer un click izquierdo en el escritorio les saldrá un menú contextual
Cvs Menu

vayan a cvs checkout (cvs obtener si está en español)
e introduscan ésta dirección

:pserver:anonymous@smonline.cvs.sourceforge.net:/cvsroot/smonline

Tortoise

Los demás datos se introducirán solos, luego precionen aceptar y comenzará a bajar el código
el cual se guardará en una carpeta con el nombre del Módulo (SMOnline).

Linux

Los usuarios de linux pueden usarlos siguientes comandos para obtener el código:
cvs -d:pserver:anonymous@smonline.cvs.sourceforge.net:/cvsroot/smonline login

cvs -z3 -d:pserver:anonymous@smonline.cvs.sourceforge.net:/cvsroot/smonline co -P SMOnline
Compilar el Código

Para compilar en linux se puede usar el compilador g 3.4 y para Windows se puede usar los compiladores Microsoft Visual C 6.0 y Microsoft .NET.

En linux debes usar
$ make
en el terminal, para windows solo abran el archivo de proyecto VC 6 y compilar en modo «Release».

Configuración del Servidor

Nota:

Si es que nos hemos bajado la versión previamente compilada, ésta solo traerá un ejecutable, sin archivos de configuración, por lo que bastará con abrir el ejecutable una vez y luego precionar la letra r para que genere automáticamente el ini correspondiente, también es recomendable crear un archivo llamado motd con extensión txt ( (motd.txt) Message of the day), el cual contiene un mensaje que se muestra a todos los que ingresan al servidor.

Archivos en Carpeta

Configuración del Ini

El archivo ini siempre debe estar nombrado SMOnline , ya que sin él el servidor cargará la última configuración usada.
Los valores por defacto del ini son estos:

[ChatOptions]
Color=FFFFFF
CommonColorCode=|c0

[JudgeWindows]
Boo=0.180000
Good=0.135000
Great=0.090000
Marvelous=0.022500
Perfect=0.045000

[LobbyRoom]
AllowGameRooms=0
Description=
Name=Lobby
NumberSubRooms=0
Type=chat

[SQLOptions]
Address=
AdminLevel=1
BanTable=
BanUserIDField=
Database=
LevelField=
Passwd=
PasswdField=
PingTime=60
Port=3306
User=
UserIDField=
UserTable=
UsernameField=

[ServerOptions]
CPS=20
EnableSQL=1
LobbyName=Lobby
MOTD File=MOTD.txt
Name=SMOnline Server
PingTime=60
Port=8765
RoomKickTime=60
RoomNameLength=15
SMLAN=0
UseConsole=1

[StatsSQLOptions]
Address=
Database=
Passwd=
Port=3306
User=

Comenzaremos desglozando el archivo y configurándolo.

[ChatOptions] Opciones del Chat
Color=FFFFFF Color del texto al chatear (valor hexadecimal)

CommonColorCode=|c0 Formato para colorear el texto, luego se escribe el color en hex (|coFFFFFF)
Opciones de calificación, son las que están por defacto en el Stepmania, puedes alterarlo, pero es mejor dejarlo como está ya que la mayoría de los usuarios lo tendrán de esa manera.
[JudgeWindows]
Boo=0.180000
Good=0.135000
Great=0.090000
Marvelous=0.022500
Perfect=0.045000
Opciones de los rooms (salas) , luego explicaremos como crear más
[LobbyRoom] Ésta es la room por defacto, no se puede borrar
AllowGameRooms=0 ¿Permitir crear salas de juego? (0=no, 1=si)
Description= Pequeña descripción de la Sala
Name=Lobby Nombre de la sala
NumberSubRooms=0 * Importante * Número de Sub-Salas, luego explicaremos mas tarde
Type=chat Tipo de sala, hay 2 chat y game, game es para las salas de juego asi que solo usaremos chat
Opciones de la Base de datos para los usuarios
[SQLOptions]
Address= Dirección del servidor de Mysql
AdminLevel=1 Level requerido para considerarse Admin
BanTable= Tabla de usuarios baneados (phpbb_banlist)
BanUserIDField= Campo de id del usuario (ban_userid)
Database= Nombre de la Base de datos
LevelField= Campo de level de usuario (user_level)
Passwd= Contraseña de la base de datos
PasswdField= Campo de contraseña de usuario (user_password)
PingTime=60 Tiempo de espera antes de considerar al servidor offline (segundos)
Port=3306 Puerto del servidor de Mysql
User= Usuario de la Base de Datos
UserIDField= Campo de id del usuario (user_id)
UserTable= Tabla de usuarios (phpbb_users)
UsernameField= Campo del nombre del usuario (username)
Opciones Generales del Servidor
[ServerOptions]
CPS=20 Ciclos por Segundo, lo recomendado es 20, hace que el tiempo de espera entre cada sección en el juego sea mayor o menor, si lo aumentas será más rápido, aunque consumirá más recursos
EnableSQL=1 ¿Habilitar SQL? (1=si,0=no)
LobbyName=Lobby Nombre de la sala principal (se toma la configuración del [LobbyRoom] )
MOTD File=MOTD.txt Archivo del motd (Message of the day)
Name=SMOnline Server Nombre del Servidor
PingTime=60 Tiempo antes de considerar offline (segundos)
Port=8765 Puerto del Servidor (si es el defacto, los usuarios solo deberían poner la ip sin el puerto)
RoomKickTime=60 Tiempo de espera antes de patear del room (segundos)
RoomNameLength=15 Máximo de caracteres permitidos en el nombre de la sala
SMLAN=0 *No Recomendado* Convierte al Servidor en uno de SMLAN (No usa estadísticas ni salas adicionales) (0=no,1=si)
UseConsole=1 Usar consola para enviar datos (0=no,1=si) Recomendado 1
Opciones de la Base de Datos para las estadísticas
[StatsSQLOptions]
Address= Dirección de la Base de Datos
Database= Nombre de la Base de Datos
Passwd= Contraseña de la Base de Datos
Port=3306 Puerto de la Base de Datos
User= Usuario de la Base de Datos

Creación de Salas Adicionales

Para ello modificaremos la sala lobby en el apartado NumberSubRooms=0, la modificaremos por el número de salas adicionales a crear, vamos sólo a crear 2 más y no permitiremos crear salas de juego en el lobby, por que desordenarían todo, también hay que agregar el nombre de la sala que estará dentro de Lobby con SubRoom0 (0 como número de la sala en el órden) así que el código debe quedar parecido a lo siguiente:

[LobbyRoom]
AllowGameRooms=0
Description= Sala Principal
Name=Super Lobby
NumberSubRooms=2

SubRoom0=SubSala1
SubRoom1=SubSala2
Type=chat

Luego Crearemos la configuración de las Sub-Salas por debajo de la configuración del Lobby

[SubSala1Room]
AllowGameRooms=1 Permitimos la creación de salas de juego
Description=La primera Sub Sala del Lobby
Name=Sub Sala 1
NumberSubRooms=0 Puede Haber más Sub-Salas dentro de ésta, solo configuren como en el Lobby
Type=chat
[SubSala2Room]
AllowGameRooms=1
Description=La segunda Sub Sala del Lobby
Name=Sub Sala 2
NumberSubRooms=0
Type=chat

De modo que el archivo de configuración final debe quedar algo así:

[ChatOptions]
Color=FFFFFF
CommonColorCode=|c0

[JudgeWindows]
Boo=0.180000
Good=0.135000
Great=0.090000
Marvelous=0.022500
Perfect=0.045000

[LobbyRoom]
AllowGameRooms=0
Description=Sala de Lobby
Name=Super Lobby
NumberSubRooms=1
SubRoom0=LOL
Type=chat

[LOLRoom]
AllowGameRooms=1
Description=Sala de LOL
Name=LOL
NumberSubRooms=0
Type=chat

[SQLOptions]
Address=localhost
AdminLevel=1
BanTable=phpbb_banlist
BanUserIDField=ban_userid
Database=stepmani_newstats
LevelField=user_level
Passwd=mipass
PasswdField=user_password
PingTime=60
Port=3306
User=miusuario
UserIDField=user_id
UserTable=phpbb_users
UsernameField=username

[ServerOptions]
CPS=20
EnableSQL=1
LobbyName=Lobby
MOTD File=MOTD.txt
Name=Mi Servidor SMO
PingTime=60
Port=8765
RoomKickTime=60
RoomNameLength=15
SMLAN=0
UseConsole=1

[StatsSQLOptions]
Address=localhost
Database=stepmani_newstats
Passwd=mipass
Port=3306
User=miusuario

Guardamos el Ini, y si todo salió bien abrimos el SMOnline.exe y debería salir algo así

ServerOK

Si te salió otra cosa, debes revisar el ini por posibles errores.
Para poder ingresar a jugar, solo debes conectarte como en el servidor de SMO oficial (creandote un profile con el nombre de tu usuario, e ingresando la direccion ip en Network options, puedes ver tu ip en What’s my Ip, y dársela a tus amigos (si usaste un puerto diferente al defacto debes dar la dirección del server de ésta forma ip:puerto ejem: 127.0.0.1:4453), pero si es para ti mismo puedes usar 127.0.0.1)

Nota: Debes fijarte de tener los puertos que has usado (8765 por defacto) habilitados en tu firewall y router, para que la gente de afuera de tu red pueda entrar a jugar, también debes crear usuarios en la base de datos, usando la registración de mi programa (GeSmoC).

Acá hay unas imágenes ejemplificando como quedaría:
Login al ServerSelect RoomSeleccion CancionIn Game

Notas Finales: No es necesario que usen el servidor para una gran comunidad, pueden usarlo para crear algunos torneos con los amigos, y gracias a las stats se tiene mayor conocimiento y pueden escoger al ganador de mejor manera. Cualquier duda o sugerencia pueden hacerla en los comentarios.

Recuerdo que éste artículo y todo lo de este blog está bajo la Licencia Creative Commons, así que si lo postean o lo modifican en otro lado, siempre mencionenme en los créditos 😛
Creative Commons License
Esta obra es publicada bajo una licencia Creative Commons.

33 respuestas

  1. Hola.

    Me ha llamado mucho la atención tu script, pero me gustaría saber si hay algún indicio de si existe algún proyecto que trate de integrar SMO en un sistema phpBB.

    Muchas gracias por publicar tu guía y molestarte en presentarlo en nuestro foro.

    Saludos.

  2. Hola, en este momento estoy trabajando para que se integre con MKPortal y puedas tener tu foro mas un portal mucho más avanzado con las estadísticas del SMO.

    Lo tendré listo en unos pocos días.

    Saludos y gracias por tu interés.

  3. Muy buen tuto… my buen…

    pero tengo una duda ya lo probe y todo y me sale offline tu Server en php…
    que se debe hacer para conectarlo en la server.. ya que si me dices lo odificaria para Phpnuke y crearia un modulo con blockes…. seria de mucha ayuda todoa la informacion….

    Gracias por tu aporte y pues sigue adelante… sy logro el modulo lo compatire pra ustesdes….

    por tu atencion gracias

  4. ¿Qué versión Usas?

    La original (GesMoc)
    o la que hice para Mkportal

    Porfavor da mas detalles para ayudarte 😀

  5. pues estoy usando la version (GesMoc)… solo quiero saber como poner Online el server para el Stepmania Online.

    por que no se como ya que entro y me muestra Offline 😦 y quiero ponerlo en linea….

    Entra si quieres mi Sitio

    Ok porfavor ayudame y pues ya sabiendo como ponerlo en Linea lo modificare para PhpNuke ya que se sobre el tema de phpnuke… bueno no del todo pero se como usarlo.

    Ok Saludos

  6. Hola, pues la respuesta más simple es que el servidor donde tienes hosteado el gesmoc tiene deshabilitado fsock, si quieres ver si tu servidor está en línea puedes usar el verificador de SMO original

    http://stepmaniaonline.com/?mod=Status&addr=smonline.us&port=8765

    cambiando addr y port por los tuyos 🙂

    Nota: Te recomiendo usar la versión de Mkportal para crear la versión de phpNuke, por que cambié muchas cosas, aunque la firma y los rounds todavía me faltan.

    Saludos y gracias por tu interés 😀

  7. Una pequeña solución es que puedes poner un link
    con tu dirección

    http://stepmaniaonline.com/?mod=Status&addr=189.164.231.93&port=21

    y que se abra en un frame 😀

    aunque el puerto 21 los usan los ftp, puede generar algún conflicto 😉

  8. Ok chavo….. me ayudas mucho…… y pues ya asta hice un hosting local con apache para resolver el problema pero….. aun asi me sigue dando Offline 😦 y qioero que me Online 😀 jejeje bueno…. ya vere como hacerle ya que me urge tener el servidor terminado para mi web.

    Ok SAludos y gracias

  9. Gracias por tu interés en mi pequeño proyecto
    hay muchas cosas por terminar en el script
    y sobre todo mejorar, hay código muy sucio todavía
    😉

  10. oye… ya tengo un host con fsock…. ahora el problema es que me dice Offline 😦 todavia no se pone en linea….

    checalo si quieres

    SMOnline

    porfavor checalo….. y pues ya lo cheque con el stepmaniaonline.com tambien

    http://stepmaniaonline.com/?mod=Status&addr=smo.ifastnet.com&port=80

    si logramos hacer la conexion dime…. los carchivos estan asi:

    directorio:
    admin —-> todo sigue igaul como lo baje
    css —-> todo sigue igaul como lo baje
    images —-> todo sigue igaul como lo baje
    includes —-> todo sigue igaul como lo baje
    SMOnline —-> aqui pude los archivos SMOnline.exe y Smonline.ini
    smo

  11. oye… ya tengo un host con fsock…. ahora el problema es que me dice Offline 😦 todavia no se pone en linea….

    checalo si quieres

    SMOnline

    porfavor checalo….. y pues ya lo cheque con el stepmaniaonline.com tambien

    http://stepmaniaonline.com/?mod=Status&addr=smo.ifastnet.com&port=80

    si logramos hacer la conexion dime…. los carchivos estan asi:

    directorio:
    admin —-> todo sigue igaul como lo baje
    css —-> todo sigue igaul como lo baje
    images —-> todo sigue igaul como lo baje
    includes —-> todo sigue igaul como lo baje
    SMOnline —-> aqui pude los archivos SMOnline.exe y Smonline.ini y MOTD.txt
    smo ——> aqui igual que en SMOnline

    Porfavor ayudame… no se como hacer para que se conecte… ya probe con esl SM4 y pues me dice «Conexion perdida» como que se conecta pero se sale….

    Bueno chavo… ya nomas me falta poquito para comprender bien tu Scrip y pues solo se logra con el dueño del mismo,

    Saludos y cuidate

  12. Sí, http://stepmaniaonline.com/?mod=Status&addr=smo.ifastnet.com&port=80

    te dice que está online, pero por que estás checkando el servidor apache en el puerto 80 y como es del servidor ifastnet entonces te tirará online siempre que tu web esté disponible.

    Ahora, SMOnline.exe y SMOnline.ini no deben estar en tu servidor web, deben ser ejecutados en una computadora, ya que si los subes a la web, solo podrán descargarse, nunca ejecutarse, por lo que tu servidor nunca existirá.

    Yo por mi parte, estoy probando con un servidor casero con Debian Etch y Mysql 4.0.x y hasta ahora no tengo problemas, está online de lunes a sabado de 8AM – 12PM y 4PM – 8 PM GMT-4, puedes probar acá

    http://darthdoom.da.funpic.org/index.php

    Saludos

  13. eso significa que tenco que hacer un servidor casero…. mmmm….

    oye veo que tu servidor esta en hipersmo.sytes.net… como le haces? ya me confidistes … por que se supone que debe ser ejecutado en una computadora el SMOnline.exe y pues es un servidor web….. o me equivoco

    pues no tendras un manual o como devo hacerlo….. ya que estoy perdido y confundido :p porfa y pues perdona por causar tantas molestias…….

    Muchas Gracias y Saludos

  14. Tambien… si tienes MSN por ahi me droas dar instrucciones… bueno si quieres

    killerinstict_glacius@hotmail.com

    Gracias

  15. No, en estos momentos no tengo un manual
    pero lo que hice para subir el servidor fue relativamente simple

    compile el SMOnline desde el código fuente
    usando Debian Etch y el Paquete build-essentials
    aunque me baje el g++-3.4 para compilar, ya que en la guia oficial http://www.stepmaniaonline.com/wiki/index.php?title=Server_Setup lo pedían (prové con una versión más reciente, pero no funcionó).

    Luego compile Mysql siguiendo los pasos de ésta guía
    http://www.idevelopment.info/data/MySQL/DBA_tips/Installing/LINUX4020_3.shtml

    Configure Mysql con las tablas y luego SMOnline.ini
    Active los 2 y Listo, Server UP.

    para la dirección hipersmo.sytes.net use No-IP http://www.no-ip.com/ direccionandola a la Ip de mi Router, previamente configurados los puertos.

    Y para finalizar use el GesMoc utilizando la Base de Datos de mi Pc Casero, ya que si hubiera puesto apache el server colapsaría por mi lenta conecciión y su poca capacidad de ram.

    Espero aclarar la mayoría de tus dudas

    Saludos 😉

  16. muchas gracias… ya estubo que no voy a poder 😦 ya que no utilizo Linux y no se su funcionamiento… yo puro Windows… pero bueno encontrare la forma de hacer mi host casero…..

    Bueno chavo muchas gracias….. y pues perdona las molestias.

  17. muchas gracias….. bueno asta qui quedo mi proyecto… ya que no utilizo Linux… phaber si puedo montarlo en Windows….

    Ok chavo voy a seguir adelante

    Gracias y cuidate 😀

  18. Hey utilizar Linux Debian es más fácil de lo que piensas, es más llevo solo 2 semanas usandolo, y no sabia nada, ni si quiera como usar apt-get

    Pero si quieres windows, pues puedes usar Wamp
    http://www.wampserver.com/en/

    pero bajando una versión 4.0.x de Mysql para Windows e instalandola en la carpeta mysql de wamp y luego copiando el archivo wamp.conf de una versión superior y modificandolo para la ruta del mysql 4.0.x

    Luego de configurar el mysql via phpmyadmin, arreglas SMOnline.ini y todo debería funcionar, por lo menos hací lo hacía yo antes de usar debian.

    PD: Sigue intentándolo 😀

  19. pues ya encontre como poner miservidor local… con Appserv

    y pues estoy checando… luego te aviso ok

    Saludos

  20. Oye una pregunta mas…. como habilito el fsock en mi servidor web.. ya que tengo instlado todo el phpmyadmin, php5 webserver y pues no ayo como habilitar el fsock para comunicarse…… ayudame en eso porfa

    Salu2

  21. Revisa los archivos de configuración que estan en includes/config

    config_server.php, creo que es el archivo
    debes escribir los datos del servidor correctamente.

    En todo caso, estoy trabajando en una nueva versión refactorizando la cosa, para que sea mucha más fácil y rápida la configuración y la respuesta del script.

    Saludos

  22. hola que tal, a mi me encanta tu proyecto, cabe felicitarte antes que nada. =)

    pasando al tema, solo tengo una duda, que no me ha quedado clara, supongamos que yo ya tengo mi MKPortal funcionando, pero, que pasa si esta integrado a SMF? por que por ahi las tablas de la MySQL parece ser que se modifican en la integracion, y algunas otras dudas pero me gustaria que me aclares esta por favor.

    de nuevo te felicito hermano, maestro de maestros! gracias y hasta pronto.

  23. Hola, gracias por tus comentarios 😉

    SMF no es compatible con el script, ya que está fuera de mi alcance, el servidor de stepmania trabaja solo con phpbb2, aunque pienso que tomar como base Mkportal no fue muy buena idea, ya que requiere el doble de espacio de base de datos y toma tiempo de más, todo un lío :S. Tal vez continue con el script original que era stand alone o utilizar flash con php.

    Bueno gracias por tus comentarios y pregunta si quedan dudas 🙂

  24. pues mira hermano si me dejas opinar un poco, creo que continuarlo sobre phpbb esta bien, digo, al menos en mi sitio no habria problema de que la gente tubiese que registrarse a otro pequeño foro para jugadores de SMO en linea 🙂

    ahora va otra duda, tal vez estoy viendome muy novatito, vi que mas arriba pasaba algo similar pero no entendi muy bien una cuestion…

    los archivos SMOnline.exe y Smonline.ini del SMO, deben de estar en mi servidor web o en una computadora que sea el «Mirror» para todos los usuarios, pues yo ya tengo montada mi pagina pero es un servidor pagado (dremhost) y no creo poder instalar en ese servidor la instalacion de ese programa.

    bueno pues ya serian todas mis dudas y cualquier otra cosa estoy para ayudarte man. estoy muy fresco en la edicion de phpbb pero ya encarrerado en SMF, supongo que seran algo similares, nos vemos!

  25. Los archivos SMOnline.exe y SMonline.ini son el servidor, cabe decir que no se deben subir a un ftp o similar, se debe ejecutarlo, tal como ejecutas apache para que muestre paginas web al mundo, debes ejecutar este servidor para que puedan entrar en el mundo a jugar.

    Debes configurarlo y ejecutarlo en una máquina que tenga puertos habilitados conección a internet y una base mysql 4.0 luego le das la ip a quienes quieras, se registran y pueden comenzar a jugar.

  26. muchas gracias! entendido y anotado, estare bien pendiente de el proyecto, y de nuevo no dudes en solicitar ayuda o testers, aqui estare para ayudar en lo que pueda, saludos hermano!

  27. mira hermano etsa muy bueno tu blog pero ami me sale esto y no de como arreglarlo espero me puedas ayudar me urge saludos :

    Loading IN Stepmania Online Server
    SQL Login FAILED
    SQL ERROR THROWN! Code: -1 Dec:Failed to connect
    Stats thread started
    SQL Login FAILED
    SQL ERROR THROWN! Code: -1 Dec:Failed to connect
    Failed to connect to database
    Server Listening

  28. Hola, según lo que veo tiene problemas de conección, puede ser debido a varias cosas.

    1.- El puerto de conección a los servidores esta mal. (revisa el ini)

    2.- Los servidores están apagados

    3.- Los servidores están encendidos en otro Pc, y puede que sean problemas de firewall.

    4.- Los servidores están encendidos, pero mal configurados.

    No se me ocurre otra posible causa.

    Saludos

  29. me podrias explicar mejor como arreglarlo por el msn porfavor te lo agradeceria mucho darthdoom

  30. este problema le puede pasar a muchas personas, es mejor que sepan cual es la solución.

    describe mejor tu situacion. y te podre ayudar mejor.

  31. ya te agrege a mi correo aceptame en el tuyo para poder platicarte mas detalladamente porfavor

  32. El problema era simple. no habias configurado los servidores de Mysql como lo dije aca

    Instalación y Configuración de BD para Server SMO en Windows

    Para que quede claro, se debe configurar primero el servidor de mysql y luego el servidor de SMO.

    Saludos

Deja un comentario