如何高效设计游戏——塔防游戏设计方案
版权所有
转载须注明
作者:Einsphoton 任江枫
Email:rjflx@hotmail.com
微信公众平台:
任何带有利益性而未经过本人同意的转载必究
前言
目前国内市场的游戏普遍为一些带有“快餐特色的RPG”游戏居多,并且这一类型的游戏的设计思路已经发展成为游戏开发者们“月经”一样的存在,有很多人“取经”,也有很多人“传道”,设置有些人对于这一设计模式倒背如流。但是一旦公司里提出制作一些其他类型游戏的项目时,就会让许多设计者苦恼。
因此,在这里我们一起来探讨一下,某些类型游戏的设计思路。
例如,我们将要设计一款“塔防”游戏。
恐怕有些已有过“塔防”设计经验的人或许会经历过这样的体验:若一款塔防游戏总共有20关,平均每关有100波敌人,那总不可能要对这2000波敌人一点一点进行手动配置其属性以及难度吧,况且还要和另一边的“塔”的数据以及经济体系相结合。如果是单机游戏,这一工程或许还有人可以接受,但是考虑到近期某些“SNS上的社交塔防”,那么其波数是恐怖的指数级增长,最后恐怕不止20000波。再者,对比国外一些优秀的塔防游戏,我们会发现,国内的作品会有一个通病,就是如果下一波敌人的类型是“速度型”的,结果这一波的难度会大增。形成这一问题的原因是,多数设计者仅仅单纯的把“HP”作为难度递增的一个衡量。所以如何想一套既便利又可行的方案(或者这里我们称之为“算法”)就是我这篇文章接下来要分析的事情。
一些充足的准备
在做一款游戏的设计之前,我们要清楚地知道,这类游戏将会出现哪些属性元素,针对这些属性元素之间的关系从而制定方案。
在这里我们假定将要设计的游戏为:
类型:塔防游戏 环境:SNS社交网络 针对人群:学生、白领
游戏目的:休闲娱乐、社交为主。
(设定环境为SNS社交网络仅仅是一个参考,接下来要讲的思路也适合做单机、做手游的情况。)
接下来,我们还需要知道我们要针对哪些内容进行设计。按照一般的塔防游戏的设计思路有:
① 系统设计
一些塔的种类设计,种类相克,种类结合出不同的效果等。由于这些设计是要凭借诸位设计者的创意以及游戏需求而定,并且本着“丰富我们的游戏创意”的原则,在这里就不干扰各位设计者了,并且这也不是本文要讲的重点。
② 数值设计
这个环节我们也是考虑最基本的情况,并且设计者们也可以根据自己想要的效果合理添加内容,思路一致。
基本的数值属性有:
塔 | |
攻击力ATK | 决定单位建筑对敌人所能造成的伤害程度 |
攻击频率FRQ | 决定单位建筑在单位时间内的攻击次数 |
攻击范围RGE | 决定单位建筑的攻击有效距离 |
敌人 | |
生命HP | 决定敌人单位所能够承受的最大伤害 |
速度SPD | 决定敌人单位在单位时间能能够移动的距离。 |
清楚了我们将要设计的元素有哪些之后,我们就需要建立一个模型,来统一这些元素。为了使我们设计的方案更有效,我们先来一起确定一下我们的设计方向,或者称之为目的。
设计意图:
① 能够设计一套有效的算法模型,可以减少不必要的工程浩大的手动填写。
② 为日后调整数据提供通道。(注)
③ 为开发部门提供清晰地逻辑框架,并且方便计算机执行敌人数据的生成。
注:上面所提到的数值调整通道,按照本人的理念有两种类型。
① 参数调整。既是在数值框架中建立各模块的映射关系,然后留有调整参数,后期可以调整这一参数来达到想要的效果。
优点:高效率,有逻辑性,应变性强,便于管理。
缺点:准确率不是很高,但不糟糕。
② 局部可调。既是在数值设计上,关联性不是很强。
优点:准确性强,可变空间大,设计灵活。
缺点:效率低,不易于管理,应变性不高。
下面我们来设计这一模型。
模型的建立
许多设计者或者制作人一听说到“模型”一词,就会联想到“数学模型”,顿然感到无比的高技术性,从而被“模型”所吓倒。其实本人对此的理解很简单,只要抓住自己的设计意图,有了方向自然会出方法,见神杀神。
在这里还需再一次强调我们的设计意图,我们是要设计出一套方案来供开发部门或者是计算机来执行我们讨厌的“填表”的,所以如何能够找到这样一个可以准确或者说大概描述出敌人以及塔的实力的变量,是我们接下来要做的工作。
拟定一个理想的环境,在这个理想的环境我们先不用考虑一些因素对于我们模型的影响程度。
对于多个塔攻击一个敌人,我们有
HP=FRQ1*ATK1*(ELP1/SPD)+FRQ2*ATK2*(ELP2/SPD)+FRQ3*ATK3*(ELP3/SPD)+ ……
整理得
HP*SPD=FRQ1*ATK1*ELP1+FRQ2*ATK2*ELP2+FRQ3*ATK3*ELP3+……
(其中ELP= Effective Length of Path 有效路径长度,既是塔的攻击范围与路径的交集)
由于防御建筑总是“攻击一个目标致死之后紧接着攻击下一个目标”这一特性,在多个塔攻击多个敌人的情况下,我们可以假设每个敌人的间隔足够小以致塔的攻击可以连续进行。这样,我们就可以把多个敌人(无论是同种敌人还是混合的敌人)都可以看做是一个大的敌人来处理。公式同上。
至此,我们就可以引进一个变量SET(the Strength of Enemy Troop)来描述敌人的强度,有
SET=HP*SPD
同样我们也可以用SET来形容塔的强度
SET=FRQ*ATK*ELP
在理想环境下,ELP基本可以近似看做塔攻击范围的半径
SET=FRQ*ATK*RGE
误差分析
至此模型已经基本建立完毕。但文中经常会出现“近似”“理想环境”“可看作”等词,这会让许多读者抱有怀疑的态度,至少它看起来不是那么“看似精确”。这里我要说明几点:
首先,这里的“不精确”与模型的适用程度联系不大。这就好比我要去超市买一个冰激凌,我本以为是5元一个,但结账的时候才发现原来是6元,那我再补一元钱就好了。相对于此,经过初步计算本应该是5个塔才能打过这波敌人,但实事需要6个,那就再造一个就好了,我们完全可以在经济体系上为玩家放宽松点来补偿。(这种情况适用于SNS类型的塔防)
其次,误差仅仅就是一个偏移量,由于敌人的间距以及ELP造成的,我们完全可以在建立等式的时候把这个偏移量补上,从而使得式子“看上去严谨、精确”,这个偏移量可以进一步分析求解,也可以根据实测来求解。(这种情况适用于单机塔防,严格控制难度和经济体系)
最后,关于“看上去严谨”这事儿,我想说点题外话。
我有一个朋友,也是做游戏设计的,但他是管理层的。在设计游戏的时候他总是过分强调“数据”、强调“计算”、强调“严谨”,他的每一步设计都要到处去找数据支持,以为这样就能设计出好的游戏,结果却总是与意愿相悖。这是因为他没有注意到一点“在出了一些原则性设计是基于数据的计算之外,大多数的设计都是基于体验的”。我们要明确的是,我们设计的游戏是给人玩的,而不是给机器玩的,你的数据计算的再准确,如果玩家不领情,一切都是白搭。有些时候越是严谨的游戏越没有玩点,因为严谨会让一切看上去都是情理之中的必然事件,就缺少了游戏的娱乐性。
模型的使用
有了之前我们一起建立的模型,我们现在还需考虑如何去使用它。
首先我们可以拉这样的一张表,来决定游戏的总轴寿命:
地图编号 | 定位 | 难度 | 波数 | 备述 |
第1关 | 新手 | 简单 | 120 | 帮助玩家熟悉 游戏以及道具 |
第2关 | 180 | |||
第3关 | 240 | |||
第4关 | 成长阶段 | 中等 | 300 | 帮助玩家熟悉 高阶的系统玩 法,任务道具 奖励丰富,使 玩家对收费道 具产生依赖, 养成良好的消 费习惯。 |
第5关 | 360 | |||
第6关 | 420 | |||
第7关 | 480 | |||
第8关 | 540 | |||
第9关 | 600 | |||
第10关 | 660 | |||
第11关 | 720 | |||
第12关 | 780 | |||
第13关 | 高手阶段 | 难 | 840 | 此阶段玩家已 对游戏有所了 解,也正是玩 家消费的关键 点,需要给予 充分的“产出 ”奖励。 |
第14关 | 900 | |||
第15关 | 960 | |||
第16关 | 1020 | |||
第17关 | 1080 | |||
第18关 | 1140 | |||
第19关 | 1200 | |||
第20关 | 1260 | |||
第21关 | 1320 | |||
第22关 | 1380 | |||
第23关 | 专业 | 艰难 | 1440 | 一个充满挑战 的阶段。 |
第24关 | 1500 | |||
第25关 | 1560 | |||
汇总 |
|
| 21000 |
|
之后我们再分别制定防御单位的能力数值和敌人的能力数值,单位为SET,为了方便起见,我们就设定有一个塔,3个等级。
塔A | ||||
等级 | 攻击力 | 范围 | 频率 | SET |
1 | 10 | 100 | 0.8 | 800 |
2 | 25 | 100 | 0.8 | 2000 |
3 | 40 | 100 | 0.8 | 3200 |
然后,敌人的设定,我们可以先设定一个基础值,然后每10波实力上升一个档次,如
波数 | SET | 数量 |
1 | 1000 | 10 |
2 | 1200 | 10 |
3 | 1400 | 10 |
4 | 1600 | 8 |
5 | 1800 | 15 |
6 | 2000 | 15 |
7 | 2200 | 10 |
这种情况是假设每一波敌人的种类一样,我们可以根据数量平均分配一个敌人占有多少SET,然后用分配到的SET除以SPD(当然这是之前在设计敌人的时候已经填好的属性)就可以得到这个敌人的HP了。并且可以看出第一波敌人是需要建造两个LV1的塔A的(有误差,参考前文,进行偏移量的补偿)。
那么对于某一波种类混杂的敌人,我们就需要进行一些其他额外的设置,而且这些设置都是之前应该准备的工作,包括前面提到的SPD属性。
项目名称 | SPD | SET比值 |
敌人A | 40 | 1 |
敌人B | 15 | 2.5 |
敌人C | 20 | 1.5 |
读者们可以根据属性的设置看出敌人的个性,比如“敌人A”属于高速移动但是比较脆弱的类型。“敌人B”属于速度较慢,但是皮厚的类型。“敌人C”属于各项均衡的类型。这样,我们就可以根据“SET比值”这一属性,按比例分配SET值了。
在拉表格的时候,各位还需要注意一点。拉表格也要横向与纵向的比较的。一般的方法是:纵向看时间,横向看难度分层。比如对于本例来说,纵向就是这一关的总寿命(时间),横向就是每一波需要多少个塔才能打过。
结束语
这种模型的建立,解决了许多塔防常见的问题,并且在效率上大大提高。但读者们需要把握好其利用价值以及尺寸。本文所提供的是一个“方案”,是一个“方法”,是一个“框架”。具体需要设计者们结合自身产品适当变通,量身定做。当然,这里提供的方法必然是有变通调节的空间的。
本着“丰富游戏设计的创意性以及多样性”的精神,在这篇文章中笔者不易过多讲解细节,读者们可以参考,领会要点,然后设计出自己的风格。
最后,我还是想强调,游戏设计,还是应当多注重体验,而不是抱着“数据”走火入魔。