Различия между библиотеками игр Python Pygame и Pyglet?

У меня был некоторый опыт работы с Pygame, но, похоже, в эти дни вокруг Пиглета много шума.

как сравниваются эти две библиотеки? Каким было бы преимущество использования одного над другим, как в функциях, так и в простоте использования?

наконец, вы бы сказали, что один более Питонический, чем другой?

5 ответов


в Pygame и Pyglet для небольшой 2D шутер, и посмотрев на исходный код и некоторые уроки ходили с Pyglet. Я был очень доволен результатами.

Pyglet работал сразу и было приятно работать, и концептуально очень чисто. Это, конечно, типичный для Python я: вы могли бы получить простой и четкий пример идет очень быстро, и он использует декораторы для хорошего эффекта для обработки событий. Это также не заставило конкретную программу структура, которая облегчила мне смешивание в физическом моделировании Pymunk (http://code.google.com/p/pymunk/).

в то время как он основан на OpenGL, и вы можете использовать эти функции для специальных эффектов, я был в состоянии сделать просто отлично без каких-либо знаний о них.

Он также хорошо работает с py2exe и py2app, что важно, потому что у многих людей нет установленного интерпретатора Python.

с другой стороны, меньше информации об этом в интернете, потому что он новее, а также меньше примеров игр для просмотра.

кроме того, он немного изменился с предыдущих версий, поэтому некоторые из учебников, которые есть, теперь устарели (есть " новый цикл событий стиля" и класс Sprite в качестве основных дополнений.)

Я бы рекомендовал загрузить примеры (есть хороший клон астероидов под названием Astraea включен) и посмотреть, нравится ли вам стиль.


Pygame: лицензия LGPL

Pyglet: лицензия BSD

Pygame сильно полагается на библиотеки SDL

Pyglet-это чистая библиотека python с меньшим количеством зависимостей, я думаю, что она требует лучшего понимания OpenGL

Pygame здесь уже давно, многие люди использовали его

Pyglet-это новый lib

, с которым Pygame-это ориентирован на развитие игры (курсоры, спрайты, поддержка джойстика/геймпада)

Pyglet более общего назначения (хотя он имеет класс Sprite)

Я нашел также это обсуждение в списке рассылки pyglet-users:от pygame + pyopengl до pyglet

отказ от ответственности: я еще не использовал, только попробовал некоторые учебники; -)


Pyglet хорош (для 2D-игр), если вы никогда не собираетесь рисовать векторную графику или примитивы в самой игре и просто придерживаетесь загрузки изображений с диска. Это также намного чище, потому что нет необходимости писать свой собственный игровой цикл и беспокоиться о скорости, времени и отзывчивости.

однако, если вам когда-либо придется генерировать графику на лету, а затем сохранять их, либо как переменную, либо как файл, то pyglet становится значительно сложнее, потому что вы начните возиться с низкоуровневыми функциями OpenGL. В этих сценариях pygame намного более удобен для пользователя, с его программным рендерингом и классом поверхности. Или вы можете использовать библиотеку изображений Python и взаимодействовать с pyglet.

очевидно, что для 3D-игр вам все равно придется возиться с функциями OpenGL, и в этом случае я рекомендую pyglet над pygame + PyOpenGL.


Я хотел бы добавить, что есть быстрая библиотека спрайтов Rabbyt что может быть хорошим дополнением для Pyglet.


посмотрев на pygame и pyglet, я обнаружил, что pyglet легче подобрать и смог написать простую игру в стиле прорыва в течение нескольких дней.