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. :-]

Von Klopapier und Seife – Corona 1

Während der Corona-Krise schien jeder Mensch nur eins zu brauchen: Klopapier. Als in unserem Vorrat nur noch drei Rollen übrig waren, habe ich ganz naiver Weise versucht, neues Klopapier beim Supermarkt um die Ecke zu kaufen. Der Anruf meiner Mutter hätte mir eine Warnung sein sollen: „Sag mal, ist Krieg und ich habe es nicht mitbekommen? Ich versuche seit zwei Stunden Klopapier zu kaufen!“

Leeres Regal für Klopapier

Nachdem ich in den fünf umliegenden Supermärkten nur leere Regale gefunden habe, entschloss ich mich, das Klopapier im Internet zu bestellen. Doch, oh Wunder, auch dort gab es Lieferschwierigkeiten und als die letzte Rolle angebrochen war und immer noch kein Paket in Sicht war, bin ich erneut auf die Suche gegangen. Ich zog von Geschäft zu Geschäft ohne Erfolg. Netterweise gab es im DM schon den Hinweis im Eingang, dass Klopapier und Seife gerade ausverkauft waren.

Hinweisschild im Eingang des dm

Als ich trotzdem rein ging, flammte meine Hoffnung auf Klopapier kurz auf, da ich dort doch Seife fand.

Währenddessen klingelte ein Paketbote an unserer Haustür und lieferte ein Paket des Toilettenpapierherstellers ab.

Toilettenpapierbestellung mit Taschentüchern

Im DM allerdings hatte ich kein Glück… oder doch? Zu meinem Einkauf habe ich an der Kasse eine Flüssigseife geschenkt bekommen.

Plötzlich gab es doch Seife

So kam ich mit zu viel Seife und zu wenig Papier heim, um dort das Paket zu öffnen.

Im Paket fanden sich 16 statt der bestellten 64 Rollen und als Ersatz vier Großpackungen Taschentücher.

Amazon Prime Video und Netflix auf dem Raspberry Pi – Update

Alles ist nun viel einfacher als im letzten Artikel beschrieben. Kodi 18 ist inzwischen aktuell, der ganze Kram mit experimentellen Builds ist Vergangenheit und man muss nicht mal LibreELEC nehmen, sondern kann Kodi unter Raspbian laufen lassen und parallel zu einem Desktop oder RetroPie betreiben.

Das Amazon Prime Plugin muss man sich aber immer noch aus dem Sandmann79 Repository besorgen, das vorher manuell einzutragen ist.

In den Einstellungen des Amazon VOD Plugins musste ich dann noch die Region händisch einstellen, sonst ging der Login nicht.

Außerdem muss (mit apt) das Paket kodi-inputstream-adaptive installiert sein, sonst kann das vom Amazon-Plugin mitinstallierte InputStreamHelper-Plugin in Kodi das Widevine-Geraffel (für’s CRM) nicht herunterladen.

Und dann war halt noch so Kindergartenzeugs einzustellen, wie z.B. der Audio-Kanal, wenn auf einmal der Center-Kanal fehlt…

Für Netflix muss händisch noch Pycryptodome installieren. pip install pycryptodomex

Python: Versionshorror bei Packages

Zwei Python-Packages haben mich gestern und heute mit Bugs unter macos Catalina geärgert:

PyGame

Das noch aktuelle PyGame 1.9.6 läuft auf Macs mit Retina-Display unbrauchbar langsam. Der Full-Screen-Modus bringt nur bedingt Abhilfe. Die Developer-Version von PyGame 2 läuft dagegen normal.

Hat wohl was mit SDL1 zu tun, ist bekannt und mit SDL2 gefixt. PyGame 1 mit SDL2 sollte sich eigentlich über Homebrew compilieren lassen, hat bei mir aber mit einer Compiler-Fehlermeldung abgebrochen. Hab’s dann aufgegeben, da sich PyGame 2 als Wheel installieren lässt. Von Python 3.8 sollte man wohl auch eher absehen.

Nachtrag: Bei PyGame 2 unter Windows scheint es wohl Probleme mit dem Alpha-Kanal zu geben, was Auswirkung auf die Kollisionserkennung mit Maske sowie die Darstellung hat.

asciimatics

Die Version 1.11.0 bringt in der Initialisierungsphase einen Fehler bei curses.cbreak(). Möglicherweise hat sich da was bei Catalina geändert, hab ich dann gestern nicht mehr weiter verfolgt, weil es mich in den Wahnsinn getrieben hat. Die ältere Version 1.10.0 läuft normal.

Oh Canada oder: Die Unterbrechung

Anke wollte diese Folge eigentlich „Das vorläufige Ende“ nennen, aber ein vorläufiges Ende ist ja nur eine Unterbrechung. Andreas fand „Oh Canada“ gut. Das ist auch der Titel der Nationalhymne Kanadas, die es sowohl in Englisch als auch in Französisch gibt.

Wir ziehen Bilanz und evaluieren, ob Kanada als Plan-B-Land taugt. Außerdem diskutieren wir, was man an unserer Reise als Gesamterlebnis hätte anders machen können.

Wenn Ihr das hört, sind wir schon längst wieder weiter. Wir waren zwischendurch ein paar Tage zuhause in Frankfurt, sind jetzt aber da, wo wir jedes Jahr im September sind: in Tarragona. Das kommt dann aber in der nächsten Folge.

Und ein Datenbanken-Podcast kommt jetzt wirklich bald. Wir haben schon eine Folge aufgenommen und es gibt schon einen Namen: Datenbanken und Kekse! Wir starten aber wieder am Anfang. Wenn Ihr also die alten SWUK-Folgen gehört habt, gibt es da erst mal nichts neues. Andreas will den Podcast nämlich seinen Studenten geben.

Waschen auf Reisen

Wenn man 4 Monate auf Reisen ist braucht man viel frische Wäsche. Es gibt verschiedene Möglichkeiten diese zu organisieren:

  1. Alte wegschmeißen und neue kaufen (ja es gibt Menschen, die das tun!)
  2. Mit der Hand waschen und im Hotelzimmer aufhängen
  3. Einfach die dreckige Wäsche weitertragen
  4. Waschmaschinen und evtl. Trockner finden.

Wir haben uns für den 4. Weg entschieden und regelmäßig gewaschen, exakt 33 mal in 4 Monaten. (Wenn man Sport macht, kommt schnell viel verschwitze Wäsche zusammen). Fast alle Unterkünfte hatten einen Zugang zu einer Waschmaschine.

Es folgt eine unglaubliche langweilige Liste der benutzen Waschmaschinen mit Bildern.

1. Japan

Kyoto

Der Vermieter des Airbnb hat mir sogar noch die Waschmaschine erklärt, trotzdem hing ich am nächsten Tag ca. 2 Stunden mit dem Google-Übersetzer über dem Bedienpanel, um das Ding endlich ans Starten zu bekommen. Schließlich habe ich gelernt, dass sie nicht startet, wenn der Deckel nicht richtig zu ist und man kräftig drauf hauen muss, damit der Deckel richtig zu ist. Was für ein Waschgang, welche Menge Wasser etc. war mir zu dem Zeitpunkt dann auch egal. Die Wäsche ist auf jeden Fall sauber geworden.

Die Wohnung hatte auch keinen Wäscheständer oder eine Wäscheleine. Zum Glück hatten wir einfach noch ein bisschen Schnur, die wir zwischen zwei glücklich gegenüber hängenden Gardroben hin und her gespannt haben.

Niigata

In allen Hotels, in denen wir in Japan waren, gab es „Coin-Laundries“. Netterweise gab es in der Regel auch Piktogramme, die die Bedienung erklärt haben. Die Preise lagen meistens bei 300-400 Yen, also 2,50 bis 4 Euro. Da man in Japan meistens nur bar bezahlen kann, war es kein Problem Münzen zu bekommen.

Hier in Niigata waren die Waschmaschinen im Onsen. Hier konnte man sich komplett entkleiden, die Wäsche waschen und trocknen lassen, während man sich gebadet hat.

2. Neuseeland

Hamilton

Neuseeländische Häuser sind berühmt dafür, dass sie feucht und undicht sind. Es war etwas blöd während des Regens zu waschen, da die Wäsche im Haus einfach nicht trocken wurde. Nach 2 Tagen warten haben wir für 12 Stunden die Klimaanlage auf heizen gestellt. … Ein Trockner wäre wahrscheinlich sparsamer gewesen.

Gisborne

In Gisborne haben wir gelernt, dass Badewannen in Neuseeland nicht immer einen Überlauf haben. Durch die zwei Wasserhähne an der Badewanne (einen für warm und einen für kalt) läuft gleichzeitig doppelt so viel Wasser in die Wanne wie bei uns in Deutschland. In 5 Minuten war die Wanne voll und in weiteren 5 Minuten stand das Bad ca. 2cm unter Wasser … und damit auch die Waschmaschine, die direkt neben der Badewanne stand.

Badewanne nach dem Überlaufen

Also obwohl wir nur zwei Nächte dort waren mussten wir dann waschen, da wir natürlich in unserer Panik sämtliche vorhandenen Handtücher in das Wasser geschmissen haben.

Die letzten Handtücher, mit denen wir aufgewischt haben.

Auch hier gab es keinen Wäscheständer und die Wohnung war kühl und feucht. Wir haben uns mit Stühlen, Schnur und der heizenden Klimaanlage beholfen.

Improvisierter Wäscheständer

Rotorua und Wellington

Das schöne an Hotels war, dass diese in der Regel große Industriemaschinen haben, in denen man gleich 8-10 kg Wäsche waschen kann. In Neuseeland kann bzw. muss man so gut wie alles mit Kreditkarte bezahlen. Dementsprechend wenig Kleingeld hatten wir im Geldbeutel. In Rotorua konnte man deswegen Waschmünzen an der Rezeption kaufen. In Wellington musste ich tatsächlich noch mal Bargeld abholen, um mir das dann wiederum in passende Münzen wechseln zu lassen. Der Trockner hat unsere Wäsche irgendwie nur 1 Stunde im Kreis gedreht, so dass ich die Wäsche danach noch aufhängen musste. Im Hotelzimmer gab es aber keinen einzigen Kleiderhaken oder Schubladenhaken oder Fenstergriff… so dass ich dann schließlich die Leine im Fenster eingeklemmt und um einen Sessel gewickelt habe.

Auckland

In Auckland hatten wir die modernste Waschmaschine, die ich je gesehen habe. Der Waschtrockner hat die Art der Wäsche und den Trockenbedarf selbstständig erkannt und konstant den Stand der Arbeiten an ein Display übermittelt.

Waschtrockner in Auckland

Die Wäsche ist übrigens nicht sauberer geworden als in den einfachsten Toploadern oder dreckigen Hotelmaschinen.

3. Australien

In Australien waren wir fast nur in Hotels und hatten so Zugriff auf teilweise sehr teure, aber riesige Industriemaschinen. In Melbourne haben wir tatsächlich 11 AUD (ca. 7 Euro) für Waschen und Trocknen bezahlt. In Brisbane haben wir dafür nur 2 AUD bezahlt, aber die Wäsche ist auch nicht trocken geworden.

Am Flughafen von Auckland habe ich übrigens eine Reisewäscheleine erstanden, die sich mit Saugnäpfen fast überall befestigen ließ. Die Zeit der kreativen Stuhl-Fenster-Konstruktionen war damit vorbei.

Wäscheleine zwischen zwei Spiegeln

4. Kanada

Vancouver

In Vancouver konnten wir die Waschmaschinen mit dem „passenden“ Namen „Coinmatics“ nur mit einer Chipkarte bezahlen, die vorher an einem Automaten in einem Supermarkt aufgeladen werden musste. Dieser Automat war noch original aus den 1980er Jahren und hat keine Münzen, sondern nur 5 und 10 Dollarscheine akzeptiert. Sobald die Karte aufgeladen war, ist sie mit ca. 20kmh aus dem Automaten geschossen worden. Da der Automat extrem tief hing, ist die Karte immer in meiner Magengegend gelandet.

Toronto

In Toronto waren wir in einem Hotel, in dem wahrscheinlich mehr Menschen waren, als in vielen Kleinstädten in Kanada leben. Die Waschmaschinen waren dort „sinnvollerweise“ in den Kinderumkleiden im Kinderschwimmbad untergebracht. Dieses war auch noch in einem anderen Turm als unser Zimmer, so dass ich für den Weg zur Waschmaschine ca. 10 Minuten gebraucht habe.

Zu dem Zeitpunkt war das Neuseeländische Waschmittel aufgebraucht, so dass ich auf den Waschmittelautomaten zurück gegriffen haben. Statt Waschmittel habe ich einmal Bleiche und einmal Trocknertücher bekommen. Die Bleiche habe ich auch noch versehentlich in die Wäsche gekippt. Sie hat aber wirklich nichts gebleicht!

Waschmaschinen, Trockner und Waschmittelautomat in der Mädchenumkleide in Toronto