Pygame/Pygbag ohne Umwege in die eigene Webseite einbinden
Das Leben muß ja weitergehen und so habe ich mich zur Ablenkung eines schon lange offenstehenden Problems angenommen: Wie bringe ich Pygame-Spielen, die ich mit Hilfe von Pygbag webtauglich gemacht habe, bei, daß sie sich direkt in Webseiten einbinden lassen, ohne den Umweg über spezielle Dienste wie zum Beispiel Itch.io nehmen zu müssen?
Ich glaube, ich habe einen Weg gefunden (als Beispiel habe ich mein altes Pygbag-OOP-Template wieder ausgegraben):
Den ersten Schritt habe ich der Dokumentation entnommen. Man muß nach der Installation von Pygbag zusätzlich
aufrufen (<your.app.folder>
ist natürlich das Verzeichnis Eures Pygame/Pygbag-Spiels). Wie oft man dies machen muß, weiß ich leider nicht, aber wenn nach einer Änderung das Spiel nicht mehr im Browser startet, schadet es zumindest nach meiner Erfahrung nicht, das Kommando noch einmal zu wiederholen1.
Das zweite Problem war, daß die Webversion nicht meine Assets (in diesem Fall das Bildchen) laden konnte. Hier war die Ursache schnell ausgemacht: WebAssembly kommt mit den (Python-) Befehlen
DATAPATH = os.path.join(os.getcwd(), "data")
img = pg.image.load(os.path.join(DATAPATH, "platformchar_idle.png")).convert_alpha()
nicht zurecht. Diese beiden Zeilen einfach durch die Zeile
zu ersetzen, löste auch dieses Problem.
Jetzt waren nur noch die von Pygbag erzeugten und im Ordner web
abgelegten Dateien auf meinen Server hochzuladen und die dort abgelegte Datei index.html
(wie hier beschrieben) in einem Iframe
aufzurufen2.
Noch nicht gelöst ist das Problem, daß die Browser einige Tasten gierig an sich reißen (in diesem Fall die Pfeiltasten UP
, DOWN
, RIGHT
und LEFT
). Ob man dieses lösen kann oder ob man nach alter Väter Sitte besser auf die Tasten a
, s
, w
und d
ausweicht, steht als nächstes auf meiner Agenda. Still digging!
Fußnoten
Der Sinn dieses Aufrufs hat sich mir leider nicht erschlossen. Ob er tatsächlich notwendig ist, weiß ich auch nicht wirklich (ich hatte den Aufruf getätigt, bevor ich irgend etwas anderes probiert hatte). Aber er scheint – wie ich oben schon schrieb – zumindest nicht zu schaden.↩︎
Pygbag erzeugt zusätzlich noch einen Folder
web-cache
, der nach jedem Aufruf immer »fetter« wird. Ich hielt daher ein Hochladen dieses Verzeichnisses nicht für sinnvoll.↩︎