Super Mario War es un juego de combate a muerte multijugador al estilo Super Mario Bros. creado por fanáticos en el que los jugadores intentan vencerse entre sí en una variedad de modos de juego. ¡Puedes jugar en equipos, diseñar tus propios niveles, diseñar tus propios mundos y mucho más!
Lea esta página en otros idiomas: 한국어
El Mario War original fue creado por Samuele Poletto en 2002, en el que cuatro personajes de Super Mario podían luchar en varios niveles saltando sobre la cabeza del otro. Fue escrito en Pascal/Assembly y lanzado para DOS. Las versiones posteriores también incluyeron un editor de mapas.
En 2004, Florian Hufsky , fundador del foro 72dpiarmy, comenzó a trabajar en una reescritura de código abierto, que se convirtió en Super Mario War . Esta versión introdujo personajes personalizados, modos de juego adicionales y mecánicas de mapas, elementos y potenciadores. Los contenidos de usuario personalizados se almacenaban en el sitio (ahora desaparecido) smwstuff.com
, con miles de mapas y máscaras disponibles. Debido a su naturaleza de código abierto, el juego se ha adaptado a prácticamente todos los sistemas de escritorio y consola.
A finales de 2009, Florian murió. El desarrollo del juego se ralentizó y finalmente se detuvo, siendo SMW 1.8 beta 2 el último lanzamiento oficial. Si bien ha habido varios intentos de continuar o reiniciar el desarrollo, ninguno parece haber tenido éxito a largo plazo. Además, debido a problemas técnicos, todo el sitio smwstuff.com
y todo su contenido también se perdió, con copias de seguridad parciales de quienes los subieron disponibles en el foro.
Esta es una bifurcación en la que comencé a trabajar alrededor de 2014, con el objetivo inicial de implementar soporte multijugador en red que funcionara multiplataforma entre diferentes dispositivos. También quería crear un sitio para recopilar el contenido disperso del foro en un solo lugar una vez más. Esto se convirtió en smwstuff.net
.
En cuanto al juego, lamentablemente muy pronto quedó claro que la calidad y la estructura del código fuente original harían imposible un trabajo efectivo: la mayoría de los archivos fuente estaban en la categoría "alrededor de 10000 líneas", siendo comunes más de 1000 funciones LOC, la mayoría de modificaban variables globales, e incluso había un if-else
con cien ramas.
Finalmente logré que el modo multijugador en red funcione, pero está lejos de ser perfecto. Con buenas condiciones, en redes locales puede funcionar bien, pero errores sutiles y retrasos generalmente hacen que el juego en Internet esté lejos de ser óptimo. Una implementación adecuada probablemente requeriría un rediseño de varias partes centrales del juego y otros cientos de parches de limpieza/refactorización para que el código sea mantenible. Y, por supuesto, con este tipo de proyecto, también existe la posibilidad de que a la mañana siguiente reciba una carta de cese y desistimiento de cualquier empresa.
Para mí, este fue el punto en el que dejé de dedicarle más tiempo a este proyecto (2016). A largo plazo, una reescritura completa podría ser más rápida y efectiva que parchear el juego original durante años. De cualquier manera, espero haber dejado el proyecto en mejor estado de lo que estaba y que sea de utilidad para futuros desarrolladores. ¡Divertirse!
Las versiones antiguas de Mario War y SMW se pueden encontrar aquí.
Super Mario War es un juego multijugador de Super Mario. El objetivo es pisotear a tantos otros Mario como sea posible para ganar el juego. Hay una variedad de modos de juego diferentes en el juego, como Capture-The-Flag, King of The Hill, Deathmatch, Team Deathmatch, Tournament Mode, Collect The Coins, Race y muchos más. El juego también incluye un editor de niveles que te permite crear tus propios mapas desde cero o recrear secciones de tu juego favorito de Mario. ¡Tu imaginación es el límite! Recientemente se incluyó un editor mundial, que agrupa una serie de niveles con condiciones específicas para crear una experiencia similar a SMB3 fusionada con un juego similar a un torneo. El juego es, más importante aún, un tributo a Nintendo y al fangame original Mario War de Samuele Poletto.
El juego utiliza ilustraciones y sonidos de juegos de Nintendo. Esperamos que este fangame no comercial califique como trabajo de uso legítimo. Sólo queríamos crear este juego para mostrar cuánto adoramos los personajes y los juegos de Nintendo.
Puede utilizar administradores de paquetes para obtener estas dependencias:
apt-get install cmake libsdl1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev zlib1g-dev
yum install cmake SDL-devel SDL_image-devel SDL_mixer-devel zlib-devel
pacman -S cmake sdl sdl_image sdl_mixer zlib
pacman -S mingw-w64-x86_64-SDL mingw-w64-x86_64-SDL_image mingw-w64-x86_64-SDL_mixer mingw-w64-x86_64-zlib
Para otros sistemas, puedes descargar los archivos de desarrollo manualmente desde:
Este repositorio contiene algunos submódulos que puede usar si las dependencias no están disponibles para su sistema operativo, están desactualizadas o simplemente no desea instalarlas en su sistema. Para utilizar las bibliotecas incluidas, realice una clonación recursiva:
git clone --recursive https://github.com/mmatyas/supermariowar.git
Alternativamente, también puedes inicializar los submódulos manualmente:
git clone https://github.com/mmatyas/supermariowar.git
cd supermariowar
git submodule update --init
Si prefiere utilizar las bibliotecas del sistema, consulte la sección Configuración de compilación para deshabilitar esta función.
Cree un directorio de compilación y ejecute CMake allí para configurar el proyecto. Luego simplemente llama make
cada vez que quieras construir. En breve:
mkdir build && cd build
cmake ..
make -j4 # -jN = build on N threads
./smw --datadir ../data
Los principales objetivos de construcción para make
son:
Si prefiere trabajar dentro de un IDE (CodeBlocks, Eclipse, ...), también puede generar archivos de proyecto utilizando CMake. Puede encontrar más información en Configuración de compilación.
Para crear paquetes instalables, simplemente ejecute make package
. Esto creará archivos TGZ, DEB y RPM.
Probablemente necesitarás Xcode y sus herramientas de línea de comandos; Puedes instalar SDL y CMake manualmente desde su sitio, o puedes obtenerlos con Homebrew: brew install cmake sdl2 sdl2_image sdl2_mixer
. Luego siga las instrucciones de Linux para compilar SMW.
Si está utilizando MinGW Shell/MSYS o Cygwin, puede seguir la guía de Linux. También puedes generar un archivo de proyecto con CMake para varios IDE, como CodeBlocks, Eclipse o Visual Studio.
Para obtener más detalles, consulte la wiki: Creación en Windows.
Puede crear SMW en dispositivos ARM, como Raspberry Pi, siguiendo las instrucciones de Linux. Si sabe cómo hacerlo, también puede realizar una compilación cruzada de la forma habitual, ya sea configurando una cadena de herramientas cruzada o emulando su dispositivo. Para obtener más detalles, consulte la wiki: Compilación cruzada en ARM.
La configuración de compilación ya contiene algunos indicadores del compilador predeterminados, pero dado que hay muchas combinaciones posibles (hard float, Thumb, NEON, ...), es posible que desee utilizar parámetros personalizados. En este caso, defina las variables CFLAGS y CXXFLAGS y ejecute CMake con la opción DISABLE_DEFAULT_CFLAGS
(consulte Configuración de compilación).
El port de Android utiliza un sistema de compilación diferente; puedes encontrar más detalles aquí.
SMW se puede compilar para ejecutarse en su navegador usando Emscripten. Puede encontrar las instrucciones de construcción en la wiki.
Debería poder portar SMW a cualquier dispositivo donde funcione SDL (ya sea 1.2 o 2.0). Generalmente, esto implica los siguientes pasos:
TODO: expandir esta sección
Puede cambiar la configuración de compilación configurando varios indicadores de CMake. La forma más sencilla de hacerlo es ejecutando cmake-gui ..
desde el directorio Build
. También puede leer una breve descripción de un elemento colocando el mouse sobre su nombre.
Alternativamente, puede pasar estas opciones directamente a CMake como -DFLAGNAME=VALUE
(por ejemplo, cmake .. -DUSE_SDL2_LIBS=1
).
Consulte la documentación en el directorio docs/.