本文为原创,转载请注明出处!
需要注意的事:
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)
本文为原创,转载请注明出处!