Различия между библиотеками игр Python Pygame и Pyglet? - PullRequest
41 голосов
/ 16 декабря 2008

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

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

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

Ответы [ 5 ]

28 голосов
/ 16 декабря 2008

Pygame: лицензия LGPL

Pyglet: лицензия BSD

Pygame сильно зависит от библиотек SDL

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

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

Pyglet - это новая библиотека

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

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

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

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

26 голосов
/ 29 декабря 2008

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

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

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

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

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

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

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

12 голосов
/ 23 декабря 2010

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

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

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

5 голосов
/ 05 января 2009

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

2 голосов
/ 19 марта 2010

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

...