Super Mario War — это созданная фанатами многопользовательская игра о смертельном бое в стиле Super Mario Bros., в которой игроки пытаются победить друг друга в различных игровых режимах. Вы можете играть в командах, создавать свои собственные уровни, создавать свои миры и многое другое!
Читать эту страницу на других языках: 한국어
Оригинальная игра Mario War была создана Самуэле Полетто в 2002 году, в которой четыре персонажа Super Mario могли сражаться на разных уровнях, прыгая друг другу на головы. Он был написан на Паскале/Ассемблее и выпущен для DOS. Более поздние версии также включали редактор карт.
В 2004 году Флориан Хуфски , основатель форума 72dpiarmy , начал работу над перезаписью с открытым исходным кодом, которая стала Super Mario War . В этой версии представлены собственные персонажи, дополнительные режимы игры и механика карты, предметы и бонусы. Пользовательский контент хранился на (ныне несуществующем) сайте smwstuff.com
, где были доступны тысячи карт и скинов. Благодаря открытому исходному коду игра была портирована практически на все настольные и консольные системы.
В конце 2009 года Флориан умер. Разработка игры замедлилась и в конечном итоге остановилась, и последней официальной версией стала SMW 1.8 beta 2. Хотя было предпринято несколько попыток продолжить или возобновить разработку, ни одна из них, похоже, не увенчалась успехом в долгосрочной перспективе. Кроме того, из-за технических проблем весь сайт smwstuff.com
и все его содержимое также были утеряны, при этом на форуме доступны частичные резервные копии от загрузчиков.
Это форк, над которым я начал работать примерно в 2014 году, с первоначальной целью реализовать поддержку сетевого многопользовательского режима, который будет работать кроссплатформенно между различными устройствами. Еще мне захотелось сделать сайт для сбора разрозненного контента с форума в одном месте еще раз. Это стало smwstuff.net
.
Что касается игры, то, к сожалению, очень скоро стало ясно, что качество и структура исходного кода делают эффективную работу невозможной: большинство исходных файлов относятся к категории «около 10000 строк», при этом обычным является более 1000 LOC-функций, большинство из которых они модифицировали глобальные переменные, и был даже if-else
с сотней ветвей.
В конце концов мне удалось заставить работать сетевой мультиплеер, но он далек от совершенства. При хороших условиях в локальных сетях может работать нормально, но мелкие ошибки и лаги обычно делают игровой процесс через интернет далеко не оптимальным. Правильная реализация, вероятно, потребует перепроектирования нескольких основных частей игры и еще нескольких сотен патчей очистки/рефакторинга, чтобы сделать код пригодным для сопровождения. И, конечно же, в случае такого рода проекта есть шанс, что на следующее утро вы получите письмо о прекращении противоправных действий от какой-либо компании.
Для меня это был момент, когда я перестал уделять этому проекту больше времени (2016). В долгосрочной перспективе полное переписывание может быть быстрее и эффективнее, чем годами исправлять оригинальную игру. В любом случае, я надеюсь, что оставил проект в лучшем состоянии, чем он был, и что он будет полезен будущим разработчикам. Веселиться!
Старые выпуски Mario War и SMW можно найти здесь.
Super Mario War — многопользовательская игра в жанре Super Mario. Цель состоит в том, чтобы растоптать как можно больше других Марио и выиграть игру. В игре существует множество различных режимов игрового процесса, таких как «Захват флага», «Царь горы», «Бой насмерть», «Командный бой насмерть», «Режим турнира», «Собрать монеты», «Гонка» и многие другие. В игру также входит редактор уровней, который позволяет вам создавать собственные карты с нуля или воссоздавать разделы из вашей любимой игры про Марио. Ваше воображение — предел! Недавно был добавлен редактор мира, который объединяет несколько уровней с заданными условиями для создания опыта, подобного SMB3, совмещенного с турнирной игрой. Что еще более важно, игра является данью уважения Nintendo и оригинальной фан-игре Mario War от Сэмюэле Полетто.
В игре используются иллюстрации и звуки из игр Nintendo. Мы надеемся, что эта некоммерческая фан-игра будет квалифицироваться как произведение добросовестного использования. Мы просто хотели создать эту игру, чтобы показать, насколько мы обожаем персонажей и игры Nintendo.
Вы можете использовать менеджеры пакетов для получения этих зависимостей:
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.
Более подробную информацию можно найти в вики: Сборка на базе Windows.
Вы можете собрать SMW на устройствах ARM, таких как Raspberry Pi, следуя инструкциям Linux. Если вы знаете, как это сделать, вы также можете выполнить кросс-компиляцию обычным способом, настроив кросс-инструментарий или эмулируя ваше устройство. Более подробную информацию можно найти в вики: Кросс-компиляция в ARM.
Конфигурация сборки уже содержит некоторые флаги компилятора по умолчанию, но поскольку существует множество возможных комбинаций (hard float, Thumb, NEON,...), вы можете захотеть использовать собственные параметры. В этом случае определите переменные CFLAGS и CXXFLAGS и запустите CMake с параметром DISABLE_DEFAULT_CFLAGS
(см. Конфигурацию сборки).
Порт Android использует другую систему сборки, более подробную информацию можно найти здесь.
SMW можно собрать для запуска в вашем браузере с помощью Emscripten. Инструкции по сборке вы можете найти в Wiki.
У вас должна быть возможность портировать SMW на любое устройство, где работает SDL (1.2 или 2.0). Как правило, это включает в себя следующие шаги:
ЗАДАЧА: развернуть этот раздел
Вы можете изменить конфигурацию сборки, установив различные флаги CMake. Самый простой способ сделать это — запустить cmake-gui ..
из каталога Build
. Краткое описание элемента вы также можете прочитать, наведя указатель мыши на его название.
Альтернативно вы можете передать эти параметры непосредственно в CMake как -DFLAGNAME=VALUE
(например, cmake .. -DUSE_SDL2_LIBS=1
).
См. документацию в каталоге docs/.