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

整体上看,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框架的更多相关文章

  1. 教你如何构建异步服务器和客户端的 Kotlin 框架 Ktor

    Ktor 是一个使用 Kotlin 以最小的成本快速创建 Web 应用程序的框架. Ktor 是一个用于在连接系统(connected systems)中构建异步服务器和客户端的 Kotlin 框架. ...

  2. 搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 (1)

    搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 原文地址(英文):http://www.networkcomms.net/creating ...

  3. 【读书笔记】iOS-使用Web Service-基于客户端服务器结构的网络通信(一)

    Web Service技术是一种通过Web协议提供服务,保证不同平台的应用服务可以互操作,为客户端程序提供不同的服务. 目前3种主流的Web Service实现方案用:REST,SOAP和XML-RP ...

  4. acl 是一个跨平台的网络通信库及服务器编程框架

    acl 工程是一个跨平台(支持LINUX,WIN32,Solaris,MacOS,FreeBSD)的网络通信库及服务器编程框架,同时提供更多的实用功能库.通过该库,用户可以非常容易地编写支持多种模式( ...

  5. linux socket高性能服务器处理框架

    这个博客很多东西 http://blog.csdn.net/luozhonghua2014/article/details/37041765   思考一种高性能的服务器处理框架 1.首先需要一个内存池 ...

  6. 开源软件实践之linux高性能服务器编程框架和选型

    很多人学习编程技术一般都通过一本编程语言的入门书籍,然后尝试做一些例子和小项目.但是这些都不能让我们深入的学习很多的编程技巧和高深技术,当然这个时候很多有经验的学习人员就会告诉大家,找一个好的开源软件 ...

  7. Linux 高性能服务器编程——高性能服务器程序框架

    问题聚焦:     核心章节.     服务器一般分为如下三个主要模块:I/O处理单元(四种I/O模型,两种高效事件处理模块),逻辑单元(两种高效并发模式,有效状态机)和存储单元(不讨论). 服务器模 ...

  8. 客户端热更新框架之UI热更框架设计(上)

    什么是热更新,为什么需要热更新?          热更新是目前各大手游等众多App常用的更新方式.简单来说就是在用户通过App Store下载App之后,打开App时遇到的即时更新.对于手游客户端来 ...

  9. 客户端-服务器通信安全 sign key

    API接口签名校验,如何安全保存appsecret? - 知乎  https://www.zhihu.com/question/40855191 要保证一般的客户端-服务器通信安全,可以使用3个密钥. ...

随机推荐

  1. java--String、StringBuilder、StringBuffer的解析和比较?

    一.String的解析 1.String的含义 ①String是不可以被继承的,String类是final类,String类是由char[]数组来存储字符串. ②String是不可变的字符序列,如果存 ...

  2. DELL PowerEdge R620安装Windows server(你想将windows安装在何处”找不到任何本地磁盘,“找不到驱动器”)已解决!

    你可能碰到过DELL服务器上安装Windows server系列系统时无法识别或找不到硬盘的问题,对于DELL PowerEdge11-14代机器的,大家可以采用DELL的Lifecycle cont ...

  3. Python数据分析【炼数成金15周完整课程】

    点击了解更多Python课程>>> Python数据分析[炼数成金15周完整课程] 课程简介: Python是一种面向对象.直译式计算机程序设计语言.也是一种功能强大而完善的通用型语 ...

  4. 【nginx】nginx.sh nginx 安装脚本

    #! /bin/shcd /usr/local/srcwget http://nginx.org/download/nginx-1.10.1.tar.gzecho 'download success' ...

  5. Docker容器技术的核心原理

    目录 1 前言 2 docker容器技术 2.1 隔离:Namespace 2.2 限制:Cgroup 2.3 rootfs 2.4 镜像分层 3 docker容器与虚拟机的对比 1 前言 上图是百度 ...

  6. POJ:2955-Brackets(经典:括号匹配)

    传送门:http://poj.org/problem?id=2955 Brackets Time Limit: 1000MS Memory Limit: 65536K Description We g ...

  7. hdu 6301

    Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  8. Selenium2启动浏览器且加载插件

    一.SELENIUM2启动浏览器 注意: SELENIUM2在启动浏览器时,都是启动一个干净的没有任务 插件及cookies信息的浏览器,即使是你之前的浏览器有设置过代理,到自动化启动时,也是没有代理 ...

  9. BZOJ 5299: [Cqoi2018]解锁屏幕

    状压DP #include<cstdio> using namespace std; const int mod=1e8+7; int F[1000005][25],dis[25][25] ...

  10. C++智能指针实现

    #include <iostream> #include <string> #define unsigned int size_t using namespace std; / ...