Uruchom Pygame- grę w przeglądarce
pygbag — aktywnie wspierane narzędzie społeczności do tworzenia Pygame- gier w WebAssembly, nieoficjalna część pygame-ce.
Rozdział 20.10 już wspomniała: gra internetowa na Pygame trafia do przeglądarki przez WebAssembly. Narzędzie, które w praktyce tworzy ten zespół, nazywa się pygbag jest aktywnie wspieranym projektem społecznościowym, a nie oficjalną częścią pygame-ce.
pip install pygbag
pygbag moya_igra/
Polecenie uruchamia lokalny serwer WWW i otwiera grę bezpośrednio w przeglądarce — wygodne do sprawdzenia przed publikacją na stałym hostingu. Zwróć uwagę: argument to folder projektu, a nie osobny plik.
main.py — ta nazwa jest wbudowana w zespół i nie można jej przemianować. Trudne jest to, że przy innej nazwie (igra.py, game.py) budowa się zakończy pomyślnie i bez żadnego ostrzeżenia, ale w przeglądarce gra po prostu się nie uruchomi: loader będzie szukał main.pytego nie ma w archiwum zbudowanym. Jeśli strona otwiera się po kompilacji, ale pozostaje pusta, pierwszą rzeczą jest sprawdzenie nazwy pliku.Co działa inaczej w sieci
Wersja przeglądarkowa gry nie działa dokładnie tak jak zwykłe uruchomienie na komputerze stacjonarnym — kod wykonywany jest wewnątrz piaskownicy przeglądarki, z której:
| Normalne uruchamianie pulpitu | Zgromadzenie do pygbag | |
|---|---|---|
| Dostęp do systemu plików | Pełne | Ograniczone do piaskownicy przeglądarki |
| Główna Pętla | while True w twoim kodzie | Asynchroniczny, z await asyncio.sleep(0) na każdej klatce |
| Instalacja | wymaga Python i pip install | Nie jest wymagane – otwórz link i zagraj |
| Występy | Natywna prędkość CPU | Może różnić się od desktopu – warto mierzyć na docelowym urządzeniu |
Główna praktyczna różnica w kodzie — pętla gry musi stać się asynchroniczna
(async def main() z await asyncio.sleep(0)
na końcu każdej klatki), aby nie blokować wątku przeglądarki: pygbag oczekuje dokładnie
taka struktura programu. Ważne jest, aby await tutaj dodane
W pobliżu z clock.tick()i nie zastępuje go w przykładach
pygbag limit liczby klatek pozostaje niezmienny, a łańcuch znaków
await następuje zaraz po tym.
Jak wolniejsza jest budowa przeglądarki niż na komputerze, nie da się powiedzieć z góry: zależy od przeglądarka, urządzenie gracza oraz sama gra. Wydajność powinna być mierzona na podstawie celu i nie ustalać określonego procentu strat z góry.