2009-03-13 17 views
14

jMonkeyEngineを使用してJavaで単純な3D(アイソメリアルビュー)ゲームを作成する予定です.OpenGLのことを学び、効率的なアルゴリズム(ランダムマップ生成アルゴリズム)を作成したいだけです。Pythonで書かれた3D OpenGLゲームは、見栄えが良く、速く動くことができますか?

私は何をすべきか計画していたとき、私はPythonに切り替えることに不思議に思っていました。私は、Pythonが3dゲームを書くためのツールになることはなかったと知っていますが、この言語でうまくいくゲームを書くことは可能でしょうか?

私は、ゲームエンジンの残りの部分に電源を供給するために、3Dグラフィック、素敵なエフェクト、およびフリーのCPU時間を覚えていますか?私は良いJavaゲームを見ていた - そして正直言って、私はRunescape HDで達成された詳細のレベルを見たときにかなりショックを受けた。

一方、pygame.orgには2dゲームしかありません。いくつかの3Dプロジェクトを開始しています。 Pythonのための効率的な3Dゲームエンジンはありますか? pyopenglは唯一の選択肢ですか? Pythonで見栄えの良いゲームは普及していないか、実現することはできませんか?

私はいかなる情報/フィードバックにも感謝します。

+0

[ModernGL](https://github.com/cprogrammer1994/ModernGL)、[pygame](https://www.pygame.org)、[pymunk](https:// gitub.com/viblo/pymunk)[pyglet](https://www.pyglet.org) –

答えて

18

3Dパフォーマンスが心配な方:パフォーマンスに重大な部分のほとんどは、OpenGL(Cライブラリやハードウェア)で処理されるため、ドライブに使用する言語はあまり重要ではありません。

実際にパフォーマンスが問題であるかどうかを確認するには、試してみる必要があります。しかし原則的にうまくいかない理由はありません。

いずれにしても、PythonでもC言語でも、クリティカルな部分を最適化することはできますが、パフォーマンスの重要度が低いほとんどのゲームエンジンでPythonの利点が得られます。

+0

PyOpenGLの代わりに[ModernGL](https://github.com/cprogrammer1994/ModernGL)を使用してください。簡単かつ迅速で、ctypesは必要ありません。それはゲームエンジンではなく、Pythonの方法でOpenGLへのアクセスです。 –

2

Python-Ogreをチェックしてください。私はちょうどそれを自分自身に混乱させました、深刻なものはありませんが、かなり良いようです。

+0

私はPC上でWiiTanksの書き直しを考えていて、PyGameを使っていました...しかし、Ogreはむしろ有望に見えます。 –

+0

@JonCageこれはPythonでこれを書いたことがありますか? – johnny

+0

私はいくつかの基本は動作していますが、リリースする価値はありません。 –

1

おそらく、話題にはならないかもしれませんが、あなたの目標がPythonを学ぶことであれば、IronPythonXNAを使ってゲームを作るのはどうですか? XNAはOpenGLではありませんが、非常にシンプルな2D/3Dエンジンであり、高速で、Shader Model 3.0をサポートしています。

+6

教会での誓いのように... –

1

Frets on Fireプロジェクト - オープンソースのギターヒーローの代替案をご覧ください。これはPythonで書かれていて、OpenGLでまともな3Dグラフィックを持っています。私はits sourcesなどのライブラリーのヒントを調べることをお勧めします。

2

私はpygameのと同様のシステムをあるpygletが、OpenGLのへの完全なバインディングとをお勧めします。シンプルな2Dゲームから始めて、システムのハングアップを取得し、後で3Dに作業することができます。最近ではPygameよりも現代的なシステムで、SDLを中心に構築されています。

1

数年前にヴァンパイアのゲームがありましたが、コードのすべてではないにしても、ほとんどがPythonに含まれていました。 3Dルーチンが含まれているかどうかはわかりませんが、うまくいきました。

3

私はEuroPythonは、PythonからOpenGLを駆動するために、私の素人の試みについて話しました: http://pyvideo.org/video/381/pycon-2011--algorithmic-generation-of-opengl-geom

私が話しているコードの最新バージョンはここにある: https://github.com/tartley/gloopy

それは "として請求されますライブラリー 'というものですが、それは私の素朴なものでした。それは個人的な実験コードです。

しかし、Pythonから数百ビットのジオメトリを60fpsで移動できることを実証しています。

上記のデモは単純なジオメトリとテクスチャのない面を使用していますが、より詳細なジオメトリ、テクスチャマッピングまたはその他の最新のグラフィック効果がフレームレートに実質的に影響しないことがわかりました。あるいは、少なくともCプログラムで同じエフェクトを使用するよりも悪影響を及ぼすことはありません。これらはGPU上で実行されるので、あなたのプログラムがPythonで書かれていても全く違いはありません。

CPU側で動的ジオメトリを作成している場合、Pythonからパフォーマンスに影響されやすい点が1つあります。形状を曲げたり融解したりして、形状内の個々の頂点を動かします。このようなPythonでの頂点ごとの計算を行い、結果から新しいctypes配列を作成し、このフレームをGPUにシングルするごとに、フレームが遅くなります。代わりに、おそらく頂点シェーダでこれを実行する必要があります。

一方、アフィン変換(オブジェクトの移動、回転、引き出しの開け、カーホイールの回転、ジョイントされたロボットアームの屈曲)だけを望むなら、これらすべてはGPUと実際、あなたのプログラムはPythonで書かれているため、パフォーマンスにほとんど違いはありません。

関連する問題