《攻城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->服务端保存用户信息缓存->客户端逻辑生成请求->二进制序列化请求数据->客户端发送请求->服务端接收请求->服务端逻辑处理请求->服务端逻辑生成响应->二进制序列化响应数据->服务端进行单播/组播/广播->客户端接收响应/触发事件->二进制序列化响应/事件数据->客户端逻辑处理。

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

时间: 2024-12-21 11:40:03

《攻城Online》开发前期:UML设计架构的相关文章

攻城狮解析丨开发板电源架构解析之OK4418-C(下)

上一期对 <OKMX6UL-C开发板底 板电源架构> 进行了分析,相信对用户是有一定的帮助的.这一期准备对同样有点复杂的OKxx18_C的电源架构做一个详细的梳理. 我们要知道飞凌S5P4418/688系列 FETxx18核 心板 支持以下三种供电方式: ? ADP供电,通过J1(电源插座)供入底板,经过U11(FDS4435)直接供给核心板PMIC. ? USB供电,由OTG接口直接供给核心板PMIC. ? VBAT供电,由锂电池供给核心板PMIC. ▲核心板PMIC(NXE2000)锂电池

《攻城Online》快速原型:客户端设计

“攻城”客户端采用Unity引擎并结合Photon框架进行开发. 关于将Photon配置进游戏引擎中的操作本篇直接省略. 在展开之前,先来看看Unity的文件夹组织层次. Audios放音频文件,Libs放一些外部的动态链接库文件,Models放模型资源,预留的Resources文件夹主要服务于Resource类,Scenes放场景文件,重点是Scripts文件夹. 首先ClientLogic层存放与逻辑相关的脚本.Photon客户端采用事件监听体制,Event中存放事件数据类的定义,从下面的项

关于那些最好玩的户外APP合集下(适合资深驴友、牛逼设计狮、装逼攻城狮)

本文会陆续分享分析全国最好的30个户外APP(下载量均至少在30万级别以上),希望能给户外爱好者.Ui设计狮.户外APP开发攻城狮一些启示. 目录(点击跳转APP官方网站): 18. 在外(专注于户外运动.登山.徒步.骑行.户外旅行专业平台) 17. 荡客(带你爱上户外) 16. 携程攻略(随手遇见不一样的世界) 18.在外 17.荡客 17.1 简介: 荡客是一个炫酷户外旅行的平台 主要功能 推荐附近户外活动 根据爱好筛选分类 喜欢活动轻松报名 想去活动一键标记 设定个性户外标签 17.2 产

《攻城Online》快速原型:服务端设计

“攻城”服务端采用Photon引擎的框架,其主要逻辑如以下UML所示. 服务端的启动入口为ServerApplication,该类包含着相关的Collection数据集合,而Collection内又有与数据库文件夹Database关联的文件.两个文件夹的内容如图. 简单来说,ServerApplication内缓存着各类数据,并完成与数据库等的关联.而本篇的重点是ServerPeer这个类.下面介绍什么是Peer. 每当一个客户端连接到服务端时,服务端会自动生成一个客户端连接实例,称其为Peer

微服务开发中的数据架构设计

本文来自作者 陈伟荣 在 GitChat 分享的文章[微服务开发中的数据架构设计] 前言 微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性,可以实现业务之间的松耦合.业务的灵活调整组合以及系统的高可用性.为业务创新和业务持续提供了一个良好的基础平台.本文分享在这种技术架构下的数据架构的设计思想以及设计要点,本文包括下面若干内容. 微服务技术框架中的多层数据架构设计 数据架构设计中的要点 要点1:数据易用性 要点2:主.副数据及数据解耦 要点3:分库分表

转:攻城狮修炼秘籍

漫校园生活,孜孜不倦的你,今天书多读一点! 海康威视为你的假期精心准备了精神的饕餮大餐! 把自己投入知识的海洋吧!为即将成为一名高冷俊俏的程序猿和媛而吹响最后的号角: 各类秘籍自助区 一.测试攻城狮 <软件测试> <测试之道> 二.硬件攻城狮 基础理论:工程数学.积分变换.信号与系统.数字信号处理.自动控制原理.英语 专业课程:数电.模电.嵌入式系统.热设计.DDR3.flash.开关电源 (若有实践经验,可只看基础理论) 三.应用软件开发攻城狮 必读: <UNIX环境高级编

β版本展示博客-第二组(攻城喵组)

一.前情回顾 ①团队介绍:超简洁版→[攻城喵]攻城喵队正式上线!   略详尽版→[攻城喵]α版展示-成员简介 ②选题: 新版瀚海星云BBS→[攻城喵]头脑风暴-选题组会 ③需求分析:初步调查→[攻城喵]校内问卷调查 详尽分析→[攻城喵]α版展示-需求分析及亮点介绍 ④技术和架构分析:    →[攻城喵]技术与架构分析 ⑤任务规划和执行情况:→[攻城喵]任务规划和执行情况 ⑥组会blog:详见目录→[攻城喵]博客汇总目录 ⑦α版展示及总结:     →[攻城喵]α版展示 二.β段冲刺 ①β版需求分

【云栖大会】程序猿、攻城狮的大聚会 他们眼中的云栖大会是啥样

2016年云栖大会进行得如火如荼,"烧脑"."前沿"."高端"."技术"."一票难求"--这些关键词把这场"干货"分享大会衬托得神秘满满,有一群人却沉浸其中,自得其乐. 他们的名字叫--程序猿.攻城狮. 从最初的站长大会,到阿里云开发者大会,再到云栖大会:从200名草根站长到4万名业内外参与者:从单一峰会发展至超过100场论坛的"巨无霸"大会:从纯谈技术到融合音乐节.

iOS开发笔记--iOS应用架构谈

iOS应用架构谈 开篇 iOS应用架构谈 开篇 iOS应用架构谈 view层的组织和调用方案 iOS应用架构谈 网络层设计方案 iOS应用架构谈 动态部署方案 iOS应用架构谈 本地持久化方案 缘由 之前安居客iOS app的第二版架构大部分内容是我做的,期间有总结了一些经验.在将近一年之后,前同事zzz在微信朋友圈上发了一个问题:假如问你一个iOS or Android app的架构,你会从哪些方面来说呢? 当时看到这个问题正好在乘公车回家的路上,闲来无聊就答了一把.在zzz在微信朋友圈上追问