64

私の趣味のゲームエンジンにJavascriptを埋め込みたいです。第5世代のJavascriptエンジンがリリースされたので(すべてが非常に高速です)、C ++フレームワークに埋め込むためにどのエンジンを選択するのか興味があります(実際の埋め込みの容易さを含みます)?

注:明確にするために、私はDOMスクリプトやブラウザーでのJavascriptの記述には興味がありません。

これまでのリンクとスレッドからのヒントをまとめました。

念のために言っておきますが、私はLuaが大好きで、すでに5回ほどゲームエンジンに組み込んでいます。

ただし、これは趣味のプロジェクトです。JavascriptはほとんどのWeb開発者に知られていると思います。また、ECMA、Flash、Flexの開発者は、スクリプトにJavascriptとXMLを使用するゲームエンジンの方が使いやすく、大規模な開発者にも対応できると思います。ユーザーベース(そしてこれまでゲームにスキルを使用する機会がなかったユーザーベース)は、Luaを使用するユーザーベース(そして周りにはたくさんあります!)よりも優れています。

また、レコードのために、私はこれでV8を使用します。これは、主にC++スタイルが好きだからです。

4

10 に答える 10

19

SpiderMonkey と V8 の両方を試しました。SpiderMonkey では、何も動作しませんでした。mozilla.org の例をコンパイルすることさえできませんでした。

V8 はすぐに使えるようになり、基本的な C++ <-> Javascript のやり取りがすぐにできるようになりました。V8 を使用しているユーザー向けの Google リストがいくつかあり、私の質問のほとんどが既に回答されていることがわかりました。

于 2008-10-10T04:17:14.297 に答える
18

MozillaのSpiderMonkeyはかなり簡単で、十分に文書化されています。これはCAPIですが、C++でラップするのは簡単です。スレッドセーフになるようにコンパイルできます。これは、メインロジックを1つのスレッドに、ユーザーインターフェイスロジックを2番目のスレッドに配置する必要があるため、ゲームに役立ちます。

C ++を使用しているので、 GoogleのV8は良い選択かもしれませんが、私はまだそれを使った経験がありません。ドキュメントによると( Daniel Jamesのおかげで)、V8はスレッドセーフではありませんが、将来変更される可能性があります。

WebKitのSquirrelFishもありますが、以前探していたときにスタンドアロンバージョンを見つけることができませんでした。

于 2008-09-18T15:41:22.037 に答える
8

Java Scriptは本当にあなたのゲームに適した言語ですか?世の中に出回っているゲームの多くは、スクリプトにLuaプログラミング言語を使用しています。統合は簡単で、非常に小さく、ほぼすべてのプラットフォームでコンパイルでき、習得も簡単です。

これはややオフトピックですが、物事を正しく行うには、既成概念にとらわれずに考えることが重要になる場合があります。

于 2008-09-18T17:26:14.263 に答える
8

現時点では、v8 は x86、x64、およびアーム プロセッサでのみ動作すると思います。これは不利になる可能性があります。

スレッドセーフに関しては、include/v8.hから:

 * Multiple threads in V8 are allowed, but only one thread at a time
 * is allowed to use V8.  The definition of 'using V8' includes
 * accessing handles or holding onto object pointers obtained from V8
 * handles.  It is up to the user of V8 to ensure (perhaps with
 * locking) that this constraint is not violated.

詳細はソース ファイルを参照してください (doxygen のドキュメントのように見えますが、どこにも掲載されていないようです)。

更新:おそらくしばらく前に、そのコメントは削除されました。v8Isolateには、エンジンのインスタンスを表すオブジェクトがあるようです。1 つのIsolateインスタンスは、一度に 1 つのスレッドでのみ使用できますが、他のIsolateインスタンスは同時に他のスレッドで使用できます。

于 2008-09-18T21:29:55.957 に答える
7

スクリプト エンジンと C++ について話すときは、chaiscriptも考慮することができます。これは ecma スクリプト (~Javascript) に近く、c++ に組み込むのは非常に簡単です。

ウェブページからの販売者:

... 一方、ChaiScript は、C++ との統合を念頭に置いてゼロから設計されました。... ChaiScript には、メタ コンパイラ、ライブラリの依存関係、ビルド システムの要件、およびあらゆる種類のレガシー バゲージがありません。At は、公開する C++ 関数とシームレスに連携できます。型について明示的に伝える必要はありません。関数中心です。

ChaiScript を使用すると、プログラムに 3 行のコードを追加するだけで、ビルド手順をまったく変更せずに、文字通りアプリケーションのスクリプト作成を開始できます。

于 2011-11-30T05:21:30.637 に答える
6

V8が他のエンジンよりも1000%(または何でも)速いことを示したシーンにV8が最初にヒットしたときに出てきたベンチマークは、再帰が得意なエンジンを優先することに重点を置いていました。コードで多くの再帰を使用する場合、V8は速度的に大きな利点をもたらす可能性があります。「現実の世界」(少なくとも現在)のWeb関連では、SquirrelFish Extremeが現時点で勝者のようです(私自身の非公式のテストの結果については、このトピックに関する私のブログ投稿を参照してください)。

他の人が指摘しているように、統合の容易さとドキュメントの品質が純粋な速度よりも優先される可能性があります。あなたが出荷しなければ、それはジャックを意味するのではありません!

于 2008-09-19T02:30:00.620 に答える
3

SpiderMonkey の次の進化形である TraceMonkey が登場するのを待ちたいと思います。より速く、より優れた設計。( Adob​​e Flash から寄贈されたコードを使用します )。

Tracemonkey は、実際の使用状況に基づいて実行時に構造を積極的に最適化することで、繰り返しのアクションを大幅に高速化することに誇りを持っています。これは、ゲームの拡張に便利です。

于 2008-09-18T15:52:13.147 に答える
2

Javascript .NET を試す:

http://javascriptdotnet.codeplex.com/

Google V8 を実装しています。Javascript を .NET コードから直接コンパイルして実行し、Javascript コードで使用する CLI オブジェクトを提供することもできます。V8 は、パフォーマンスの点でこれまでに作成された中でおそらく最高のエンジンであり、Javascript からネイティブ コードを生成します。

于 2010-07-08T12:02:24.927 に答える
1

v8 は非常に高速な JavaScript エンジンであるため、今後も注目していきます。成熟するにつれて、クロスプラットフォームのサポートが開発されると確信しています。

于 2008-09-18T21:43:52.960 に答える
1

GoogleのV8も参照してください。かなり新しいですけどね。

于 2008-09-18T15:57:07.490 に答える