网页功能: 加入收藏 设为首页 网站搜索  
关于剧情描述的讨论
发表日期:2006-08-30作者:[转贴] 出处:  


    在较色扮演游戏中,剧情是最重要的,因此剧情的描述是角色扮演游戏的一个重要部分。
    下面,由精灵工作室的琢龙同志谈一谈他的(我的)方法。

    首先,创建一个CommandList的数组,存储所有的剧情指令,然后创建CommandEntryList数组,存储所有的参与剧情的NPC的Command串在CommandList中的范围。

    其次,填写每个参与剧情的NPC的CommandID属性,并将CommandPointer置0。

    然后,进入循环,在UpdateNpc过程中判断Npc是否是参与剧情,如是,则CommandPointer加一,读取一个指令,并解释执行它。指导遇到剧情结束指令。

    当然,这只是一个粗略的说明。下面要讨论的是命令的组织形式。

    我的方法:每条指令有三个字节。第一字节,指令体;第二字节,参数1;第三字节,参数二。

    举个例子,一个官兵向前走三步,然后向后退四步,然后说一句话。

npc(1);Quest Npc ID of the solider

walk 3

back 4

say 1;1 stands for WordsListID

用字节指令来表示就是

byte1        byte2            byte3

7              1                0

1              3                0

2              4                0

    当然如果在vb中用一个select或on() goto太费时间,所以,我把它们8种指令为一组,分开解释,速度也许会快些。

    最后,谈谈NPC动作的协调。如有的游戏中,同时有几个人在作剧情动作,却不互相干涉。怎样才能做到这样呢。

    我的方法:当希望某个人停止执行指令时,用一条指令Pause,无参数。它的功能就是使执行这条指令的Npc暂停接受指令(把它的Enable属性置False),当需要他活的时候,由另一个NPC用Call NPCID指令叫醒他。

    这样可以做出很多效果,如接连动作,同时动作,并能使动作同步,减少虫子。

    下面是一个例子:

    某甲正在站着,某乙走过来,说道:“你好,某甲。”某甲向前一步走,说道:“你好。”某乙接着说:“天气多好啊,一起去玩怎么样?”某甲说:“好吧。”说着,两人一起走下去了。

描述指令

NPC(1)=1'某甲

Appear 8,9

Turn 3

pause

walk 1

say 1

call 2

pause

say 3

call 2

walk 20

end

NPC(2)=2

appear 8,1

turn 1

walk 6

say 2

pause

say 4

pause

turn 3

walk 20

end

'注意:在我的游戏中1表示下,接着左上右

好啦,我也累了,就写到这里啦

最后奉上地图编辑器的地图格式

type ObjPart

    value as byte

    types as byte

end type

Type MapEle
    Floorlayer As Byte

    ObjectLayer As ObjPart

    NpcLayer As Byte

    SpecLayer As Byte

End Type

Type MapEle2

    MapLine(1 To 256) As MapEle

End Type

dim Map(256) as MapEle2
文件中共有256个MapLine

其实一个一个读也能读出来,不过时间长。

用open Filename for binary as #1 len=len(map(1))

for i=1 to 256

  put #1,,map(i)

next i

close #1

好啦,写道者,希望我这些废话对您能有帮助。

 

我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 关于剧情描述的讨论
本类热点文章
  C++ 常用模板武道会
  深入运算符new 返回值
  实现一个脚本引擎
  C/C++ 应用漫谈一
  剖析C++模板(下)
  C++源代码游戏编程--WinMain()函数集
  怎样在游戏中实现脚本控制
  角色扮演游戏引擎的设计原理
  RPG脚本之道
  C++ STL简介
  STL 简介,标准模板库
  Generic: 再谈Min和Max
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2024 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.00392