我正在研究设计一种游戏脚本语言,并且想知道游戏行业中雇用的人认为什么是好的游戏脚本语言的基本项目/属性。这包括以下内容:
- 静态与动态类型
- 它应该针对谁:程序员还是设计师?
- 语法(必须看起来像 C 吗?)
- 应该有多高?(例如 C vs Lisp——或者命令式 vs 函数式)
- 它必须能够做什么。它需要多快?
另外,我从一些消息来源听说脚本往往非常简单,因为它们是由设计师而不是程序员编写的。是这样吗?
我正在研究设计一种游戏脚本语言,并且想知道游戏行业中雇用的人认为什么是好的游戏脚本语言的基本项目/属性。这包括以下内容:
另外,我从一些消息来源听说脚本往往非常简单,因为它们是由设计师而不是程序员编写的。是这样吗?
您似乎在问一个非常笼统的问题(如果您不知道脚本语言必须做什么,或者它需要多快)并期待具体的答案。
脚本语言的主要原因是允许人们在不破解源代码的情况下更改游戏。让我们一起去吧。
因此,它应该更多地针对设计师,因为他们不会破解源代码,而程序员会。它需要足够快才能正常运行游戏。它需要足够强大,让设计师可以放入他们将要放入的任何东西。(是的,这些都是模糊的答案,但你没有提供足够的信息来更具体。)
所以,忘记那些主要对程序员有用的特性,比如任何特定的语法模型或静态类型。设计人员不会对 C 语法一无所知,也不想担心静态类型或内存管理。
使用已经建立的语言有一些真正的优势。设计师可能对它有一些经验,它已经记录在案,并且已经为您完成了很多困难的工作。这包括语言设计:程序员不一定善于看到脚本语言的优点。
这暗示了 Lua 或 Python 之类的东西。
我理想的游戏脚本语言应该具有类似 Python 的语法,并且可以像 LUA 一样容易地嵌入到其他语言中。
此外,它应该能够嵌入到 XNA 中,目前(并且可能永远)缺少 LuaInterface 和嵌入式 IronPython 所依赖的反射特性。
这部分取决于哪个部门将负责编写大部分脚本。例如,如果关卡设计师正在编写大部分脚本,那么最好的语言类型将是更接近自然语言的语言,不需要陡峭的学习曲线。关卡设计师不一定想学习像 C/C++ 这样复杂的语法来播放声音。
伪语言可能看起来像这样(TES 构造集脚本是这样的):
script MagicCaveDoorScript
on UseAction
if HasItem magicDoorKey
PlaySound2D magicDoorOpen
ChangeArea magicCave01
else
Message "You need the magic door key to enter..."
end
end
end
但是,如果程序员是编写大量脚本的人,那么使用 Lua 或 Squirrel 等更复杂的语言来处理类、对象等可能会更加灵活和强大。
创建“更简单”的脚本语言的一个好处是,实现并不像更难的语言那么复杂,并且还允许您轻松开发工具以通过 GUI 创建脚本,例如从声音列表中选择播放,要附加的怪物物品列表等。