ich etwickle ein 3D-Spiel, welches auf der Netbeans Platform basiert, und ausschließlich im Runtime Container läuft (keine GUI).
Der Kern des Spieles ist schon sehr weit fortgeschritten, beim Editor bin ich aber auf Problem mit den Project-API's gestoßen:
Der Editor soll in der Lage sein, ein komplettes, lauffähiges Spiel zu erzeugen.
Da das Spiel im Runtime Container laufen soll, soll der Editor eine NbApplication erstellen,
die als Module Dependency nur den Runtime Container erlaubt und zusätzlich von Beginn an das Kern-Modul einbindet.
Weitere Module bestimmen dann den Inhalt des Spiels: Levels, Modelle, Texturen, sowie Java-Klassen, die das Spiel um neue Elemente erweitern
Das Application-Projekt muss diese Features besitzen:
- Aufnahme von Game-Modulen und normalen Nb-Modulen
- Generierung eines Installers
- Verbot, neue Nb-Module als Dependency hinzuzufügen
- Aufnahme von Java-Klassen
- Ordner für Levels, Modelle, Texturen, ...
- Kompilierung des Modules als nbm, mit Einbindung der Resourcen und custom Ant-Tasks (Texturen zusammenfügen, Level optimieren, ...)
der "echten" NbApplication und NbModule benutzen.
Das Problem ist nun, dass wenn ich das Ant-Target "build" bzw. "compile" aufrufe, der Build-Skript die Game-Module
nicht erkennt, da sie einen anderen Projekt-Typ besizten als org-netbeans-modules-apisupport-project.
Den Projekt-Typ ändern kann ich nicht, da sonst das Modul nicht mehr als Game-Module erkannt wird, sondern als NbModule.
Das NbModule-Projekt zu erweitern (siehe Tutorial "Extending existing Project Types") geht nicht, da ich dann nicht das Icon
ändern kann, neue Source-Groups hinzufügen kann und nicht das Settings-Panel zur Nb-Module Dependency verstecken kann.
Außerdem fällt dann die Grenze zu normalen Nb-Modulen weg, da sie dann immer die zusätzlichen Ordner und Menüpunkte
für die Spieleentwicklung besitzten. Dies wollte ich gerade vermeiden, da ich den gesammten Editor als Module-Bundle
vertreiben will, der eine bestehende NetBeans-Installation nur erweitert und nicht für normale Entwicklung unbrauchbar macht.
Hat jemand eine Idee, wie ich dieses Problem lösen kann?