Pygame/Pygbag ohne Umwege in die eigene Webseite einbinden

Python
Pygame
Pygbag
Spieleprogrammierung
Autor:in

Jörg Kantel

Veröffentlichungsdatum

21. April 2024

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

pygbag <your.app.folder>

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

img = pg.image.load("data/platformchar_idle.png").convert_alpha()

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

  1. 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.↩︎

  2. 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.↩︎