Zod Engine

Bild des Benutzers meldrian

Beschreibung

Die Zod Engine ist ein Remake des Echtzeitstrategieklassikers Z der Bitmap Brothers aus dem Jahr 1996. Man muss mit seiner mehr oder weniger kompetenten Roboterarmee Flaggen und damit Gebiete einnehmen, die dann Einheiten produzieren können. Ziel ist die Zerstörung des Forts des feindlichen Generals.

Das Remake funktioniert unter Windows und Linux. Es ist als Multiplayer-Spiel ausgelegt und erfordert einen lokalen oder Remote-Server. Man kann gegen menschliche Gegner als auch KI-Gegner spielen.

Status

Zod Engines letztes Release für Linux stammt von 2011. ZED Online, welches auf der Zod Engine basiert, wird dagegen aktiv Betreut.

Installation

Vorweg: Etwas umständlich, jedoch prinzipiell einfach.
Leider wird das Projekt nicht mehr aktiv gepflegt, man kann sich allerdings eine funktionierende Version selbst basteln. Dies ist allerdings mit den Jahren immer schwerer geworden.

Um die ausführbare Datei zu bauen, greift man auf einen etwas aktuelleren Fork der Engine zurück oder muss den letzten Snapshot des Zod Engine HG Repo laden. Die binary aus dem fertigen Paket zum Download lässt sich, Stand Mai 2020, unter aktuellen Distributionen weder ausführen noch aus den darin enthaltenen Quelldateien ohne weiteres bauen. Das fertige Paket sollte man aber trotzdem laden um den Launcher zu haben. Dieser ist im Fork und dem Snapshot nicht enthalten.

Für den grafischen Launcher, der den Spielstart sehr vereinfacht, sollte man die letzten Quellen der originalen Portierung Paket herunterladen und die Abhängigkeiten zum selbst kompilieren erfüllen.

Nach dem Laden und Entpacken obiger Dateien besitzt man also mindestens 2 Ordner. Einen der "zod_launcher_src" für den Bau von "zod_launcher" enthält und einen mit "src" der alles wichtige für den Bau der "zod"-binary enthält.

Für Benutzer von Ubuntu sollte folgender Befehl, eingegeben auf der Konsole, Wunder bewirken und alle Abhängigkeiten zum Bau beschaffen:

sudo apt-get install libsdl-image1.2-dev libsdl1.2-dev libsdl-ttf2.0-dev libsdl-mixer1.2-dev libmysqlclient-dev libwxgtk3.0-dev build-essential libwxgtk3.0-0v5

Um den "zod_launcher" selbst bauen zu können, muss man zuvor die in die Jahre gekommene Datei zod_launcherFrm.cpp im Ordner "zod_launcher_src" anpassen. Die dort bereits existierende Textzeile 251 mit dem Inhalt "check.replace(i,1,1,'_');" muss gegen nachfolgenden Abschnitt ersetzt werden:

check.replace(i,1,1, (wxUniChar)'_');

Dies funktioniert ohne weiteres mit jedem herkömmlichen Texteditor und bedarf keiner höheren Berechtigung.
Auf einem Terminal navigiert man in den Ordner "zod_launcher_src" hinein ...

cd /pfad/zu/zod_engine/zod_launcher_src

und setzt dort den Befehl make ab.

make

Bei erfolgreicher Kompilierung erhält man eine neue Datei "zod_launcher" die man später aus dem Ordner zod_launcher_src heraus kopieren sollte um sie mit der Datei "zod" zusammen zu führen.

Um den "zod" zu bauen navigiert man in den weiter oben genannten "src" Ordner ...

cd /pfad/zu/zod_engine/zod_src

und führt den ebenfalls den Befehl zum Bau der ausführbaren Datei aus.

make

Die aus diesem Prozess entstandene Datei "zod" kopiert oder verschiebt man in das darüber liegende Verzeichnis.
Wechselt man auf dem Terminal ebenfalls eine Ebene nach oben, befindet sich also auf der Ebene in der "zod" liegt, kann man das Spiel bereits aus dem Terminal heraus über

./zod

starten.
Minimalisten können auf den Launcher verzichten und ./zod direkt unter Angabe von Optionen aus dem Terminal heraus starten. So startet ...

./zod -l map_list.txt -t red -r 800x484 -b blue

Das Spiel mit der Levelliste des Originals von damals, der Spieler hat die Teamfarbe rot, das Spiel wird in 800x484 Pixeln in einem Fenster ausgeführt und der einzig gesetzte Gegenspieler ist die A.I. (Bot) mit der Farbe blau.

Wer auf Komfort nicht verzichten möchte, der kopiert den weiter oben genannten "zod-launcher" in das gleiche Verzeichnis wie die Datei "zod" und startet seine Gefechte über diese grafische Oberfläche.

Vielen Dank für den heilbringenden Hinweis geht an den User cubic23, der sich scheinbar extra hier auf Holarse angemeldet hat um uns diesen Hinweis in Kommentarform zu hinterlassen
Ebenfalls vielen Dank an @Le_bottin_des_jeux_linux@mastodon.social aus dem Fediverse, der uns im Mai 2020 den entscheidenden Hinweis gegeben hat um diese Anleitung erneut so anzupassen, dass Zod-Engine erneut auf aktuellen Systemen ausführbar wird.

Single Player starten

Wenn der zod-launcher gestartet wurde, klickt man unter "preset settings" auf "Local Game". Dadurch werden alle Einstellungen zum Starten der Einzelspielermissionen angewendet. Enzig den Wert für die Auflösung (Resolution) sowie die darunterliegenden Einstellungen sollte man eines weiteren Blickes würdigen.
Wer seine favorisierten Einstellungen angelegt hat, wirft vor dem Start noch einen letzten Blick auf den Punkt "Launch Game" bzw. "---Command Arguments---". Wenn man den jetzt dort hinterlegten Befehl kopiert und in ein Script oder eine Desktop-Starter verpackt, kann man zukünftig für Singleplayerspiele den Launcher außen vor lassen.

So startet der Befehl

./zod -l map_list.txt -n zlover -t red -r 1024x768 -b blue

den Singleplayer in der Auflösung 1024x768. Der Spieler heisst "zlover" und geladen werden alle Maps der Singleplayerkampagne. über "-b blue" wird der blaue Computergegner hinzugefügt. Das hinzufügen eines andersfarbigen Gegners oder das wechseln der eigenen Farbe ist nicht möglich. Wählt man für sich selbst die Farbe gelb, ist man im anschließenden Spiel nur noch Zuschauer.

Leider ist Speichern, Laden oder das Aufrufen des Menüs noch nicht verfügbar.

K.I.

Ungelogen, Spiele gegen die künstliche Intelligenz sind Knüppelschwer. Ich kann mich noch daran erinnern, dass Z vor langer Zeit nicht wirklich einfach war. Spiele ich die Level heute mit der Zod-Engine nochmal kommen mir die Spiele von damals wie ein Kinderspiel vor. Die Frage ist: Liegt das jetzt an mir oder an der Zod-Engine?

Abzüge gibt es leider auch für die eigenen Einheiten. Zu oft bleiben die Robots neben Granatenboxen, Fahrzeugen oder Flaggen stehen ohne sie aufzunehmen oder zu besetzen. Die Konsequenz: Spielt man unachtsam laufen die eigenen Einheiten an wichtigen Schlüsselpositionen vorbei damit sich Sekunden später der (Computer-)Gegner daran bereichert.

Auffallend anders

Nicht nur die Auflösung hat sich geändert. Im Moment scheint es, gewollt oder nicht, so zu sein das Einheiten an einigen Stellen durch/über Berge und Gebäude schießen können. Ein im Originalspiel von 1996 geschickt platziertes Geschütz hinter einer Steinmauer stellt in der Neuauflage bisher keinen taktischen Vorteil dar. Panzer und Granaten der Fußeinheiten werden einfach durch/über die Wand geworfen. Was bei den Granaten nachvollziehbar ist, widersetzt sich bei geradeaus schießenden Panzern und Flammenwerfer-Bots der Physik.

Spielinhalte verändern

Öffnet die Datei default_settings.txt und verändert die Bauzeit, die Angriffsstärke, die Reichweite, ja sogar die Gruppengröße eurer Einheiten beliebig ab. Schonmal eine schnelle Party mit 10 Mann großen Grunt-Gruppen gespielt?
Achtung1: Sichert die default_settings.txt vorher.
Achtung2: Variablen sollten mit Bedacht angepasst werden. Extreme Werte liefern interessante Ergebnisse, verlieren aber schnell ihren Reiz.

Screenshots und Videos
manuel
Bild des Benutzers manuel
Offline
Beigetreten: 19.05.2008
Beiträge: 245

Hi

Wie kann man den lokal (gegen bots) spielen ? Ein howto wäre nett. Danke

Bei mir hat der launcher immer nix angezeigt (Text) woran liegt das ?

meldrian
Bild des Benutzers meldrian
Offline
Beigetreten: 12.05.2009
Beiträge: 2013

Hi manuel,

alle erforderlichen Abhängigkeiten installiert & in geeigneter Version?
Ich weiß, ist wie unter Win-Systemen die "neuste Treiber?" Frage, meistens überflüssig.
Trotzdem.

Wenn ich die Zeit finde ergänze ich den Artikel heute noch um die gewünschten Infos.
Also ruhig im Laufe des Tages nochmal vorbei schauen.

Edit: Ging schneller als erwartet.

manuel
Bild des Benutzers manuel
Offline
Beigetreten: 19.05.2008
Beiträge: 245

Hi Meldrian,

Danke für die infos. Klar alle libs sind drauf und ich hab auch den neuesten Treiber drauf der in debian sid verfügbar ist.

Ich hab keinen Sound beim spielen und keine Musik. Auserdem geht kein menu auf wenn ich da drauf klicke.

Fehler:

could not load:assets/sounds/music_arctic.ogg
could not load:assets/sounds/music_city.ogg
ZTeam::Could not load palette for the null team:'assets/teams/null_palette.bmp'
map_data_size:14934
could not load:assets/units/vehicles/medium/top_pop_n180.png
could not load:assets/units/vehicles/medium/top_pop_n180.png
could not load:assets/units/vehicles/medium/top_pop_n180.png
could not load:assets/units/vehicles/medium/top_pop_n180.png
could not load:assets/units/vehicles/medium/top_pop_n180.png
could not load:assets/units/vehicles/medium/top_pop_n180.png
could not load:assets/units/vehicles/medium/top_pop_n180.png
could not load:assets/units/vehicles/medium/top_pop_n180.png
graphics loaded

Any help appreciated

meldrian
Bild des Benutzers meldrian
Offline
Beigetreten: 12.05.2009
Beiträge: 2013

Ehm...

NextInMapList::returning 0 'level_orig1.map'
socket connected:127.0.0.1
socket connected:127.0.0.1
socket connected:127.0.0.1
ServerSocket::CheckConnects:client connected:127.0.0.1
socket connected:127.0.0.1
ServerSocket::CheckConnects:client connected:127.0.0.1
map_data_size:14934
could not load:assets/sounds/music_arctic.ogg
could not load:assets/sounds/music_city.ogg
ZTeam::Could not load palette for the null team:'assets/teams/null_palette.bmp'
map_data_size:14934
could not load:assets/units/vehicles/medium/top_pop_n180.png
could not load:assets/units/vehicles/medium/top_pop_n180.png
could not load:assets/units/vehicles/medium/top_pop_n180.png
could not load:assets/units/vehicles/medium/top_pop_n180.png
could not load:assets/units/vehicles/medium/top_pop_n180.png
could not load:assets/units/vehicles/medium/top_pop_n180.png
could not load:assets/units/vehicles/medium/top_pop_n180.png
could not load:assets/units/vehicles/medium/top_pop_n180.png
graphics loaded

Glaub die Meldungen haben nicht soviel zu sagen.
Ich hab Ton. Die Buttons sind, bis auf die unten links, alle noch funktionslos im Moment.

Check mal deine zod_launcher_settings.txt ist da nomusic und nosound auf 1? Nichts für ungut, ich rate nur.

manuel
Bild des Benutzers manuel
Offline
Beigetreten: 19.05.2008
Beiträge: 245

Hi

Nee die nomusic und nosound sind auf 0.

Die KI ist ja echt schwer....

meldrian
Bild des Benutzers meldrian
Offline
Beigetreten: 12.05.2009
Beiträge: 2013

Die mitgelieferten ausführbaren Dateien "zod" und "zod_launcher" funktionieren unter aktuellen Distributionen (Ubuntu 14.04+) nicht mehr, da sie gegen mittlerweile nicht mehr vorhandene Bibliotheken gebaut wurden.
Navigiert man in den Ordner "zod_src" bzw. "zod_launcher_src" kann man dort via "make" neue ausführbare Dateien erstellen, welche gegen die installierten neueren Bibliotheken gelinkt werden.

In einem Testfall funktioniert dies mit dem Quellcode unter "zod_src", jedoch nicht mit dem unter "zod_launcher_src". Meldung

michael@Ubuntu1604v:~/projekte/zod_engine/zod_launcher_src$ make
g++ -g -o zod_launcher *.cpp `wx-config --cppflags` `wx-config --libs`
common.cpp: In function ‘void COMMON::print_dump(char*, int, char*)’:
common.cpp:145:30: warning: '0' flag ignored with precision and ‘%x’ gnu_printf format [-Wformat=]
   printf("%0.2x ", message[i]);
                              ^
zod_launcherFrm.cpp: In member function ‘void zod_launcherFrm::ResetCommandLine()’:
zod_launcherFrm.cpp:251:33: error: call of overloaded ‘replace(unsigned int&, int, int, char)’ is ambiguous
          check.replace(i,1,1,'_');
                                 ^
In file included from /usr/include/wx-3.0/wx/memory.h:15:0,
                 from /usr/include/wx-3.0/wx/object.h:19,
                 from /usr/include/wx-3.0/wx/wx.h:15,
                 from zod_launcherFrm.h:19,
                 from zod_launcherFrm.cpp:11:
/usr/include/wx-3.0/wx/string.h:2913:13: note: candidate: wxString& wxString::replace(size_t, size_t, size_t, wxUniChar)
   wxString& replace(size_t nStart, size_t nLen, size_t nCount, wxUniChar ch)
             ^
/usr/include/wx-3.0/wx/string.h:2977:13: note: candidate: wxString& wxString::replace(size_t, size_t, const wxString&, size_t)
   wxString& replace(size_t nStart, size_t nLen,
             ^
makefile:2: die Regel für Ziel „default“ scheiterte
make: *** [default] Fehler 1

Schade. Ich vermute, dass es mit dem Umstieg von wx28 auf wx30 zu tun hat (habe aber diesbezüglich wenig bis keine Ahnung).

cubic23
Bild des Benutzers cubic23
Offline
Beigetreten: 07.03.2017
Beiträge: 1

Hallo,

das Problem ist in der Tat durch die neue Version wx3.0 entstanden, kann aber sehr einfach behoben werden:
Zeile 251 der Datei zod_launcherFrm.cpp mit check.replace(i,1,1, (wxUniChar)'_'); ersetzen, dann kompiliert der Launcher wieder.

Die Pakete (z.B. für Ubuntu 16.04) sind nun über den folgenden Befehl zu installieren: sudo apt-get install libsdl-image1.2-dev libsdl1.2-dev libsdl-ttf2.0-dev libsdl-mixer1.2-dev libmysqlclient-dev libwxgtk3.0-dev

meldrian
Bild des Benutzers meldrian
Offline
Beigetreten: 12.05.2009
Beiträge: 2013

GETESTET und für GUT befunden! (Ubuntu 1604-64bit)
Vielen Dank für diesen hochqualitativen Input.
Wird direkt von mir in den Artikel eingepflegt!

matthias.d
Bild des Benutzers matthias.d
Offline
Beigetreten: 15.09.2018
Beiträge: 1

Hallo, das Kompilieren klappt leider nicht. Ich bekomme die gleiche Fehlermeldung trotz ersetzen der Zeile 251 in der Datei zod_launcherFrm.cpp mit check.replace(i,1,1, (wxUniChar)'_');

Das anschließende make gibt folgendes aus:
g++ -g -o zod_launcher *.cpp `wx-config --cppflags` `wx-config --libs`
common.cpp: In function ‘void COMMON::print_dump(char*, int, char*)’:
common.cpp:145:30: warning: '0' flag ignored with precision and ‘%x’ gnu_printf format [-Wformat=]
printf("%0.2x ", message[i]);

                 ^ 
                                            

Auch die oben genannten Pakete habe ich installiert (sudo apt-get install libsdl-image1.2-dev libsdl1.2-dev libsdl-ttf2.0-dev libsdl-mixer1.2-dev libmysqlclient-dev libwxgtk3.0-dev)

Mein System: Kubuntu 18.04 Linux 4.15.0-34-generic #37-Ubuntu SMP Mon Aug 27 15:21:48 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Schade, ich hatte gehofft alte Erinnerungen wiederaufleben zu können ;-)
Vielleicht kann jemand helfen (der sich mit Kompilieren auskennt)

Danke sehr im Voraus

comrad
Bild des Benutzers comrad
Offline
Beigetreten: 13.05.2008
Beiträge: 5659

Welches Release hast du genau genommen? Ich hab den Quellcode aus dem Repository ausgecheckt und es lässt sich damit kompilieren, der Launcher scheint da aber nicht bei zu sein.

Mastodon