なぜ主要なゲーム エンジンは Python を使用しないのか?

なぜ主要なゲーム エンジンは Python を使用しないのですか?

ビジュアル スクリプティング (Unreal Blueprints、Max/Msp、TouchDesigner など) への愛は別として、私はおそらくスクリプト キディーです。Python や Javascript などのスクリプト言語が大好きですが、(C++、C#、 Java、….) 私を怖がらせて、私の脳を沸騰させてください!

楽しいスクリプティングは、フロントエンド Web 開発 (Javascript) からマルチメディア、3D、インタラクティブ アート & 音楽制作ツール (Maya、Cinema4D、Blender、Touchdesigner、Ableton Live での Python スクリプティングなど) まで、どこにでもあります。

先日、なぜ主要なゲーム エンジンは Python のような単純な言語を使用しないのか疑問に思っていました。Python は、OOP やイベント ベースのプログラミングも処理でき、投入された大量のデータを処理するのに非常に優れています。C++ と C# が大規模なプロジェクトで優れたパフォーマンスを発揮することは知っていますが、Python も小さな偉業ではありません。

つまり、最近では Unreal のブループリントだけで AAA ゲームを開発できるということです (パフォーマンス ヒットについては知っています)。なぜ Unity と Unreal Engine は、Unity Bolt や Unreal Blueprints のようなノードグラフと超難解なプログラミング言語 (C++、C#) の間の架け橋であるこの簡単で超人気の言語を使用しないのですか?!

Epic Games が VERSE と呼ばれる独自のスクリプト言語を開発しているのを読んだことさえあります。

・GDscript (ネイティブ スクリプト言語) は python に非常に似ています

トリフィッドハンター

主要なゲーム エンジンが Python のような単純な言語を使用しない理由

遅すぎる

PyGameに興味があるかもしれません

退屈_ピスタチオ

言語のように Python でコーディングする場合は、Godot Engine を確認してください。そのネイティブ言語は GScript と呼ばれ、Python に大きく影響を受けています。

マイクコーディング

Python は、人類が知っている最も遅い言語です。Web 開発や ML ライブラリのオーケストレーションの問題ではありませんが、Lua(jít) が約 10 倍速く、C# が 20 倍速いゲームに使用しても意味がありません。

エレナ家具

C++ は 30 倍高速ですか?

しばらく C++ で働いていたので、C# を学ぶ理由があるのだろうか。

C++が好きです。しかし、私はjavascriptでプログラミングを学び始めました。最初は、int、float、double、およびポインターと参照に出くわしたとき、まだ混乱していました。

私は永遠にC++のままだと思います。私は弾丸をバイトするので。

kpontheinternet

Godot を試してみてください 🙂 GDscript (ネイティブ スクリプト言語) は python に非常に似ていますが、エンジン用に最適化されています。これは基本的に、エンジン ルーチンを呼び出すためのラッパーです。あなたが言及したように、動的に型付けされ、非常にオブジェクト指向でイベントベースです。

何かを非常に効率的に処理する必要がある場合は、Godot で C# や C++ を使用することもできますが、ゲームの実行中にコードを編集できる GDscript と比較して、毎回実行するためにコンパイルする必要があるため、より面倒です。そしてほとんどの場合、C# が実際に有意に高速であることはめったにありません。Godot は「ホビイスト」エンジンとしての評判がありますが、それは新しいからだと思います。

機能的には間違いなく統一されたレベルにあります。IMO、Godot が処理できる以上の 3D パフォーマンスが必要な場合は、ユニティよりもアンリアルを使用する方がよいでしょう (笑)。

問題は、Python などのスクリプト言語を使用する場合、Python インタープリターをエンジンに統合する必要があることです。したがって、GDscript は、ゲーム エンジンを使って得られる限り Python に近いものであり、物事を恐ろしく非効率にすることはありません。言語は python のように見えますが、代わりに Godot 自体がインタープリターです。

コンパイルされたエンジンの上にインタープリター言語を統合するのは難しいことであり、最終的には会社をあまり得られないため、他のエンジンにはこのようなものが組み込まれていないと思います。また、ゲーム エンジンは、パフォーマンス上の理由から、静的に型付けされたコンパイル済み言語で記述する必要があります。その上にスクリプトを追加することは、エンジンを記述した言語と同じ言語をユーザーに使用させるだけでスキップできる非常に複雑な追加ステップです。

しかし、Godotは最初からそのように構築されており、オープン ソースであるため、開発の方向性は、企業にとって何が有益かではなく、ユーザーが何を望んでいるかによって決定されます。

Unreal のブループリントは素晴らしいですが、柔軟なスクリプト言語であることをはるかに超えて、非プログラマーがよりアクセスしやすいようにすることを優先しました。これは非常に賢明なビジネス上の決定であると私は考えています。

FHEK789

Godot 4 では 3D が高速になりました (そして一般的にはより優れています)。GDScript コードで型を使用すると、実際にも高速になります!

ゲームワールドシェイパー

2 つの理由があります。遅く、動的言語は、大規模なシステムで使用される場合、追跡するのが困難です。

一例として、C# では、他のクラスのブループリント/コントラクトとして使用するために、Abstract クラスまたはインターフェイスのいずれかが必要です。これは、それらを継承する他のクラスの機能をいつでも確認できることを意味します。動的言語にはダックタイピングがあり、いつでも任意のクラスに任意の機能を与えることができます。「X オブジェクトは Y を行う」という明確な定義はありません。どのオブジェクトでも何でも実行できます。

おいしいクジラ

日常の仕事で Python を使用し、自宅で C++ を使用している者として、Python で記述されたゲーム エンジンは完全な悪夢のように聞こえます。

ただし、ゲーム ロジックなどのスクリプト アドオンと見なすこともできます。

RmaNReddit

少なくとも青写真を置き換えることができますか? ブループリントは本当にスクリプティングのように感じるからです

Arian-ki

遅すぎる。最初はpythonを学び始めましたが、c#を始めるとそれほど苦労しませんでした

コードの背後にあるロジックを学ぶだけなら、言語は問題ではありません

とてもしょっぱいトマト

私は、python は一般的に c++ よりも約 30 倍遅く、複雑なことを行うと、それらの数値はさらに悪いと読みました。

snejk47

AAA の場合、C++ のパフォーマンスが必要かどうかのどちらかであり、30 回または 2 回問題にならないため、それは問題ではありません。パフォーマンスと決定論が必要な場合は、それが必要です。いずれにせよ、スクリプトは時間に関して重要なことを行うべきではありません。それが何であるかは問題ではありません。とにかく、一部のハードウェアで何らかのスタッターが発生します。Python はアートやクリエイティブな仕事ではとても人気があると思いますが、ゲームのスクリプティングではあまり人気がありませんでした。もちろん、The Sims のような例外もありますが、ほとんどのアート関係者がそれらを使用していたので、そのようなものであることは驚くことではありません。もちろん、計算量の多い数学フィールド、ML、DL などはすべて無視します。

パープルスパイ

これは非常に高レベルのインタープリター言語であり、オーバーヘッドが多く、C++ などの他の言語に比べて非常に遅くなります。

シャンビオール

Pythonは少しでもコンパイルできないか、効率的な方法でコンパイルできないためです。Python をコンパイルできるようになった日は、絶対的なプログラミング言語を作成したことになります。ゆっくりなので楽で便利です。

「C# と C++ が最高のパフォーマンスを発揮することは知っていますが、python も悪くありません」そうです。C++ と Python を比較することは、誰かが知っている言語をどれだけ速く読めるかと、翻訳辞書を使ってその言語をどれだけ速く読めるかを比較しようとするようなものです。

レベル2

RmaNReddit

Unreal は、ブループリント ネイティブ化と呼ばれるものを使用して、ブループリントを C++ コードに変換およびコンパイルします。ブループリントは C++ の上に構築されており、ブループリントで C++ クラスを公開することもできますが、Python でも実行できないのでしょうか?

(私の質問がプログラマーにとってばかげているように聞こえる場合は、すみません。私は単なるスクリプト ガイです:D)

ダブルダブル

Cython は Python を C でコンパイルしますが、いくつかの制約があります (ネイティブの Python コードが完全にサポートされているわけではありません)。Python コンパイルを C++ に変換するための同様のライブラリについて聞いたことがあります… いずれにせよ、これらのツールは存在しますが、多くの場合、C プラグインとして高いパフォーマンスを必要とする特定の部分を書き直す方が簡単です。全体として、別の言語を使用します。

Python で概念実証のプロトタイプを作成してから、c++、go、またはrust で書き直すことは珍しくありません (一般的なソフトウェア開発の場合)。

エレナ家具

>C++ と python を比較することは、比較しようとするようなものです

じゅうたんと車のことを言うつもりだったみたいだね

タッガイイントーキョー

Unreal には Python が統合されています。ほとんどの場合、BP で実行できるアクションはすべて Python でも実行できます。人々は主にツールやパイプラインに使用し、ゲームプレイには使用しません。

マルニー

Epic Games が VERSE と呼ばれる独自のスクリプト言語を開発しているのを読んだことさえあります。

Unreal Engine 3 には独自のスクリプト言語がありました。ダメでした(かなり偏った意見)。彼らは青写真に固執する必要があります。

力学ドリブン

Python は遅く、型付けされていない言語は大規模なプロジェクトには適していない、というコメントを既に寄せている人もいます。

経験豊富なプログラマーとして、私は Python が簡単かどうかも疑問に思います。もちろん、それは常にあなたが何をしているかに依存しますが、Python には初心者にとっていくつかの落とし穴があります (私は思いますか?)。また、Python で非常にエレガントでパフォーマンスの高いコードを作成することは可能ですが、実際にそうするには、その言語がどのように「使用されたい」かをある程度理解する必要があります。

Final_いいえ

お金を稼ぐことを目的として商用ゲーム エンジンを開発している場合、できるだけ多くのユーザーにアピールしたいと考えています。

世界中のほとんどの人がすでに C に似た言語を知っているとき、Python はあまりにもニッチなターゲットです。

RmaNReddit

私はあなたが間違っていると思います.Pythonは最近どこにでもあり、開発を行うすべての人がそれを知っています!!!

解き放たれた毒

遅いから。Python (通常は 3D のもの) で計算負荷の高いことを行うには、別の言語で書かれたコンパイル済みコードを使用する専用のソフトウェア パッケージを大量に使用する必要があります (例: numpy は配列演算の実際の実装に C を使用します)。

Python は、プログラミングを教えたり、時間に依存しないアイデアやタスクをすばやくテストしたりするのに最適ですが、限られた時間で計算量の多いことをしたい場合は、多くの最適化を可能にするコンパイル済み言語が必要です。これは通常、次のようなことを意味します。 C/C++。

そのジャケット

JavaScriptを知っていれば、C#は非常に似ています。

ほとんどの場合、「var」を使用して変数を定義することもでき、コンパイラーが型を見つけ出します。

一時的な氷

Python は解釈型言語です。つまり、プログラムは、C++ のように実行する前にプログラム全体をコンパイルするのではなく、1 行ずつコンパイルして実行されます。これにより、python が遅くなります。

ヨルダンcjb

ゴドー。独自の言語を使用しており、Python に少し変更を加えただけです。

なぜ主要なゲーム エンジンは Python を使用しないのですか-!!! – ゲーム開発

RE ENGINE開発者&エンジニア座談会。カプコンの文化を体現した「自分たちが最も使いやすいゲームエンジン」の設計思想を聞く – ゲームメーカーズ

-世界最速の開発-を可能にする! 『バイオハザード7 レジデント イービル』を支えるカプコンの新ゲームエンジン「RE ENGINE」とは?

Next Post

Rust製ゲームエンジン Bevy Engine 0.9 リリース

水 11月 16 , 2022
Bevy 0.9 は、Rust を利用したオープン ソース ゲーム フレームワークにいくつかの改善をもたらします。