CN1527195A - 应用于电脑游戏的脚本执行方法 - Google Patents
应用于电脑游戏的脚本执行方法 Download PDFInfo
- Publication number
- CN1527195A CN1527195A CNA031192513A CN03119251A CN1527195A CN 1527195 A CN1527195 A CN 1527195A CN A031192513 A CNA031192513 A CN A031192513A CN 03119251 A CN03119251 A CN 03119251A CN 1527195 A CN1527195 A CN 1527195A
- Authority
- CN
- China
- Prior art keywords
- order code
- script
- file
- code file
- computer game
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种应用于电脑游戏的脚本执行方法,该方法包括有以下步骤:(1)编写脚本语句形成脚本文件;(2)将脚本文件中的脚本语句编译成指令码,存储成指令码文件;(3)电脑游戏引擎加载指令码文件,并把指令码文件传递给脚本执行机;(4)脚本执行机运行指令码文件中的指令,驱动电脑游戏的任务系统和剧情过场。能更快速的实现效率和更方便的实现方法。
Description
技术领域
本发明有关于脚本执行方法,特别是应用于电脑游戏中,可以实现驱动电脑游戏的任务系统和剧情过场表现的脚本执行方法。
背景技术
目前,很多的电脑游戏是通过采用脚本系统来达到驱动电脑游戏的任务系统和剧情过场表现。而电脑游戏越来越复杂,同时电脑游戏网络化也成了电脑游戏的趋势,所以对游戏脚本系统的要求越来越高,要求更快的流程控制方法,能够快速的实现复杂的流程控制和复杂的各种功能。
而目前的游戏脚本系统只提供简陋的流程控制方法,由于一般是通过对逐条脚本语句解释执行,执行效率非常低,脚本流程控制指令比较简陋,使得对实现游戏复杂剧情流程的支持不够方便,实际运用困难,效率低并且容易出错。而且,国外同类型的技术解决方案一般价格昂贵。
发明内容
本发明的目的在于提供了一种应用于电脑游戏的脚本执行方法,将编写好的脚本文件进行编译并且存储成指令码文件,降低出错率,提高了执行的效率。
本发明的再一目的在于提供了一种应用于电脑游戏的脚本执行方法,在脚本执行机中运行了自开发的流程控制方法,简化了脚本执行机的运行流程,提高脚本运行速度,快速实现驱动电脑游戏的任务系统和剧情过场表现的的。
本发明的还一目的在于提供了一种应用于电脑游戏的脚本执行方法,将经过编译的脚本文件存储成固定格式的指令码文件,使其标准化。
为了实现以上的目的,本发明提供了一种应用于电脑游戏的脚本执行方法,(1)编写脚本语句形成脚本文件;
(2)编译脚本语句成指令码,存储成指令码文件;
(3)电脑游戏引擎加载指令码文件,并把指令码文件传递给脚本执行机;
(4)脚本执行机获取所述指令码文件中的指令码之后执行所述指令码,驱动电脑游戏的任务系统和剧情过场。
步骤(4)中脚本执行机按如下步骤获取并运行所述指令码:
(a)脚本执行机将指令码文件载入至等待运行的指令码文件序列中;
(b)所述执行机一直检查所述指令码文件序列是否有指令码文件,如果有,则进行步骤(c),否则结束步骤(4);
(c)脚本执行机检查该指令码文件是否有指令码,如果有,进行步骤(d),否则返回步骤(b);
(d)载入该指令码,运行该指令码;
(f)指令码运行完毕后,返回步骤(c)。
按照以上的方法,可以有以下的显著效果:
(1)本发明通过预先对脚本语句进行编译成指令码,极大的提高了脚本的运行效率;实现了脚本语句的判断、分支、循环和函数调用等功能,更加支持这些功能之间的多层相互嵌套,使得脚本对复杂流程的控制非常方便;在对脚本语句的编译时,对脚本语句进行检测,可以预先发现大部分的脚本编写错误。
(2)利用本发明的脚本执行方法,简化脚本执行机的运行流程,提高执行的效率,同时方便各种复杂的功能比传统的电脑游戏脚本系统更适合电脑游戏复杂化和网络化的发展。
(3)将编译好的指令码存储成固定格式的指令码文件,使操作更规范、更标准。
附图说明
图1为本发明的应用于电脑游戏的脚本系统的结构框图。
图2为本发明的应用于电脑游戏的脚本系统的工作流程图。
图3为本发明的应用于电脑游戏的脚本系统的脚本执行机的工作流程图。
具体实施方式
参阅图1,本发明提供一种应用于电脑游戏的脚本系统100,包括:脚本语言模块110,用来编写脚本文件,该脚本文件由脚本语句组成;脚本编译器120,用于将脚本文件中的脚本语句编译成指令码,存储成指令码文件,及脚本执行机130,用于运行指令码来驱动电脑游戏任务系统和剧情过程表现。
脚本语言模块110,该脚本语言模块110提供了编写脚本语句的环境。该脚本语言模块110包含由自定义的基本指令112组成的基本指令集,其中有逻辑判断、跳转语句、循环语句、比较语句等等。脚本文件是由一条条脚本语句组成,而脚本语句可以调用基本指令集112。在设计时,为了方便脚本的编写,采用了类似Pascal语言的语法,使脚本的编写更加安全。
脚本编译器120,用于将脚本语句编译成指令码,存储为指令码文件。由于脚本执行机130运行的是指令码,所以需要脚本编译器120将文本方式的脚本文件转化成脚本执行机130能够执行的指令码。同时这一步骤可以使实际使用的脚本节约了存储空间,提高了运行效率,支持脚本语句的判断、分支、循环和函数调用等之间的多层相互嵌套,同时可以检查脚本的语法问题,使脚本编写能及时发现错误。
编译好的脚本文件按已定义的固定的指令码文件格式进行存储。该指令码文件的文件格式按存储空间上先后顺序至少分成三大部分:1、文件头模块;2、函数名称和位置表模块;3、指令码模块。
1、文件头模块:这一模块的长度为40个字节,其中记录该指令码文件的一些基本信息和该指令码文件中函数数量和指令码数据长度。至少包含有函数数量部分和指令码数据长度部分。具体内容参看表1(表1);
部分 | 位置 | 说明 | 内容 |
第1部分 | 第1字节到第31字节 | copyright | 字符串KingSoft Script |
第2部分 | 第32字节 | 版本号 | 版本号 |
第3部分 | 第33字节到第36字节 | 函数数量部分 | 指明本指令码文件的指令码部分有多少个函数(函数是特殊的指令码) |
第4部分 | 第37字节到第40字节 | 指令码数据长度部分 | 一个32位数,指明本文件指令码部分的数据长度 |
2、函数名称和位置表模块:该模块记录了本指令码文件所有函数的名称和每一个函数在指令码文件中的位置,这一部分由很多个单元组成,文件头模块的函数数量说明了单元的数量,每个单元的长度固定为36字节,每个单元的结构内容参看表2。
表2
部分 | 位置 | 说明 | 内容 |
第1部分 | 单元的第1字节到第32字节 | 函数名称部分 | 一个字符串,指明函数名称 |
第2部分 | 单元的第33字节到第36字节 | 函数指令码位置部分 | 一个32位数,指明本函数指令码在指令码文件的位置 |
3、指令码模块:这一部分保存了本指令码文件所有的指令码。指令码文件中由指令组成,而指令码是指令的编码形式。每条指令码的格式参看表3(表3);
部分 | 位置 | 说明 | 内容 |
第1部分 | 第1字节到第4字节 | 指令编号部分 | 一个32位数,记录本指令的编号 |
第2部分 | 第5字节到第8字节 | 参数区长度部分 | 一个32位数,指明本指令附带的所有参数数据的长度;如果长度为0,则不存在第3部分 |
第3部分 | 位于第2部分之后,长度由第2部分指明 | 参数区部分 | 本指令的所有参数数据,由一定数量的参数组成,每条具体的指令所附带的参数的数量和类型是确定的,每个参数的结构参看表4 |
表四
部分 | 位置 | 说明 | 内容 |
第1部分 | 第1字节到第4字节 | 参数长度部分 | 一个32位数,记录本参数的长度 |
第2部分 | 位于第1部分之后,长度由第1部分指明 | 参数内容部分 | 参数内容有多种不同的类型,每条具体的指令决定了这些参数的类型 |
指令可以是系统定义的指令,也可以添加用户自定义的脚本指令。脚本编译器主要是利用了编译原理,对脚本文件中的每个字符进行解析,生成对应的指令码,而后存储为上述固定格式的指令码文件。
脚本执行机130,该脚本执行机130提供脚本的API函数(ApplicationProgram Interface应用程序接口)134。该自定义的脚本API函数134,能完成与游戏引擎相关的复杂功能,例如改变游戏任务状态,播放游戏剧情过场等,包括了一系列对电脑游戏中各种对象进行各种操作的API函数。通过调用脚本API函数134和脚本语言模块110的基本指令集112,可以完成脚本语句的编写;一个电脑游戏的脚本包括许多由一系列脚本语句组成的脚本文件。脚本执行机130运行经过编译的指令码文件中的指令,驱动电脑游戏的任务系统和剧情过场。
图2为本发明的应用于电脑游戏的脚本执行方法的流程图。
200:电脑游戏制作根据游戏的实际需求,利用基本指令集112和脚本API函数134,在脚本语言模块中编写脚本语句形成脚本文件;
210:脚本编译器120编译该脚本文件中脚本语句成指令码,当脚本中出现脚本语句的语法错误时,进行提示要求改正,只有没有语法错误后,才能将这些脚本语句编译成对应的指令码,并且将这些指令码保存成是上述的固定格式的指令码文件;
220:通过电脑游戏引擎加载编译好的指令码文件,并且将指令码文件传递给脚本执行机130,准备运行;
230:脚本执行机130在得到编译好的指令码文件之后,通过脚本执行机132实际运行各条脚本指令,驱动电脑游戏的任务系统和剧情过场表现。
图3为应用于电脑游戏的脚本系统的执行机的工作流程图。首先,必须运行初始化函数138,对运行的指令码文件进行一系列的初始化工作,然后才能进行如图3所示的执行机的实际运行,最后通过运行反初始化函数140结束脚本执行的工作流程。
300:首先,脚本执行机130在得到编译好的指令码文件之后,将之加入等待运行的指令码文件序列中;指令码文件序列可以是在内存开辟一块存储空间,可以是连续的,用于存放等待运行的指令码文件信息;
310:脚本执行机130会定时检查待运行指令码文件序列中是否有等待运行的指令码文件,如果没有,则进入360;如果发现有需要运行的指令码文件,则运行该文件,进入320;
320:脚本执行模块132通过逐条运行指令码文件中的指令来完成指令码文件的执行,每次先检查当前正在运行指令码文件中是否还有需要执行的指令;如果没有,则返回310;否则进入330;
330:脚本执行机130检测到有指令需要执行,载入这条指令的指令码,准备运行,进入340,如果检测到没有需要执行的指令,则返回320;
340:脚本执行机130得到需要执行的指令码,开始运行该条指令,并定时检测这条指令是否运行完毕,进入350;
350:脚本执行机130对正在运行的指令进行检测;如果发现还没有运行完毕,则继续运行这条指令,回到340;如果发现这条指令已经运行完毕,则看是否还有其它的指令需要执行,回到320。只有当所有待运行指令码文件序列中的指令码文件都执行完毕的时候,才会结束该流程
360:结束流程。
以上所述为本发明的一个实施例,但本发明并不仅仅局限于此,关于本发明的任何变动,保护范围以权利要求书为准。
Claims (8)
1、一种应用于电脑游戏的脚本执行方法,其特征在于:该方法包括以下步骤:
(1)编写脚本语句形成脚本文件;
(2)将脚本文件中的脚本语句编译成指令码,存储成指令码文件;
(3)电脑游戏引擎加载指令码文件,并把指令码文件传递给脚本执行机;
(4)脚本执行机运行指令码文件中的指令,驱动电脑游戏的任务系统和剧情过场。
2、如权利要求1所述的应用于电脑游戏的脚本执行方法,其特征在于:步骤(4)中脚本执行机按如下步骤运行所述指令:
(a)脚本执行机将指令码文件载入至等待运行的指令码文件序列中;
(b)所述脚本执行机定时检查所述指令码文件序列是否有等待运行的指令码文件,如果有,则进行步骤(c),否则结束步骤(4);
(c)脚本执行机检查该指令码文件是否有需要执行的指令,如果有,进行步骤(d),否则返回步骤(b);
(d)载入该指令的指令码,运行该指令;
(f)指令运行完毕后,返回步骤(c)。
3、如权利要求1所述的应用于电脑游戏的脚本执行方法,其特征在于:步骤(1)中调用基本指令集和API函数来编写脚本语句。
4、如权利要求1所述的应用于电脑游戏的脚本执行方法,其特征在于:步骤(4)之前,脚本执行机先运行初始化函数,将运行的指令码文件进行初始化。
5、如权利要求1所述的应用于电脑游戏的脚本执行方法,其特征在于:所述指令码文件以固定的指令码文件格式进行存储,该指令码文件格式在存储空间上以先后顺序分成三大模块:
文件头模块:记录所述指令码文件中函数的数量和指令码的数据长度;
函数名称和位置表模块:记录了所述指令码文件所有函数的名称和每一个函数在指令码文件中的位置;
指令码模块:保存了本指令码文件中除函数以外的所有指令码的信息。
6、如权利要求5所述的应用于电脑游戏的脚本执行方法,其特征在于:文件头模块中至少包含有以下部分:
函数数量部分:用于记录指令码文件中的函数个数;
指令码数据长度部分:用于记录所述指令码文件中指令码的数据长度。
7、如权利要求5所述的应用于电脑游戏的脚本执行方法,其特征在于:函数名称和位置表模块至少包含有以下部分:
函数名称部分:指明指令码文件的每一个函数名称;
函数指令码位置部分:指明本函数在指令码文件位置。
8、如权利要求5所述的应用于电脑游戏的脚本执行方法,其特征在于:指令码模块至少包含有以下部分:
指令编号部分:记录本指令的编号;
参数区部分:本指令的所有参数的数量、类型及结构。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 03119251 CN1278223C (zh) | 2003-03-07 | 2003-03-07 | 应用于电脑游戏的脚本执行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 03119251 CN1278223C (zh) | 2003-03-07 | 2003-03-07 | 应用于电脑游戏的脚本执行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1527195A true CN1527195A (zh) | 2004-09-08 |
CN1278223C CN1278223C (zh) | 2006-10-04 |
Family
ID=34285034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 03119251 Expired - Lifetime CN1278223C (zh) | 2003-03-07 | 2003-03-07 | 应用于电脑游戏的脚本执行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1278223C (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100357888C (zh) * | 2005-01-05 | 2007-12-26 | 英业达股份有限公司 | 游戏开发系统以及方法 |
CN101634940B (zh) * | 2008-07-25 | 2012-07-04 | 苏州蜗牛数字科技股份有限公司 | 通过脚本开发电脑游戏的方法 |
CN103180827A (zh) * | 2011-06-17 | 2013-06-26 | 新游网络科技有限公司 | 游戏服务器中的任务文件执行装置以及方法 |
WO2014005526A1 (en) * | 2012-07-04 | 2014-01-09 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for executing plot instructions to show complex plots |
CN104679489A (zh) * | 2013-12-02 | 2015-06-03 | 厦门极致互动网络技术有限公司 | 一种在网络游戏客户端中内置网络浏览器的系统及方法 |
CN105786465A (zh) * | 2014-12-23 | 2016-07-20 | 远光软件股份有限公司 | 一种脚本语言执行方法及装置 |
CN107450930A (zh) * | 2017-08-14 | 2017-12-08 | 上海迅显信息科技有限公司 | 一种基于hmi系统脚本语言的开发方法 |
-
2003
- 2003-03-07 CN CN 03119251 patent/CN1278223C/zh not_active Expired - Lifetime
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100357888C (zh) * | 2005-01-05 | 2007-12-26 | 英业达股份有限公司 | 游戏开发系统以及方法 |
CN101634940B (zh) * | 2008-07-25 | 2012-07-04 | 苏州蜗牛数字科技股份有限公司 | 通过脚本开发电脑游戏的方法 |
CN103180827A (zh) * | 2011-06-17 | 2013-06-26 | 新游网络科技有限公司 | 游戏服务器中的任务文件执行装置以及方法 |
WO2014005526A1 (en) * | 2012-07-04 | 2014-01-09 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for executing plot instructions to show complex plots |
CN103530087A (zh) * | 2012-07-04 | 2014-01-22 | 腾讯科技(深圳)有限公司 | 一种剧情指令执行方法和装置 |
CN103530087B (zh) * | 2012-07-04 | 2015-02-18 | 腾讯科技(深圳)有限公司 | 一种剧情指令执行方法和装置 |
JP2015530125A (ja) * | 2012-07-04 | 2015-10-15 | テンセント テクノロジー (シェンジェン) カンパニー リミテッド | 複雑なプロットを見せるようプロット命令を実行する方法及び装置 |
US9370719B2 (en) | 2012-07-04 | 2016-06-21 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for executing plot instructions to show complex plots |
CN104679489A (zh) * | 2013-12-02 | 2015-06-03 | 厦门极致互动网络技术有限公司 | 一种在网络游戏客户端中内置网络浏览器的系统及方法 |
CN105786465A (zh) * | 2014-12-23 | 2016-07-20 | 远光软件股份有限公司 | 一种脚本语言执行方法及装置 |
CN107450930A (zh) * | 2017-08-14 | 2017-12-08 | 上海迅显信息科技有限公司 | 一种基于hmi系统脚本语言的开发方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1278223C (zh) | 2006-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1134731C (zh) | 在计算机系统中编译指令的方法 | |
Cardelli | The functional abstract machine | |
US7450131B2 (en) | Memory layout for re-ordering instructions using pointers | |
CN1126027C (zh) | 处理不同宽度的命令的vliw处理器 | |
CN1119756C (zh) | 用于进行静态初始化的方法和系统 | |
CN1264083C (zh) | 用于在执行被转换指令时维持环境的方法和装置 | |
EP0838755A2 (en) | Binary program conversion apparatus and method | |
JPH0778741B2 (ja) | オブジエクト・モジユール生成方法 | |
CN1540517A (zh) | Just-My-Code调试技术 | |
CN1848088A (zh) | 将本机接口函数调用转换为更简单操作的方法和系统 | |
CN1838088A (zh) | 探测具有限制性调用约定代码的方法 | |
CN1728106A (zh) | 一种应用程序故障的定位方法 | |
CN1278223C (zh) | 应用于电脑游戏的脚本执行方法 | |
US20070233936A1 (en) | Method, apparatus and system for reverting FAT cluster number to file ID and offset of non-FAT flash file system | |
CN1499379A (zh) | 针对异构体系结构的在集成可执行程序内进行覆盖管理的方法和设备 | |
CN1801093A (zh) | Java操作系统中类装载的实现方法 | |
CN101051269A (zh) | 智能平台管理接口韧体架构及其建立方法 | |
CN1525317A (zh) | 在标记中用于定义和使用子级说明的系统和方法 | |
CN1266592C (zh) | 依据确定延迟的动态vliw指令调度方法 | |
US20090235054A1 (en) | Disassembling an executable binary | |
CN1552018A (zh) | 软件编译器的嵌入系统的坚固记录系统 | |
CN1894674A (zh) | 存储器访问指令向量化 | |
CN1622053A (zh) | 一种嵌入式产品软件开发方法 | |
CN1530832A (zh) | 使用一共同参数格式对电子装置进行程序化的方法与装置 | |
US7698534B2 (en) | Reordering application code to improve processing performance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term |
Granted publication date: 20061004 |
|
CX01 | Expiry of patent term |