目前的项目是一款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手游中的战斗系统的更多相关文章

  1. HMS Core Discovery第13期回顾长文——构建手游中的真实世界

    HMS Core Discovery第13期直播<来吧!构建手游中的真实世界>,已于2月24日圆满结束,本期直播我们同三七游戏的专家一同向小伙伴们分享了HMS Core图形引擎服务(Sce ...

  2. 揭秘重度MMORPG手游后台性能优化方案

    本文节选自<2018腾讯移动游戏技术评审标准与实践案例>手册,由腾讯互娱工程师王杰分享<仙剑奇侠传online>项目中游戏后台的优化经验,深度解析寻路算法.视野管理.内存优化. ...

  3. UWA发布 | 2017 Unity手游体检蓝皮书 — ARPG篇

    报告目录: 一.ARPG手游总体性能开销分析 二.ARPG手游CPU模块性能开销分析 三.ARPG手游内存模块性能开销分析 四.ARPG手游资源管理分析 五.UWA对于ARPG手游研发团队的建议 一. ...

  4. Unity手游引擎安全解析及实践

    近日,由Unity主办的"Unity技术开放日"在广州成功举办,网易移动安全技术专家卓辉作为特邀嘉宾同现场400名游戏开发者分享了网易在手游安全所积累的经验.当下,很多手游背后都存 ...

  5. Cocos2d-x 手游聊天系统需求分析

    手游聊天系统需求分析 转载请注明:IT_xiao小巫 移动开发狂热者群:299402133 策划需求图 參考系统:刀塔传奇 点击这个.然后弹出以下的对话框 游戏类型:卡牌 分析:刀塔传奇聊天系统分为3 ...

  6. 为测试赋能,腾讯WeTest探索手游AI自动化测试之路

    作者:周大军/孙大伟, 腾讯后台开发 高级工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处.  WeTest导读 做好自动化测试从来不件容易的事情,更何况是手游的自动化测试,相比传 ...

  7. 年度游戏圈2018白皮书解析手游折扣app哪个好及靠谱程度分析

    2018年,随着全国暂停游戏版本的审核和发布<综合防控儿童青少年近视实施方案>(控制新的在线游戏数量),游戏行业受到的影响不小. 在游戏产业中,游戏行业2018年的收入同比增长5.2%,远 ...

  8. 从《乱世王者》看腾讯SLG手游如何搭建完整安全服务

    WeTest 导读 <乱世王者>是由腾讯旗下天美工作室群自主研发的一款战争策略手游,在经历了2015年-2017年的SLG品类手游的爆发之势下,于2017年11月21日正式公测. < ...

  9. 开源工具 | 手游自动化框架GAutomator,新增iOS系统和UE4引擎支

    WeTest 导读 GAutomator是腾讯WeTest推出的手游自动化测试框架,已用于腾讯多个手游项目组的自动化测试. 1.GAutomator诞生背后 研究过手游自动化测试的同学都知道,虽然市场 ...

随机推荐

  1. Python练习,网络小爬虫(初级)

    最近还在看Python版的rcnn代码,附带练习Python编程写一个小的网络爬虫程序. 抓取网页的过程其实和读者平时使用IE浏览器浏览网页的道理是一样的.比如说你在浏览器的地址栏中输入    www ...

  2. Nop源码分析二

    上文我们已经通过该行代码:var typeFinder = containerManager.Resolve<ITypeFinder>(); 从注入容器中获取到了typeFinder实例. ...

  3. Web Word和Excel

    暂时收集点资料备用 Excel http://www.cnblogs.com/downmoon/archive/2011/05/30/2063258.html http://www.cnblogs.c ...

  4. 无法打开键: UNKNOWN\Components\BE1FB738077DBE490AF18C3B9B1A1EE8\E5F5286B58B542741A00A0A9AA420B27

    MSI (s) (D8:38) [07:38:20:634]: 产品: Microsoft SQL Server VSS 编写器 -- 错误 1402.无法打开键: UNKNOWN\Component ...

  5. PostgreSQL入门

    这篇文章主要介绍我在最近工作中接触到的数据库PostgreSQL,做个入门记录,以便自己日后回顾. 1.下载安装,安装配置过程可以参考http://blog.chinaunix.net/uid-354 ...

  6. Swift3.0都有哪些变化

    从写第一篇Swift文章的时候到现在Swift已经从1.2发展到了今天的3.0,这期间由于Swift目前还在发展阶段并不能向下兼容,因此第一篇文章中的部分代码在当前的Xcode环境中已经无法运行.在W ...

  7. session详解

    什么是Session 对Tomcat而言,Session是一块在服务器开辟的内存空间,其存储结构为ConcurrentHashMap: Session的目的 Http协议是一种无状态协议,即每次服务端 ...

  8. redis和memcached

    Redis 1.主从配置(主从复制不会阻塞master.) 1)bind  192.168.1.2(请修改成本机的IP地址,要不然,客户端无法进行访问) 2)slaveof 192.168.1.1 6 ...

  9. java Http编程小结

    1:什么是HTTP? 超文本传输协议(HyperText Transfer Protocol -- HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议. HTTP在客户端和服务器之间以reque ...

  10. Nginx与Lua利用fpm打成rpm包

    1.下载相关软件 需要软件有:Nginx,LuaJIT,ngx_devel_kit,ngx_lua等安装文件 安装Lua或者LuaJIT都是可以的,但是出于效率的考虑,推荐安装LuaJITshell& ...