学习UNITY3D网络插件photon pun和PhotonServer<二>

本文为原创,转载请注明出处!


需要注意的事:


PhotonNetwork是静态的,可以全局调用



PHOTON里的纤程Fibers

-----------------------------------------------------------

 using ExitGames.Concurrency.Fibers;


PoolFiber :使用线程池来执行。

ThreadFiber :由专用线程支持的纤程来实现。

StubFiber:不使用支持线程或线程池执行。行动被添加到等待执行列表中。这些动作可以同步执行由调用线程。这个类不是线程安全的,不应该使用在生产代码中。类通常用于测试异步代码,使其完全同步和确定性。

GuiFiber:允许Windows Forms形式的交互

FormFiber :允许Windows Forms形式的交互

DispatcherFiber:适应不同调度的一种纤程


--------------------使用线程池来执行----适合并发大,执行时间短--------------------------


 public PoolFiber aaa = new PoolFiber();   

 aaa.Start();                                                                                                      //开始纤程活动

 aaa.ScheduleOnInterval(有规律的定时调用的方法, 1000, 1000);        //间隔1秒,重复调用

 aaa.Schedule(定时调用的方法,1000);                                                       //1秒以后调用

aaa.stop();                                                                                                        //结束纤程活动

aaa.Dispose();                                                                                                 //释放纤程

aaa.RegisterSubscription(IDisposable );                                                   //注册一个的事件,当纤程停止时回调使用。参数是实现IDisposable接口的类。

aaa.DeregisterSubscription(IDisposable );                                               //取消一个注册事件

aaa.NumSubscriptions                                                                                  //注册事件数量

aaa.CounterEnqueue                                                                                      //入队计数   //以后再研究

aaa.CounterDequeue                                                                                      //出队计数   //以后再研究





------------------------------------LoadBalancing框架分析---------------------------------

LoadBalancing查了一些资料,是可以做分布式服务器架设的。关于买个房间的游戏人数,官方上写的是4人,也有资料写255人,也有200万的说法,目前还没研究,但是肯定不止4个人。

这个设计真是太棒了,很值得学习。


MasterServer:主服务器,当连接到Photon和大厅之间是连接到这里。   (大厅应用,登录,注册写在这)

GameServer:登录房间以后,会从MasterServer配分到游戏服务器,并且断开和主服务器的连接。(游戏房间应用,游戏逻辑写在这)


为了使得我们自己写的代码和Photon本身的代码分开,便于管理,用继承重写来实现。建议一定要自己的代码和Photon的分开,方便日后photon升级和检查错误,我看到有朋友写的全部在一起,找起BUG来,眼睛都要出血。包括我们自己的通信枚举,结构,全部和photon的分开。


比如我们要建立自己的GameServer。新建一个文件夹MyGameServer, 建一个MyGameApplication.cs类来继续自GameApplication.cs类,用base先执行它本身的方法,以免被覆盖,再重写我们自己的方法。一般只用得到GameApplication.cs和GameClientPeer.cs两个类。最后一定记得去修改PhotonServer.config  <Application 里面的type命名空间。Loadbalancing里面的DLL也要记得更新,一开始很容易记不得。



----------------------------------------下面写的有问题,好像不是这个原因,还在看怎么回事-----------------------------------------------------------

服务器发送事件:

SendParameters SP = new SendParameters();   

  //一定要指定信道,我还没彻底搞清楚,但是目前发现只有0和1两个信道,看教程0是事件请求方面的,1是房间相关,离开进入房间之类的,如果不指定为0,当客户端进入房间以后接受不到事件。

SP.ChannelId = 0;         

//第一个参数Eventdate操作码 第二个发送参数                                                  

 PeerBase.SendEvent(eventdate,SendParameters)   


                  





本文为原创,转载请注明出处!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是重阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值