Zeige Ergebnis 1 bis 4 von 4

Thema: postproc

  1. #1
    Sektionsleiter Maps Benutzerbild von WaterKnight
    Registriert seit
    Aug 2003
    BNet Account
    WaterKnight
    Beiträge
    4.420

    postproc

    Dachte eigentlich, ich hätte es hier schon einmal vorgestellt, naja.

    JNGP postproc ist ein für Windows entwickeltes Framework, mit dem man Tools auf eine Map anwenden kann, um diese nachträglich zu modifizieren.

    Exposition

    Was ich mir schon lange wünschte, ist, dass wir Maps in Projektdatei und spielbares Resultat unterscheiden. Das hat den Vorteil, dass man viel mehr an der Map ändern kann, womit der World Editor eigentlich nicht mehr zurechtkommt und man kann Daten injezieren und transformieren, so dass Optimierungen möglich sind und Zeug umgebaut werden kann, das man eigentlich so nicht direkt im Editor schreibt. Zum Beispiel wurde vJass ja erfunden, weil jass nicht schön war. Das ging allerdings gut zu realisieren, weil der World Editor die war3map.j-Datei jedesmal neu zusammensetzt. Sie enthält selber keine Editor-relevanten Informationen, so dass jasshelper sie ruhigen Gewissens transformieren kann. Bei den anderen Dateien im Map-Archiv funktioniert das nicht. Deshalb macht die Trennung Sinn.

    Beispiele für processing Tools sind zum Beispiel:
    Objektdaten nach slk umwandeln, Optimierung (Editor-relevante Dateien verwerfen) oder Debugging-Transformationen des Jasscodes wie das Wrappen von Funktionsaufrufen

    Strategie

    JNGP/wursteditor:

    JNGP besitzt eine Datei wehack.lua in seinem Hauptverzeichnis und hängt sich an die Save- und Testmap-Routinen des World Editors. Auf diese Weise wird jasshelper aufgerufen oder die Map mit bestimmten Parametern gestartet. postproc hat eine angepasste Variante für diese Datei, um ein eigenes Menü hinzuzufügen und sich in die Routinen einzuklinken.

    Die Idee ist, dass wir eine Lua Script-Datei haben, die bestimmte Instruktionen an postproc gibt, um die gewünschten Tools aufzurufen u.a. Des Weiteren wollen wir nicht auf die Originalmap operieren, sondern postproc macht eine Kopie derselbigen und wendet darauf alle Aktionen an.

    Beim Maptest wird auf das Kompilat von postproc redirected. Die Frage ist nur, ob man anhand der ursprünglichen Map auch später noch auf das richtige Kompilat schließen kann. Zurzeit wird dabei der Mapheader beider Dateien verglichen.

    Download und Dokumentation

    Den Installer für Windows oder das rohe Bundle gibt es hier.

    Eine Installationsanleitung, Verwendungshinweise, die API und eine Übersicht über die enthaltenen Tools sind im Manual einzusehen.

    Credits

    postproc (und Freunde) benutzen Lua und ein paar Addons: LuaFileSystem, Rings, Lua BitOp, LuaSocket
    Der Updater benutzt libcurl und wxWidgets, die Windows API. Der md5 Algorithmus, der genutzt wird, um lokale und Serverdateien zu vergleichem, wurde von hier übernommen.
    Das JNGP-Setup verwendet wxLua, eine Lua-Anbindung für wxWidgets.
    Geändert von WaterKnight (31. Oktober 2015 um 16:36 Uhr)
    Water's Footmen Wars
    Defend Wintercastle
    Mana
    God's Ascension (coming soon)
    Dark Colony (coming soon)

    Versunkene Zeiten - Vortex - Wild Scope - Hells Edge -
    Prison Break

  2. #2
    Hey, klingt interessant. Hast du auch mehr konkrete Anwendungsfälle? Ich zum Beispiel speichere die Karte ab und dabei entsteht ja das fertige Kartenskript. Danach lasse ich eigentlich nur noch den War3Optimizer darüber laufen und kopiere die Karte ins Warcraft-Maps-Verzeichnis.
    Das ist aber kein Problem mit einem Batch-Skript.

    Mir fallen jetzt hauptsächlich Optimierungen ein, aber dafür würde auch ein Tool reichen. Sachen wie Objektdaten will man ja einmal mit dem ObjectMerger oder so erzeugen.
    wc3lib (C++-Entwickler gesucht)
    Advanced Script Library (vJass-Entwickler gesucht)
    Die Macht des Feuers (Modelierer und 2d-Grafiker gesucht)
    Die-Macht-des-Feuers-Blog
    Mappedia

  3. #3
    Sektionsleiter Maps Benutzerbild von WaterKnight
    Registriert seit
    Aug 2003
    BNet Account
    WaterKnight
    Beiträge
    4.420
    Mit den Tools, die ich bereits dafür geschrieben habe, wurden ein paar Anwendungsfälle gelöst, waren auch ein paar Wünsche von anderen wie der pathFiller, der schaut, welche Gebiete zu Fuß von einem Set Ausgangspunkten erreicht werden können und alles andere ausmalt, so dass man durch Blink und so nicht gefangen werden kann.

    Optimierung auf jeden Fall. Das Problem war sonst halt immer, dass das nicht so gut in den World Editor eingebunden war und gerade die ganzen Noobs haben Probleme, die sich nicht so auskennen. Die ursprüngliche Motivation war, dass wer gefragt hatte, wie man Objektdaten in jass auslesen könnte und weil ich schon länger slk verwende, das anderen aber nicht so als Lösung nahbringen konnte, weil der World Editor nicht darauf ausgelegt ist und das Handling entsprechend ein Hindernis ist.

    Kurze Scripte in Lua sind sehr simpel und JNGP verwendet das schon für external calls. Batch ist ziemlich eklig.

    Einweg-Objectmerger-Calls sollte man eher auf die Projektdatei anwenden.

    Mit im Paket sind außerdem Bibliotheken für die Wc3 Formate (vieles noch unfertig). postproc forwardet die Pfade zu den Tools, so dass diese die libs dynamisch verwenden können.
    Geändert von WaterKnight (28. Juni 2015 um 18:02 Uhr)
    Water's Footmen Wars
    Defend Wintercastle
    Mana
    God's Ascension (coming soon)
    Dark Colony (coming soon)

    Versunkene Zeiten - Vortex - Wild Scope - Hells Edge -
    Prison Break

  4. #4
    Sektionsleiter Maps Benutzerbild von WaterKnight
    Registriert seit
    Aug 2003
    BNet Account
    WaterKnight
    Beiträge
    4.420
    Neue Version:
    • Es gibt jetzt einen Updater für Windows, der die Dateien automatisch von einem Server bezieht. Er erfasst die Unterschiede zum lokalen Zustand und passt die Unterschiede an. Es sollten keine eigenen Dateien im postproc-Verzeichnis platziert werden, da diese gelöscht werden könnten.
    • Im JNGP-Unterverzeichnis ist nun eine setup.bat-Datei platziert, die man ausführen kann, um seinen JNGP-Editor mit postproc zu verlinken. Es ersetzt die lua51.dll, die wehack.lua und fügt eine postproc.conf zum Hauptverzeichnis des JNGP hinzu.
    • Die wehack.lua ist quasi auslagert zu postproc. Selbst wenn man aus JNGP heraus aktualisiert (Menüleiste >postproc >Update), muss der Editor nicht neu gestartet werden, es sei denn, das Initscript wurde modifiziert.
    • Die wc3libs wurden neu organisiert für mehr Einheitlichkeit und Modularität. Weitere Wc3 Formate werden nun unterstützt. Irgendwann sollen es alle sein.
    • neues Tool: pathPainter: Die Areale von speziell präfixierten GUI-Gebieten werden zum Terrain Pathing hinzugefügt. "wpma_" -> blockiert Luft, "wpmg_" -> blockiert Boden, "wpmb_" -> blockiert Luft und Boden.
    • neues Tool: tagReplacer: Inlinet Tags wie im Objekt-Editor, um den ursprünglichen Wc3 Mechanismus zu fixen. Beispiel: "<A000,dur1>" wird zu "5", falls das "dur1" Attribut vom Objekt "A000" diesen Wert enthält.


    Im ersten Beitrag wird man nun zu einer Webpräsenz geleitet, bei welcher man den Installer oder postproc (und Freunde) roh downloaden kann. Ebenfalls erspare ich mir, die Inhalte immer im ersten Post zu aktualisieren und verweise stattdessen aufs Manual.

    Ich gehe nicht davon aus, dass sofort alles funktioniert. Bei Problemen mich einfach ansprechen, zB. im IRC-Chat #inwc.de-maps auf irc.quakenet.org.
    Water's Footmen Wars
    Defend Wintercastle
    Mana
    God's Ascension (coming soon)
    Dark Colony (coming soon)

    Versunkene Zeiten - Vortex - Wild Scope - Hells Edge -
    Prison Break

Forumregeln

  • Es ist dir nicht erlaubt, neue Themen zu verfassen.
  • Es ist dir nicht erlaubt, auf Beiträge zu antworten.
  • Es ist dir nicht erlaubt, Anhänge hochzuladen.
  • Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
  •