我应该为粒子引擎脚本引擎设计什么样的语言?

时间:2009-07-03 02:31:17

标签: graphics language-design interpreter

我想知道哪种表达方式适合用于生成粒子效果的语言。 假设发动机尽可能灵活,应该具备哪种“功能”? (除了颜色,位置,速度,加速度等微不足道的那些)

3 个答案:

答案 0 :(得分:5)

请勿尝试为您的应用程序设计一种新语言,而是在其中嵌入另一种完善的语言。看看它为试图实现自己的脚本语言的其他应用程序造成的混乱(mIRC就是一个很好的例子)。这意味着用户必须学习另一种语言才能编写应用程序脚本。此外,如果您设计自己的语言,它可能最终没有其他语言有用。 不要试图重新发明轮子。

您可能希望看一下Lua因为它重量轻,受欢迎,成熟,并且设计用于游戏(其用户包括EA,暴雪,Garry的Mod等) ,并且具有非常小的核心库(它被设计为模块化语言)。

答案 1 :(得分:5)

所以每个人都在敦促你不要重新发明轮子,这是一个好主意,我对Python有一个情有独钟(这将允许你的脚本用户也安装和使用大量其他有用的数学库和c),但是LUA的毫无疑问,更容易集成(而其他脚本语言,如Ruby也无疑会很好)。不编写自己的特殊脚本语言是优秀的建议。

但是阅读你的问题告诉我你的问题更多的是 - 我的引擎对象的哪些属性(以及哪些对象 - 粒子,当然,还有什么,除此之外)我应该暴露给任何脚本语言我ember(或者说,通过MS COM或.NET,用户喜欢的任何脚本或非脚本语言)?

每个粒子的特定属性(例如您列出的粒子)无疑是值得的。除了点状粒子之外,你的引擎中是否还有其他东西,比如表面和其他非点状实体,粒子可能反弹?吸引力或排斥力的“力量”怎么样?你的粒子可能有角动量/旋转吗?

一个好主意是让你的粒子的属性“expando”,使用一个流行的术语(其他对象模型以不同的方式表达相同的想法) - 取决于使用你的引擎的应用程序,其他程序员可能决定添加到粒子,无论他们需要什么属性...也许质量,比如 - 也许是电荷 - 可能在欧洲人中花费,对于所有你知道或关心的事情;-)。与仅仅提供“粒子ID”(当然你应该使用它;-)让他们在哈希表等中使用以跟踪他们关心的特定属性相比,这使得用户的生活更轻松!允许他们添加“方法”和“触发器”(当某些条件成立时你自动调用的方法,例如两个粒子比某个距离更近)会很棒,但可能会有点难度。

不要忘记BTW允许一个好的方法将粒子系统的当前状态(包含用户添加的expando属性)“快照”到命名的流或文件并从这样的快照恢复 - 这绝对是在许多用途中至关重要。

除了特定的粒子(以及可能的其他物体,如表面,如果你有它们),你应该有一个“全局环境”,它有自己的属性(包括expando),理想情况下也是方法和触发器。例如,一个力场作用于所有粒子,取决于它们的位置(也可能是它们的电荷,质量等......!)......

希望这些想法中的一些让你觉得有趣 - 我很难说清楚你想要的应用领域! -

答案 2 :(得分:2)

刚刚嵌入Lua。这是一个很棒的语言设计,出色的性能,被游戏开发者广泛使用,并且足够小,你可以在几天内掌握它。

然后你可以继续你的游戏设计。