Zod Engine

Bild des Benutzers meldrian

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.

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.

Das Paket herunterladen und die Abhängigkeiten zum selbst kompilieren erfüllen.
Für Benutzer von Ubuntu sollte folgender Befehl, eingegeben auf der Konsole, Wunder bewirken:

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

Um nun "zod" und den "zod_launcher" selbst bauen zu können, muss man zuvor die Datei zod_launcherFrm.cpp im Ordner "zod_launcher_src" anpassen. Die dort bereits existierende Textzeile 251 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.
Nun navigiert man über ein Terminal in den selbigen Ordner 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 nun aus dem Ordner zod_launcher_src heraus in das darüber liegende Verzeichnis "zod_engine" kopiert/verschiebt. Hierbei ersetzt man die nicht mehr funktionale Datei. Das gleiche Verfahren führt man nochmal für die eigentliche Spieldatei durch.

cd /pfad/zu/zod_engine/zod_src
make

auch hier muss die daraus entstehende Datei "zod" in das darüberliegende Verzeichnis "zod_engine" kopiert/verschoben und die bereits existierende Datei ersetzt werden.

Im Anschluss sollte man das Spiel über "zod-launcher" starten können.

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

Bei Fragen rund um die Zod-Engine wird der Gang zum Forum auf zod.sourceforge.net nahe gelegt.

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: 1612

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: 1612

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: 1612

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: 1612

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: 3934

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.