PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (Siedler IV) Mapgenerator / .edm und .map Dateien



S4ndwichGurk3
26-01-19, 09:57
Guten Morgen zusammen,

um bisschen Programmieren zu üben habe ich angefangen einen eigenen Siedler 4 Mapgenerator zu bauen. Bei ihm haben dann alle Bots perfekte Startbedingungen, sodass sie nach 17-18 Minuten Truppen bauen und nicht stehen bleiben.
Um die generierte Karte ins Spiel zu bekommen habe ich bis jetzt die unangenehme Lösung, dass der Karteneditor gestartet wird und die Map dann mit der computergesteuerten Maus langsam aufgebaut wird.
Das hat aber viele Nachteile:

ich kann die Map-Koordinaten des Zeigers nicht über den Editor direkt auslesen, sondern muss mithilfe von Texterkennung immer ein kleines Fenster vom Bildschirm scannen (nicht gerade zuverlässig)
es dauert ewig, weil die Maus so ziemlich jedes einzelne Feld entlangfahren muss
durch die Verwendung der Maus kann ich nichts machen in der Zeit

Deshalb habe ich mir überlegt, dass es viel einfacher wäre, wenn mein Programm nach dem Generieren direkt in die Mapdateien alle Daten reinschreibt.
Die .edm und .map Dateien sind aber alle hexadezimal gespeichert. (Ich habe zumindest bei der .edm Datei auf normalen Text mit allen Koordinaten und Objekten gehofft :D )

Hat da jemand Ahnung von und kann mir irgendwie bei dem Problem helfen?
Oder kann mir jemand von Ubisoft sagen, wie diese .edm Dateien aufgebaut sind?
Ich freue mich über jeden Vorschlag.

MfG,
S4ndwichGurk3

CookieButton
26-01-19, 15:53
Ich schreibe meinen Rat der Vollständigkeit nochmal hier hin.

Einmal kannst du versuchen die Libs (Symbole der Exports sind da) im Exe-Ordner zu benutzen um das Dateiformat zu verstehen, zB. MapAccess.dll. Evtl. kommt da auch eine Instanz zurück deren Struktur du dann versuchen kannst nachzubauen.
Die im "Log"-Ordner befindlichen Dateien haben Debugnachrichten, die auf die Struktur der Maps schließen lassen. Die einzelnen Felder werden dann auch noch komprimiert sein. Man kann aber auch diese Ausgaben als Suchtexte benutzen um zu sehen wo in den Anwendungen diese benutzt werden um so einen Blick auf die entsprechenden Verarbeitungsstrukturen werfen zu können.
Dann kannst du aber auch anstatt Textfelder abzulesen gezielt die Werte aus dem Speicher nehmen.
Zum Schluss noch ein Tipp, dass du das Ganze in eine VM packen könntest, die dann automatisch gestartet und heruntergefahren wird. Ein gemeinsam geteilter Ordner wird dann zur Parametereingabe und Dateiausgabe genutzt. So würdest du dir nicht komplett den Desktop sperren.

MuffinMario
30-01-19, 15:46
Als jemand der viel mit dem Editor zu tun hatte kannst du auch einfach ne map generator dll erstellen oder einfach in die speicherregionen schreiben wo (zum Anfang erstmal) die Böden sind. Hatte so auch mal eine Map nur aus Gras (auch der Rand) gemacht. Ab da kannst du ja immer weiterentwickeln.

Lg