|
-
[Release] GothicZEN - a commandline tool to convert compiled ZENs between Gothic versions
Fixed an important bug, please redownload this program! (v0.3)
Hello everyone, for the past few weeks I've been working on a commandline tool to convert compiled ZENs between Gothic versions. It is now finally in a state where it has the functionality I wanted it to have - especially the degeneration of LOD polygons in Gothic 1 meshes while not breaking the bsptree. It only works on ASCII maps, but that should not be a problem since you can easily convert a BIN_SAFE map to ASCII with the Spacer.
First off, the README.txt:
Here is an example command (also included in an example.bat in the archive):
Code:
GothicZEN.exe 108 130 WORLD_IN.ZEN WORLD_OUT.ZEN
This would convert a Gothic 1 zen to a Gothic 2 zen, while adding all the missing archiver values that are new in Gothic 2.
Also useful would be to convert a Gothic 1 outdoor Zen to the same version to remove the LOD polygons - it can then be imported into 3D programs using the Kerrax importer for Zen files without having a distorted mesh and partially broken portals.
While it is mentioned in the readme, please note that while this tool keeps existing lightmaps, you should recompile them with Compile Light in the Spacer just in case anyway after converting the Zen so they are optimized for the specific Gothic version - this will work fine without touching the mesh part of the bsptree.
As an extra option I added the ability to create an "XZEN" as used in GRM for Gothic 1, where 32 bit vertex indices are used when saving the mesh in its internal format, instead of 16 bit indices as Gothic 1 uses by default - which increases the maximum number of vertices allowed in the mesh from 65535 to 4 billion something. You need the GRMFixes_DLL to load them in Gothic 1, in that case. This could be useful for porting Gothic 2 maps into Gothic 1. The tool automatically detects an XZEN when loading the same way GRMFixes_DLL does it - by checking the user string for "user XZEN".
You can download the exe plus source here, and choose between x86 and x64 (check the Binaries folder):
https://morten.with.de/filedropper/f...lease_v0.3.zip
It includes a VS2015 sln, and can be compiled with without dependencies, but it works just as well with g++ by putting all the source files (in Src\) into the command (g++ -o GothicZEN -O3 Src/GothicZEN.cpp ....), so you should be able to compile it yourself on linux. Sorry for not including a makefile :P
If you have any questions or there are any problems, please let me know and I'll try to answer/fix them asap
Geändert von withmorten (09.08.2019 um 16:47 Uhr)
Grund: Updated zip with new binaries and source (v0.3)
-
That's great! I remember some years ago struggling with a G1 zen import into Blender, and it sounds like your tool will solve those issues
Would you be willing to upload your tool to the Modderdatenbank?
https://www.worldofgothic.de/?go=moddb
Alternatively, if you prefer, I would also be happy to get it included in the download section of the world of gothic site.
https://www.worldofgothic.de/dl/download_folder7.htm#7
-
I'll wait a week or so, and if I or other users don't discover any glaring issues or bugs, I'd be glad to You know how it is with fresh releases.
And yes, this will definitely solve those issues. It's why I started investigating all this in the first place
-
Hallo!
Ein wenig habe ich verstanden, aber eben nicht alles.
Kann mir dieses GothicZen jemand mal in Deutsch erklären?
-
Zitat von lucigoth
Hallo!
Ein wenig habe ich verstanden, aber eben nicht alles.
Kann mir dieses GothicZen jemand mal in Deutsch erklären?
Die ZENs (Welten) für Gothic 1 und 2 haben ein leicht unterschiedliches Format. Mit diesem Tool kann man eine Welt in die jeweils andere Version portieren.
-
Ich schreibs bei Gelegenheit nochmal alles auf Deutsch. Aber prinzipiell das, ja. Noch dazu hat Gothic 1 die unangenehme Eigenart neue LOD Polygone aus bestehenden Vertices zu generieren, die das Spiel zwar zu umgehen weiß beim rendern (und bei Bedarf anzuzeigen), aber beim importieren mit Kerrax Importer in 3D Programme "im Weg" sind. Dieses Tool kann diese Polygone rauslöschen, und fixt die ganzen Indices im BspTree dabei - d.h. die Map bleibt für das Spiel vernünftig lesbar.
-
Hi Withmorten,
die zwei Extras mit dem Deaktivieren des LOD und Erhöhung der maximalen Vertex-Anzahl finde ich super.
Bei Gelegenheit werde ich das Tool testen und darüber berichten.
-
Würde ein GUI bei der bedienung helfen?
Wie weiss das Tool, ob es von ZEN1 auf ZEN2 Konvertieren muss, oder den anderen weg herum?
ist 108 ZEN 1 und 130 ZEN2?
Geändert von Multithread (12.05.2019 um 18:29 Uhr)
-
Ich bin zu faul für GUIs, wenn du eine basteln willst, gerne
Re Edit: Ganz einfach - "version in" ist 108, dann ist input Gothic 1, "version out" ist 130, dann ist output Gothic 2.
GothicZEN.exe 108 130 WORLD_IN.ZEN WORLD_OUT.ZEN ---> G1 zu G2
GothicZEN.exe 130 108 WORLD_IN.ZEN WORLD_OUT.ZEN ---> G2 zu G1
Geändert von withmorten (12.05.2019 um 18:34 Uhr)
-
-
Zitat von Lehona
Was soll man in diesem GUI denn einstellen außer die Pfade und ob G1->G2 oder G2->G1?
Gerade die Pfadeingabe ist bei Terminals mühsam.
Und das GUI hat den "Vorteil" das man sich nicht merken muss in welcher Reihenfolge die Parameter eingegeben werden müssen. Da gibst du nur die Werte ein und klickst auf "mach was"
Ausserdem könnte ein GUI den einstieg erleichtern.
Dürfte nicht zu schwer werden, für die meisten solchen Tools ein Generisches GUI zu erzeugen.
(Pfad, Checkbox, Text, Zahl, Radioauswahl)
EDIT: Dafür hilfreich wäre natürlich, wenn das Programm Standardbefehle akzerptiert z.B: (b.exe -in "Pfad" -out "Dateiname" -to 130 -lod 37349)
Geändert von Multithread (12.05.2019 um 19:16 Uhr)
-
Zitat von Multithread
Gerade die Pfadeingabe ist bei Terminals mühsam.
Und das GUI hat den "Vorteil" das man sich nicht merken muss in welcher Reihenfolge die Parameter eingegeben werden müssen. Da gibst du nur die Werte ein und klickst auf "mach was"
Dürfte nicht zu schwer werden, für die meisten solchen Tools ein Generisches GUI zu erzeugen.
(Pfad, Checkbox, Text, Zahl, Radioauswahl)
EDIT: Dafür hilfreich wäre natürlich, wenn das Programm Standardbefehle akzerptiert z.B: (b.exe -in "Pfad" -out "Dateiname" -to 130 -lod 37349)
Findest du? Dank Tab-Completion bin ich normalerweise schneller als mich durch irgendwelche Ordnerstrukturen zu klicken
Dem Kommentar zu der Reihenfolge stimme ich aber zu, grundsätzlich würde ich auch sowas wie -i <FILE> (oder --input) bevorzugen.
Das Problem mit GUIs ist weiterhin, dass man quasi sofort jede Möglichkeit zur Automatisierung verliert, falls man nicht eben auch eine Konsolenvariante bereitstellt. Als zusätzliche Variante/Tool spricht aber natürlich nichts dagegen.
P.S.: In deiner Signatur fehlt ein 'e' bei 'keine'.
-
-
Zitat von Lehona
Findest du? Dank Tab-Completion bin ich normalerweise schneller als mich durch irgendwelche Ordnerstrukturen zu klicken
Dem Kommentar zu der Reihenfolge stimme ich aber zu, grundsätzlich würde ich auch sowas wie -i <FILE> (oder --input) bevorzugen.
Das Problem mit GUIs ist weiterhin, dass man quasi sofort jede Möglichkeit zur Automatisierung verliert, falls man nicht eben auch eine Konsolenvariante bereitstellt. Als zusätzliche Variante/Tool spricht aber natürlich nichts dagegen.
Ich bin halt auch zu faul nen vernünftigen arg parser einzubauen Dachte aber die Reihenfolge der Argumente ist recht schlüssig. Ist sowieso überall alles anders, z.b. ffmpeg (-i "file") oder x264 (input datei GANZ am ende) ...
Es gibt ein paar GUIs die teilweise sogar eher praktischer sind als die CMD variante, siehe z.B. MKVCleaver vs mkvextract - aber das ist die Ausnahme.
Man kann ja auch in der CMD einfach nen Ordner oder Datei "reinziehen", dann wird automatisch der Pfad, ggfs mit Anführungszeichen reinkopiert. Bei GUIs "kopiere" ich auch oft einfach den Ordner oder die Datei, und drücke dann Strg+V in der Pfadeingabe - dann wird auch nur der Pfad reinkopiert.
Habe btw nix dagegen wenn hierfür ne GUI gebastelt wird - würde die dann auch in den Startpost reinfügen
-
Zitat von withmorten
Man kann ja auch in der CMD einfach nen Ordner oder Datei "reinziehen", dann wird automatisch der Pfad, ggfs mit Anführungszeichen reinkopiert. Bei GUIs "kopiere" ich auch oft einfach den Ordner oder die Datei, und drücke dann Strg+V in der Pfadeingabe - dann wird auch nur der Pfad reinkopiert.
Habe btw nix dagegen wenn hierfür ne GUI gebastelt wird - würde die dann auch in den Startpost reinfügen
Das ist sowas von 2012
Heute wird die Datei mit Drag'n'Drop in die Dateiauswahl gezogen.
Ich schau mal ob das was wird. Wichtig wäre dass die exe das Parameter-Format unterstüzt, in etwa so wie oben definiert. Ansonsten wird die erstellung schwirig (insbesondere die ersten beiden Parameter würde einer reichen)
-
Würdest du den Source-Code noch veröffentlichen?
Zitat von Multithread
Machst du viele solche Scripte?
Naja nicht für Gothic, aber sonst: klar. Alleine für (Integrations-)Tests ist ein automatisierbares Interface doch Pflicht.
-
-
Zitat von withmorten
As an extra option I added the ability to create an "XZEN" as used in GRM for Gothic 1, where 32 bit vertex indices are used when saving the mesh in its internal format, instead of 16 bit indices as Gothic 1 uses by default [...]. The tool automatically detects an XZEN when loading the same way GRMFixes_DLL does it - by checking the user string for "user XZEN".
Mir war beim Release der Demo gar nicht klar, dass das mal solche Kreise ziehen wird. Ich hab die GRM Fixes als eine kleine Ansammlung von Hacks gesehen, die wir im Rahmen der GRM brauchen. Seit Noxums Nachfrage auf dem Moddertreffen und auch durch dieses Beispiel sehe ich nun, dass das wohl zu kurzsichtig war und da noch was dran machen sollte. Ich find's jedenfalls ziemlich cool, dass du unser Format unterstützt und überhaupt das Gothic Modding mit einem weiteren Tool bereicherst.
"Weltmacht mit drei Buchstaben?" – Fred & Günther
-
Zitat von Lehona
Würdest du den Source-Code noch veröffentlichen?
Done, original post updated. New binaries included, but functionality wise nothing changed, so no version bump.
Zitat von ThielHater
Mir war beim Release der Demo gar nicht klar, dass das mal solche Kreise ziehen wird. Ich hab die GRM Fixes als eine kleine Ansammlung von Hacks gesehen, die wir im Rahmen der GRM brauchen. Seit Noxums Nachfrage auf dem Moddertreffen und auch durch dieses Beispiel sehe ich nun, dass das wohl zu kurzsichtig war und da noch was dran machen sollte. Ich find's jedenfalls ziemlich cool, dass du unser Format unterstützt und überhaupt das Gothic Modding mit einem weiteren Tool bereicherst.
Ich hatte das auch nur vor ner Weile durch Zufall mal auf github gefunden und fands ne wirklich gute Idee. Ist ja auch eine völlig schwachsinnige Limitierung von Gothic 1, weil JEDER andere index 32bit und nicht 16bit ist (insb. weil die ja ihr eigenes mesh Format gebastelt haben was nicht die Limitierungen von 3ds hat ...). Sollte man eigentlich mal als ne standalone dll oder nen Ikarus Ninja Patch basteln (ersteres kann ich, zweites nicht). Ich war das btw auch neulich mit dem LODGenerate Kram im Issue, das hab ich in ner eigenen G1 dll schon gefixed dass das im Spacer nicht mehr passiert
-
Ach, du warst das? Ich war wohl gestern Abend nicht mehr fit genug, sonst hätte mein Gedächtnis mir bestimmt gesagt, dass ich den Nickname schon mal gelesen habe.
Vermutlich hat der Programmierer bei der Wahl des Datentyps nicht genau überlegt und dann sind die Piranhas bis Gothic 2 eben nie gegen diese Grenze gestoßen. Welche Indizes sind denn noch so 32 Bit breit? Ich wollte heute mal schauen, ob ich nicht doch Antialiasing aktivieren kann. Da ich insofern an den Plugins arbeite, wird es wohl bald ein Update geben.
MaGoth hat mich mal gebeten unsere GRM-Fix-Collection als Union Plugins umzuschreiben aber ich habe damals nicht verstanden, was eigentlich sein Problem war. Der Vorteil dabei ist wohl, dass die Hooks dabei gestapelt werden und mehrere Plugins dieselbe Funktion hooken können. Nur hab ich halt auch andere Sachen zu tun.
"Weltmacht mit drei Buchstaben?" – Fred & Günther
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|
|