Super Mario War ist ein von Fans erstelltes Multiplayer-Deathmatch-Spiel im Super Mario Bros.-Stil, in dem die Spieler versuchen, einander in verschiedenen Spielmodi zu besiegen. Sie können in Teams spielen, Ihre eigenen Level entwerfen, Ihre eigenen Welten entwerfen und vieles mehr!
Lesen Sie diese Seite in anderen Sprachen: 한국어
Der ursprüngliche Mario War wurde 2002 von Samuele Poletto entwickelt, in dem vier Super Mario-Charaktere auf verschiedenen Ebenen kämpfen konnten, indem sie sich gegenseitig auf den Kopf sprangen. Es wurde in Pascal/Assembly geschrieben und für DOS veröffentlicht. Spätere Versionen enthielten auch einen Karteneditor.
Im Jahr 2004 begann Florian Hufsky , Gründer des 72dpiarmy -Forums, an einer Open-Source-Neufassung zu arbeiten, die zu Super Mario War wurde. Diese Version führte benutzerdefinierte Charaktere, zusätzliche Spielmodi und Kartenmechaniken, Gegenstände und Power-Ups ein. Benutzerdefinierte Benutzerinhalte wurden auf der (inzwischen nicht mehr existierenden) Website smwstuff.com
gespeichert, wobei Tausende von Karten und Skins verfügbar waren. Aufgrund seines Open-Source-Charakters wurde das Spiel auf nahezu jedes Desktop- und Konsolensystem portiert.
Ende 2009 verstarb Florian. Die Entwicklung des Spiels verlangsamte sich und wurde schließlich gestoppt, wobei SMW 1.8 Beta 2 die letzte offizielle Veröffentlichung war. Obwohl es mehrere Versuche gab, die Entwicklung fortzusetzen oder neu zu starten, scheint keiner davon auf lange Sicht erfolgreich gewesen zu sein. Darüber hinaus sind aufgrund technischer Probleme auch die gesamte Website smwstuff.com
und alle ihre Inhalte verloren gegangen, wobei teilweise Backups von den Uploadern im Forum verfügbar waren.
Dies ist ein Fork, an dem ich etwa 2014 mit der Arbeit begonnen habe, mit dem ursprünglichen Ziel, eine Netzwerk-Multiplayer-Unterstützung zu implementieren, die plattformübergreifend zwischen verschiedenen Geräten funktioniert. Ich wollte auch wieder eine Seite erstellen, um die verstreuten Inhalte des Forums an einem Ort zu sammeln. Daraus wurde smwstuff.net
.
Was das Spiel angeht, wurde leider sehr bald klar, dass die Qualität und Struktur des ursprünglichen Quellcodes ein effektives Arbeiten unmöglich machen würde: Die meisten Quelldateien befanden sich in der Kategorie „rund 10.000 Zeilen“, wobei die meisten über 1.000 LOC-Funktionen üblich waren Sie modifizierten globale Variablen, und es gab sogar ein if-else
mit hundert Zweigen.
Letztendlich habe ich es geschafft, den Netzwerk-Mehrspielermodus zum Laufen zu bringen, aber er ist alles andere als perfekt. Unter guten Bedingungen funktioniert es in lokalen Netzwerken vielleicht gut, aber subtile Fehler und Verzögerungen machen das Gameplay über das Internet normalerweise alles andere als optimal. Eine ordnungsgemäße Implementierung würde wahrscheinlich eine Neugestaltung mehrerer Kernteile des Spiels und weitere mehrere hundert Bereinigungs-/Refactoring-Patches erfordern, um den Code wartbar zu machen. Und natürlich besteht bei einem solchen Projekt auch die Möglichkeit, dass man am nächsten Morgen von irgendeinem Unternehmen eine Abmahnung erhält.
Für mich war dies der Punkt, an dem ich aufgehört habe, mehr Zeit in dieses Projekt zu investieren (2016). Langfristig gesehen könnte eine komplette Neufassung schneller und effektiver sein als das jahrelange Patchen des Originalspiels. Wie auch immer, ich hoffe, dass ich das Projekt in einem besseren Zustand verlassen habe, als es war, und dass es für zukünftige Entwickler von Nutzen sein wird. Viel Spaß!
Alte Veröffentlichungen für Mario War und SMW finden Sie hier.
Super Mario War ist ein Super Mario-Multiplayer-Spiel. Das Ziel besteht darin, so viele andere Marios wie möglich zu zertrampeln, um das Spiel zu gewinnen. Es gibt eine Reihe verschiedener Spielmodi im Spiel, wie Capture-The-Flag, King of The Hill, Deathmatch, Team-Deathmatch, Turniermodus, Collect The Coins, Race und viele mehr. Das Spiel enthält außerdem einen Level-Editor, mit dem Sie Ihre eigenen Karten von Grund auf erstellen oder Abschnitte aus Ihrem Lieblings-Mario-Spiel neu erstellen können – Ihrer Fantasie sind keine Grenzen gesetzt! Kürzlich wurde ein Welteditor hinzugefügt, der eine Reihe von Levels mit bestimmten Bedingungen verknüpft, um ein SMB3-ähnliches Erlebnis zu schaffen, das mit einem turnierähnlichen Spiel verbunden ist. Das Spiel ist vor allem eine Hommage an Nintendo und das ursprüngliche Fangame-Spiel Mario War von Samuele Poletto.
Das Spiel verwendet Grafiken und Sounds von Nintendo-Spielen. Wir hoffen, dass dieses nichtkommerzielle Fanspiel als Fair-Use-Arbeit gilt. Wir wollten dieses Spiel nur entwickeln, um zu zeigen, wie sehr wir die Charaktere und Spiele von Nintendo lieben.
Sie können Paketmanager verwenden, um diese Abhängigkeiten abzurufen:
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
Für andere Systeme können Sie die Entwicklungsdateien manuell herunterladen von:
Dieses Repository enthält einige Submodule, die Sie verwenden können, wenn die Abhängigkeiten für Ihr Betriebssystem nicht verfügbar sind, veraltet sind oder Sie sie einfach nicht auf Ihrem System installieren möchten. Um die enthaltenen Bibliotheken zu verwenden, führen Sie ein rekursives Klonen durch:
git clone --recursive https://github.com/mmatyas/supermariowar.git
Alternativ können Sie die Submodule auch manuell initialisieren:
git clone https://github.com/mmatyas/supermariowar.git
cd supermariowar
git submodule update --init
Wenn Sie lieber die Systembibliotheken verwenden möchten, lesen Sie bitte den Abschnitt „Build-Konfiguration“, um diese Funktion zu deaktivieren.
Erstellen Sie ein Build-Verzeichnis und führen Sie dort CMake aus, um das Projekt zu konfigurieren. Dann rufen Sie einfach jedes Mal make
auf, wenn Sie bauen möchten. Zusamenfassend:
mkdir build && cd build
cmake ..
make -j4 # -jN = build on N threads
./smw --datadir ../data
Die wichtigsten Build-Ziele für make
sind:
Wenn Sie lieber innerhalb einer IDE (CodeBlocks, Eclipse, ...) arbeiten möchten, können Sie mit CMake auch Projektdateien dafür generieren. Weitere Informationen finden Sie in der Build-Konfiguration.
Um installierbare Pakete zu erstellen, führen Sie einfach make package
aus. Dadurch werden TGZ-, DEB- und RPM-Archive erstellt.
Sie benötigen wahrscheinlich Xcode und seine Befehlszeilentools. Sie können SDL und CMake manuell von der Website installieren oder sie mit Homebrew herunterladen: brew install cmake sdl2 sdl2_image sdl2_mixer
. Befolgen Sie dann die Linux-Anweisungen, um SMW zu erstellen.
Wenn Sie MinGW Shell/MSYS oder Cygwin verwenden, können Sie der Linux-Anleitung folgen. Sie können mit CMake auch eine Projektdatei für verschiedene IDEs wie CodeBlocks, Eclipse oder Visual Studio generieren.
Weitere Informationen finden Sie im Wiki: Aufbauen unter Windows.
Sie können SMW auf ARM-Geräten wie dem Raspberry Pi erstellen, indem Sie den Linux-Anweisungen folgen. Wenn Sie wissen, wie es geht, können Sie auch auf die übliche Weise Cross-Compilieren, indem Sie entweder eine Cross-Toolchain einrichten oder Ihr Gerät emulieren. Weitere Einzelheiten finden Sie im Wiki: Cross-Compiling zu ARM.
Die Build-Konfiguration enthält bereits einige Standard-Compiler-Flags, aber da es viele mögliche Kombinationen gibt (Hard Float, Thumb, NEON, ...), möchten Sie möglicherweise benutzerdefinierte Parameter verwenden. Definieren Sie in diesem Fall die Variablen CFLAGS und CXXFLAGS und führen Sie CMake mit der Option DISABLE_DEFAULT_CFLAGS
aus (siehe Build-Konfiguration).
Der Android-Port verwendet ein anderes Build-System, weitere Details finden Sie hier.
SMW kann mithilfe von Emscripten so erstellt werden, dass es in Ihrem Browser ausgeführt werden kann. Die Bauanleitung finden Sie im Wiki.
Sie sollten in der Lage sein, SMW auf jedes Gerät zu portieren, auf dem SDL (entweder 1.2 oder 2.0) funktioniert. Im Allgemeinen umfasst dies die folgenden Schritte:
TODO: Erweitern Sie diesen Abschnitt
Sie können die Build-Konfiguration ändern, indem Sie verschiedene CMake-Flags setzen. Der einfachste Weg, dies zu tun, besteht darin, cmake-gui ..
aus dem Build
Verzeichnis auszuführen. Sie können eine kurze Beschreibung eines Elements auch lesen, indem Sie mit der Maus über seinen Namen fahren.
Alternativ können Sie diese Optionen direkt als -DFLAGNAME=VALUE
an CMake übergeben (z. B. cmake .. -DUSE_SDL2_LIBS=1
).
Bitte beachten Sie die Dokumentation im Verzeichnis docs/.