19

Cython をゲームの主要なプログラミング言語として使用することは、どれほど実用的でしょうか?

私は経験豊富な Python プログラマーで、Python が大好きですが、特にゲーム プログラミングに関しては初心者です。通常、Python は本格的なゲーム プログラミングを行うには遅すぎると考えられているため、Cython に興味を持っています。Cython を使用すると、Python に似た言語を C の速度で使用できます。

いずれにせよ、おそらく C/C++ を少し学ぶ必要があることは理解していますが、Cython を使用すると開発時間がかなり短縮されるようです。

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

4

6 に答える 6

18

そのような組み合わせで作業していて、目標が 3D ゲームを作成することである場合、成熟した物理演算とオーディオ バインディング、およびOGRE 3DPanda3Dなどの Python API を備えた既製の 3D エンジンを使用することで、おそらくより多くのマイレージを得ることができます。 . そうでない場合でも、Panda3D での Cython の使用に関するこの投稿が役立つ場合があります。

今はわかりませんが、2007 年当時、両者のトレードオフは基本的に次のようなものでした。

  • Panda3D はより適切に文書化され、ゼロから C++ アクセラレーション Python エンジンになるように設計されており (明らかに、C++ エンジン プロジェクトには起こらないいくつかの API 設計決定を行ったようです)、予想どおり、より成熟した Python API を備えていました。
  • PyOgre は、はるかに高度なエンジンの上に構築され、より大規模で活気のあるコミュニティを持っていました。

...しかし、時間の経過は別として、2007 年には Panda3D はまだ GPL 非互換のライセンスの下にあり、多くの人々を追い払っていたことを考えると、変更された可能性は十分にあります。(自分も含む)

于 2010-11-15T02:02:52.280 に答える
11

私はIgnifuga Game Engineの開発者です。これは 2D 指向で、Python/Cython/SDL ベースです。私が一般的に行っているのは、Python でコードを開発し、エンジンのプロファイルを作成して明らかなボトルネック (メイン ループ、レンダリング コードが適切な候補) があるかどうかを確認し、それらのモジュールを Cython に変換することです。次に、すべてのコード (Python および Cython ベース) を Cython で実行し、SDL に対して静的にコンパイルします。Cython のもう 1 つの大きな「長所」は、SDL や C ベースのライブラリへのバインドがほとんど簡単だということです。スレッドに関しては、エンジンは現在、Greenletsを介した協調マルチタスクを備えたシングル スレッドです。ただし、これは、Cython 側の制限ではなく、経験の浅い開発者が陥る可能性のある潜在的なマルチスレッドの落とし穴を軽減するための設計上の決定によるものです。

于 2012-02-21T12:36:26.737 に答える
7

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

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

C++ のバインドに加えて、cython で機能するようになりました。

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

于 2011-04-12T16:16:20.640 に答える
5

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

PyGameはどうですか?

于 2010-11-15T02:02:04.803 に答える
0

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

ゲームで速度を向上させるには、Cython が適切な選択ですが、このパフォーマンスも制限されていると言えます。

于 2013-06-11T14:57:30.433 に答える
-1

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

大規模なゲームを作成していない場合は、Python/Cython で問題ありません。しかし、Cython は、優れたスレッド サポートがなければ、現代の言語としては役に立ちません。

于 2010-12-14T23:54:42.967 に答える