faire_tourner_des_jeux_pygame_sur_une_page_web
Table des matières
Faire tourner des jeux pygame sur une page web
Comparatif des moteurs
- pygbag : https://pypi.org/project/pygbag/
- performances : ça a l'air fluide, mais ça consomme pas mal de CPU, même pour de petits jeux
- trinket : https://trinket.io/features/pygame (démo ici)
- performances : catastrophiques, c'est lent
Installer et tester pybag
- pip install pygbag –user –upgrade
- Rajouter ce dossier dans le path :
- Menu démarrer > Modifier les variables d'environnement système (taper “PATH” suffit)
- Dans la fenêtre Propriétés système > Paramètres systèmes avancés > Variables d'environnement
- Dans la partie Variables utilisateurs : modifier Path
- Rajouter (“Nouveau”) : C:\Users\micro\AppData\Roaming\Python\Python311\Scripts
- Redémarrer Visual Studio Code
- La commande pygbag devrait à présent fonctionner
- Attention : votre programme doit gérer l'asynchrone. Un programme graphique minimal pour pygbag (dessine juste des rectangles jusqu'à ce qu'on appuie sur la barre espace), doit être codé dans un fichier nommé main.py :
import asyncio import random import pygame pygame.init() screen = pygame.display.set_mode((1280, 768)) pygame.mouse.set_visible(False) async def main(): #def main(): running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE: running = False pygame.draw.rect(screen, (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)), pygame.Rect((random.randint(0, 1279), random.randint(0, 767)), (random.randint(0, 1279), random.randint(0, 767)))) pygame.display.flip() await asyncio.sleep(0) pygame.quit() #main() asyncio.run(main())
Note : j'ai laissé en commenté les appels “non asynchrones” qu'on aurait tendance à mettre pour un exécutable local. Mais en réalité le mode asynchrone fonctionnera aussi pour un programme interprété dans une fenêtre d'exécution.
- Pour exécuter le programme ci-dessus : ligne de commande pygbag main.py
- Un mini-serveur web sera ensuite lancé en attente sur le port 8000 (vérifier le port en texte de la ligne de commande)
- http://localhost:8000/ permet ensuite d'exécuter le jeu depuis un navigateur
- Le contenu de build/web peut être déployé sur un serveur web pour être exécuté depuis n'importe où
faire_tourner_des_jeux_pygame_sur_une_page_web.txt · Dernière modification : 2023/06/27 17:16 de tickleman