浅谈游戏中BUFF的设计要点
其实这类帖子并没有多少的设计理论,对于策划的提升和帮助也并不大,原因其实在于其适用性太窄,当我要设计XX象棋的时候,它就滚一边去了。
废话不多说切入正题:
游戏中的BUFF/DEBUFF我们见过很多,我见到的玩得比较泛滥的就属WAR3、魔兽世界、九阴真经、仿DOTA类的如LOL。
总体上来说,BUFF/DEBUFF都属于“临时的技能效果”,因此它们可以沿用绝大部分的技能逻辑对角色进行程序处理。
设计一个BUFF/DEBUFF机制,需要考虑这么几个要点
(没有需求,就没有设计的方向性指导,没有需求,功能再好,都是没有存在的必要的)
内部运算
1、是否包含技能效果?(提高/降低 攻击 命中 闪避 移动速度 群体伤害 替换技能ID 等 )
2、是否包含阶段效果?(BUFF分为多个阶段,不同的阶段有不同的效果,比如影之哀伤)
3、是否包含计时器?(持续时长计算、叠加时长计算 总之所有关于持续性时间的问题 都丢这里)
4、是否包含计数器?(用来计算阶段、剩余生效次数、比如影之哀伤 LOL电刀)
5、是否具备分类规则?(魔法效果 诅咒效果 中毒效果 用于进行归类 方便程序进行的 驱散筛选判断)
6、是否可以被驱散? (魔法效果只能用祛除魔法解除 中毒效果只能用解药祛除)
7、是否具备优先级?(附加优先级,低等级BUFF会被高等级BUFF替换,低等级BUFF无法附加给高等级怪)
8、是否保留母体信息?(比如传染性的DEBUFF,感染者传播一次,母体会获得额外巴拉巴拉。。。多个项)
9、是否共享同步规则?(比如多个角色共享一个BUFF状态,一个人的BUFF被祛除则其他人也被祛除)
10、以上功能可以进行再补充,没有需求则可以逐个剔除。
外部表现
1、是否显示BUFF图标?(传奇里道士的BUFF是不显示图标的)
2、是否不同阶段表现不同的图标?
3、是否显示计时器?
4、是否显示计数器?
5、是否显示BUFF文字说明?(对BUFF类型、效果的描述)
6、是否改变角色外形?(DNF里的冰冻、WOW里的变形)
7、以上表现功能可以进行再补充,同上。
设计一个新的BUFF机制后对其功能进行扩充,有时候无异于对整个技能模块的数据结构进行改写,所以更多的时候,我们通常用脚本去实现它,只让程序提供接口。
当一个策划在设计BUFF机制的过程中,务必先弄清楚自己需要的是什么,脑海里它的逻辑框架可以支持多大的扩容性(你懂的)。在设计这套技能机制的时候,务必要亲力亲为与程序部门紧密配合,而不可让程序员凭着自己的经验乱动。(程序员的通病,手里有活就闲不住,完全不顾及设计需求)
设计要点
BUFF对于玩家来说,其实是一个考验“辨认能力”的游戏玩法(我早期提出的游戏三类型)。比如“玩家A身体变红了,集火它可以造成额外伤害;玩家B身体变大了他要爆发了,请速度给其减速或打晕然后逃离他;玩家C感染了病毒全身发绿,应该远离他不要被传染”。
正是如此,所以在设计短时间的BUFF或DEBUFF的时候,应该遵循“该状态可以给玩家造成深刻印象”的原则,该大气表现的时候就该大气表现,技能效果要与外在形态形成正比。
而作为一个BUFF机制运用得比较泛滥的《九阴真经》来说,各种技能依赖BUFF叠加层数(计数器),而自己对自身状态的层数毫不知情,以至于玩家只好技能乱放,胡乱衔接,成了一大败笔。(输出表现力的重要性)
浅谈游戏中BUFF的设计要点的更多相关文章
- 浅谈游戏中BOSS设计的思路
对于大多数游戏来说,BOSS在其设计上都有着不可替代的作用,也是玩家印象最为深刻的一部分.近期自己也有在做BOSS的设计工作,有一些心得想要分享一下: 1.明确BOSS的设计目的 在设计之初,我们一定 ...
- 【Cocos2d-x游戏开发】浅谈游戏中的坐标系
无论是开发2D还是开发3D游戏,首先必须弄清楚坐标系的概念.在Cocos2d-x中,需要了解的有OpenGL坐标系.世界坐标系和节点坐标系. 1.UI坐标系 IOS/Android/Windows ...
- 论游戏中Buff的实现 [转]
论游戏中Buff的实现 分类: C/C++ 游戏开发2012-09-13 14:30 574人阅读 评论(6) 收藏 举报 c++游戏开发 源地址:http://blog.codingnow.com/ ...
- 浅谈Java中的对象和引用
浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起 ...
- 【转载】浅谈游戏开发之2D手游工具
浅谈游戏开发之2D手游工具 来源:http://www.gameres.com/459713.html 游戏程序 平台类型: iOS Android 程序设计: 其它 编程语言: 引擎/SDK ...
- 【转】浅谈Java中的hashcode方法(这个demo可以多看看)
浅谈Java中的hashcode方法 哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: public native i ...
- 浅谈Java中的final关键字
浅谈Java中的final关键字 谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来 ...
- 【转】浅谈Java中的hashcode方法
哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: public native int hashCode(); 根据这个 ...
- 浅谈HTTP中GET、POST用法以及它们的区别
浅谈HTTP中GET.POST用法以及它们的区别 HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符.我们可以这样认为: 一 ...
随机推荐
- C# Excel2007 导出生成 2003兼容格式
//导出2007格式 AppWb.Saved = true; //保存工作薄 AppExcel.ActiveWorkbook.SaveCopyAs(FilePath); //导出2003格式 AppW ...
- CEntOS6.5从启动界面直接进入命令行界面
ctrl + alt + F1 ctrl + alt + F2 ctrl + alt + F3 ctrl + alt + F4 ctrl + alt + F5 ctrl + alt + F6 同时按下 ...
- 织梦CMS建站入门学习(一)
一.下载与安装. 首先到织梦官网下载软件,可选择UTF8或GBK不同编码格式,如果电脑没有PHP环境,还要下载dede自带的PHP环境软件. 将软件中的upload文件夹内容复制到WWW文件夹下,然后 ...
- Matlab中save与load函数的使用
用save函数,可以将工作空间的变量保存成txt文件或mat文件等. 比如: save peng.mat p j 就是将工作空间中的p和j变量保存在peng.mat中. 用load函数,可以将数据读入 ...
- 使用getRequestDispatcher跳转后 能获取到request.setAttribute数据 分析
- (转)把hadoop源码关联到eclipse工程
把hadoop源码关联到eclipse工程 转:http://www.superwu.cn/2013/08/04/355 在eclipse中阅读源码非常方便,利于我们平时的学习,下面讲述如何把 ...
- 【题解】CF#403 D-Beautiful Pairs of Numbers
这题还挺对胃口的哈哈~是喜欢的画风!回家路上一边听歌一边想到的解法,写出来记录一下…… 首先,由于 \(b_{k} < a_{k + 1}\) ,所以我们可以看作是在一个长度为 n 的序列上选择 ...
- BZOJ4104 [Thu Summer Camp 2015]解密运算 【乱搞】
题目链接 BZOJ4104 题解 我们将已知字符排序,由循环就可以得到一个对应关系 如样例就是: 0->第5行 1->第1行 1->第2行 1->第3行 1->第5行 2 ...
- BZOJ1011 [HNOI2008]遥远的行星 【奇技淫巧】
1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec Memory Limit: 162 MBSec Special Judge Submit: 5058 Solve ...
- 洛谷 P2747 [USACO5.4]周游加拿大Canada Tour 解题报告
P2747 [USACO5.4]周游加拿大Canada Tour 题目描述 你赢得了一场航空公司举办的比赛,奖品是一张加拿大环游机票.旅行在这家航空公司开放的最西边的城市开始,然后一直自西向东旅行,直 ...