基于Photon实现的网络游戏中AI的设计关键点

基于PHOTON网络游戏AI中的设计思路

首先要搞清楚photon的网络实现框架,要不然在网络多客户端设计上就容易混乱,有时还不太好调试bug。
photon中平等的客户端中有一个是主客户端,masterclient,他要兼任服务器的角色。那又要将游戏中的服务端、普通客户端的逻辑剥离清楚,比如服务端生成整个场景的AI,物体等,其他底层的数据共享传输事件更新我们可以忽略掉,因为已经封装在里面,知道怎么使用这种共享更新方法就行,这里有一个比较不好剥离的关系就是,masterclient这个角色既是客户端又是服务器端。把另外一个关系拿过来一起比对学习下吧,就是场景中的多个AI,因为手控的角色好理解 我就不多说,在运行逻辑时如何剥离理解透彻,非常关键,弄不清楚没法继续下去。masterclient 要判断是不否担任服务器角色,不要担心之前担任服务器角色的客户端已经离线退出,masterclient会自动切换,这个我们不需要具体知道是切换到哪个客户端,知道masterclient会一直存在就好了。比如AI身上有很多逻辑处理脚本,有一些智能运行在服务器端,然后位置、动画其他的运用更新方法来实现同步,不要让这种逻辑脚本在每个客户端都运行,会相互牵扯,位置等都会比较怪异,因为既有更新又有本地的执行变化。photonview判断是自己的再操作,这是每次控制的对象非常清晰,不能操作了其他对象。AI同样如此。有需要继续深入探讨的可以留言,相互交流。
下面是一个AI树前段一个条件判断,如果是服务器才运行ai逻辑,什么时候攻击、逃跑、释放技能。。等
using Photon.Pun.Demo.PunBasics;
using BehaviorDesigner.Runtime.Tasks;
using Photon.Pun;

public class isMasterClient : Conditional
{
public override void OnStart()
{
base.OnStart();
}
// Use this for initialization
public override TaskStatus OnUpdate()
{
if (PhotonNetwork.IsMasterClient)
{
return TaskStatus.Success;
}
else
{
return TaskStatus.Failure;
}
}
public override void OnReset()
{
base.OnReset();
}
}
AI树

发布了49 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_23158477/article/details/103681321
今日推荐