怪物的同步

这个和传统的mmorpy同步策略略有不同

怪物的同步

怪物的同步在传统的端游里,是完全由服务器的怪物AI系统触发,客户端只是纯粹的接受服务器下发的怪物状态数据。对于手机游戏里,由于手机上很难出现像PC里那样的外挂-[市场产品竞品假定前提],所以怪物的AI可以考虑放在客户端触发,同时减少怪物的状态同步。详细说明如下:

  • 怪物的随机移动不同步

在地图上,怪物都会有一个固定的位置。怪物没有进入战斗状态时,就会在这个固定位置的周围走来走去,随机的移动。这个随机的移动由每个客户端自己控制,这样怪物的随机移动,就不用消息广播进行同步了。

由于客户端自己控制怪物的随机走动,所以会出现不同客户端里,怪物位置不一样的问题。但由于怪物随机移动的范围较小-对[关卡策划设计布怪限制],所以这个问题不是很明显,在手机上是可以接受的[市场竞品是否可接受]。角色打怪时,是扇形的伤害范围,所以即使怪物坐标在不同的客户端有点不一致,打怪的效果也是可以接受的。

  • 怪物的行为同步

当有角色攻击被动怪物,或者进入主动怪物的视野范围内时,怪物的AI就被这个角色所在的客户端锁定了,同时怪物进入攻击状态。攻击的判断完全由锁定怪物AI的客户端进行处理,同时这个客户端会将这个怪物的行为上发到服务器,由服务器广播给周围的其他玩家。

怪物的AI锁定,使用抢占式,即谁最先发消息给服务器申请怪物的AI锁定,谁就获得了怪物的控制权,直到怪物死亡或脱离战斗状态。

怪物可以每进行一次攻击,客户端就发一个消息给服务器。这样做,消息还是有点多,特别是一群怪围着几个角色进行攻击时,消息广播还是有点多。所以可以将状态的概念向上扩大,只同步怪物在攻击哪个玩家,而不同步每一次的攻击,然后由每个客户端根据怪物固定的攻击速度各自去表现。这样一个怪去攻击一个玩家,就会只有一次消息广播了。

  • 精英怪和BOSS怪的AI

精英怪和BOSS怪由于数量较少,而且比较重要,所以不能由客户端来申请AI控制权,而是服务器根据某种策略来控制。所使用的策略可以考虑角色的伤害值、防御值、角色与BOSS的距离远近等,根据这些因素,服务器计算出BOSS怪当前最适合攻击的对象(比如血量最少的玩家,最脆弱的法师等),然后将AI控制权发给那个客户端,由那个客户端控制攻击行为,同时通过消息让服务器同步给其他玩家。-隐形同步队长-随机选举机制 –规则随机避免外

总结:怪物的同步方式的选择,就是要尽量减少消息的广播,同时让游戏效果在可接受的范围内。怪物AI的这个处理方式,实际上是同时省去了游戏服务器的怪物AI模块(端游一般是专门用的一个进程或者另外一台物理服务器来进行怪物AI的计算),从而简化了手机上多人游戏的开发难度,同时保证了较好的游戏体验。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Unity中,怪物状态机是用来控制怪物行为和状态转换的一种机制。根据引用\[1\]中的代码示例,可以看出在游戏中的角色类Character中,使用状态机来管理角色的状态。状态机的关键在于控制状态的切换,通过调用TransitionState方法来实现状态的切换。在游戏中,可以根据需要定义不同的状态,比如追逐玩家状态、停止追逐状态等。根据引用\[3\]中的描述,可以使用模糊状态机来实现怪物的追逐行为。当玩家离怪物比较近时,怪物进入追逐状态,当玩家离怪物比较远时,怪物停止追逐并返回出生点。具体实现可以根据游戏需求来设计和编写相应的代码逻辑。 #### 引用[.reference_title] - *1* [GameFrameWork框架(Unity3D)使用笔记(七)游戏主流程ProcedureMain——虽然游戏本来没有怪物但是为了使用...](https://blog.csdn.net/HowToPause/article/details/128048168)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* [在Unity中实现有限状态机](https://blog.csdn.net/nick1992111/article/details/129234818)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v4^insert_chatgpt"}} ] [.reference_item] - *3* [unity有限状态机和模糊状态机(怪物AI、自动寻路)](https://blog.csdn.net/lxy20011125/article/details/130318794)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值