《攻城Online》开发前期:UML设计架构

  《攻城Online》,以下简称“攻城”,是基于Unity3D引擎开发的一款MMORPG端游。

  “攻城”开发采用C/S架构,其中服务端使用了Photon引擎来简化开发流程。Photon引擎底层是C++,采用多线程并发处理客户端连接,且游戏逻辑采用C#语言编写。目前来说,团队对服务端开发仍是一张白纸,因而认定直接用现成服务端框架是唯一的出路。而相比较SmartFoxServer、KBEngine来说,因为其实现语言的原因,以致Photon成为不二的选择。

  废话少说,先贴上初步的UML类图框架。

  由于开发过程中,类内成员的访问级别随时都可能发生变动,方法参数同样如此,因而一律忽略对访问级别以及参数的表示。

  首先是服务端主框架,ApplicationBase和PeerBase是Photon提供的两个类。ServerApplication继承自ApplicationBase,用来进行服务端游戏逻辑应用程序的工作,ServerPeer继承自PeerBase,代表连接到Photon的客户端,每当有一个新的客户端连接到服务端时,就会自动实例化一个peer,这个类就用于与客户端进行通信。其中,类中的OnOperationRequest是个回调方法,用于处理客户端发送的请求。

  UserBase类包含用户的基本信息,而UserCollection类通过字典来收集每个peer的用户信息。

  DataBase包,用于数据库操作和管理的,这个肯定要。

  此外,还有ServerLogic包,内含一些处理游戏逻辑的文件,用于分割peer中OnOperationRequest所要进行的工作。

  Protocol包下是服务端和客户端之间的协议文件。

  由于Photon引擎有很方便的日志管理功能,因而还需要一个Log包,用来进行各种日志记录。

  接下来是客户端框架,PhotonSingleton是个全局单例类,用于进行每帧保持与服务端的连接等工作。

  PhotonService是客户端的主体部分,发送请求和接收响应和事件都在这里完成。

  同样,ClientLogic包用来细化PhotonService的各项逻辑工作。

  最后是Protocol包,里面含有各类操作枚举,EventArgs事件包,Common数据包,以及一个Serialization类用于进行二进制数据传输的转换。另有一个EventCollection类,这个类将各种事件集中起来,在PhotonService中会引用到。

  以上就是基本的组成框架,剩余的都是些细化的部分。

  说下这个框架的基本使用思路:

  服务端启动->客户端启动->

  客户端连接服务端生成peer->服务端保存用户信息缓存->

  客户端逻辑生成请求->二进制序列化请求数据->客户端发送请求->

  服务端接收请求->二进制请求数据反序列化->服务端逻辑处理请求->

  服务端逻辑生成响应->二进制序列化响应数据->服务端进行单播/组播/广播->

  客户端接收响应/触发事件->二进制响应/事件数据反序列化->客户端逻辑处理

  这就是整个消息收发的处理过程,其中省略了数据库、日志、更新游戏画面等操作。

 

转载于:https://www.cnblogs.com/SiegeOL/p/4513475.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值