mmorpg手游中的战斗系统
目前的项目是一款mmorpg手游, 非常不幸的是,当前战斗系统的实现非常脆弱, 也毫无技巧可言。具体存在如下问题:
1、战斗层逻辑与自动战斗AI逻辑混在一起, 互相纠缠。
2、战斗层自身逻辑混乱不堪, 接口功能重复,且逻辑不一致。
3、技能释放流程混乱,经常造成一些非常难定位的bug。
4、主角自身的技能处理没有与其他角色的技能处理和谐统一。
5、角色状态的处理与当前的行为没有很好的统一。
6、整个战斗系统的实现,没有基于一个抽象好的模型,因此模块间的逻辑性和功能内聚不强, 毫无美感可言。
7、自动战斗AI、跟随战斗AI、副本AI、任务AI纠缠在一起, 而没有一个明确的分层概念。
基于以上的问题, 我将思考一下问题:
1、游戏中战斗系统的抽象模型与实现。
2、游戏中的AI。
3、大规模软件开发的架构设计与模块间的协作。
[关于大规模软件开发的架构设计与模块间的协作的思考]
1、keep it simple。 这个无论做什么,其实都可以作为一个基本原则。 人作为一个有限智力和精力的个体, 只能处理有限复杂度的问题, 并且通常是越简单越不容易出错。对于软件开发, 要实施保持简单的原则, 一个很重要的技巧是, 让软件由不同的高度内聚的模块组成, 而模块再由高度内聚的组件组成, 每一个组件都只在有限的工作环境下工作,这样组件开发人员只用在有限、相对简单的逻辑下工作。
例如,游戏的AI系统我是这样设计的。整个AI系统由两部分组成:AI控制器和AI操作指令两部分组成。
AI控制器,负责AI系统的开关,运行,AI操作指令的产生和销毁。
AI操作指令, 根据不同的需求, 可以定制不同的操作指令, 原则上指令之间相互独立, 互不影响。 当然也可以定义一些基本的元指令, 在此基础上定义一些复合指令。但是有一个原则, 即在任意时刻只有一条指令在执行, 并自己负责判断是否完成。
这样的AI设计, 使得系统非常简单稳健, 并且非常容易扩展满足新的需求。 开发人员只需要根据需求编写新的指令即可。
[程序员的自我修养]
1、建模。
2、专业领域的知识。
3、在现有模型下, 运用专业领域的知识让整个系统稳健高效的运行。
[个人感想]
1、程序员一定要节制。具体来讲就是:
模块对外的接口一定要简洁。模块调用外部的接口要一致统一。也即整个模型应该是收敛的, 易于控制的。 而不会因为贪图方便或者其他原因导致的无节制行为, 造成逻辑重复, 调用混乱而最终让模块走向不可控制的深渊。
[代码分析]
if self._curOperation then
if not self._curOperation:isDone() then
self._curOperation:step()
end if self._curOperation:isDone() then
self:onOperationDone()
end
end
local op = self._curOperation
if op then
if not op:isDone() then
op:step()
end if op:isDone() then
self:onOperationDone()
end
end
[逻辑疑难问题]
1、游戏逻辑中总是存在把表现和数据放在一起处理的接口, 由于表现上的处理, 会导致数据不正确。
例:角色身上的buff特效表现和buff状态数据。
[技术疑难问题]
1、人物头顶的UI排序。
2、日志系统。
由于战斗系统的复杂性, 经常需要在线查看当前游戏的数据信息。 所以如果在线实时调出自己关心的数据信息非常重要。
mmorpg手游中的战斗系统的更多相关文章
- HMS Core Discovery第13期回顾长文——构建手游中的真实世界
HMS Core Discovery第13期直播<来吧!构建手游中的真实世界>,已于2月24日圆满结束,本期直播我们同三七游戏的专家一同向小伙伴们分享了HMS Core图形引擎服务(Sce ...
- 揭秘重度MMORPG手游后台性能优化方案
本文节选自<2018腾讯移动游戏技术评审标准与实践案例>手册,由腾讯互娱工程师王杰分享<仙剑奇侠传online>项目中游戏后台的优化经验,深度解析寻路算法.视野管理.内存优化. ...
- UWA发布 | 2017 Unity手游体检蓝皮书 — ARPG篇
报告目录: 一.ARPG手游总体性能开销分析 二.ARPG手游CPU模块性能开销分析 三.ARPG手游内存模块性能开销分析 四.ARPG手游资源管理分析 五.UWA对于ARPG手游研发团队的建议 一. ...
- Unity手游引擎安全解析及实践
近日,由Unity主办的"Unity技术开放日"在广州成功举办,网易移动安全技术专家卓辉作为特邀嘉宾同现场400名游戏开发者分享了网易在手游安全所积累的经验.当下,很多手游背后都存 ...
- Cocos2d-x 手游聊天系统需求分析
手游聊天系统需求分析 转载请注明:IT_xiao小巫 移动开发狂热者群:299402133 策划需求图 參考系统:刀塔传奇 点击这个.然后弹出以下的对话框 游戏类型:卡牌 分析:刀塔传奇聊天系统分为3 ...
- 为测试赋能,腾讯WeTest探索手游AI自动化测试之路
作者:周大军/孙大伟, 腾讯后台开发 高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest导读 做好自动化测试从来不件容易的事情,更何况是手游的自动化测试,相比传 ...
- 年度游戏圈2018白皮书解析手游折扣app哪个好及靠谱程度分析
2018年,随着全国暂停游戏版本的审核和发布<综合防控儿童青少年近视实施方案>(控制新的在线游戏数量),游戏行业受到的影响不小. 在游戏产业中,游戏行业2018年的收入同比增长5.2%,远 ...
- 从《乱世王者》看腾讯SLG手游如何搭建完整安全服务
WeTest 导读 <乱世王者>是由腾讯旗下天美工作室群自主研发的一款战争策略手游,在经历了2015年-2017年的SLG品类手游的爆发之势下,于2017年11月21日正式公测. < ...
- 开源工具 | 手游自动化框架GAutomator,新增iOS系统和UE4引擎支
WeTest 导读 GAutomator是腾讯WeTest推出的手游自动化测试框架,已用于腾讯多个手游项目组的自动化测试. 1.GAutomator诞生背后 研究过手游自动化测试的同学都知道,虽然市场 ...
随机推荐
- java 数组详解
from : http://blog.csdn.net/jionjionyoushen/article/details/6223006 1.关于数组的特点 1)在Java中,无论使用数组或集合,都有边 ...
- GridView的高度自适应
接着上面一篇文章. 当GridView不知道parent高度的时候,也就是MeasureSpec是UNSPECIFIED,这个时候,GridView高度为第一个child的高度,并显示滚动条. mIt ...
- Android studio 中的配置编译错误总结
1.编译Andorid 工程的时候,有时候出现gradle 报下面的错误. Error:(1, 0) Cause: com/android/build/gradle/LibraryPlugin : U ...
- Google-glog 日志库使用手记
作者:高张远瞩(HiLoveS) 博客:http://www.cnblogs.com/hiloves/ 转载请保留该信息 Google Glog 是一个C++语言的应用级日志记录框架,提供了 C++ ...
- Qt qml pageview 左右滑动分页组件
[先看效果] [下载]http://download.csdn.net/detail/surfsky/8516949 [调用] 分页视图 左右分页滑动列表组件 示例 PageView{ id: pv ...
- php常用array函数
http://www.w3school.com.cn/php/php_ref_array.asp 1.array_change_key_case() 把数组中所有键更改为小写或大写2.array_ch ...
- 161227、js显示对象所有属性和方法的函数
要想看到实际效果,可以先声明一些属性跟方法,否则是看不到,仔细往下看有例子的. function ShowObjProperty(Obj) { var PropertyList=''; var Pro ...
- exp_tools
#pwntools # github https://github.com/Gallopsled/pwntools 在线帮助文档 https://docs.pwntools.com/en/stable ...
- greenDAO3 基本使用
greenDAO3基本使用 greenDAO3开始使用注解的方式定义实体类(entity),并且是通过安装gradle插件来生成代码.之前的版本则是通过建立一个独立的Java-lib工程来存放生成的文 ...
- asp.net timer viewstate
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...