Archiv für den Monat: August 2020

FXGL11 Level laden

Anscheinend hat sich bei FXGL11 gegenüber den teilweise schon etwas älteren Tutorials was geändert. Das ist eine Sache.

Eine andere, die mich grad in den Wahnsinn getrieben hat, war, dass das Laden eines mit Tiled erstellten Levels schon schief ging, weil das eigentlich vorgesehene, simple

    FXGL.setLevelFromMap("level0.tmx");

die Datei offenbar am falschen Ort gesucht hat. Nach ewigem Rumprobieren mit der Verzeichnisstruktur gab es Abhilfe letztlich nur mit dem etwas umständlicheren:

protected void initGame() {
    FXGL.getGameWorld().addEntityFactory(
        new PlanetExpressFactory());
    TMXLevelLoader tl = new TMXLevelLoader();
    FXGL.getGameWorld()
        .setLevel(tl.load(
        this.getClass().getResource("/assets/levels/level0.tmx"),
        FXGL.getGameWorld()));
}

JavaFX Mac-App erstellen mit Eclipse und Maven

… mit OpenJDK und JavaFX in der Version 14.

JavaFX braucht nicht extra installiert werden, wenn man ein neues Maven-Projekt über den Archetyp org.openjfx aus Maven Central erstellt. Um die Dependencies kümmert sich Maven.

In der pom.xml den Pfad zum jlinkExecutable einstellen sowie einen Launcher festlegen:

<plugin>
  <groupId>org.openjfx</groupId>
  <artifactId>javafx-maven-plugin</artifactId>
  <version>0.0.4</version>
  <configuration>
    <mainClass>package.App</mainClass>
    <jlinkExecutable>/Pfad/zu/jlink</jlinkExecutable>
    <launcher>MeinLauncherSkript</launcher>
  </configuration>
</plugin>

Dann aus Eclipse die pom ausführen als Maven build… und bei Goals javafx:jlink einstellen.

Es wird im target-Verzeichnis ein Verzeichnis image erzeugt, dass u.a. die angepasste Java Runtime sowie ein Launcher-Skript enthält. Vom Terminal aus kann das Launcher-Skript jetzt schon gestartet werden.

Um ein schönes .app-Bundle zu erzeugen, im Terminal ins target-Verzeichnis wechseln und dann:

jpackage --type app-image -i image -n MeineApp -m mein.modul/mein.package.Mainclass --runtime-image image/

Wenn jpackage nicht gefunden wird, muss der Pfad noch händisch gesetzt werden. jpackage liegt ganz normal im bin-Verzeichnis des JDK.

Natürlich sind jeweils die richtigen Namen für die Module, Packages und Klassen einzusetzen. Es kommt dann eine schöne Mac-Application raus, die sich durch Doppelklick starten lässt. (Ich bin mir nicht sicher, ob XCode dafür installiert sein muss, damit das Packagen funktioniert. Bei mir war’s drauf.) Ist dann halt > 100 MB, aber egal. :-]