Super Mario War é um jogo deathmatch multijogador feito por fãs no estilo Super Mario Bros., no qual os jogadores tentam derrotar uns aos outros em uma variedade de modos de jogo. Você pode jogar em equipes, criar seus próprios níveis, criar seus próprios mundos e muito mais!
Leia esta página em outros idiomas: 한국어
O Mario War original foi criado por Samuele Poletto em 2002, no qual quatro personagens do Super Mario podiam lutar em vários níveis pulando na cabeça um do outro. Foi escrito em Pascal/Assembly e lançado para DOS. Versões posteriores também incluíram um editor de mapas.
Em 2004, Florian Hufsky , fundador do fórum 72dpiarmy começou a trabalhar em uma reescrita de código aberto, que se tornou Super Mario War . Esta versão introduziu personagens personalizados, modos de jogo adicionais e mecânica de mapas, itens e upgrades. O conteúdo personalizado do usuário foi armazenado no (agora extinto) site smwstuff.com
, com milhares de mapas e skins disponíveis. Devido à sua natureza de código aberto, o jogo foi portado para praticamente todos os sistemas de desktop e console.
No final de 2009, Florian faleceu. O desenvolvimento do jogo desacelerou e acabou parando, sendo SMW 1.8 beta 2 o último lançamento oficial. Embora tenham havido várias tentativas de continuar ou reiniciar o desenvolvimento, nenhuma delas parece ter tido sucesso a longo prazo. Além disso, devido a problemas técnicos, todo o site smwstuff.com
e todo o seu conteúdo também foram perdidos, com backups parciais dos uploaders disponíveis no fórum.
Este é um fork no qual comecei a trabalhar por volta de 2014, com o objetivo inicial de implementar suporte multijogador em rede que funcionasse em várias plataformas entre diferentes dispositivos. Eu também queria criar um site para coletar o conteúdo disperso do fórum em um só lugar, mais uma vez. Isso se tornou smwstuff.net
.
Quanto ao jogo, infelizmente ficou claro muito em breve que a qualidade e a estrutura do código-fonte original tornarão impossível um trabalho eficaz: a maioria dos arquivos-fonte estavam na categoria "cerca de 10.000 linhas", sendo comuns mais de 1.000 funções LOC, a maioria das eles modificando variáveis globais, e havia até um if-else
com cem ramificações.
Eventualmente consegui fazer o multiplayer em rede funcionar, mas está longe de ser perfeito. Com boas condições, em redes locais pode funcionar bem, mas bugs sutis e lag geralmente tornam a jogabilidade na internet longe do ideal. Uma implementação adequada provavelmente exigiria um redesenho de várias partes principais do jogo e outras centenas de patches de limpeza/refatoração para tornar o código sustentável. E, com esse tipo de projeto, é claro, também há uma chance de que na manhã seguinte você receba uma carta de cessação e desistência de qualquer empresa.
Para mim, foi neste ponto que deixei de dedicar mais tempo a este projeto (2016). No longo prazo, uma reescrita completa pode ser mais rápida e eficaz do que corrigir o jogo original durante anos. De qualquer forma, espero ter deixado o projeto em melhor estado do que estava e que seja útil para futuros desenvolvedores. Divirta-se!
Lançamentos antigos de Mario War e SMW podem ser encontrados aqui.
Super Mario War é um jogo multijogador do Super Mario. O objetivo é pisar no maior número possível de outros Marios para vencer o jogo. Há uma variedade de modos de jogo diferentes no jogo, como Capture-The-Flag, King of The Hill, Deathmatch, Team Deathmatch, Tournament Mode, Collect The Coins, Race e muitos mais. O jogo também inclui um editor de níveis que permite criar seus próprios mapas do zero ou recriar seções do seu jogo Mario favorito. Sua imaginação é o limite! Recentemente incluído está um editor de mundo, que agrupa vários níveis com condições específicas para criar uma experiência semelhante ao SMB3 mesclada com um jogo semelhante a um torneio. O jogo é, mais importante, uma homenagem à Nintendo e ao fangame original Mario War, de Samuele Poletto.
O jogo usa arte e sons de jogos da Nintendo. Esperamos que este fangame não comercial seja qualificado como trabalho de uso justo. Queríamos apenas criar este jogo para mostrar o quanto adoramos os personagens e jogos da Nintendo.
Você pode usar gerenciadores de pacotes para obter estas dependências:
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 outros sistemas, você pode baixar os arquivos de desenvolvimento manualmente em:
Este repositório contém alguns submódulos que você pode usar se as dependências não estiverem disponíveis para o seu sistema operacional, estiverem desatualizadas ou você simplesmente não quiser instalá-las no seu sistema. Para usar as bibliotecas incluídas, faça uma clonagem recursiva:
git clone --recursive https://github.com/mmatyas/supermariowar.git
Alternativamente, você também pode inicializar os submódulos manualmente:
git clone https://github.com/mmatyas/supermariowar.git
cd supermariowar
git submodule update --init
Se você preferir usar as bibliotecas do sistema, consulte a seção Configuração de compilação para desabilitar esse recurso.
Crie um diretório de construção e execute o CMake lá para configurar o projeto. Em seguida, basta chamar make
toda vez que quiser construir. Resumidamente:
mkdir build && cd build
cmake ..
make -j4 # -jN = build on N threads
./smw --datadir ../data
Os principais alvos de construção do make
são:
Se preferir trabalhar dentro de um IDE (CodeBlocks, Eclipse, ...), você também pode gerar arquivos de projeto para ele usando o CMake. Você pode encontrar mais informações em Configuração do Build.
Para criar pacotes instaláveis, basta executar make package
. Isso criará arquivos TGZ, DEB e RPM.
Você provavelmente precisará do Xcode e de suas ferramentas de linha de comando; você pode instalar o SDL e o CMake manualmente em seu site ou obtê-los com o Homebrew: brew install cmake sdl2 sdl2_image sdl2_mixer
. Em seguida, siga as instruções do Linux para construir o SMW.
Se estiver usando MinGW Shell/MSYS ou Cygwin, você pode seguir o guia do Linux. Você também pode gerar um arquivo de projeto com CMake para vários IDEs, como CodeBlocks, Eclipse ou Visual Studio.
Para obter mais detalhes, consulte o wiki: Construindo no Windows.
Você pode construir SMW em dispositivos ARM, como o Raspberry Pi, seguindo as instruções do Linux. Se você souber como fazer isso, também poderá fazer a compilação cruzada da maneira usual, configurando uma cadeia de ferramentas cruzada ou emulando seu dispositivo. Para obter mais detalhes, consulte o wiki: Compilação cruzada para ARM.
A configuração de compilação já contém alguns sinalizadores de compilador padrão, mas como existem muitas combinações possíveis (hard float, Thumb, NEON, ...), você pode querer usar parâmetros personalizados. Neste caso, defina as vars CFLAGS e CXXFLAGS e execute o CMake com a opção DISABLE_DEFAULT_CFLAGS
(consulte Configuração de compilação).
A versão Android usa um sistema de compilação diferente, você pode encontrar mais detalhes aqui.
O SMW pode ser construído para rodar em seu navegador usando Emscripten. Você pode encontrar as instruções de construção no wiki.
Você deve ser capaz de portar o SMW para qualquer dispositivo onde o SDL (1.2 ou 2.0) funcione. Geralmente, isso envolve as seguintes etapas:
TODO: expanda esta seção
Você pode alterar a configuração de compilação definindo vários sinalizadores CMake. A maneira mais simples de fazer isso é executando cmake-gui ..
no diretório Build
. Você também pode ler uma breve descrição de um elemento passando o mouse sobre seu nome.
Alternativamente, você pode passar essas opções diretamente para o CMake como -DFLAGNAME=VALUE
(por exemplo, cmake .. -DUSE_SDL2_LIBS=1
).
Por favor, consulte a documentação no diretório docs/.