web-dev-qa-db-ja.com

PythonゲームライブラリPygameとPygletの違いは?

私はPygameである程度の経験がありますが、最近Pygletの周りには多くの話題があるようです。

これらの2つのライブラリをどのように比較しますか?機能と使いやすさの両方で、どちらを使用する利点は何ですか?

最後に、1つは他よりPythonicicだと思いますか?

43
nakedfanatic

小さな2DシューティングゲームとしてPygameとPygletの両方を検討していました。ソースコードといくつかのチュートリアルを確認した後、Pygletを使用しました。結果にはとても満足していました。

ピグレットはすぐに動作し、動作するように楽しく、概念的には非常にきれいでした。間違いなくPythonicな感じがしました:簡単で読みやすい例が非常に迅速に処理され、デコレータを使用してイベント処理に優れた効果をもたらします。また、特定のプログラム構造を強制しなかったため、Pymunkの物理モデリング( http://code.google.com/p/pymunk/ )を簡単に組み合わせることができました。

それはOpenGLに基づいており、それらの機能を特殊効果に使用できますが、それらの知識がなくても問題なく実行できました。

多くの人がPythonインタープリターをインストールしていないため、これは重要なpy2exeとpy2appでもうまく機能します。

不利な点としては、それがより新しいので、ウェブ上でそれについての情報が少なくなり、見られるサンプルゲームが少なくなります。

また、以前のバージョンからかなり変更されたため、一部のチュートリアルは古くなっています(「新しいスタイルのイベントループ」と主要な追加としてのSpriteクラスがあります)。

例をダウンロードして(Astraeaと呼ばれるNice Asteroidsクローンが含まれています)、スタイルが気に入ったかどうかを確認することをお勧めします。

27
Kiv

Pygame:LGPLライセンス

Pyglet:BSDライセンス

PygameはSDLライブラリに大きく依存しています

Pygletは純粋なpython依存関係の少ないライブラリです。OpenGLをよりよく理解する必要があると思います

Pygameは長い間このあたりにあり、多くの人々がこれを使用しています

Pygletは新しいlibです

Pygameはゲーム開発向けです(カーソル、スプライト、ジョイスティック/ゲームパッドのサポート)

Pygletはより一般的な目的です(Spriteクラスがあります)

私はpyglet-usersメーリングリストでこの議論も見つけました: pygame + pyopenglからpygletへ

免責事項:私はまだどちらも使用せず、いくつかのチュートリアルのみを試しました;-)

29
sastanin

ゲーム自体の中でベクターグラフィックスやプリミティブを描画するつもりがなく、ディスクからのイメージのロードのみを行う場合は、Pygletが適しています(2Dゲームの場合)。また、独自のゲームループを作成する必要がなく、速度とタイミング、および応答性を心配する必要がないため、非常にクリーンです。

ただし、グラフィックをオンザフライで生成し、変数またはファイルとして保存する必要がある場合、低レベルのOpenGL関数をいじくりまわす必要があるため、pygletはかなり複雑になります。これらのシナリオでは、pygameはソフトウェアレンダリングとSurfaceクラスを備えているため、はるかにユーザーフレンドリーです。または、Python Imaging Libraryを使用して、pygletとインターフェースすることもできます。

明らかに、3Dゲームの場合は、とにかくOpenGL関数をいじくりまわす必要があります。その場合、pygame + PyOpenGLよりもpygletをお勧めします。

12
ztangent

高速なスプライトライブラリ Rabbyt があることを付け加えておきます。これは、Pygletの優れた補完物となる可能性があります。

5
sastanin

Pygameとpygletの両方を調べたところ、pygletは簡単に入手でき、数日で簡単なブレイクアウトスタイルのゲームを作成できました。

2