MOBA游戏草丛系统的个人思路
2015-09-10 00:46
441 查看
英雄联盟,作为一款火爆的MOBA类游戏,其一大特色就在于玩家可以——“躲草”。用一句话来概括躲草,那就是:当玩家控制的英雄躲入地图中的草丛,则对敌形成 隐身效果,达到埋伏、偷袭的效果。笔者有幸参与了一款基于Unity引擎的MOBA游戏的研发,并负责躲草系统的设计与实现。下面简单介绍一下个人设计思路,欢迎大家前来交流!
首先,作为一款长连接网络游戏,几乎任何功能都是由服务端和客户端两部分来完成的,至于草丛系统,有两种设计思路:
1.数据及主要逻辑部分放在客户端,服务端仅做简单调整。这种写法的好处是减轻服务端运算及网路通讯压力,坏处是有可能因为外挂而在本地窥探到隐藏的敌人,而让敌方无法察觉。
2.数据及主要逻辑部分放在服务端,客户端仅需依靠若干信号量(如是否在草中、是否隐身)来控制游戏物体的显隐。这种写法的好处是提高游戏的安全性,坏处是增大了服务器的运算和通信负担。
笔者综合了服务器性能与开发效率的考量,使用了第一种方案。
接着,理清要实现的功能模块:
1.草地区域编辑模块:
设计一种能描述草地不规则形状的直观的编辑器,利用unity3d引擎的场景来保存数据,每一块草地都要有自己的标识ID。
2.隐身效果触发模块:
隐身效果要分半透明和完全透明两种,只要在草中,至少要半透明 (友方眼中一定是半透明),若满足隐身条件则全透明(敌方眼中);
敌方范围技能打我方躲草英雄,我方掉血但不暴露,我方躲草打敌方,则我方暴露,并给敌方 三秒钟视野;
自带隐身效果的英雄,走出草地不得解除隐身;
当我方处于隐身状态,在敌方眼中,血条特效小地图标记等等都要隐藏掉;
当敌我双方共同位于一块草 地中,双方都不能因为躲草而处于隐身。
3.AI识别模块:
我英雄一旦入草隐身,敌方AI必须忽视掉我方英雄,这个操作在服务器端完成。
草地地形编辑展示:
上图中,每一块草地的进入判定,都是一个二级查找:黄框圈定一块草地的大范围、若干白框具体拼接出一块草地的形状。每一组白框,他们的数量是可以随意增加的,使用越多的白框来描述一块草地的范围,其效果越接近于真实。
首先,作为一款长连接网络游戏,几乎任何功能都是由服务端和客户端两部分来完成的,至于草丛系统,有两种设计思路:
1.数据及主要逻辑部分放在客户端,服务端仅做简单调整。这种写法的好处是减轻服务端运算及网路通讯压力,坏处是有可能因为外挂而在本地窥探到隐藏的敌人,而让敌方无法察觉。
2.数据及主要逻辑部分放在服务端,客户端仅需依靠若干信号量(如是否在草中、是否隐身)来控制游戏物体的显隐。这种写法的好处是提高游戏的安全性,坏处是增大了服务器的运算和通信负担。
笔者综合了服务器性能与开发效率的考量,使用了第一种方案。
接着,理清要实现的功能模块:
1.草地区域编辑模块:
设计一种能描述草地不规则形状的直观的编辑器,利用unity3d引擎的场景来保存数据,每一块草地都要有自己的标识ID。
2.隐身效果触发模块:
隐身效果要分半透明和完全透明两种,只要在草中,至少要半透明 (友方眼中一定是半透明),若满足隐身条件则全透明(敌方眼中);
敌方范围技能打我方躲草英雄,我方掉血但不暴露,我方躲草打敌方,则我方暴露,并给敌方 三秒钟视野;
自带隐身效果的英雄,走出草地不得解除隐身;
当我方处于隐身状态,在敌方眼中,血条特效小地图标记等等都要隐藏掉;
当敌我双方共同位于一块草 地中,双方都不能因为躲草而处于隐身。
3.AI识别模块:
我英雄一旦入草隐身,敌方AI必须忽视掉我方英雄,这个操作在服务器端完成。
草地地形编辑展示:
上图中,每一块草地的进入判定,都是一个二级查找:黄框圈定一块草地的大范围、若干白框具体拼接出一块草地的形状。每一组白框,他们的数量是可以随意增加的,使用越多的白框来描述一块草地的范围,其效果越接近于真实。
相关文章推荐
- java 断言
- ZOJ 3213 Beautiful Meadow(插头DP)
- 使用编译原理,把逻辑编排交给策划
- 广州实时公交查询系统调研
- AWS ECS 的auto scaling
- libevent使用点滴(3)关于定时器
- 【邂逅BUG】Namespace declaration statement has to be the very first statement in the script
- 在Windows 上配置 php和mongodb 数据库
- USACO 1.4 Arithmetic Progressions
- mapreduce任务中数据分布倾斜导致reduce负载不均衡的解决方案
- DontDestroyOnLoad带来的麻烦
- <转> Android LayoutInflater详解
- 黑马程序员 什么是内部类
- 9.9总结
- unity使用json的个人心得
- 如何在Android Studio上使用Github
- Arrays.asList(T... a)分析
- Quick-Cocos2d-x初学者游戏教程(四) --------------- 开发初探(添加背景,标题,动作,按钮)
- 1、shader简介、渲染管线
- Axure学习笔记