写了多年的策划案,我竟然都不知道这种宝藏方法
编者按 我们在游戏开发过程中,经常会遇到一些“含糊不清”的问题,在这些问题上,有些是策划本身可能想得非常清楚,但是苦于表达能力有限,到策划案上的文字就变得不那么清楚了;也有些是策划想得简单了,错过了一些“边界问题”产生了设计矛盾。如何避免这个一直以来都是策划和程序交流中存在的问题呢?这里推荐一种设计思路给游戏策划们,这个思路并不帮你完成好完整的策划案,但却可以帮你进一步有效的提高一份策划案的有效沟通功能——这就是“用设计断言的思路来写你的需求”。
作者:猴与花果山
(本文内容由公众号“千猴马的游戏设计之道”提供,转载请征得同意。文章仅为作者观点,不代表GWB立场)
SomeThing(对谁)
SomeMethod(做什么)
Reference(参照对象)
Things(操作对象)
Lambda表达式(断言本身)
“雪山上的敌人都会掉落雪球”
“对比玩家弱的敌人造成5000点伤害”
“低等级的玩家可以领取一个礼包”
概括是原罪
首先是“雪山上的敌人的都会掉落雪球”,“雪山”指的是什么?一个地方还是所有符合某个条件的地形?或者是某些被标注为“雪山”的地区?“敌人”是指什么?
接着是“对比玩家弱的敌人造成5000点伤害”,“比玩家弱”是怎么认定的?等级更低还是HP更少?“敌人”是指什么?
再来是“低等级的玩家可以领取一个礼包”,“低等级”是指什么?“一个礼包”又是什么?
第一步,为你的“对象”选定一个范围
雪山的范围:是所有的地图。
敌人的范围:是角色列表,或者说“当前角色列表”,如果是“当前”角色列表,我们则需要对于“当前”设计进一步的断言,从而从范围中选出“当前”。
一个礼包的范围:可能是礼包列表,或者道具组列表等。
第二步,精确地列出你的断言内容
什么是玩家?在这个语境下,玩家应该特指的是某个角色,或者是某个指标。那么很显然,我们对每个角色,无论怎么判断其数据,都无法得出“他一定是唯一的”这个结论,因为尽管我们总觉得“我可以保证只有一个角色的PlayerControlled是true”或者“我可以保证只有一个角色的Side是0”,但是这种“保证”一文不值,从计算机角度来说,在列表中符合某个条件的元素应该是可以组成一个新的列表的。所以真正的“玩家”的意思,在这里说的,应该就是"Side==0"或者“PlayerControlled==true”,他是一个简单的判断条件的概括,而非是对一种角色的概括。
什么是弱?这也是游戏设计的一环,假如我们游戏中有“战门力”这个属性,这个属性越高我们认为越强,反之则越弱,然后“战门力”是一个角色的属性,那这里的“弱”说的就是角色下的战门力属性小于一个值。而因为整句话是“比玩家弱”,所以他的比对的对象确实就是一个角色,或者由一群角色作为参数算出来的一个值:“参考战门力”=f(角色组)。想到这里,我们不得不回过头再去看“什么是玩家?”这时候我们就需要更进一步精确的去设计这个,最终得出一个可以必对的值来定义“弱”,比如“所有Side==0的角色中等级战门力最高的那个”来作为“玩家”。
什么是敌人?这看似没什么问题,但是计算机依然不能明白什么叫“敌人”,你需要定义比如“我能打他,他不能打我,他算我的敌人吗?”以及“我不能打他,他能打我,算是我的敌人吗?”等等,你至少得定义出一个条件,比如对应于“什么是玩家”得出“Side != 0”就是“玩家的敌人”。
第三步,演算与验算
第四步,分析变量和常量
SomeThing=所有雪山地图的角色
SomeMethod=造成5000点伤害
Reference=第1个参数(总共1个参数):所有角色中Side不等于0,且战门力最高的(这是另一个断言得出的结论)
Things=“我的Side不等于0”并且“我的战门力比Reference第一个参数小”