浅谈BUFF设计
Buff在游戏中无处不在,比如WOW、DOTA、LOL等等,这些精心设计的BUFF,让我们击节赞叹,沉迷其中。
问:BUFF的本质是什么?
BUFF 是对一项或多项数据进行瞬间或持续作用的集合。(持续的改变对象某些属性的效果)
问:设计BUFF的要点有哪些?
1:有用还是有害:
也就是我们常说的BUFF/DEBUFF,有可能我们有个技能可以驱散角色身上所有的Debuff(dota净化)
2:持续总时间:
指定时间段 或 无时间限制(在时间上面是永久的,比如Dota小小的变大)
3:作用间隔:
瞬间(传奇里面的太阳水),持续作用(传奇里面的红药)
4:作用属性:
Buff要影响对象的哪个属性?
5:单次作用量 或者 总作用量:
每次Buff触发时,作用于属性的增量值
或者指定总量,比如DOTA龙鹰的大招,指定范围内,总计造成1000伤害
1:更深入点讨论,我们可以得出要设计一个Buff体系,可能需要涵盖以下元素
1:使Buff趋于触发的元素(量变)
最简单的比如:计数器或者计时器
打个比方:LOL里面的电刀,触发之后,清零;然后重新开始计数,到100再触发;再比如某些累计点数之后,再触发的技能。
2:使Buff瞬间触发的元素(质变)
这个触发点非常之多,灵活混合使用,可以创造出很多不可思议的效果,我能想到的,按照Buff生命周期全部罗列到下面,供大家头脑风暴
1:Buff创建的时候
2:Buff持续作用时间内,每隔XX秒,被触发的时候(喝药、谜团的憎恨)。
3:载体攻击的时候(电刀)
4:载体被攻击的时候(刃甲,反弹伤害;传奇魔法盾,吸收伤害)
5:载体死亡之前(蛮王,6秒真男人,就死死不了)
6:载体死亡后 (LOL里面那个什么法师,死亡之后,尸体还可以继续攻击)
7:Buff消失时(Dota死亡领主的盾,破裂时将被攻击时吸收的的伤害反馈给范围内的玩家),再来个LOL里面的李青(天音波 Buff消失,回音击解锁)
3:叠加还是覆盖?
Dota里面蝙蝠的油大家知道吧?这个就是叠加。“叠了20层油,就切回基地把钱花光吧”
覆盖就很普遍了,基本上我们看到的技能都是这个,比如毒蛇的中毒,再中一次毒,就只是把剩余作用时间重置一遍;但是这里有个优先级还是要提下的,低优先级无法覆盖高优先级的
4:包容还是互斥?
乍一看和第3点容易搞混,最明显的区别是覆盖会减少buff的计数,互斥则不会。打个比方,Dota里面,月之骑士Luna的大招就是用到了这点,先来个技能介绍:
以月亮之名,召唤10(12)道月光,随机选择周围的目标造成伤害。任何单一目标不会受到多于4(∞)道月光的打击。
在0~4道月光的时候,是包容,4道以后就是互斥了;当我们装备了蓝杖的时候,将Buff由互斥改为包容,就可以实现蓝杖的效果了(12道全中还不死?)
5:施放者
Dota里面你最恨啥?沉默术士的沉默遗言肯定能上榜,在这个Buff里面死亡的玩家,会被沉默术士永久窃取一点智力。这样的需求,我们就需要记录Buff的施放者
6:不同阶段,不同惊喜
这个一时找不到合适的对象,就随便说个,比如有个技能开启之后根据计数器开始叠加层数,0~10层获得攻击力增加,10~20层对10%血量以下的怪物,造成一击必杀的效果(程序里可以造成9999999伤害,必死啊)
2:Buff的表现一定要明显
Buff一定要明显,比如LOL里面电刀就是有层数数字显示的,当累积到100时,我就知道,“哦,我可以给对面的小子狠狠的电一下了”
那么如果没有这个数字显示呢?“我掐着时间算着,好像累积到100了,该不该去试试呢?”,这个可能导致2个问题:1:没累积100,玩家没电到人,被人搞死 2:累积到了100,玩家不知道,导致产能浪费
再比如说Dota里面的黑皇杖,当我们看到一个又粗又大的英雄,冲入到我方法师阵营里面,肯定是一阵鸡飞狗跳,“那家伙开硬又黑了,兄弟们风紧扯呼”
如果没有变大模型这个提示呢?看到一个地方英雄冲了过来,我从1000套搞死他的方案里面挑选出了最凶残的方案NO1,结果技能点到对方身上,准备秀的飞起的时候,“无效选择对象”
拿LOL来说:(截图难找,各位看官请结合自身经验进行适量脑补)
喝药:角色身上旋转着一堆绿色的粒子特效,告诉我,角色的生命正在恢复中
蛮王6秒真男人:首先播放声效,然后蛮王身上冒出不明黄色液体,然后身上显示“不灭愤怒”4个字
BUFF对于玩家来说,其实是一个考验“辨认能力”的游戏玩法(我早期提出的游戏三类型)。比如“玩家A身体变红了,集火它可以造成额外伤害;玩家B身体变大了他要爆发了,请速度给其减速或打晕然后逃离他;玩家C感染了病毒全身发绿,应该远离他不要被传染”。
正是如此,所以在设计短时间的BUFF或DEBUFF的时候,应该遵循“该状态可以给玩家造成深刻印象”的原则,该大气表现的时候就该大气表现,技能效果要与外在形态形成正比。
浅谈BUFF设计的更多相关文章
- [UWP]浅谈按钮设计
一时兴起想谈谈UWP按钮的设计. 按钮是UI中最重要的元素之一,可能也是用得最多的交互元素.好的按钮设计可以有效提高用户体验,构造让人眼前一亮的UI.而且按钮通常不会影响布局,小小的按钮无论怎么改也不 ...
- 浅谈UI设计中妙用无穷的深色系背景
英文:medium 译者:优设网 - 陈子木 链接:http://www.uisdc.com/ui-benefits-of-dark-background# --------------------- ...
- 浅谈API设计
为什么需要了解一些API设计? 只要你编程,你就是API Designer 一个好的设计,模块之间的耦合应该也是API级别的 一个程序,如果你独立开发,那你既是API的Designer,也是API的U ...
- Redis系列六 - 浅谈如何设计秒杀系统
前言 设计一个系统之前,我们肯定要先确认系统业务场景是怎样的,下面就以某电商平台上的秒杀活动为场景,一起来探讨一个秒杀系统改如何去设计. 场景 我们现在要卖100件纸尿布,按照系统的用户量及以往经验来 ...
- mybatis缓存源码分析之浅谈缓存设计
本文是关于mybatis缓存模块设计的读后感,关于缓存的思考,关于mybatis的缓存源码详细分析在另一篇文章:https://www.cnblogs.com/gmt-hao/p/12448896.h ...
- 开源项目 PM 浅谈如何设计官网
有用户反馈进入官网首页光秃秃的一片,大家忙着做产品,忽略了官网的建设,惭愧惭愧. 确实,极简风格和极其简单还是有很大区别的. 旧的 Web 端 除了极其简单之外,它还有一个小问题, ...
- 【WebApi系列】浅谈HTTP
[01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi如何传递参数 [04]详解WebApi测试和PostMan [05]浅谈WebApi Core ...
- 【WebApi系列】浅谈HTTP在WebApi开发中的运用
WebApi系列文章 [01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi参数的传递 [04]详解WebApi测试和PostMan [05]浅谈W ...
- 浅谈WebService的版本兼容性设计
在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...
随机推荐
- Canny边缘检测算法原理及其VC实现详解(一)
转自:http://blog.csdn.net/likezhaobin/article/details/6892176 图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个 ...
- jetbrains phpstorm插件开发环境搭建
2018.04.14 重要更新: 使用 gradle 进行构建可以免去下面大部分步骤,使用 gradle 我们仅需下载安装 JDK.Idea. 使用 gradle 的方法是,新建 Project,然后 ...
- GTY's gay friends HDU - 5172 线段树
GTY has nn gay friends. To manage them conveniently, every morning he ordered all his gay friends to ...
- ubuntu 安装微信开发者工具
https://github.com/cytle/wechat_web_devtools 实测:64位 32位的可以... 参考命令; 2030 sudo apt-get install wine1 ...
- Centos7中使用ipset
1.禁用firewalld systemctl stop firewalld systemctl disable firewalld 2.安装ipset yum -y install ipse ...
- OpenCV---图像梯度
图像梯度 推文:[OpenCV入门教程之十二]OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑 图像梯度可以把图像看成二维离散函数,图像梯度其实就是这个 ...
- [LeetCode] Gas Station,转化为求最大序列的解法,和更简单简单的Jump解法。
LeetCode上 Gas Station是比较经典的一题,它的魅力在于算法足够优秀的情况下,代码可以简化到非常简洁的程度. 原题如下 Gas Station There are N gas stat ...
- codeforces 876 C. Classroom Watch
http://codeforces.com/contest/876/problem/C C. Classroom Watch time limit per test 1 second memory l ...
- 自己封装的ASP.NET的MYSQL的数据库操作类
/** * 作者:牛腩 * 创建时间:2010年3月7日17时35分 * 类说明:对MYSQL数据库的操作类 */ using System; using System.Data; using MyS ...
- javascript中各类的prototype属性
prototype 作用:获取调用对象的对象原型引用 应用:可以为某对象原型添加方法 例: function getMax() { var max = this[0]; for(var x=0; x& ...