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诞生背后 研究过手游自动化测试的同学都知道,虽然市场 ...
随机推荐
- NIO 之 缓冲区(Buffer)
缓存区是java nio的核心部分,所以必须熟悉它的一些操作. 实现类型: nio中实现了除布尔型(boolean)外的其他7种基本数据类型的buffer(ByteBuffer,CharBuffer, ...
- java中log4j用法详细讲解和一些小总结
0.Log4j的用法详解 首先,在项目中的classes 中新建立一个log4j.properties文件即可: 在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义.定义步骤就是对 ...
- Jenkins Slave 通过JNLP 的方式 访问Master IP 总是127.0.0.1
解决办法,重启机器 可能是我以前用的jenkins url 是127.0.0.1 然后是缓存什么没有释放掉所致 <jnlp codebase="http://183.62.104.48 ...
- 电脑安装Android4.0虚拟机的做法
在开始教程之前,先给大家展示一下成功运行Android 4.0虚拟机的界面,经过笔者测试,体验很流畅,喜欢DIY和对开发感兴趣的朋友们可以猛击下一页,继续浏览教程. 准备工作 在体验前我们首先要下载J ...
- NCreport报表控件教程:设计页眉和页脚
一.设计页眉 一般来说页眉部分一般是用于包含标题的内容, 首先我们会添加列标签到页眉部分,标签都是简单的文本,标签项一般是用于在报表上显示一些描述信息,标签都是静态项,所以它们的值不会有变化. 添加标 ...
- Redmine插件
1.redmine_customize_core_fields可以对自带字段进行设置,看起来很不错,2016年6月23日上线,安装失败, 看来测试不完整.redmine_issue_field_vis ...
- android 补间动画和Animation
介绍: 补间动画是一种设定动画开始状态.结束状态,其中间的变化由系统计算补充.这也是他叫做补间动画的原因. 补间动画由Animation类来实现具体效果,包括平移(TranslateAnimation ...
- Topcoder SRM 683 Div2 B
贪心的题,从左向右推过去即可 #include <vector> #include <list> #include <map> #include <set&g ...
- [JAVA] java class 基本定义 Note
java class 基本定义 Note 1 package abeen.note; 2 import java.util.*; 3 4 5 /* 6 java calss 基本 7 */ 8 pub ...
- js中文乱码怎么解决【转】
①.js 文件中文显示乱码Javascript文件XX.js编辑保存时有一种编码方案(如GBK),当打开文件的时候所用的编码(如UTF-8)和保存时的编码方案不一致时,则会出现中文显示乱码.解决方案: ...