私は Pygame を使った経験がありますが、最近は Pyglet が話題になっているようです。
これら 2 つのライブラリはどのように比較されますか? 機能と使いやすさの両方で、一方を他方よりも使用する利点は何ですか?
最後に、一方が他方より Pythonic であると思いますか?
私は小さな2DシューターのためにPygameとPygletの両方を検討していました。ソースコードといくつかのチュートリアルを見た後、Pygletを使用しました。結果にとても満足しました。
Pygletはすぐに機能し、操作が楽しく、概念的には非常にクリーンでした。それは確かに私にはPythonicの感覚を持っていました。簡単で読みやすい例を非常にすばやく実行でき、デコレータを使用してイベント処理に効果を発揮します。また、特定のプログラム構造を強制しなかったため、Pymunkの物理モデリング(http://code.google.com/p/pymunk/)を簡単に組み合わせることができました。
OpenGLをベースにしており、これらの機能を特殊効果に使用できますが、私はそれらの知識がなくても問題なく実行できました。
また、py2exeやpy2appでもうまく機能します。これは、多くの人がPythonインタープリターをインストールしていないため重要です。
欠点は、新しいためWebでの情報が少なくなり、サンプルゲームが少なくなることです。
また、以前のバージョンからかなり変更されたため、現在存在するチュートリアルの一部は古くなっています(主要な追加として「新しいスタイルのイベントループ」とSpriteクラスがあります)。
例をダウンロードして(Astraeaと呼ばれる素敵なAsteroidsクローンが含まれています)、スタイルが気に入ったかどうかを確認することをお勧めします。
pyglet-usersメーリングリストでもこのディスカッションを見つけました:pygame+pyopenglからpygletまで
免責事項:私はまだどちらも使用していません、いくつかのチュートリアルを試しただけです;-)
Pyglet は (2D ゲームの場合) ゲーム内でベクター グラフィックスやプリミティブをまったく描画するつもりがなく、ディスクから画像をロードすることに固執する場合に適しています。また、独自のゲーム ループを作成する必要がなく、速度、タイミング、および応答性について心配する必要がないため、はるかにクリーンです。
ただし、オンザフライでグラフィックスを生成し、それらを変数またはファイルとして保存する必要がある場合は、低レベルの OpenGL 関数をいじり回さなければならないため、pyglet はかなり複雑になります。これらのシナリオでは、ソフトウェア レンダリングと Surface クラスを備えた pygame の方がはるかにユーザー フレンドリーです。または、Python Imaging Library を使用して、それを pyglet と連携させることもできます。
明らかに、3D ゲームの場合はとにかく OpenGL 関数をいじる必要があります。その場合は、pygame + PyOpenGL よりも pyglet をお勧めします。
Pyglet を補完する高速なスプライト ライブラリRabbytがあることを付け加えておきます。
pygame と pyglet の両方を調べた結果、pyglet の方が理解しやすく、数日で簡単なブレイクアウト スタイルのゲームを作成できることがわかりました。