从英雄联盟谈手游技能系统
2016-03-16 16:23
218 查看
前言:
英雄联盟这个游戏玩了很久,记得那是4年前,那时候从dota转到lol各种不适应,后来也不知为什么就突然喜欢上这个游戏了,喜欢躲在草丛里的盖伦了,哈哈…
近来,组里研发的一款塔防卡牌游戏,战斗单调乏味,所以我想英雄要是只有普通攻击,这还算啥卡牌?玩家花钱拿卡牌的意义是什么?所以…向我们策划提了建议,然后需求很快就下来了,我操刀搭建框架,写好几个技能测试,然后由其他程序员来接手这份工作。
过程:
要设计一个系统,如果存在现有的相同例子来参考的话,那么设计难度也会降低了很多。我参考的对象就是英雄联盟这个游戏,作为风靡全球的竞技游戏,技能也算是这个游戏的重点体验之一了或者说最重要的体验了。如果以它来作为参考的话,我想我们这个游戏将会少走很多弯路,而且我作为这个游戏的老玩家相信对这些技能的熟悉程度肯定是不低的。
所以我做了如下工作:
技能分类
技能表现和效果
数据驱动
编码测试
技能分类
这块工作我没有一个个技能的去看,我是先凭自己的直觉将技能的类型写下来,然后在一个个类型去跟英雄们对比。
射出类技能,比如远程英雄普通攻击,近战英雄攻击(飞行速度光速^_^),泰隆的w,ez的q等等,太多了。
召唤类技能,龙女的w,巨魔的e…等等
移动类技能,泰隆e,ez的e,亚索e…等等
强化类技能,泰隆Q,亚索Q,大嘴w…等等
改变地貌,皇子r,
(我觉得我需要一个英雄列表好好回忆一下,那些英雄技能有没有那种不符合以上类别的)
技能表现和效果
技能状态
通过回忆我玩英雄联盟的经历,我觉得英雄技能是有状态的,像前段时间新出的时间刺客的时光交错技能,它并不是一开始就会在玩家选定的区域内爆炸的。在不同的状态中,技能的美术表现、效果并不是总是一样的。
技能从属关系
我觉得技能是作为一个战斗元素存在的,它不依附于英雄,如果将战斗系统划分层级,我认为它的层级是与英雄是同一层的,不同的是它的触发者是英雄…那么就需要一个heroSkillManager来管理这些技能。
技能效果
说起技能效果,就不得不说buff(不是强化类技能),我没有将buff列入技能类别里,原因之一是我对buff的定位,它应该是从属于战斗元素(英雄,地貌)的。换一个程序化的说话,英雄类的组成模块之一是buff。
如果从狭隘的角度去看技能效果,那么看到的也就是伤害这一种,如果从更大的视角去看技能效果的话那么多了增益类、状态类、克制类效果,看到的也差不多是整个技能效果的全貌…有差不多三个字的原因之一就是那些移动类技能,它不属于伤害类、增益类、状态类,但技能又不属于英雄,那么技能如果又需要指挥英雄进行移动或进行其他操作呢…所以,我将移动类也归类为buff,而buff属于英雄,buff可以对英雄(地貌)属性进行影响,生命周期随着英雄存在。
数据驱动
第一个版本我尝试着想要数据驱动的方式实现技能,但是后面我发现,技能没法通过改改参数的方式弄出来,因为技能是多种多样的,而且是分状态的,如果硬是要数据驱动的话,这些复杂度将抛给撰写数据的人身上了,实现这套系统的难度也很高。后面我删删改改,弄出了几个适合进行数据驱动部分:发射方式、碰撞类型、buff。如果游戏是用脚本实现的话,那么将这些数据写在脚本中也是可以的。
编码测试
编码总是容易的,因为方向已经有了,顺着设计的方式下来,实现这套系统并不难。
这里就略过了。
英雄联盟这个游戏玩了很久,记得那是4年前,那时候从dota转到lol各种不适应,后来也不知为什么就突然喜欢上这个游戏了,喜欢躲在草丛里的盖伦了,哈哈…
近来,组里研发的一款塔防卡牌游戏,战斗单调乏味,所以我想英雄要是只有普通攻击,这还算啥卡牌?玩家花钱拿卡牌的意义是什么?所以…向我们策划提了建议,然后需求很快就下来了,我操刀搭建框架,写好几个技能测试,然后由其他程序员来接手这份工作。
过程:
要设计一个系统,如果存在现有的相同例子来参考的话,那么设计难度也会降低了很多。我参考的对象就是英雄联盟这个游戏,作为风靡全球的竞技游戏,技能也算是这个游戏的重点体验之一了或者说最重要的体验了。如果以它来作为参考的话,我想我们这个游戏将会少走很多弯路,而且我作为这个游戏的老玩家相信对这些技能的熟悉程度肯定是不低的。
所以我做了如下工作:
技能分类
技能表现和效果
数据驱动
编码测试
技能分类
这块工作我没有一个个技能的去看,我是先凭自己的直觉将技能的类型写下来,然后在一个个类型去跟英雄们对比。
射出类技能,比如远程英雄普通攻击,近战英雄攻击(飞行速度光速^_^),泰隆的w,ez的q等等,太多了。
召唤类技能,龙女的w,巨魔的e…等等
移动类技能,泰隆e,ez的e,亚索e…等等
强化类技能,泰隆Q,亚索Q,大嘴w…等等
改变地貌,皇子r,
(我觉得我需要一个英雄列表好好回忆一下,那些英雄技能有没有那种不符合以上类别的)
技能表现和效果
技能状态
通过回忆我玩英雄联盟的经历,我觉得英雄技能是有状态的,像前段时间新出的时间刺客的时光交错技能,它并不是一开始就会在玩家选定的区域内爆炸的。在不同的状态中,技能的美术表现、效果并不是总是一样的。
技能从属关系
我觉得技能是作为一个战斗元素存在的,它不依附于英雄,如果将战斗系统划分层级,我认为它的层级是与英雄是同一层的,不同的是它的触发者是英雄…那么就需要一个heroSkillManager来管理这些技能。
技能效果
说起技能效果,就不得不说buff(不是强化类技能),我没有将buff列入技能类别里,原因之一是我对buff的定位,它应该是从属于战斗元素(英雄,地貌)的。换一个程序化的说话,英雄类的组成模块之一是buff。
如果从狭隘的角度去看技能效果,那么看到的也就是伤害这一种,如果从更大的视角去看技能效果的话那么多了增益类、状态类、克制类效果,看到的也差不多是整个技能效果的全貌…有差不多三个字的原因之一就是那些移动类技能,它不属于伤害类、增益类、状态类,但技能又不属于英雄,那么技能如果又需要指挥英雄进行移动或进行其他操作呢…所以,我将移动类也归类为buff,而buff属于英雄,buff可以对英雄(地貌)属性进行影响,生命周期随着英雄存在。
数据驱动
第一个版本我尝试着想要数据驱动的方式实现技能,但是后面我发现,技能没法通过改改参数的方式弄出来,因为技能是多种多样的,而且是分状态的,如果硬是要数据驱动的话,这些复杂度将抛给撰写数据的人身上了,实现这套系统的难度也很高。后面我删删改改,弄出了几个适合进行数据驱动部分:发射方式、碰撞类型、buff。如果游戏是用脚本实现的话,那么将这些数据写在脚本中也是可以的。
编码测试
编码总是容易的,因为方向已经有了,顺着设计的方式下来,实现这套系统并不难。
这里就略过了。
相关文章推荐
- 欧拉项目第16题 Power digit sum
- xUtils3.0使用介绍:数据库模块
- Robotium导入被测源码遇到问题 had used a different Landroid/support/v4/view/ViewPager
- C# 性能优化
- 创新驱动的技术与管理
- 动画四大宝-平移、缩放、旋转、透明度
- 在一个字符串的相同指定长度间隔处插入指定字符串
- display: inline-block间隙问题
- 微信分享|如何在云中构建大规模分布式系统
- poj 1014 Dividing
- Tomcat 内存配置
- 二、软件测试的流程
- Redis for .NET 系列之实现分页需求
- redis两种持久化机制
- HDU1323_Perfection【水题】
- TCP/UDP网络编程
- Java.math.BigDecimal.movePointRight()方法实例
- 编程修养
- 浅谈Java中的hashcode方法
- VMware虚拟机文件夹中各文件作用详解