浅谈客户端主导的技能系统
传统的网络游戏技能系统以服务器主导的居多,当今开发的网络游戏中,尤其以强调打击感的ARPG类的游戏中,出现了越来越多的以客户端主导的技能系统。简单的区分一下,以征途免费为例,很多远程的法术类技能,在触发之初就已经由服务器计算好了对目标的伤害,看到魔法效果的时候真实的伤害其实已经造成了;而如龙之谷中的很多技能可以通过移动或其他操作而避免伤害,这类型的游戏确切的说这类型的技能是如何实现的呢?比如释放一个火球魔法,当火球飞向目标时,客户端通过跟踪火球的位置与目标的位置进行比较从而进行伤害检测,如果目标在火球经过的路径上,那么击中目标,这时才会进行伤害计算。
魔法的释放,客户端的应用层要释放魔法时,通知游戏引擎,引擎将魔法拆分成若干个子魔法,然后由客户端发消息通知服务器释放这几个子魔法,服务器收到消息后群发客户端的9屏消息,在释放者9屏的范围内播放魔法效果。整个过程如下图:
技能系统的封装,上层更多关注的是数值,中层关注的是表现,子魔法才是真正的魔法,产生魔法的伤害并进行伤害检测,最终魔法效果的表现效果等都是由底层的动作、特效造成的。这里要说明一下,魔法可以生成不同的子魔法,一个子魔法可以拥有若干特效,从而达到不同的效果。不同的魔法有不同的生成子魔法的方法,以丰富魔法的种类。如图:
技能系统的使用,注册技能事件,通过client对事件进行监听来触发技能。