GameDesign 板


LINE

如何设计冒险游戏 (Adventure Game) DreamYeh ---------------------------- 主旨:   敝人梦想一直都是让所有人都轻易学习如何设计游戏,本篇 文章会大致上讲解冒险游戏(Adventure Game)如何被设计出来 ,以及更重要的,一个冒险游戏编辑器的撰写。   期盼企划人员看了本篇,能更了解如何剧情游戏的剧本观念 ,也期盼想设计剧情游戏的人看了本篇,能不藉由任何工具就设 计出一个好玩的剧情游戏来。   敝人也会在之後设计个冒险游戏编辑器。并释放出原始档来 ,让大家能真正看到冒险游戏的实际设计面貌,也可以藉由编辑 器简单设计出游戏来!让设计游戏的高门槛不在是高门槛!   本篇文章大多是用敝人观点去想,一套AVG该怎麽设计, 或许跟实际设计法会有差距,或许哪里没有想到。若件到哪里有 不足的,或有额外想法的,欢迎大家讨论。   本篇文章也特别感谢子商的亲切的建议。   现在,就让我们开始AVG设计的旅程。 ---------------------------- 主题一、什麽是冒险游戏(AVG)?   别紧张,本篇并不会花很大篇幅去说明什麽是AVG。与其 看大篇幅介绍,你还不如去找几套经典的AVG来尝试一下,举 凡无人岛之旅、金田一 悲报岛新的悲剧、 或是一些网路上很容 易就玩到的电子小说。这些都是很经典的AVG-我们可以这样 给AVG简单定义。   AVG是偏重剧情的游戏,它一定有个复杂的剧情(不会像 是超级玛莉那样只是要救公主的故事),常以大量文字来表示, 玩家可以做的动作大多是要在几个剧情分支点,去做出选择,不 同的选择会导致不同结果。   它与RPG一个很大差异在於,RPG通常会把视点拉到世 界上方,好让玩家可以自由操作角色,在一张大地图上四处打怪 、冒险。AVG通常会省略升级模式、在地图上跑来跑去的活动 ,而更重视於剧情的描写、角色心境描写、情境述说等。   依照这样定义,AVG范围可是很广泛喔!举凡电子小说、 一般常见恋爱游戏、一些电影改编游戏、网路上常可以下载到的 小游戏如逃离房间系列,都可以列入这个范畴。   当然这个定义也非完全的,近代也越来越多游戏根本分不出 它的类型。当然啦~这里不是要来跟大家讨论游戏分类理论的, 我们大致了解什麽是AVG就好了。 ---------------------------- 主题二、分歧点   让我们一窥AVG最重要的因子,分歧点。也就是玩家可以 选择一个分歧点,就走向某个剧情。比方说玩家可以选择要走楼 梯还是走电梯、看见一个房间门可以选择要不要去开启他。   当然也有AVG完全没有分歧点,像是电子小说,你只要滑 鼠原地按按按就可以看到剧情不断被推进,直到结束。但基本上 两者的设计原理还是一样的(当然啦,电子小说是更简单的)。   而这个分歧点概念,就构成整个AVG基本设计模型,如下 :        C .....         ↗      B→D .....     ↗       A→E→F .....        其中每个字母都代表一个「剧情」,而那个剧情里面就会有 我们想要秀的文字、场景、音乐、想要出现的人物、它们的对话 等等。   以程式观点,要架构这部分的决策性结构是很直觉的,你可 以轻易用一个变数表示现在应该秀出什麽场景、展示什麽变数。 然後用一个Switch或if指令让程式知道你该做什麽。   AVG的要点,就在於设计这些剧情、回答选项、还有每进 入一个新剧情想要做的动作。 ---------------------------- 主题三、事件与变数   假设现在,你已经开始游戏,并在某个分支点中选择了你要 走向什麽剧情,可是你要怎麽让游戏知道你现在在哪个剧情中呢 ?   又,接着你可能在某个剧情里,发生一个事件,比方说捡到 一把钥匙好了-那你要知道你得到一把钥匙呢?   唯一的办法,就是利用一个变数来储存。      对於没程式经验的人,变数这个辞可能会有点难理解。其实 你可以想像这个世界有个记事官,它有本簿子专门在记载「什麽 事情发生了、什麽事情没发生」。比方说你今天看到一笔钱,你 可以选择捡,它就会记载「你捡了钱」-由於它只看得懂数字, 它可能在某个栏位记载1,你若没捡钱它就会在那个栏位记载为 0。   接着世界(程式)就会根据你记载的变数,去做相对应的变 化。   以程式的观点来看,这些动作就是「发生个事件、玩家做出 什麽选择、就着就要改变某个『变数』」,我们通常称这些变数 为旗标(Flag)。   整个AVG设计模型,就会被简化为对这些旗标的操控、以 及针对旗标不同做出的决策机制。    ---------------------------- 主题四、剧本   让我们喘口气,继续回来看这个AVG最重要的构成因子- 剧本。   一个剧本应该有哪些东西?这当然要随着你的游戏内容有所 改变了-一个经典剧本里面通常有这些东西-          场景-发生某个剧情时候,它的背景图片是什麽?有什麽样      的动画?比方说如果你描写某剧情发生在日落时候,      你背景可能是一片黄昏晚霞。   人物-在这个场景中出场的人物,在大多AVG里面它通常      以角色的图片来表示。而人物出场的型态,很常见到      的一种形式就是一个图片的飞入。 选项-需要让玩家选定的选项,比方说是捡起、开启一个东      西与否。内容可以是文字、或是图片。      文字-这里包括上述场景的文字描述、现在剧情的描写、主      人翁们的心境描写、还有人物们的对话。              当然很多人会更希望每个人物都有专属的对话框   音乐-当然啦,到某个场景,你一定会有希望播送的音乐。   动画-这是一个高级而普遍的要求!有些人很希望场景中能      加入一些复杂的动画,比方说男女主角对话时候整个      场景就飘满着樱花啊、或是主角在雪原漫步时候飘落      着漫天飞雪。      以程式观点来说这部分是最复杂的,你将会发现你可      能花更多的时间在於把某个场景的动画弄得更漂亮。      而那些动画对玩家来说可能只是小小的服务。因此我      们在实践这部分,通常是用外挂方式来处理。 ---------------------------- 主题五、剧本的资料结构   想像你已经定义好一个剧本模型了,接着麻烦的就是,你要 让程式看懂这个剧本。   可是如同我们前面所述,程式这家伙是很笨的!它只看得懂 数字!也就是什麽栏位是什麽数字时候,程式该做些什麽。就好 像我们前面举例的一本簿子一样。   而储存这些数字的栏位、格式,我们就称之为 资料结构。   如果你还是不懂,那我们可以再举个例子-你可以想像你手 上有一本书,这本书每一页都是记载各种「剧情」,那剧情怎麽 被记载?   必定是这本书每一页都有一个「统一」的栏位,比方说第一 栏纪录着现在是什麽场景、第二栏位纪录着现在拨放着什麽音乐 。   而玩家可以做出各式各样选择,让某些栏位变成特定的值, 而程式本体就像一个帮你翻书的人,它会根据一个特定的指示帮 你把书翻到某一页-   比方说第十栏位是1的时候就翻到第8页这样。   而第十栏位很可能记载着你刚刚做的决定,比方说开门就让 该栏位写成1、开窗就写成2。   你可以想像整个AVG就好像你在看一本书,有个翻书员、 说书人、以及一个记事官。翻书员会引导你走向某一页剧情(这 就是我们刚刚提的主题2)、说书员会告诉你这一页剧情在说些 什麽、而记事官就随时用这些栏位记载现在故事进行模式。   好,让我们回到主题,记载方式。以这个例子我们可以看到 我们显然需要一个统一的结构,来记载现在各式各样的事物。你 可能会问为何强调需要统一格式-你可以想想看如果不同一格式 会发生什麽样的错误。(再次强调你遇到那个翻书员可没这麽聪 明)   而这些固定的栏位结构,我们称之为容器,或资料结构。以 上面举的剧本格式为例,它可能需要以下格式来储存。 typedef struct Drama { struct Drama *NextPage[3]; //纪录下一页要翻到哪里 char *Load_Music; //要读入的音乐档名  char *Load_Image; //要读入的图片档名   char *Text_Story; //故事文字  char *Text_Menu; //选项文字 };       好吧,如果是非程式人员,可能看不懂上面表达的型态, 其实,这里只有第一项翻的页数是使用指标型态来指到下一个 要翻到的页码在哪里。其他一律都是用字串来表示。 ---------------------------- 主题六、剧本的演算法        好,现在你已经有本记载各式各样剧情的簿子了-现在,你 还需要一个帮你翻簿子的人-玩家可不愿意自己去根据那些复杂 的资料结构自行判断要翻到哪一页去。   如何设计这位帮你翻簿子的人呢?我想这部分是相当直觉的 !使用if..else、或是switch机制。你可以根据每个剧情不同的 旗标、玩家做出的选择,去判断下一个要指向的页码在哪里。      接着要解决的问题,就剩下如何载入那些资料结构,让画面 显示某张图片、播送哪首音乐、以及显示哪些文字了。这部分有 相当多函式库可以支援。   若以BCB或 .Net设计,更有元件可以直接拨放音乐、显示图 片!   如此一来,在搭配刚刚的资料结构,一个AVG就这样设计 出来了!!   在此我们举个程式例子: void AVGMain(Drama *TempDrama) { int Next_Page; //定义下个要翻到的页数 while (TempDrama!=NULL) { AVGShow(TempDrama); //秀出音乐、图片、文字 AVGEventExe(TempDrame); //引导剧情    Next_Page = AVG_Next(TempDrame); //找寻下一页要跳到哪’ TempDrama = TempDrama.NextPage[Next_Page]; //跳页:) } } ---------------------------- 主题七、剧本编辑器   旅行到这..如果你是个企划组人员,你一定会上述两个核心 主题头大到不得了吧。   你甚至可能抱怨:「弄了半天~我还是不懂怎麽写嘛!」   但你要知道,了解上面讲述的概念对你来说还是很重要的。 或许你看不懂程式码部分,但相信这些概念对於你设计一套游戏 -或许藉由任何工具,是大有帮助的。   一些程式组成员可能也会发现,我故意漏讲一些概念,像是 指标,甚至我还有偷用到 Link List,这些有趣的资料结构对於 储存剧本有多大帮助。不过在这里为了普遍性我想还是给大家自 行研究。:P      那回归我们本意,既然我们是希望每个人都可以简单学会游 戏设计-那上面讲的所有专业知识,你都可以忘掉了-不过你切 记你还是要了解他基本概念是什麽-   接着你可能就会希望,有个能人能设计出个简单的AVG设 计引擎,来帮助不懂程式的你怎麽写AVG来!   简单的AVG编辑器?这当然是有可能的!甚至是最容易实 现的游戏编辑器。典型的AVG编辑器有恋爱游戏设计大师、吉 里吉里、和EAVG。   简单来说就是避开让企划人员接触到程式码的可能,藉由一 些虚拟码、甚至是一些介面,让企划人员可以简单制作AVG。   所谓虚拟码是什麽?它就是一个专门给程式看「现在要做什 麽」的代码。   以吉里吉里为例,它底层程式架构为TSJ语法,那是一个 类似JavaScript的程式语言。但由於一般人学习该语法仍有门槛 ,因此他又有一个 KAG虚拟码把 TSJ包起来。   比方说我们可以定义<I>代表显示某张图片、<S>代表拨放某 首音乐,<T>代表显示一段文字,并在一定时间後消去。   那企划组人员要写一段剧情,它就可以这样写:   <I>Angel_At_Snow.jpg</I> <S>Angel's Song.mp3 </S> <T>他伫立在一片雪白的远野,四周都是白的</T> <T>他的衣服是白的,背後的翅膀也是白的</T> <T>轻飘飘的羽毛好像跟瑞雪融合,倘佯在一片白色的无尽里...</T>   这对企划组来来说,可以说是大大节省的他所需要付出的心 力和学习时间,只要透过简单的语法,就可以轻易交代现在剧本 内容、以及要表现出来的场景。   那他程式方面设计原理是什麽?   其实也很简单,就是一个帮助企划组人员把上述虚拟码转化 成程式码,在帮助他们把程式码编译出来的步骤。   比方说上述虚拟码,转换成程式可能是这样的: #include <MyLibary.h> //我们可能会大幅简化显示图片和音乐的过程                //因此,你必须写一些函式库,然後包进来   Image_Main->LoadFromFile("Angel_At_Snow.jpg"); Form->Music->LoadFromFile("Angel's Song.mp3"); Memo1->Lines->Append("他伫立在一片雪白的远野,四周都是白的"); Memo1->Lines->Append("他的衣服是白的,背後的翅膀也是白的"); Memo1->Lines->Append("轻飘飘的羽毛好像跟瑞雪融合, 倘佯在一片白色的无尽里...");   接着就在编译成可以执行的执行档就好了。中间当然别忘了 Link你的函式库。因为你在转化虚拟码为实际程式码过程中。   很有可能被迫省略一些步骤,比如说图片特效处理,那些东 西对企划人员来说可能只是一行- OB   <A> "满天飞雪的动画" </A> 而这些对你来说很有可能其实是一大串的程式码。因此你必 须额外写函数库,以便企划人员可以更简单地写出他的游戏来。   你们两个互相合作,他贡献他的编剧能力、你贡献你的程式 技术,一个游戏,就这样诞生了!!! ---------------------------- 结语:   终於到结语了!松了口气吧!经过这次旅程,我们从AVG 基本概念说起,讨论他分歧点概念、事件概念、剧情概念,并简 单提及AVG的资料结构与演算法。   後面我们特别介绍了如何去撰写一个AVG编辑器。这里目 的就是希望让游戏设计门槛更降低!让游戏设计更普及!希望大 家看完本篇文章,能得到些什麽启示,也欢迎大家针对本篇文章 内容继续进行讨论!   之後敝人也会投入去撰写个免费的、公开原始码的AVG编 辑器,期盼让更多人能加入游戏设计行列,让一群人一起追逐梦 想!   若你跟敝人有着共同的理想,希望创造出个大家的游戏、能 被大家共同设计的游戏、为了大家而发展出的游戏。也欢迎你跟 敝人联络~   希望能跟大家一起筑梦!一起设计出好玩得游戏来! ---------------------------- -- 游戏设计团队等待你的加入与支持: /\●/\ ))  http://220.132.66.21/phpbb2/portal.php  (( / /▲\ \    PTT GameDesign板 PTT2 DreamYeh板 欢迎你圆梦 \\      巴哈姆特好像才是我大本营XD~让我们一起Kuso吧               想了解更多DreamYeh吗?欢迎来无名P_DreamYeh板 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.66.37.44
1F:推 Achillean:天使大出一系列不同类型的文章吧!让我们比较之间差异 05/27 20:12
2F:推 wandererc:一定要推的啦~~~~ 05/27 20:11
3F:推 wandererc:真的好期待天使的AVG编辑器面世~不过其实我没有给过什麽 05/27 20:15
4F:→ wandererc:意见耶^^"||||放在文章最前面真是害我不敢转了XD" 05/27 20:15
5F:推 lvboo:SourceSDK感觉不错 有好的工具蛮重要的 05/27 20:31
6F:推 izsoak:总之先推一个,不知道为什麽在进来之前有种这篇一定是讲美式 05/27 20:52
7F:→ izsoak:AVG的刻板印象,结果发现是讲日式AVG时吓了一跳@@ 05/27 20:53
8F:推 wandererc:美式AVG可没那麽好做,而且几乎都是3D为主流了... 05/27 20:57
9F:→ wandererc:其实主要是天使被我拐来研究AVG的关系XDDD" 05/27 20:59
10F:推 elfria:天使一出手..便知有没有 05/28 01:10
11F:推 fumizuki:推 05/28 13:41
12F:推 angelasuka:天使大耶~~ 05/29 01:41
13F:推 DreamYeh:刚看欧美系AVG,蛮重视玩家动作部份..设计难度就高了点.. 05/29 11:30
14F:推 DreamYeh:不过理论上分歧点和以剧本为元素两个思维还是可以使用的 05/29 11:31
15F:推 DreamYeh:只是还要加入脚色贴图判定就是了:) 05/29 11:32







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP