Ein Crossposting im mapfact-Forum findet sich hier: http://mapfact.gamigo.de/forum/viewtopic.php?p=55684
Hier eine grobe Darstellunge der Problematik:
AddOn's für das Spiel OPF sind *.pbo Dateien. In diesen Dateien sind alle Informationen (wie 3D-Modelle, Texturen, Skripts) gepeichert. Neben einigen Basis-pbo-Dateien, die das Grundsystem darstellen, gibt es jede Menge AddOn's aus dem Internet.
Bei den AddOn's aus dem Internet steht i.d.R. in irgendeinem readme drin, welche anderen AddOns dieses benötigt und der User muss dafür sorgen das diese AddOns auch vorhanden sind.
Folglich tummeln sich bei den meisten Spielern zig pbo-Dateien
Das Spiel lädt alle pbo's die im Verzeichnis .\addons\ liegen. Somit werden, auch pbo-Daten geladen, die evtl. für das gestartete Spiel gar nicht gebraucht werden. Dieses soll vom AddOnManager geregelt werden.
Das kann recht einfach gelöst werden, denn wenn man eine *.pbo-Datei mit einer anderen Endung versieht, werden sie vom Spiel nicht mehr geladen.
Also muss man nur quasi eine kleine Datenbank haben, in der festgehalten wird, welche AddOn's gebraucht werden. Im einfachsten Fall muss der User sich das in einer Text-Datei selber zusammenschreiben.
Neben den AddOn's existieren aber auch Mods. Bei diesen ist das Problem recht ähnlich und kann evtl. auch vom AddOnManager verwaltet werden.
Die Mods haben ein eigenes Verzeichnis und darin gibt es ein eigenes addons-Verzeichnis mit den pbo-Dateien
gestartet wird ein Mod, wenn man der Spiel-EXE-Datei mit den Parameter "-mod:" startet, also z.B. so:
Code: Alles auswählen
opf.exe -mod: finmod
Es gibt zwei Arten, den AddOnManager zu benutzen. Entweder wählt der User vor dem Spiel...
...eine bestimmte Mission aus
...ein bestimmtes AddOn
Außerdem soll es natürlich auch Möglich sein, alle PBO's oder nur die Basis PBO's zu aktivieren.
----
Das ganze soll als eigenständiges Programm laufen, also wird py2exe eingesetzt.
Die Interaktion mit dem User erfolgt im einfachsten Fall über eine Web-Oberfläche, besser aber mit GTK2. Eine Weboberfläche wäre nur eine Notlösung, weil ich mich damit, im Gegensatz zu GTK, gut auskenne.
Somit kann ich für die GUI hilfe gebrauchen...