游戏思考07:MMORPG AI系统设计与实现(简单理解,未完待续,12/15,后面我会根据游戏编程精粹实现有限状态机)

【第一章】MMORPG AI基础

1)MMORPG AI简介

  • 简介
游戏内NPC能够通过环境或者事件的变化进行逻辑判断,从而与玩家进行特定的行为交互,主要包括以下三个阶段

在这里插入图片描述

  • MMORPG AI架构

在这里插入图片描述

  • AI主要实现的方式
    1)朴素的AI-HardCode
    2)有限状态机
    3)行为树

2)朴素的AI-Hard Code(简单直接、效率很高)

情况展示
  • 一个简单例子(if-else可以做)
    在这里插入图片描述+ 更复杂的情况
    在这里插入图片描述

在这里插入图片描述

面临的问题

几乎需要为每一种NPC单独实现一份AI,一款游戏有几百种NPC,工作量巨大,所以难以扩展和维护

3)有限状态机

  • 概念
    状态机可归纳为3个要素,即现态、事件、动作
    现态:指当前所处的状态
    事件:当一个事件发生,将会触发一个动作,或者执行一次状态的迁移(发生事件就会转变状态)
    动作:条件满足后执行的动作

  • 状态迁移图举例
    在这里插入图片描述

  • 补充:
    每个状态至少有三个接口函数

Enter(): 进入状态的时候做一些初始化的工作,做一些特殊化的事情
Exit() :退出状态需要执行的一些事情
Handle() :  接收事件,也就是事件处理函数,在这个函数里面我们可能会触发一个动作,或可能导致一个状态迁移
  • 状态迁移表
    在这里插入图片描述
  • 前面的例子转换成状态迁移表

在这里插入图片描述

  • 接口实现原则(子类实现基类的虚函数就行)
    在这里插入图片描述
  • 缺点
    如果要新加一个状态,需要考虑这个状态其他所有状态的一个关系,就是哪些状态可以切换到我,我也可以切换到哪些状态去,这个工作量特别巨大。(所以说每加一个状态工作量非常巨大,他是一个N对一的关系

在这里插入图片描述
总结

1)状态流转图过于复杂,难以维护
2)新加状态需要考虑与已有状态间的关系,难以扩展
3)策划不能充分的参与其中,只能由程序来完成

4)行为树

  • 概念
    1)节点分为:控制节点条件节点行为节点
    2)条件节点、行为节点执行都有一个结果(BOOL值:成功TRUE、失败FALSE、运行中RUNINNG)
    3)控制节点根据返回结果执行下一步动作

在这里插入图片描述

  • 行为树控制节点分类

在这里插入图片描述
选择节点:找到一个节点返回结果为TRUE就返回了
序列节点:将所有子结点依次执行,是一个的关系,碰到第一个条件判断为的就返回(就是碰到假的就会返回false)

  • 补充
    1)一般会在行为节点前面放条件节点,满足这个条件才会去执行

  • 野猪行为树例子

在这里插入图片描述
1)这里的根节点下面的节点是条件节点和条件,满足条件就走这个条件节点
2)条件节点一般都是配合控制节点

  • 小鹿行为树

在这里插入图片描述

  • 真实游戏行为树的样子

在这里插入图片描述

  • 行为树优缺点(效率是最低的,树的分支非常庞大)
    在这里插入图片描述
  • 行为树优化(出生、死亡都是一样大,但是战斗不一样)
    把战斗的行为树放到战斗状态机下面,也就是将战斗部分的行为树裁剪出来,更快找到并执行

【第二章】MMORPG AI寻路

1)直线寻路

2)贪心寻路

3)A*寻路

4)导航网格寻路

5)寻路总结

【第三章】有限状态实现(未完待续)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity是一款强大的游戏开发引擎,也被广泛用于开发大型多人在线角色扮演游戏MMORPG)。在MMORPG开发,网络架构设计实现源码是非常重要的核心技术。首先,Unity客户端网络架构设计需要考虑到多个玩家之间的实时通讯和同步,以及与服务器的数据交换。 在网络架构设计上,首先需要考虑到如何处理玩家之间的实时通讯和同步。这部分源码需要实现基于UDP或TCP的网络通讯,同时考虑到玩家位置、动作、状态等数据的同步,并采用合适的压缩和插值算法来保证玩家之间的数据同步和流畅性。 其次,与服务器的数据交换也是Unity客户端网络架构设计的重要一环。这部分源码需要实现与服务器的通讯协议,包括登录认证、游戏数据同步、战斗事件处理等。同时需要考虑到网络延迟和丢包等问题,采用合适的重试机制和数据校验算法来保证通讯的稳定性和可靠性。 在实现上,可以采用C#等语言编写网络架构设计的源码。由于Unity本身内置了一些网络通讯的API和组件,开发者可以基于这些API和组件进行二次开发,加快开发速度和降低成本。同时,还可以借助一些开源的网络库和框架来提高网络通讯的效率和性能。 总之,Unity客户端网络架构设计实现源码是MMORPG开发的重要核心技术,需要综合考虑玩家之间的实时通讯和同步,以及与服务器的数据交换。通过合理的网络架构设计和源码实现,可以提高游戏的网络性能和稳定性,带来更好的游戏体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值