Różnice między Pythonowymi bibliotekami gier Pygame i Pyglet?
Miałem pewne doświadczenie z Pygame, ale wydaje się być dużo szumu wokół Pyglet ostatnio.
Jak te dwie biblioteki się porównują? Jaka byłaby korzyść z używania jednego nad drugim, zarówno pod względem funkcji, jak i łatwości obsługi?
Wreszcie, czy można powiedzieć, że jeden jest bardziej Pythonic niż drugi?
5 answers
Rozważałem zarówno Pygame, jak i Pyglet dla małej strzelanki 2D i po przejrzeniu kodu źródłowego i kilku tutoriali poszedłem z Pygletem. Byłem bardzo zadowolony z wyników.
Pyglet pracował od razu i był przyjemny w pracy, a koncepcyjnie bardzo czysty. Z pewnością miał dla mnie Pythoniczne wrażenie: można uzyskać prosty i czytelny przykład bardzo szybko, a do obsługi zdarzeń używa dekoratorów. Nie wymusiła też konkretnej struktury programu, co ułatwiło mi mieszanie się w fizycznym modelowaniu Pymunk ( http://code.google.com/p/pymunk/).
Chociaż jest oparty na OpenGL i można używać tych funkcji do efektów specjalnych, byłem w stanie zrobić dobrze bez żadnej wiedzy o nich.
Działa również dobrze z py2exe i py2app, co jest ważne, ponieważ wiele osób nie ma zainstalowanego interpretera Pythona.
Na minusie jest mniej informacji na jego temat w sieci, ponieważ jest nowsze, a także mniej przykładowych gier do obejrzenia.
Również, to zmieniło się nieco w stosunku do poprzednich wersji, więc niektóre z samouczków, które są tam są teraz nieaktualne (jest " new style event loop" i klasy Sprite jako główne dodatki.)
Polecam ściągnąć przykłady (w zestawie jest ładny Klon Planetoid o nazwie Astraea) i sprawdzić, czy podoba Ci się styl.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-29 02:40:06
Pygame: licencja LGPL
Pyglet: licencja BSD
Pygame w dużym stopniu opiera się na bibliotekach SDL
Pyglet jest czystą biblioteką Pythona z mniejszą ilością zależności, myślę, że wymaga lepszego zrozumienia OpenGL
Pygame jest tutaj od dawna, Wiele osób go używało
Pyglet to nowa lib
Pygame jest nastawiona na rozwój gier (Kursory, sprite ' y, joystick/gamepad wsparcie)
Pyglet jest bardziej uniwersalny (choć ma klasę Sprite)
Znalazłem również tę dyskusję na liście dyskusyjnej pyglet-users: z pygame+pyopengl do pyglet
Disclaimer: ja też jeszcze nie korzystałem, tylko próbowałem kilku tutoriali; -)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-20 03:35:45
Pyglet jest dobry (do gier 2D) , jeśli nigdy nie zamierzasz rysować grafiki wektorowej lub prymitywów w samej grze, i po prostu trzymaj się ładowania obrazów z dysku. Jest to również dużo czystsze, ponieważ nie ma potrzeby pisania własnej pętli gry i musisz martwić się o szybkość, czas i szybkość reakcji.
Jeśli jednak będziesz musiał wygenerować grafikę w locie, a następnie zapisać ją jako zmienną lub jako plik, pyglet stanie się znacznie bardziej skomplikowany, ponieważ zaczniesz obijanie się o niskopoziomowe funkcje OpenGL. W tych scenariuszach pygame jest znacznie bardziej przyjazny dla użytkownika, dzięki renderowaniu oprogramowania i klasie powierzchni. Możesz też użyć biblioteki obrazowania Pythona i połączyć ją z pygletem.
Oczywiście, w przypadku gier 3D i tak będziesz musiał obijać się z funkcjami OpenGL, w takim przypadku polecam pyglet zamiast pygame + PyOpenGL.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-02 20:34:31
Chciałbym dodać, że istnieje szybka biblioteka sprite Rabbyt, która może być dobrym uzupełnieniem dla Pygleta.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-04 07:10:04
Po obejrzeniu pygame i pygleta okazało się, że pyglet jest łatwiejszy do odebrania i był w stanie napisać prostą grę w stylu breakout w ciągu kilku dni.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-19 14:00:39