《超级马里奥战争》是一款由粉丝制作的多人《超级马里奥兄弟》风格的死亡竞赛游戏,玩家尝试在多种游戏模式中互相击败。您可以团队合作、设计自己的关卡、设计自己的世界等等!
阅读此页面的其他语言版本:한국어
最初的《马里奥战争》是由Samuele Poletto于 2002 年创作的,其中四个超级马里奥角色可以通过跳到对方的头上来进行不同级别的战斗。它是用 Pascal/Assembly 编写的,并针对 DOS 发布。后来的版本还包括地图编辑器。
2004 年, 72dpiarmy论坛的创始人Florian Hufsky开始进行开源重写,后来成为《超级马里奥战争》。该版本引入了自定义角色、额外的游戏模式和地图机制、物品和道具。自定义用户内容存储在(现已不存在的) smwstuff.com
网站上,其中包含数千张地图和皮肤。由于其开源性质,该游戏已被移植到几乎所有桌面和控制台系统。
2009年底,弗洛里安去世。游戏的开发速度减慢并最终停止,SMW 1.8 beta 2 是最后一个正式版本。尽管已经多次尝试继续或重新启动开发,但从长远来看,似乎没有一个成功。此外,由于技术问题,整个smwstuff.com
网站及其所有内容也丢失了,论坛上的上传者提供了部分备份。
这是我在 2014 年左右开始开发的一个分支,最初的目标是实现可以在不同设备之间跨平台运行的网络多人游戏支持。我还想做一个网站,将论坛中分散的内容再次收集到一个地方。这变成了smwstuff.net
。
至于游戏,不幸的是,我们很快就发现原始源代码的质量和结构将导致有效的工作变得不可能:大多数源文件都属于“大约 10000 行”类别,其中 1000 多个 LOC 函数很常见,其中大多数他们修改全局变量,甚至还有一个有一百个分支的if-else
。
最终我成功地使网络多人游戏正常运行,但它还远非完美。在良好的条件下,它在本地网络上可能运行良好,但细微的错误和延迟通常会使互联网上的游戏玩法远非最佳。正确的实现可能需要重新设计游戏的几个核心部分以及另外数百个清理/重构补丁以使代码可维护。当然,对于此类项目,第二天早上您也有可能收到来自任何公司的停止函。
对我来说,从那时起我就不再在这个项目上投入更多时间了(2016 年)。从长远来看,完全重写可能比多年来修补原始游戏更快、更有效。无论哪种方式,我希望我已经让项目处于比以前更好的状态,并且它将对未来的开发人员有用。玩得开心!
可以在此处找到《马里奥战争》和《SMW》的旧版本。
《超级马里奥战争》是一款超级马里奥多人游戏。我们的目标是踩踏尽可能多的其他马里奥来赢得比赛。游戏中有一系列不同的游戏模式,如夺旗、山丘之王、死亡竞赛、团队死亡竞赛、锦标赛模式、收集金币、竞赛等等。该游戏还包括一个关卡编辑器,可让您从头开始创建自己的地图,或重新创建您最喜欢的马里奥游戏中的部分,您的想象力是极限!最近添加了一个世界编辑器,它可以将一系列具有指定条件的关卡串联起来,以创建类似 SMB3 的体验,并融合锦标赛般的游戏体验。更重要的是,这款游戏是对任天堂和 Samuele Poletto 的原创同人游戏《马里奥战争》的致敬。
该游戏使用任天堂游戏的美术作品和声音。我们希望这款非商业同人游戏符合合理使用作品的资格。我们只是想制作这款游戏来展示我们对任天堂的角色和游戏的喜爱程度。
您可以使用包管理器来获取这些依赖项:
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
对于其他系统,您可以从以下位置手动下载开发文件:
此存储库包含一些子模块,如果依赖项不适用于您的操作系统、已过时或者您只是不想将它们安装在系统上,您可以使用这些子模块。要使用包含的库,请进行递归克隆:
git clone --recursive https://github.com/mmatyas/supermariowar.git
或者,您也可以手动初始化子模块:
git clone https://github.com/mmatyas/supermariowar.git
cd supermariowar
git submodule update --init
如果您更愿意使用系统库,请参阅构建配置部分以禁用此功能。
创建一个构建目录并在其中运行 CMake 来配置项目。然后每次你想要构建时只需调用make
即可。简而言之:
mkdir build && cd build
cmake ..
make -j4 # -jN = build on N threads
./smw --datadir ../data
make
的主要构建目标是:
如果您喜欢在 IDE(CodeBlocks、Eclipse...)中工作,您还可以使用 CMake 为其生成项目文件。您可以在构建配置中找到更多信息。
要创建可安装的包,只需运行make package
即可。这将创建 TGZ、DEB 和 RPM 档案。
您可能需要 Xcode 及其命令行工具;您可以从其站点手动安装 SDL 和 CMake,也可以使用 Homebrew 获取它们: brew install cmake sdl2 sdl2_image sdl2_mixer
。然后按照 Linux 说明构建 SMW。
如果您使用 MinGW Shell/MSYS 或 Cygwin,则可以遵循 Linux 指南。您还可以使用 CMake 为各种 IDE(例如 CodeBlocks、Eclipse 或 Visual Studio)生成项目文件。
有关更多详细信息,请参阅 wiki:Building on Windows。
您可以按照 Linux 说明在 ARM 设备(例如 Raspberry Pi)上构建 SMW。如果您知道如何做到这一点,您还可以通过通常的方式进行交叉编译,通过设置交叉工具链或模拟您的设备。有关更多详细信息,请参阅 wiki:交叉编译到 ARM。
构建配置已包含一些默认编译器标志,但由于有许多可能的组合(硬浮点、Thumb、NEON,...),您可能需要使用自定义参数。在这种情况下,定义 CFLAGS 和 CXXFLAGS 变量,并使用DISABLE_DEFAULT_CFLAGS
选项运行 CMake(请参阅构建配置)。
Android 端口使用不同的构建系统,您可以在此处找到更多详细信息。
可以使用 Emscripten 构建 SMW 以在浏览器中运行。您可以在 wiki 中找到构建说明。
您应该能够将 SMW 移植到任何支持 SDL(1.2 或 2.0)的设备。一般来说,这涉及以下步骤:
TODO:展开此部分
您可以通过设置各种 CMake 标志来更改构建配置。最简单的方法是从Build
目录运行cmake-gui ..
。您也可以通过将鼠标悬停在元素名称上来阅读元素的简短描述。
或者,您可以将这些选项作为-DFLAGNAME=VALUE
直接传递给 CMake(例如cmake .. -DUSE_SDL2_LIBS=1
)。
请参阅 docs/ 目录中的文档。