15


5

ゲーム開発にCythonを使用していますか?
  • Cythonをゲームの主要なプログラミング言語として使用することはどれほど実用的ですか?*

私は経験豊富なPythonプログラマーであり、絶対に気に入っていますが、特にゲームプログラミングに関しては初心者です。 通常、Pythonは深刻なゲームプログラミングを行うには遅すぎると考えられているため、Cythonが興味深いのはこのためです。 Cythonでは、Cの速度でPythonのような言語を使用できます。

とにかくC / C ++を少し学習する必要があることは理解していますが、Cythonは開発時間をかなり短縮するようです。

それで、実用的ですか? OpenGL、OpenAL、Bullet PhysicsなどのC / C ++ライブラリを引き続き使用できますか?

6 回答


16


そのような組み合わせで作業していて、3Dゲームを書くことが目標である場合、成熟した物理学とオーディオバインディング、http://などのPython APIを備えた既製の3Dエンジンからより良い走行距離を得ることができます。 www.ogre3d.org/[OGRE 3D](http://www.python-ogre.org/[Python-OGRE])またはhttp://panda3d.org/[Panda3D]。 あなたがそうしなくても、http://www.panda3d.org/blog/?p = 173 [Panda3DでCythonを使用]に関するこの投稿は役に立つかもしれません。

今はわかりませんが、http://www.ogre3d.org/addonforums/viewtopic.php?f = 3&t = 5823 [2007年に戻る]、2つのトレードオフは基本的に次のとおりでした。

  • Panda3Dは、より良く文書化され、ゼロから設計され、 C 加速Pythonエンジン(明らかに、C エンジンプロジェクトでは発生しないAPI設計の決定を下した)と、予想どおり、より成熟したPython APIがありました。

  • PyOgreは、はるかに高度なエンジンの上に構築され、 より大きく、より活気のあるコミュニティ。

…​however it’s quite possible that may have changed, given that, 時間の経過はさておき、2007年、Panda3DはまだGPL非互換のライセンスの下にあり、多くの人々を追い払った。 (自分自身を含む)


8


私はhttp://ignifuga.org [Ignifuga Game Engine]の開発者であり、2D指向でPython / Cython / SDLベースです。 私が通常行うことは、Pythonでコードを開発し、エンジンをプロファイルして明らかなボトルネック(メインループ、レンダリングコードが適切な候補)があるかどうかを確認し、それらのモジュールをCythonに変換することです。 次に、Cythonを介してすべてのコード(PythonおよびCythonベース)を実行し、SDLに対して静的にコンパイルします。 Cythonのもう1つの大きな「プラス」は、SDLまたはCベースのライブラリへのバインドがほとんど簡単なことです。 スレッドに関しては、エンジンは現在、http://pypi.python.org/pypi/greenlet [Greenlets]を介した協調マルチタスクを使用したシングルスレッドですが、これは未経験の開発者が陥る可能性のあるマルチスレッドの潜在的な落とし穴を緩和する設計上の決定によるものですが、 Cython側の制限ではありません。


6


この日付(2011年4月12日)で、unixmab83は間違っています。

Cythonはスレッドの使用を禁止していません。no_gil特殊ステートメントを使用するだけです。

c ++のbindinsに加えて、cythonで機能するようになりました。

gamedevに近いものに使用します。 したがって、これについて最終決定を下すことはできませんが、cythonは有効な候補です。


5


多くの場合、特に大規模なライブラリの場合、ビルドするCythonプロジェクトの構成、インポートする構造の把握、PythonへのCコードのブリッジなど、膨大な時間を費やすことになります。 Cythonはすばやいストップギャップです(そして純粋なC / C 開発よりもはるかに快適です)が、Cythonを効果的に使用するために学ばなければならないC の量は、基本的には、とにかく弾丸を噛んでC ++を学ぶ必要があることを意味します。

PyGameはどうですか?


0


Cythonを知っているので、C / C ++を知る必要はありません。 静的型付けを使用しますが、非常に簡単です。 最も難しいのは、コンパイルを機能させることです。Windowsでは、これはビジュアルスタジオで行われます。 たとえば、数学を含む標準ライブラリのようなものがあります。 速度のゲインは大きすぎませんが、これはスコープによって異なります。 ctypesははるかに高速(純粋なC)でしたが、Pythonへの接続は非常に低速だったため、まだ動的なCythonを探すことにしました。

ゲームの速度向上のために、Cythonが正しい選択になりますが、このパフォーマンスにも制限を付けます。


-1


スレッド!!! 優れた現代のゲームではスレッドを使用する必要があります。 * Cythonは実質的にuse *を禁止し、GIL(グローバルインタープリターロック)を常に保持し、コードを順番に実行します。

巨大なゲームを書いていないのであれば、Python / Cythonは大丈夫です。 しかし、Cythonは、適切なスレッドサポートがなければ、現代言語としては良くありません。