Scripting 游戏脚本需要哪些语言功能?

Scripting 游戏脚本需要哪些语言功能?,scripting,language-features,language-design,Scripting,Language Features,Language Design,我正在研究设计一种游戏脚本语言,并想知道游戏行业的从业人员认为一种好的游戏脚本语言的基本项目/属性是什么。这包括: 静态与动态类型 它应该针对谁: 程序员还是设计师 语法(它必须看起来像C吗?) 应该达到多高的水平?(例如C与Lisp) --或命令与功能) 它必须能够做什么。它有多快 需要吗 此外,我还从一些来源听说,脚本往往非常简单,因为它们是由设计师而不是程序员编写的。是这样吗?看看游戏中实际使用的脚本语言,比如和一些想法 两者都是动态类型的,就语法而言,Python与C非常不相似,Lu

我正在研究设计一种游戏脚本语言,并想知道游戏行业的从业人员认为一种好的游戏脚本语言的基本项目/属性是什么。这包括:

  • 静态与动态类型
  • 它应该针对谁: 程序员还是设计师
  • 语法(它必须看起来像C吗?)
  • 应该达到多高的水平?(例如C与Lisp) --或命令与功能)
  • 它必须能够做什么。它有多快 需要吗

此外,我还从一些来源听说,脚本往往非常简单,因为它们是由设计师而不是程序员编写的。是这样吗?

看看游戏中实际使用的脚本语言,比如和一些想法

两者都是动态类型的,就语法而言,Python与C非常不相似,Lua与C也不太相似


可能它们用于游戏脚本的原因是,如果有其他原因的话,很容易将该语言嵌入脚本引擎。如果设计语言时考虑到设计师,那么可能需要改变语言的要求,以满足设计师的需求,我理想的游戏脚本语言应该具有类似Python的语法,并且可以像LUA一样轻松地嵌入到其他语言中

此外,它应该能够嵌入到XNA中,XNA目前(可能永远)缺少LuaInterface和embedded IronPython所依赖的反射功能。

您似乎在问一个非常普遍的问题(如果您不知道脚本语言必须做什么,或者需要多快)并期待具体的答案

脚本语言的主要原因是允许人们在不修改源代码的情况下更改游戏。让我们继续吧

因此,它应该更多地针对设计师,因为他们不会破解源代码,程序员也会。它需要足够快才能正常运行游戏。它需要强大到足以让设计师投入他们要投入的任何东西。(是的,这些都是模糊的答案,但您没有提供足够的信息来更具体。)

因此,忘记那些主要用于程序员的特性,比如任何特定的语法模型或静态类型。设计人员不会对C语法掉以轻心,也不想担心静态类型或内存管理

使用已经建立的语言有一些真正的优势。设计师可能对它有一些经验,它已经被记录下来了,并且已经为你做了很多艰难的事情。这包括语言设计:程序员不一定擅长看到脚本语言的优点


这意味着类似Lua或Python的东西。

这部分取决于哪个部门将执行大部分脚本编写。例如,如果级别设计人员正在编写大部分脚本,那么最好的语言类型应该是更接近自然语言的语言,而不需要陡峭的学习曲线。一个关卡设计者不一定只是为了播放声音而学习像C/C++这样的复杂语法

伪语言可能如下所示(TES构造集脚本如下所示):

但如果程序员是编写大量脚本的人,那么使用更复杂的语言(如Lua或Squirrel)处理类、对象等可能会更灵活、更强大


创建一种“更简单”的脚本语言的一个好的方面是,实现远没有较难的语言那么复杂,并且允许您通过GUI轻松开发工具来创建脚本,例如从要播放的声音列表、要附加的怪物项目列表中进行选择,等等。

我完全同意这一点-对于脚本需要做什么,没有也不可能有一个“正确”的答案,因为它取决于应用程序和团队。
script MagicCaveDoorScript
    on UseAction
        if HasItem magicDoorKey
            PlaySound2D magicDoorOpen
            ChangeArea magicCave01
        else
            Message "You need the magic door key to enter..."
        end
    end
end