4

我想知道哪种表达能力适合用于生成粒子效果的语言。假设希望引擎尽可能灵活,它应该具有什么样的“功能”?(除了颜色,位置,速度,加速度等琐碎的东西)

4

3 回答 3

5

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

你可能想看看Lua,因为它轻量级、流行、成熟,并且设计用于游戏(它的用户包括 EA、Blizzard、Garry's Mod 等),并且具有非常小的核心库(它被设计成一种模块化语言)。

于 2009-07-03T02:42:13.327 回答
5

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

但是阅读您的问题向我表明,您的问题更多是关于-我的引擎对象的哪些属性(以及哪些对象-粒子,当然,但是,除此之外还有什么)我应该向我使用的任何脚本语言(或,比如通过 MS COM 或 .NET,到我的用户喜欢的任何脚本或非脚本语言)?

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

一个好主意是让你的粒子的属性“扩展”,使用一个流行的术语(其他对象模型以不同的方式表达相同的想法)——根据使用你的引擎的应用程序,其他程序员可能决定向粒子添加任何属性他们需要...也许是质量,比如说-也许是电费-也许是欧分,就你所知道或关心的而言;-)。与仅提供“粒子 ID”(当然您应该这样做;-)让他们在哈希表等中使用以跟踪他们关心的特定属性相比,这使您的用户的生活更轻松!允许他们添加“方法”和“触发器”(在某些条件成立时自动调用的方法,例如两个粒子比某个距离更近)会很棒,但可能有点困难。

顺便说一句,不要忘记允许一个好的方法将粒子系统的当前状态(包括用户添加的扩展属性)“快照”到命名流或文件并从这样的快照中恢复——这在许多人中绝对至关重要用途。

超越特定粒子(如果有的话,可能还有其他对象,例如表面),您可能应该拥有一个“全局环境”,它具有自己的属性(包括 expando 属性)以及理想的方法和触发器。例如,作用在所有粒子上的力场取决于它们的位置(可能还有它们的电荷、质量等......!-)......

希望这些想法中的一些让你觉得有趣——我很难说,对你的预期应用领域知之甚少!-)

于 2009-07-03T04:03:40.013 回答
2

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

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

于 2009-07-03T02:43:58.427 回答