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

StackOverflow https://stackoverflow.com/questions/370680

  •  21-08-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

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

Другие советы

Пигаме:Лицензия LGPL

Пиглет:Лицензия BSD

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

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

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

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

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

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

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

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

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

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

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

Хочу добавить, что есть быстрая библиотека спрайтов Кролик что может стать хорошим дополнением для Пиглета.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top