46 votes

Différences entre les bibliothèques de jeu Python Pygame et Pyglet?

J'ai eu quelques expériences avec Pygame, mais il semble y avoir beaucoup de discussions autour de Pyglet ces jours-ci.

Comment ces deux bibliothèques se comparent-elles ? Quels seraient les avantages d'utiliser l'une plutôt que l'autre, tant en termes de fonctionnalités que de facilité d'utilisation ?

Enfin, diriez-vous que l'une est plus Pythonic que l'autre ?

31voto

sastanin Points 16061

Licence :

  • Pygame : Licence LGPL
  • Pyglet : Licence BSD

Dépendances de bibliothèque :

  • Pygame repose fortement sur les bibliothèques SDL
  • Pyglet est une bibliothèque en pur Python avec moins de dépendances, je pense qu'elle nécessite une meilleure compréhension d'OpenGL

Communauté :

  • Pygame existe depuis longtemps, beaucoup de gens l'ont utilisé
  • Pyglet est une nouvelle bibliothèque

Public cible :

  • Pygame est orienté vers le développement de jeux (curseurs, sprites, support des manettes de jeu)
  • Pyglet est plus généraliste (bien qu'il dispose d'une classe Sprite)

J'ai également trouvé cette discussion sur la liste de diffusion des utilisateurs de pyglet : de pygame+pyopengl à pyglet

Avis de non-responsabilité : Je n'ai utilisé aucun des deux pour l'instant, j'ai seulement suivi quelques tutoriels ;-)

1 votes

Pyglet doit dépendre d'OpenGL, tout comme Pygame dépend de SFL.

2 votes

Vrai, mais tel que je le comprends, il accède aux appels GL à travers l'API du système d'exploitation, tandis que SDL nécessite généralement une installation. Pour être juste, pour un support A/V plus sophistiqué, Pyglet nécessite AVbin.

31voto

Kiv Points 9116

J'envisageais à la fois Pygame et Pyglet pour un petit jeu de tir en 2D, et après avoir examiné le code source et quelques tutoriels, j'ai opté pour Pyglet. J'étais très heureux avec les résultats.

Pyglet a fonctionné immédiatement et a été agréable à utiliser, et conceptuellement très propre. Il avait certainement une sensation Pythonique pour moi : vous pouviez obtenir rapidement un exemple simple et lisible, et il utilise les décorateurs de manière efficace pour la gestion des événements. Il n'imposait pas non plus une structure de programme particulière, ce qui m'a permis d'incorporer facilement la modélisation physique de Pymunk (http://code.google.com/p/pymunk/).

Bien qu'il soit basé sur OpenGL et que vous puissiez utiliser ces fonctionnalités pour des effets spéciaux, j'ai pu m'en sortir très bien sans aucune connaissance à ce sujet.

Il fonctionne également bien avec py2exe et py2app, ce qui est important car de nombreuses personnes n'ont pas d'interpréteur Python installé.

En revanche, il y a moins d'informations à son sujet sur le web car il est plus récent, ainsi que moins de jeux d'exemple à consulter.

De plus, il a beaucoup changé par rapport aux versions précédentes, donc certains tutoriels qui sont là sont maintenant obsolètes (il y a la "boucle d'événements de nouveau style" et la classe Sprite comme principales additions.)

Je recommanderais de télécharger les exemples (il y a un beau clone d'Asteroids appelé Astraea inclus) et de voir si vous aimez le style.

15voto

ztangent Points 383

Pyglet est bon (pour les jeux 2D) si vous n'avez jamais l'intention de dessiner des graphiques vectoriels ou des primitives dans le jeu lui-même, et que vous vous contentez simplement de charger des images depuis le disque. C'est aussi beaucoup plus propre car il n'est pas nécessaire d'écrire votre propre boucle de jeu et de vous soucier de la vitesse, du timing et de la réactivité.

Cependant, si vous devez générer des graphiques à la volée, puis les sauvegarder, que ce soit sous forme de variable ou de fichier, pyglet devient considérablement plus compliqué car vous commencez à jouer avec les fonctions OpenGL de bas niveau. Dans ces scénarios, pygame est beaucoup plus convivial, avec son rendu logiciel et sa classe Surface. Ou vous pourriez utiliser Python Imaging Library et l'interfacer avec pyglet.

Évidemment, pour les jeux 3D, vous devrez de toute façon jouer avec les fonctions OpenGL, auquel cas je recommande pyglet plutôt que pygame + PyOpenGL.

5voto

sastanin Points 16061

Je voudrais ajouter qu'il existe une bibliothèque de sprite rapide Rabbyt qui pourrait être un bon complément pour Pyglet.

0 votes

Ce lien est cassé. Essayez l'un de ceux-ci : arcticpaint.com/projects/rabbyt (nouvelle page ?), pypi.python.org/pypi/Rabbyt (sur PyPI), bitbucket.org/mmarshall/rabbyt (code source versionné).

3voto

Ayant examiné à la fois pygame et pyglet, j'ai trouvé pyglet plus facile à apprendre et j'ai pu écrire un jeu de style breakout simple en quelques jours.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X