我和一些朋友正在用Java编写MORPG,我们希望使用脚本语言来创建任务等。
我们没有在Java中使用脚本的经验。我们使用过Python,但是我们对它很不熟悉。其中一个人也使用过Javascript。
我们应该使用哪种脚本语言? 我们不应该使用哪种脚本语言?
我和一些朋友正在用Java编写MORPG,我们希望使用脚本语言来创建任务等。
我们没有在Java中使用脚本的经验。我们使用过Python,但是我们对它很不熟悉。其中一个人也使用过Javascript。
我们应该使用哪种脚本语言? 我们不应该使用哪种脚本语言?
我同意维克托的Jython建议。除此之外,JavaScript(你已经提到了,并且通过javax.script
包内置于Java 6+中) Groovy 和 JRuby 也值得一看。
顺便说一句,您应该看看Wyvern,它也是用Java编写的MMORPG,并使用Jython进行脚本编写。其作者Steve Yegge时不时地谈论它。 :-)
不要使用脚本语言!相反,专注于可配置性(这是非程序员可以很好地完成的事情)。
支持使用脚本语言的一个常用论点是它允许较差的程序员完成更琐碎的任务。不要相信这一点,因为真正的程序员已经能够在短时间内完成这些琐碎的任务了。相反,应该追求可配置性而不是脚本编写,这样你就可以避免将复杂的算法和概念泄漏到游戏设计师的手中。
在MMOG中缺乏热交换(编辑和继续)可能是实现脚本语言的原因(您不想为小的代码更改重新加载整个游戏),但是使用具有内置热交换功能的Java,您真的没有理由再添加脚本语言。
我花了多年时间思考这些问题;在那天,我自己为MMOG实现了完整的脚本语言、IDE、VM、调试器等。从那以后,我变得更加明智。
如果您仍然选择走无限糟糕的不归路,请记住以下几点。
迄今为止,我从未见过能够改善情况(获得更易维护产品)的DSL。我曾将Python集成到我的个人游戏引擎中,但最终醒悟并将其删除。"Stackless Python"只是一种说法,意味着"不易维护但快速"。如果我错了,请任何人纠正我?
你有很多选择:
可能还包括 BeanShell (http://www.beanshell.org/)
我个人比较喜欢 Python,所以我会推荐 Jython,但它们都是合理的选择。
我会推荐JavaScript来完成这个目的。Mozilla Rhino http://www.mozilla.org/rhino/ 是一个非常出色的实现,完全符合您的需求。
我推荐JavaScript而不是Jython或JRuby,因为它更加熟悉。简单的JavaScript遵循着非常熟悉的语法,任何人都可以使用。然而,如果有人想要做一些更加复杂的事情,JavaScript是一种非常强大的函数式编程语言。
我经常在职业上使用Groovy和Ruby,并认为它们最适合编写具有特别复杂逻辑的应用程序部分,其中Java编写起来很麻烦。JavaScript是嵌入式通用脚本语言的更好选择,可用于游戏中。我没有使用过Python,但它在语法上与Ruby非常相似,我相信它的用途也会类似。