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

Graphics 我应该为粒子引擎脚本引擎设计什么样的语言?,graphics,language-design,interpreter,Graphics,Language Design,Interpreter,我想知道哪种表达方式适合用于生成粒子效果的语言。。 假设想要一台尽可能灵活的发动机,它应该具备什么样的“特性”?(除了颜色、位置、速度、加速度等琐碎的语言之外)不要仅仅为您的应用程序设计一种新的语言,而是在其中嵌入另一种成熟的语言。看看它给其他试图实现自己的脚本语言的应用程序带来的混乱(mIRC就是一个很好的例子)。这意味着用户必须学习另一种语言才能编写应用程序脚本。此外,如果你设计自己的语言,它可能不会像其他语言那样有用不要试图重新发明轮子。 您可能想看看它,因为它重量轻、流行、成熟,设计用于

我想知道哪种表达方式适合用于生成粒子效果的语言。。
假设想要一台尽可能灵活的发动机,它应该具备什么样的“特性”?(除了颜色、位置、速度、加速度等琐碎的语言之外)

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

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

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


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

所以大家都在敦促你不要重新发明轮子,这是个好主意,我对Python有一个特别的爱好(这将允许你的脚本用户安装和使用大量其他有用的math libs&c),但LUA无疑更容易集成(以及其他脚本语言,如Ruby,无疑也很好)。不编写自己的特别脚本语言是一个很好的建议

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

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

一个好主意是使用一个流行的术语(其他对象模型以不同的方式表达相同的想法),使粒子的属性“expando”--根据使用您的引擎的应用程序,其他程序员可能会决定向粒子添加他们需要的任何属性…可能是质量,比如说--可能是电荷--可能是以欧分为单位的成本,就您所知或所关心的;-)。这使得用户的生活比仅仅提供“粒子ID”(当然,您应该这样做;-)更容易,以便他们在哈希表或类似文件中使用,以跟踪他们关心的特定属性!允许他们添加“方法”和“触发器”(当某些条件保持时,你会自动调用这些方法,例如两个粒子比某一距离更近),这将非常棒,但可能会稍微困难一些

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

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

希望这些想法中的一些能让你觉得有趣——我很难说,对你的应用领域几乎一无所知!)