游戏脚本的实现(6) 摘要: 本篇是游戏脚本的实现(5)的续篇。
事实上,创建可接受脚本的游戏引擎对于大多数的游戏而言,将产生出一个非常开放的源代码以及高效率的项目。
游戏脚本的实现(5) 摘要: 本篇是游戏脚本的实现(4)的续篇。
add_script将行为列表框中选中的行为添加到脚本列表框中:
游戏脚本的实现(4) 摘要: 本篇是游戏脚本的实现(3)的续篇。
首先来看看WinMain函数以及主窗口处理过程的实现:
游戏脚本的实现(3) 摘要:
MLS系统仅使用到数字:代表行为的编号,随后条目的数量,以及代表条目数据的编号。计算机特别擅长处理数字的工作,但我们的需要更多。需要将脚本构造成易于理解的文本行,并让脚本编辑器将键入的文本转变为脚本系统可以处理的一系列数字。
在编辑一个脚本期间,并不处理任何数字方面的问题,所以编辑器的工作还包括加载数字并将它们转换回易于阅读理解的文本行。因此,也可以这么说,仅需要使用一系列的文本命令构造一个脚本,然后使用脚本编辑器将这些命令转换成代表它们数值,反之亦然。
游戏脚本的实现(2) 摘要: 因为ENREY_RULE结构仅包含了行为和条目的规则,所以需要另外的结构数组去存储每个条目的数据。这些新的结构包括了在条目中所使用的文本、布尔值、多重选项,我们使用结构体ENTRY来表示。
在处理脚本条目的过程中,当一个脚本出现了许多条目时,最麻烦的问题也就接踵而来。脚本中的每个行为都要求一个相匹配的ENTRY_RULE结构,其依次包含了一定数量的ENTRY结构。为了更好地处理一个脚本的结构,还需要其他的结构来记录属于脚本行为的每个条目,我们将它命名为SCRPT。
游戏脚本的实现(1) 摘要:
创建一个角色扮演游戏项目时,会发现在源码中编写游戏相关信息十分困难(这样做也是非常鲁莽的)。最好的办法就是使用外部数据源(类似于程序的代码),称之为游戏脚本(例如对话)。以这种方式,可以控制游戏的流程并节省宝贵的时间,因为不需要在每次做出改变后重新进行编译。
当创建游戏时,游戏脚本与所编写的程序代码非常类似,只是游戏脚本相对于游戏引擎而言是外部的。正因为它们是外部的,所以才可以迅速地对脚本做出更改,而不用重新编译整个游戏引擎。否则对于一个超过100万行代码的项目,仅仅为了改变一个对话行就要重新编译整个项目。