Level-/Karteneditor für Historyline 1914-18

  • ich komme gerade zeitlich absolut nicht dazu dir ein kleines Qt Beispiel zu bauen aber hier ist eine kleine Game of Life implemntierung gefunden die einen Überblick verschaffen sollte:


    GitHub - sgelb/gameoflife: Conway's Game of Life, using C++ and QT5
    Conway's Game of Life, using C++ and QT5. Contribute to sgelb/gameoflife development by creating an account on GitHub.
    github.com



    am einfachsten Qt von https://www.qt.io/download-qt-installer-oss installieren


    den Qt Maintainer benutzen um Qt + QtCreator (Qt eigene C++ IDE) zu installieren (der macht auch Updates usw.), brauchst einen Account bei Qt (frei für privat und Open Source)

    dann einfach die .pro-Datei im QtCreator öffnen



    das kann man auch problemlos mit VStudio und CMake machen - wenn man weiß wie - ich versuche das am Wochenende mal vorzubereiten

  • 1. Sollen die neuen Karten eigene Levelcodes erhalten oder sollen die bisherigen Karten ersetzt werden? Es ist wahrscheinlich einfacher, die bisherigen Karten zu ersetzen.

    Dazu habe ich mir auch gerade erst wieder Gedanken gemacht und ein bisschen in den Spieldateien gestöbert. Wer hat Lust, sich mal die CODES.DAT genauer anzusehen? :D

    Da scheinen nämlich die Levelcodes in verschlüsselter Form drin zu stehen und sogar noch ein paar Infos mehr. Es scheinen 10 Byte Abschnitte zu sein (die Datei ist entpackt genau 720 Byte groß und es gibt 72 Karten...) Da die Codes aber nur 5 Zeichen lang sind, steht hier mit etwas Glück auch, welche Kartendatei damit geladen werden soll und ob die Sommer- oder Wintergrafik verwendet wird


    So sieht die (entpackte) Datei im Hex-Editor aus:

    Nur wie kommt man von "%∟#§" zu "PULSE"?


    2. Wie sieht es mit den "Strategieanweisungen" der KI aus. Gibt es hier schon weitere Erkenntnisse? (Ich weiß das ist ein Thema für später, wenn der Editor funktionsfähig ist)

    Bisher leider nicht. Es ist ja auch nur eine Theorie, dass die *.COM Dateien im MAP Ordner Daten für den Computergegner enthalten. Leider ist das ja schwer festzumachen, denn es ist ja nicht so, dass der Computer bei den Kampagnen-Karten eindeutig intelligenter vorgehen würde (auch wenn er bei manchen 2-Spieler-Karten total versagt). Du kannst ja mal Dateien austauschen, zum Beispiel die 00.COM mit der 47.COM , und vergleichen, ob der Computergegener dadurch dann andere Züge macht/anders vorgeht, als vor dem Dateitausch.

    3. Kann man die erwähnten "fehlenden" Einheiten, die von Bluebyte nicht verwirklicht wurden, vielleicht im Editor ergänzen? Ich dachte da z.B. an einen Zeppelin (verbesserter Ballon, der kämpfen kann) oder an einen Kreuzer (als Seekampfeinheit zwischen Zerstörer und Schlachtschiff), oder ggf. auch ein zweites Uboot.

    Hier muss ich meine ursprüngliche Annahme, dass da Einheiten fehlen, korrigieren. Das schien erst so, aber es liegt einfach daran, dass es ja Einheiten gibt, die zwei Felder belegen. Für die braucht es ja zwei Grafiken und daher auch zwei Nummern. Da das Spiel aber zum Beispiel ein Schiff nur zeichnet, wenn die erste Nummer in der Karte steht, schien es erstmal so, als ob da Einheitengrafiken fehlen.


    4. Gibt es schon Ideen, wo wir die vielen fertige Karten sammeln, um diese der Fangemeinde zugänglich zu machen?


    Mach mal einen Vorschlag :)

    Schön wäre ja auch ein (zusätzlicher) Thread hier im Forum dafür, wo man seine Karte vorstellen und dazu schreiben kann, was man sich dabei so gedacht hat :)

    Meine DOS-Rechner:

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR 24 und SB 16 ( CT2770 ) + TNDY

    "Frankenstein" Pentium II mit 266 MHz, Elsa Winner 1000 TrioV + Voodoo I, SB 16 (CT2290) + Yamaha DB50XG


    Von mir geschriebene DOS-Programme gibt es hier.

    Einmal editiert, zuletzt von Dragonsphere ()

  • Jetzt habe ich es mir nach dem Post hier nochmal angeguckt und den Code sogar noch vor Ende meiner Mittagspause geknackt: :)


    "A" ist 0x11 (17 dezimal) und dann geht es einfach weiter bis 0x30 (42) für "Z".

    Und schon kommt man auf "20 25 1C 23 15" für "PULSE".

    Meine DOS-Rechner:

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR 24 und SB 16 ( CT2770 ) + TNDY

    "Frankenstein" Pentium II mit 266 MHz, Elsa Winner 1000 TrioV + Voodoo I, SB 16 (CT2290) + Yamaha DB50XG


    Von mir geschriebene DOS-Programme gibt es hier.

  • Ich habe grad auf https://www.mobygames.com/game/5815/the-great-war-1914-1918/ Credits zur DOS-Version gefunden


    Production: Blue Byte

    Production Lead: Lothar Schmitt

    Programmer: Ralf Jürgen Kraft; Bernhard Ewers; Thomas Häuser

    Design: Ralf Jürgen Kraft; Bernhard Ewers; Thomas Häuser

    Graphic: Janos Tóth

    Layout and Animation: Thorsten Kneisel

    Unit Selection: Thomas Hertzler

    Level Design: Janos Tóth; Christoph Werner; Thorsten Kneisel

    Music Programming: Oliver König

    Music: Haiko Ruttmann

    Setting: Haiko Ruttmann


    Vieeleicht kennt ja jemand zufällig einen der Herren und kann hier zweckdienliche Fragen stellen :)

  • Zitat

    Vieeleicht kennt ja jemand zufällig einen der Herren

    bisher kommen wir ja ganz gut ohne aus :)


    Anekdote von mir: Ich hab mal probiert den Engine-Entwickler von Gothic 1 oder 2 zu kontaktieren - hat damals vor Jahren nicht funktioniert, leider keine Reaktion auf meine eMails


    10 Jahre später hatte ich dann bei einem Kunden ein Projekt und einen anderen externen Entwickler als Projektpartner, nur Remote per eMail/Teams

    nach einer Weile ist mir eingefallen warum mir sein Name so bekannt vor kam - und ja er war es :)

  • Jetzt habe ich es mir nach dem Post hier nochmal angeguckt und den Code sogar noch vor Ende meiner Mittagspause geknackt: :)


    "A" ist 0x11 (17 dezimal) und dann geht es einfach weiter bis 0x30 (42) für "Z".

    Und schon kommt man auf "20 25 1C 23 15" für "PULSE".

    Keine Military-Level Verschlüsselung ist vor dir sicher :)

  • ich hab das Game of Life Beispiel mal nur mit CMake+VS2022 ohne QtCreator gebaut

    am einfachsten Qt von https://www.qt.io/download-qt-installer-oss installieren

    also in der C:\Qt\MaintenanceTool.exe folgende Optionen zum installieren - du brauchst nur die paar sonst hast du nacher 60GB auf der Platte für tausend Sachen die man nicht braucht

    unter Linux oder Mac kann man das alles mit den Distro Bordmitteln machen - läuft so out of the box mit Ubuntu, Fedora und Suse (kein Problem wenn es dann soweit ist)



    dann bräuchtest du noch cmake - damit man mit dem VStudio, QtCreator, VisualStudio Code Projekte erzeugen, oder in der Konsole mit mingw oder linux gcc/clang arbeiten kann (was man eben möchte)


    Download | CMake



    CMake muss nicht installiert werden - man kann auch enfach die Zip-Datei irgendwo entpacken und beim erzeugen die entsprechende CMake.exe angeben (oder das CMake GUI starten)


    ich hab dann basierend auf diesem Qt CMake Tutorial: https://doc.qt.io/qt-5/cmake-get-started.html

    eine CMakeLists.txt erstellt mit der man das game of life Beispiel bauen kann


    meine CMakeLists.txt - so eine Art Studio Solution Beschreibung nur eben für viele IDEs/Compiler - CMake ist nicht perfekt aber das am stärksten sich durchsetzende Build-System


    CMakeLists.txt


    dann einfach z.B. in d:\temp


    eine


    qt_test Ordner anlegen

    in diesen https://github.com/sgelb/gameoflife.git clonen

    meine CMakeLists.txt in den gameoflife Ordner kopieren

    und noch einen __build Ordner in qt_test anlegen (wir bauen nicht inmitten unsere Quellen sondern machen ein Out-of-Source-Build damit unser Source-Code Baum sauber bleibt)


    also so



    der CMake aufruf sollte bei dir so aussehen:


    Code
    D:\temp\qt_dev\__build>cmake ..\gameoflife -DCMAKE_PREFIX_PATH=C:\Qt\5.15.2\msvc2019_64



    dann kannst du die Solution aufmachen und mit VS2022 bauen, geht aber auch genau so mit QtCreator und dann auch so unter Linux, Mac,...



    wirkt auf einen Hobby Programmierer vielleicht etwas umständlich/umfangreich aber das ist so ziemlich der Weg wie die meisten Open Source Projekte auf Github aufgebaut sind


    und wichtig: die Studio Solution Sachen werden nicht eingecheckt - also der _build-Ordner - die Studio Solution ist nur eine Sache für dich, die erzeugt du dir einmal auf deinem System und fertig

    wenn du neue Dateien hinzufuegen willst cpp,hpp usw. dann einfach die CMakeLists.txt reinschreiben und das landet dann automatisch in der Solution

    wenn ich mit einem andern Kompiler oder IDE arbeite hat die Solution keine relevanz und ist unbedeutend - also nicht einchecken :)


    für ein Linux Build unter Ubuntu 21.10 oder aktueller


    braucht man nur


    gleiche Verzeichnis-Hierary, clone und meine CMakeLists.txt und dann




    Build mit mingw-w64 mit msys2 - Windows GCC







    und noch was: das gameoflife Beispiel macht die UI im Code d.h. es wird kein UI-Editor gebraucht, ich denke das reicht für den Karten-Editor - oder willst du unbedingt mit der Maus deine Buttons und Radioboxen positionieren?

    6 Mal editiert, zuletzt von llm ()

  • Danke für die ausführlichen Infos llm

    Werde am Wochenende mal versuchen alles einzurichten. Bisher bin ich da leider nicht zu gekommen.

    Für den Karten-Editor sollte das gameoflife Beispiel wirklich eine gute Grundlage sein.

    Meine DOS-Rechner:

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR 24 und SB 16 ( CT2770 ) + TNDY

    "Frankenstein" Pentium II mit 266 MHz, Elsa Winner 1000 TrioV + Voodoo I, SB 16 (CT2290) + Yamaha DB50XG


    Von mir geschriebene DOS-Programme gibt es hier.

  • Für den Leveleditor wahrscheinlich nicht wirklich hilfreich, aber ggf. für Historylinefans mit einem Amiga ggf. trotzdem interessant.


    Hier gibt es anscheinend die ominöse Leveldisk für die Historyline Amigaversion (ich kann die funktionsweise aber mangels Amiga nicht überprüfen)


    Old Games Finder
    Hard to find... Old Games? TRY US!
    www.oldgamesfinder.com


    Ich habe die Datei, dieich gefunden habe mal angehängt. Entpackt ist es ein Amigadisk image.

  • grohfuda, das ist sogar sehr interessant! :)

    Wir haben ja schon rausgefunden, dass die Daten-Dateien des Spiels sich zwischen PC und Amiga-Version nicht großartig unterscheiden. Es dürfte also (mit den hier gesammelten Infos) kein Problem sein, die neuen Karten aus der Leveldisk mit der PC Version zu verwenden.

    Ich habe gerade in der Install Anleitung der Leveldisk gelesen, dass diese 15 alte Karten durch 15 neue Karten ersetzt. Brigt uns also leider keine neuen Infos dazu, wie man neue Karten mit neuen Passwörtern hinzufügen könnte.


    Da bin ich aber inzwischen ein kleines bisschen weiter gekommen. :D


    Wir haben ja unsere Codes.dat im Spielverzeichnis, die entpackt 10 Byte Infos für jede Karte enthält:

    Code: Codes.dat
    Offset(h) 00 01 02 03 04 05 06 07 08 09
    
    00000000  20 25 1C 23 15 02 01 01 00 00   %∟#§☻☺☺..
    0000000A  13 19 26 19 1C 02 01 01 02 00  ‼↓&↓∟☻☺☺☻.
    00000014  1D 1F 25 23 15 02 01 01 02 00  ↔▼%#§☻☺☺☻.
    ...

    Offset 0 - 4: Passwort, leicht verschlüsselt (10h vom Wert des Bytes abziehen und man erhält die Nummer des Buchstabens im Alphabet).

    Offset 5 : Bedeutung unbekannt, hat immer den Wert 2

    Offset 6 : Typ der Karte, 1 für Kampagne, 2 für 2-Spieler.

    Offset 7: Bedeutung unbekannt, hat fast immer den Wert 1, nur bei der letzten Kampagnen Karte und bei der letzten 2-Spieler Karte 0.

    Offset 8: Jahreszeit 0 = Sommer, 2 = Winter.

    Offset 9: Unbekannt, immer 0



    Da haben wir also die Info, die ich noch dringend suchte und können für neue Karten auch einstellen, ob sie im Sommer oder Winter spielen :D

    Und... Es funktioniert eine neue Kartendatei im MAP-Ordner zu erstellen (also eine 72.fin und 72.shp zu ergänzen) und einen neuen Eintrag hier in der Codes.dat anzuhängen!

    :bananadance

    Meine DOS-Rechner:

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR 24 und SB 16 ( CT2770 ) + TNDY

    "Frankenstein" Pentium II mit 266 MHz, Elsa Winner 1000 TrioV + Voodoo I, SB 16 (CT2290) + Yamaha DB50XG


    Von mir geschriebene DOS-Programme gibt es hier.

  • Mit den Werten der Unit.dat habe ich neulich auch noch ein bisschen rumprobiert.

    Hier ist aber noch viel unbekannt. Mein Stand jetzt:


    Für jede Einheit ein 69 Byte record
    0 Bewegungsradius in Feldern
    1 Geschwindkeit
    2 Panzerung
    3 max. Gruppenstärke
    4 ?
    5 Felder, auf/über die Einheit sich bewegen kann: 1=tiefes Wasser, 2 = Schiene, 5 = Küstengewässer... 7A =Land inkl. Berge... Hier ist noch viel unbekannt.
    6 ?
    7 ?
    8 Reichweite Luft (+1)
    9 Reichweite Boden/Wasser (+1)
    A Angriffswert Luft
    B Angriffswert Boden
    C Angriffswert Wasser
    D ?
    E 0x10 bei Transporteinheiten, sonst 0
    F ?
    10 ?
    11 ?
    12 ?
    13 ?
    14 ?
    15 ?
    16 ?
    17 ?
    18 ?
    19 ?
    1A Nummer des Bildes aus Bigunit.dat, das bei Detailansicht geladen wird
    1B - 2C Kategoriename
    2C - 3E Einheitenname
    3F Produktionskosten
    40 Ladekapazität bei Transporteinheit
    41 Gewicht
    42 ?
    43 ?
    44 ?

    Meine DOS-Rechner:

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR 24 und SB 16 ( CT2770 ) + TNDY

    "Frankenstein" Pentium II mit 266 MHz, Elsa Winner 1000 TrioV + Voodoo I, SB 16 (CT2290) + Yamaha DB50XG


    Von mir geschriebene DOS-Programme gibt es hier.

    2 Mal editiert, zuletzt von Dragonsphere ()

  • Ich versuche mal (ohne es überprüfen zu können) ein wenig weiterzuhelfen

    Zitat

    Offset 7: Bedeutung unbekannt, hat fast immer den Wert 1, nur bei der letzten Kampagnen Karte und bei der letzten 2-Spieler Karte 0.

    Wenn es bei allen Karten 1, nur bei den jeweils letzten Karten der Kampagne und der letzten 2-Spieler-Karte 0 ist, liegt die Vermutung nahe, dass die ein Code dafür ist, ob nach der Karte noch eine weitere Karte kommt (1=ja, 0=nein)


    Für die Offsets 5 und 9 habe ich spontan keine Idee, wenn sie immer gleich sind, es könnte sich um simple Trennzeichen handeln.



    Zu den Einheiten fallen mir nur einige Eigenschaften ein, die irgendwo codiert sein sollten (ich denke ich sollte mir zeitnah auch mal einen Hex-Editor besorgen um nicht nur zu spekulieren):


    Einheit kann Gebäude einnehmen ja/nein (ist aber ggf. auch in 5 codiert)

    Zeitpunkt wann die Einheit eingeführt wird (Einheitenvorstellung zu Beginn der Karte ggf. als Kartennummer) wie D/Fr kodiert wird ist herauszufinden

    Könnten in 40 ggf. auch Produktionskosten codiert sein?

    Einmal editiert, zuletzt von grohfuda ()

  • Hallo grohfuda, danke für's mitraten :)


    ich denke ich sollte mir zeitnah auch mal einen Hex-Editor besorgen um nicht nur zu spekulieren

    Unbedingt! Ein Hex-Editor ist nie verkehrt. :D

    Unter Windows kann ich dir den HxD empfehlen. Recht leistungsfähig, trotzdem übersichtlich, gibt es auch auf deutsch und ist kostenlos (gibt nur eine kleine Bitte um Spenden im Info Feld).

    Den gibt es hier: https://mh-nexus.de/de/hxd/


    Zeitpunkt wann die Einheit eingeführt wird (Einheitenvorstellung zu Beginn der Karte ggf. als Kartennummer) wie D/Fr kodiert wird ist herauszufinden

    Das ist aber auch schon über die Karten selbst ganz gut geregelt. In den .shp Dateien ist ja für jede Karte genau definiert, welche Einheiten zur Verfügung stehen.

    Könnten in 40 ggf. auch Produktionskosten codiert sein?

    Habe gestern Abend noch mal etwas auf die Daten geguckt und Offset 40 scheint die Ladekapazität von Transportfahrzeugen zu sein. Hier steht 09 bei Transportwagen, F bei Truppentransport, 1E Transportschiff und bei allen anderen Einheiten 0

    Meine DOS-Rechner:

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR 24 und SB 16 ( CT2770 ) + TNDY

    "Frankenstein" Pentium II mit 266 MHz, Elsa Winner 1000 TrioV + Voodoo I, SB 16 (CT2290) + Yamaha DB50XG


    Von mir geschriebene DOS-Programme gibt es hier.

  • @Dragonsphere


    bist du mit meiner Beschreibung zum Qt-Kram-Bauen zurecht gekommen?


    Ja, soweit schon. Ich habe es nach deiner Anleitung recht problemlos geschafft, alles zu installieren und kann das Game of Life Beispiel auch erstellen.

    Hatte nur erst das Problem, dass noch Einträge in der PATH Vairabe fehlten und er deshalb zunächst Dateien nicht fand. Das war ja aber schnell zu beheben.


    Nur, wenn ich mir jetzt eine Kopie des Projekts machen will, um es vom Game of Life zu unserem HL Editor umzubauen, dann renne ich noch in einen Haufen Fehlermeldungen.

    Habe mir daher noch die Qt Tools for Visual Studio installiert, womit ich ganz komfortabel aus Visual Studio ein neues Qt Projekt erstellen kann. Das klappt schon mal gut.

    Nachher versuche ich mal Code aus dem Game of Life in mein neues Projekt zu kopieren und eine Basis für unseren Editor zusammenzubasteln.

    Meine DOS-Rechner:

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR 24 und SB 16 ( CT2770 ) + TNDY

    "Frankenstein" Pentium II mit 266 MHz, Elsa Winner 1000 TrioV + Voodoo I, SB 16 (CT2290) + Yamaha DB50XG


    Von mir geschriebene DOS-Programme gibt es hier.

  • Zitat

    dass noch Einträge in der PATH Vairabe fehlten

    Zitat

    damit er die Qt DLLs findet? das würde ich nur temporär in den Path machen - eher in die Unterordner kopieren - kann man auch CMake machen lassen Habe mir daher noch die Qt Tools for Visual Studio installiert, womit ich ganz komfortabel aus Visual Studio ein neues Qt Projekt erstellen kann. Das klappt schon mal gut.

    passt soweit das kann man auch alles nachträglich mit CMake machen, das ist unproblematisch - Hauptsache du kommst erstmal damit klar

  • Das hier finde ich auch noch ein sehr hilfreiches Beispiel:

    GitHub - vpapadopou/qt-simple-paint: A simple paint program built with Qt Creator in C++
    A simple paint program built with Qt Creator in C++ - GitHub - vpapadopou/qt-simple-paint: A simple paint program built with Qt Creator in C++
    github.com


    Sehr übersichtlich und da ist auch der Datei-Dialog und das zeichnen im Fenster nochmal gut drin.

    Vielleicht gucke ich mir den Qt Creator auch noch an, wenn ich etwas Zeit finde. Scheint ja eine schön schlanke IDE zu sein.

    Meine DOS-Rechner:

    Kleiner Industrie-486er mit 100 MHz (Intel 80486DX-4), 32 MB SD-RAM, Diamond SpeedSTAR 24 und SB 16 ( CT2770 ) + TNDY

    "Frankenstein" Pentium II mit 266 MHz, Elsa Winner 1000 TrioV + Voodoo I, SB 16 (CT2290) + Yamaha DB50XG


    Von mir geschriebene DOS-Programme gibt es hier.

  • Sehr übersichtlich und da ist auch der Datei-Dialog und das zeichnen im Fenster nochmal gut drin.

    bei dem Beispiel wird die UI nicht per Code definiert sondern ueber einen UI-Editor mit dem VStudio Tools oder eben in QtCreator - Es kommt der selbe Code raus, es wird aber mehr generiert

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!