这Javascript机会你嵌入在你的应用程序?[关闭]
-
01-07-2019 - |
题
我想嵌入Javascript在一个游戏爱好引擎的地雷。现在,我们有第5代Javascript引擎出(所有快速)我很好奇有什么发动机你会选择嵌入在C++框架(包括实际方便它隐藏于公开)?
注:只是做的很清楚,我不感兴趣DOM脚本或书面Javascript在浏览器。
这里有一个汇编的链接,以便远和一些提示从螺纹
- SpiderMonkey
- tracemonkey (注:向后兼容spidermonkey):
- V8
- 金鳞
只是为了记录在案,我爱Lua和已经嵌入它在游戏机了约5倍的工作。
然而现在这是一个业余爱好项目,并且我认为,Javascript被称为大多数网页开发人员以及因为它的通信机制详解,闪光灯和Flex的开发,一个游戏引擎,使用Javascript和XML编写脚本时会被用户更加友好和满足更大的用户基数(一个是迄今为止没有机会使用他们的技能游戏)于一个与Lua(并有大量的那些围绕!).
还为记录我会去用V8就这一个,主要是因为我喜欢它的C++的样式。
解决方案
Mozilla的SpiderMonkey 是相当容易,并记录在案。这是一个C API,但它是简单的把它C++。它可以编制可线的安全,这是有用的游戏因为你可能想要你的主逻辑在一个线程和用户接口的逻辑在第二线。
谷歌的V8 可能是一个好的选择,因为你使用C++,但我没有与它的经验。根据 该文件 (谢谢 丹尼尔*詹姆斯),V8不是线的安全,尽管这可能在未来改变。
还有 其的金鳞, 但是我不能找到一个独立的版本,当我看的更早。
其他提示
我已经试过两SpiderMonkey和V8。与SpiderMonkey,我不能得到任何工作。我甚至不能得到的例子上mozilla.org 编译。
V8作出的盒子和我有一些基本的C++ <->的Javascript相互作用会很快。有一些谷歌列人使用的V8发动机,并且我发现大多数的回答我的问题已经在那里.
我认为,v8仅适用于x86、64和手臂处理的时刻。这可能是一个缺点。
关于线的安全,从 包括/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文件,但他们似乎没有把它挂在任何地方).
更新: 这条意见已被删除,可能是前一段时间。它看起来像v8现在有一个 Isolate
象它代表的实例的引擎。一个单 Isolate
实例可以只能使用一个单一的线在一段时间,但是其他的 Isolate
实例可以用其他线在同一时间。
是Java脚真的很正确的语言为你的游戏吗?很多的游戏了有用的 Lua 编程语言编写脚本。很容易整合,这是非常小的,它编制的几乎每一个平台,很容易学习。
这个有点离题,但框外思考可以是重要的,获得正确的事情。
的 基准 出来的时候V8第一个打到现场,显示V8正在1000%(或什么的)快于其他发动机的严重偏向有利于发动机良好,在递归。如果你的代码用递归,然后V8可能给你一个显着的优势,速度明智的。对"真实世界"(目前至少)的网的东西,金鳞极端似乎是手下获奖者的时刻(见 我的博客上张贴的主题 结果我自己的、非正式的测试)。
正如其他人已经指出的那样,易于融合和高质量的文件可能会超越纯粹的速度。这并不意味着杰克如果你不的船!
说话时的一个脚本引擎和c++你也可以考虑 chaiscript.这是近通信机制详解脚本(~Javascript)和非常容易嵌入在c++。
卖方网页:
...ChaiScript,另一方面,目的是从地上爬起来 与一体化与C++记在心。...ChaiScript没有超编译器,没有图书馆的依赖性,没有建立 系统的要求并没有遗留的行李中的任何一种。在可以工作 无缝地与任何C++的功能得到它。它没有 可以告诉过明确有关的任何类型,它是职能为中心。
与ChaiScript你真的可以开始脚本应用程序 增加三个代码行你的计划并不修改 建设步骤。
我会等TraceMonkey,下一个演变的SpiderMonkey出来。更快和更好的设计。(使用代码捐赠Adobe Flash)。
Tracemonkey自诩使重复行动,更快地积极优化结构在运行时根据实际使用情况,其中任何事物,以方便游戏-增强。
尝试Javascript。网:
http://javascriptdotnet.codeplex.com/
它实现了谷歌V8。你可以编辑和运行Javascript直接从。净码与它和供应CLI的对象可以使用的代码。和V8可能是最好的引擎曾经创造性能而言,它产生的机代码从Javascript。
你可能还想要看看 V8 从Google。这是相当新的,虽然。
我会留意的v8,因为它是尖叫快速javascript发动机,并且我是肯定的它会发展的交叉平台支持,因为它的增长成熟。