UE3客户端服务器GamePlay框架
客户端(当前玩家)与服务器对应关系图:


整体上看,UE3的GamePlay框架使用的是MVC架构
① 橙色的Actor对象及橙色箭头相连的成员变量只会被同步给Owner客户端
Controller:控制器,包括PlayerController和AIController
InventoryManager:玩家武器管理器
Inventory:玩家武器链表
② 黄色的Actor对象及黄色箭头相连的成员变量会被同步给所有的客户端
Actor的WorldInfo变量:指向地图的Main关卡实例
a. 关卡ULevel的Actor数组索引为0的Actor对象为当前关卡的WorldInfo实例
b. 游戏世界UWorld中存放着Main关卡和其他关卡(UWorld* GWorld为一个root类型的UObject全局变量)
ULevel* PersistentLevel为Main关卡
TArray<ULevel*> Levels为Main关卡和其他关卡的集合
c. 在UGameEngine::LoadMap函数中载入新地图时,会释放上一个地图的Main关卡和其他关卡,然后创建新地图的Main关卡和其他关卡
d. LevelStreaming只能用于释放和加载其他关卡Level,不能释放Main关卡
e. 在游戏过程中Spawn出来的Actor,都会放在Main关卡中,并将其WorldInfo变量指向Main关卡实例
f. 其他关卡Level中的Actor的WorldInfo变量也是指向Main关卡实例的
Pawn:玩家和载具
UTWeaponAttachment:武器3P
该对象并不没有走同步机制,服务器通过同步class<UTWeaponAttachment>类型信息,让各个客户端独占创建UTWeaponAttachment
GameReplicationInfo(GRI):用于保存游戏实例相关数据
a. 在GameInfo的PreBeginPlay函数中被Spawn出来,并将其设置给WorldInfo.GRI
PlayerReplicationInfo(PRI):用于保存各个玩家实例相关数据
TeamInfo:队伍信息
③ 游戏实例(GameInfo)只运行在服务器,配置着当前玩法模式Pawn、Controller、GRI、PRI、HUD等类型信息
客户端(其他玩家)与服务器对应关系图:


UE3客户端服务器GamePlay框架的更多相关文章
- 教你如何构建异步服务器和客户端的 Kotlin 框架 Ktor
Ktor 是一个使用 Kotlin 以最小的成本快速创建 Web 应用程序的框架. Ktor 是一个用于在连接系统(connected systems)中构建异步服务器和客户端的 Kotlin 框架. ...
- 搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 (1)
搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 原文地址(英文):http://www.networkcomms.net/creating ...
- 【读书笔记】iOS-使用Web Service-基于客户端服务器结构的网络通信(一)
Web Service技术是一种通过Web协议提供服务,保证不同平台的应用服务可以互操作,为客户端程序提供不同的服务. 目前3种主流的Web Service实现方案用:REST,SOAP和XML-RP ...
- acl 是一个跨平台的网络通信库及服务器编程框架
acl 工程是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架,同时提供更多的实用功能库.通过该库,用户可以非常容易地编写支持多种模式( ...
- linux socket高性能服务器处理框架
这个博客很多东西 http://blog.csdn.net/luozhonghua2014/article/details/37041765 思考一种高性能的服务器处理框架 1.首先需要一个内存池 ...
- 开源软件实践之linux高性能服务器编程框架和选型
很多人学习编程技术一般都通过一本编程语言的入门书籍,然后尝试做一些例子和小项目.但是这些都不能让我们深入的学习很多的编程技巧和高深技术,当然这个时候很多有经验的学习人员就会告诉大家,找一个好的开源软件 ...
- Linux 高性能服务器编程——高性能服务器程序框架
问题聚焦: 核心章节. 服务器一般分为如下三个主要模块:I/O处理单元(四种I/O模型,两种高效事件处理模块),逻辑单元(两种高效并发模式,有效状态机)和存储单元(不讨论). 服务器模 ...
- 客户端热更新框架之UI热更框架设计(上)
什么是热更新,为什么需要热更新? 热更新是目前各大手游等众多App常用的更新方式.简单来说就是在用户通过App Store下载App之后,打开App时遇到的即时更新.对于手游客户端来 ...
- 客户端-服务器通信安全 sign key
API接口签名校验,如何安全保存appsecret? - 知乎 https://www.zhihu.com/question/40855191 要保证一般的客户端-服务器通信安全,可以使用3个密钥. ...
随机推荐
- Can Japan stand up to US request to contain China?
From Global Times Two days before US President Donald Trump's visit to Japan, A fake news story caug ...
- and和or运算
and和or的运算,从前向后按顺序计算,当True结果遇到or就停止,返回True:当False结果遇到and就停止,返回False:False遇到or,继续走:True遇到and,继续走. > ...
- 【转】MySQL innodb_autoinc_lock_mode 详解 ,并发插入时主键冲突的解决方案
本文转载于 http://www.cnblogs.com/JiangLe/p/6362770.html innodb_autoinc_lock_mode这个参数控制着在向有auto_increment ...
- bash实例
1写一个脚本,完成如下功能(使用函数):1.脚本使用格式:mkscript.sh [-D|--description "script description"] [-A|--aut ...
- BZOJ 5313: 新Fib数列
打表找规律 #include<cstdio> using namespace std; int F[20]={0,1,1,2,3,0,3,3,1,4,0,4,4,3,2,0,2,2,4,1 ...
- MySQL中的DDL(Data Definition Language,数据定义语言)
create(创建表) 标准的建表语句: create table [模式名.]表名 ( #可以有多个列定义 columnName1 dataType [default expr(这是默认值)], . ...
- 微信小程序开发 -- 点击右上角实现转发功能
// 在page的js文件中加入以下代码/** * 用户点击右上角分享 */ onShareAppMessage: function () { }
- SDOJ 2605 闲荡
描述 L 饭后无聊,便在 BugTown 里闲荡. BugTown 共有 N 栋房屋和 M 条有向道路.每栋房屋都有一个非负整数 vi 作为标识. BugTown 有一个特性十分神奇:从任意一个房屋离 ...
- df和du显示的磁盘空间使用情况不一致问题
背景介绍: dba同事删除了mysql /datao目录下的文件,通过du –sh查看空间使用700G,df -h查看空间使用1T,没有重启mysql服务. 另一个表现出du与df命令不同之处的例子如 ...
- [笔记]Docker解决了什么问题?
Docker的优势: 环境依赖问题 更轻量的虚拟化,节省了虚拟机的性能损耗 Docker应用场景: 程序分发,gitlab的安装很恶心吧,所以有人做了gitlab的image 部署发布,这点对运维的同 ...