怪物的同步

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

怪物的同步

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

  • 怪物的随机移动不同步

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

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

  • 怪物的行为同步

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

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

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

  • 精英怪和BOSS怪的AI

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

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

### 关于服务端游戏开发中的怪物状态机实现与设计 #### 设计原则 在服务端游戏中,怪物的状态机设计至关重要。通常情况下,为了使怪物行为更逼真并提高玩家的游戏体验,开发者会选择有限状态机(FSM)[^1]或者层次化有限状态机(HFSM)来管理怪物的行为模式。 对于简单的游戏来说,可以采用基本的FSM模型,在这种结构下每一个状态都代表了一种特定的动作或反应;而当涉及到更为复杂的情景时,则可能需要用到HFSM,它允许嵌套子状态从而形成树状结构,使得整个系统的灵活性大大增加[^4]。 #### 实现方法 一种常见的做法是在服务器上定义一个`State`类作为所有状态的基础接口,并为每种不同类型的行动编写具体的派生类,比如Idle(闲置), Patrol(巡逻),Attack(攻击)等。这些状态对象内部包含了处理输入、更新逻辑以及转换条件的方法: ```csharp public abstract class State { protected Monster monster; public virtual void Enter() {} public abstract void Execute(); public virtual void Exit() {} // 判断是否应该切换到其他状态 public bool ShouldTransitionTo<T>() where T : State, new(){ var nextState = new T(){monster=this.monster}; return nextState.CanEnter(); } } ``` 接着通过组合的方式构建出完整的AI框架,即让各个组件相互协作完成预期功能。例如感知系统负责收集环境信息并向当前所处状态传递数据以便做出相应调整[^1]。 另外值得注意的是,考虑到网络延迟等因素的影响,有时还需要引入预测机制以确保客户端显示效果的一致性和流畅度。这可以通过同步关键事件而非全部操作细节的方式来达成目的。 #### 案例分析 实际应用中,《魔兽世界》就是一个很好的例子。该游戏的服务端采用了复杂的AI体系用于控制NPC(非玩家角色),其中包括但不限于战斗策略的选择、路径规划等功能模块。通过对各种参数进行动态评估,实现了高度拟真的交互过程[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值