Pygame は SDL のラッパーにすぎないため、技術的には多くのゲームが SDL を使用して作成されていますが、ほとんどの作業はとにかく C サイドで行われています。少し遅いですが、2D ゲームをやるなら十分でしょう。Frets-on-Fireは PyGame を使用して純粋な Python で作成され、FoFiXは Python で C 拡張機能を使用して作成されました。これらのゲームはどちらも非常に優れていますが、低速のコンピューターでは FoFiX を 4 プレーヤーで実行する際に問題が発生する可能性があります。
Pyglet も非常に優れていますが、エミュレーターの開発、単一レイヤーの描画にしか使用していないため、ゲーム開発で実際にどの程度機能するかはわかりません。SDL/PyGame よりも Pyglet で直接 OpenGL を使用する方がはるかに簡単であることがわかりました。そのため、3D ゲームを行う場合は、おそらく SDL を使用するよりも優れています。また、Python で書かれているため、クラスを拡張して関数の処理方法を変更することは非常に簡単です。たとえば、pyglet Texture クラスを介してデータを openGL テクスチャにロードしようとしましたが、クラスは必要な形式でデータをロードできませんでした。そのため、そのクラスを拡張し、テクスチャ タイプを取得する関数を変更しました (文字列から)私が望んでいたテクスチャをすばやく簡単に含めることができます。
十分に言及されていないライブラリの 1 つにSFMLがあります。2.0 API (現在はベータ版) は非常に優れており、使いやすく、私の記憶が正しければ、SDL よりも少し高速に実行されます。また、SDL よりも「オブジェクト指向」であるため、Python などのオブジェクト指向言語で作業している場合は非常に便利です。Cython で Bastien Leonard によって書かれた、非常に使いやすい素晴らしい Python バインディングがいくつかあります (または、最新バージョンを使用したくない場合は、古い C バインディングを使用できます)。しばらく前にこれを使用しましたが、非常に楽しい経験でした。
Python を使用したゲームがあまり出荷されていない理由は非常に単純です。Python ソースを閉じることができないからです。Py2Exeなどを使用してpythonを実行可能ファイルに「コンパイル」しても、実際にはインタープリターとpythonソースをexeファイルにパックするだけで、16進エディターでexeを開くだけでソースを取得できます。
私は「Python で書き、時間の重要な部分は C で書く」の支持者ですが、Python が遅すぎると思われる場合は、おそらく C か、できれば C++ を方法としてお勧めします。なぜなら、Java で書くことによるユーザビリティの利点はあまり得られず、C 言語は Java よりも実行がかなり高速であり、Lua は Python のユーザビリティの一部を奪うだけで、目立ったパフォーマンスの向上は得られないからです。 . SFML と SDL はどちらも C(++) から直接使用できます。
Python を使用することに決めた場合のアドバイス: スクリプト言語として使用されることになっているとおりに使用してください。純粋な python で画像をいじったりロードしたりしないでください。選択したライブラリで利用可能なインターフェイスを使用するか (それらはすべて、これらの種類のものに対して非常に優れたインターフェイスを備えています)、拡張モジュールを作成してそれを行います。ロジックの制御とライブラリからのデータの取得には Python を使用します。この単純なルールに従えば、実際にパフォーマンスの問題が発生することはありません。