Eigenes Projekt auf Basis von NbModule

Alles zu NetBeans als RCP-Platform

Moderator: wegus

Antworten
shaman
Beiträge: 5
Registriert: 18.09.2013, 12:34

Eigenes Projekt auf Basis von NbModule

Beitrag von shaman » 20.09.2013, 20:00

Hallo,
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
Das Game-Module muss diese Features besitzen:
  • 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, ...)
Mein erster Ansatz war nun, zwei neue Ant-Projekt-Typen zu erstellen, die intern die Build-Skripte
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?

shaman
Beiträge: 5
Registriert: 18.09.2013, 12:34

Re: Eigenes Projekt auf Basis von NbModule

Beitrag von shaman » 05.10.2013, 21:44

Ich habe nun eine Möglichkeit gefunden, wie ich die Erweiterungen an den Nb-Modulen realisieren kann.
Dazu verändere ich den Source-Code von NbModuleType direkt um einige neue extension points speziell für die Anforderungen.
Da aber das Modul org-netbeans-modules-apisupport-ant nicht zugänglich ist, da ich bei sehr vielen Modulen sonst das friend-dependency entfernen müsste, lagere ich die Extension Points als SPI in ein eigenes Modul aus. Die SPI erlaubt es auch, die Änderungen nur bei bestimmten Einstellungen in der project.xml durchzuführen.
Mit dieser Methode ist es mir gelungen, die NetBeans-Module zu erweitern und zu verändern, sodass sie für das Spiel passen.

Antworten