UE4联网开发翻译(九)

支持无缝加载

‘无缝’加载带有过渡地图。这是通过“UGameMapsSettings::TransitionMap”属性配置的。此属性默认为空。

如果你让这个属性为空,则会自动创建一张空地图。

过渡地图存在的原因是世界总是有地图加载,所以我们不能在新地图加载之前释放旧地图。

由于地图可以非常大,新旧地图同时存在是非常糟糕的想法,所以就有了过渡地图。

设置好过渡地图后,你将“AGameMode::bUseSeamlessTravel”设置为真,那么无缝地图就能工作了。

当然能在蓝图里面通过‘Maps and Nodes’标签里的ProjectSettings来设置它。

 

 

 

保存Actor无缝加载

当无缝加载时,可以将Actors的当前关卡切换到新关卡。这对某些Actors非常有用,比如库存物品,玩家等等。

默认情况下,这些Actors自动保存:

1.GameMode Actor(服务器)

    任何Actors都可以通过‘AGameMode::GetSeamlessTravelActorList’增加。

2.所有具有有效PlayerState(仅服务器)的Controller

3.所有PlayerController(仅服务器)

4.所有本地PlayerController(服务器和客户端)

    任何Actor都可通过本地PlayerController调用‘APlayerController::GetSeamlessTravelActorList’添加。

无缝加载的一般流程:

1.标记加载关卡将会保存的Actors

2.加载过渡关卡

3.在准备加载完成的关卡设置Actors

4.完成加载

 

 

在线子系统概述

在线子系统及其接口的存在是为了对给定环境中可用的一组平台上的公共在线功能提供一个清晰的抽象。

在这种情况下,平台可以指Steam, Xbox Live, Facebook等。

可移植性是主要目标之一。

我需要一个子系统做什么?

默认情况下,你会用‘SubsystemNULL’。这允许你开启一个LAN会话(这样你就可以通过服务器列表寻找会话并把他们加进Lan网络中)或者直接跳过IP相连。

但互联网上不允许你开这么一个LAN会话。

为什么?

因为你没有为客户端提供服务器/会话列表的主服务器。

SubSystems,例如Steam在互联网上允许你参与也允许你主持一个服务器/会话列表。

你也可以创建自己的SubSystem/主服务器,但这要在UE4以外编写大量代码。

 

 

在线子系统模块

基础设计

在线子系统的基础模块负责规范平台特定模块的的定义和注册方式。

所有访问平台服务器都将通过这个模块。

加载后,这个模块会按顺序加载在‘Engine.ini’文件里指定的默认平台服务器模块。

-

如果成功,在没有指定参数时,这个默认在线接口将会通过静态访问器有效。

-

当使用适当的标识符从该函数调用时,将根据需要加载其他服务。

 

 

与虚幻引擎3 (UE3)非常相似,在线子系统在调用具有异步副作用的函数时将大量使用委托。

重要的是要尊重委托,并等待调用适当的委托,然后再调用链上的函数。

等待异步任务失败可能导致崩溃和意外的、未定义的行为。

在连接失败(如电缆拉拔器或其他断开连接事件)时,等待委托尤其重要。

在理想情况下,完成一项任务所需的时间可能是瞬时的,但在超时情况下,可能高达一分钟。

委托接口相当简单,每个委托都清楚地定义在每个接口头的顶部。

每个委托都有一个Add、Clear和Trigger函数。(尽管不建议手动触发委托)。

通常的做法是在调用适当的函数之前添加()委托,然后从其内部清除()委托。

 

(下面几页关于在线平台的,不是很关心,直接粘有道翻译了)

接口

并不是所有的平台都会实现所有的接口,游戏代码也应该相应地进行规划

配置文件

在线服务概要服务的接口定义。

概要文件服务被定义为与给定用户概要文件及其相关元数据(在线状态、访问权限等)相关的任何内容。

朋友

界面定义为在线服务的好友服务。

好友服务是任何与维护好友和好友列表相关的东西。

 

 

会话

在线服务会话服务的接口定义。

会话服务被定义为管理会话及其状态的任何相关内容。

共享的云

提供共享云上已有文件的接口(请参见用户云与其他用户共享)。

用户的云

为每个用户提供云文件存储接口。

 

 

游戏排行榜

提供访问在线排行榜的接口。

声音

在游戏中提供网络语音通信接口。

成就

提供读取/写入/解锁成就的接口。

外部用户界面

提供用于访问给定平台的外部接口(如果可用)的接口。

 

 

会话和匹配

匹配是将玩家与会话进行配对的过程。

会话基本上是游戏运行在服务器上的一个实例与一组特定属性,这可以是大众化的,这样它就可以被发现并加入玩家想玩游

戏,也可以是私人的,这样只有玩家被邀请或通知时,它可以加入。

想象一下,一个在线游戏大厅列出了当前正在玩的所有游戏。

列表中的每个游戏都是一个会话,或单独的在线匹配。玩家通过搜索或其他方式与会话匹配,然后加入会话进行比赛。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值