赞
踩
以下节点通过 蓝图 在多人游戏中创建主机、寻找、加入或退出。
这些节点为 隐藏,意味着它们在后台执行操作(通常因为这些操作必须通过网络进行交流),并在之后的某点结束。节点右上角的钟表图标即代表其为隐藏节点。
首先从 Create Session 节点开始。游戏成功创建一个会话后,游戏的其他实例即可发现(使用 Find Session 节点)并加入(使用 Join Session 节点)。在此节点上可指定会话中允许的玩家数量,以及是否可在 LAN 模式中创建会话。对于支持的在线子系统模块而言,将 LAN 模式设为 false 将尝试创建在线游戏。
在线子系统 文档中有在线子系统和会话界面的综述。
使用 Find Sessions 节点获取当前公布并可加入的游戏会话的列表。BlueprintSessionResult 从成功调用返回后可获取服务器的名称、ping 和玩家数量。
确定加入的 BlueprintSessionResult 后,将其传入 Join Session 调用。如游戏成功连接到服务器,它将自动前往服务器的映射并加入游戏。
如不希望其他玩家发现并加入游戏,可调用 Destroy Session 节点。此操作将导致您离开会话;如您为主机,将会话关闭,使其无法被发现。
此节点还用于离开会话。客机离开游戏时也需要调用此节点。
处理网络操作时始终存在出现错误的可能,游戏需要对错误进行恰当的处理。可能主机已于先前推出您尝试加入的会话,也可能您的网络服务已临时关闭,还可能出现不胜枚举的各种其他错误。游戏可通过蓝图灵活处理这些与网络相关的错误。
以上会话操作出现的错误将通过 OnFailure 执行引脚进行报告,以便对游戏进行设置,处理问题。对于一些特定类型的错误,或游戏进程中发生的错误,可从 GameInstance 蓝图中调用两个错误事件 - Network Error 和 Travel Error。
Network Error 事件允许游戏对事件进行回应,接收描述错误类型的枚举值,并进行适当的回应 - 如游戏可能对用户显示一个对话框。
Travel Error 事件不及 Network Error 常见,使游戏处理 Network Error 未涉及的情况(如尝试加载无效地图)。
在线子系统(Online Subsystem) 及其接口提供一种可访问Steam、Xbox Live、Facebook等在线服务功能的常用方法。开发一款在多平台上发行或支持多在线服务的游戏时,在线子系统可确保开发者唯一需要做的变更就是对所有支持的服务进行配置调整。
在线子系统的基本设计目的是处理与不同在线服务之间的异步通信。由于本地电脑无法得知网络连接速度、服务器延迟和后端服务运行时间,因此无法预测与此类系统交互所需时间。为了处理该问题,在线子系统对所有远程操作均进行委托,并确保使用支持的异步功能时调用此类委托。除可在请求完成时进行响应和查询正在运行的请求外。委托还提供单一代码路径以跟踪,因此开发人员无需编写自定义代码来采集不同的成功或失败条件。
服务指定的模块化接口会将支持的功能分组在一起。例如,好友接口处理与好友列表的相关内容,而成就接口处理成就的排列、检查和授予等。在支持功能组的在线服务上,都存在相应功能组的接口,但不受服务支持的特定函数只会返回 false
。利用此设计,开发人员可为所有在线服务编写相同代码。
在高阶层面上,更复杂的操作将使用在线异步任务管理器来支持顺序任务,或者在不同线程上运行的任务。异步任务可以描述自身的依赖性,从而在连续运行顺序任务的同时,使无关任务能够平行且独立运行。在线子系统中的所有接口都以这种方式安排任务,以保持运算的一致性。
基本模块 OnlineSubsystem
定义服务指定的模块,并在引擎中进行注册。在初始化期间,在线子系统将尝试加载"Engine.ini"文件中指定的默认在线服务模块。对在线服务的所有访问都将通过此模块。
- [OnlineSubsystem]
- DefaultPlatformService=<Default Platform Identifier>
若成功,未指定参数时,将通过静态存取器使用默认在线子系统。
static IOnlineSubsystem* Get(const FName& SubsystemName = NAME_None)
若调用此函数需请求其他服务,将按需进行加载。若标识符无效或加载模块失败,将适宜地返回 null
。
在线子系统中包含以下接口。
部分接口只针对某些在线服务,取决于每个服务所支持的功能。
接口 | 功能组描述 |
---|---|
列出游戏中的所有成就,解锁成就,并查看自己和其他用户已解锁的成就。 | |
打开特定硬件平台或在线服务的内置用户接口。在某些情况下,仅可通过此接口获取部分核心功能的访问权。 | |
好友和好友列表的相关内容,例如在好友列表中添加用户、阻止和解除阻止用户,以及列出最近遇到的在线玩家。 | |
访问在线排行榜,包括登记自己的得分(或时间),以及在排行榜中查看好友列表或世界其他玩家的得分。 | |
收集关于用户的元数据。 | |
设置用户在线状态的显示方式,例如"在线"、"离开"、"游戏中"等。 | |
进行游戏内购和查看购买历史。 | |
创建、撤销和管理在线游戏会话。还包括搜索会话和配对系统。 | |
检索游戏内购可用的条目和特定价格。 | |
用户云 | 提供每个用户云文件存储的接口。 |
使用Epic在线服务作为语音聊天提供者。 |
如何设置 Unreal Editor 以测试多人游戏。
本页介绍了如何更改编辑器的某些设置,以测试不同的多人场景。
增加玩家数量
单击 Play 按钮旁的下箭头,然后输入 Number of Players 的值。
默认情况下,服务器将使用 Selected Viewport 作为游戏窗口,并为添加的每位玩家创建新窗口。
您完全可以使用编辑器的视口作为游戏窗口,但为了清晰起见,使用适用于每位玩家的窗口可能更好。
为服务器调整窗口
单击 Play 按钮旁的下箭头,然后选择 New Editor Window。
虽然模拟客户端拥有自己的窗口,但此设置还会模拟服务器创建独立窗口。
如果您已设置 Play 方法以使用新的编辑器窗口,您可能想要调整编辑器窗口的大小。
调整窗口大小
单击 Play 按钮旁的下箭头,然后选择 Advanced Settings。
在 Play in New Window 部分下设置所需的窗口大小。
Play in New Window 大小选项允许您设置所创建的窗口的大小和默认位置。您可以从若干预设窗口大小中选择或手动输入窗口大小(此例中,我们指定为 640x480)。您可以将所创建的窗口设置为 Left 和 Top 位置或单击 Always center window to screen 的复选框。
输入窗口大小后,当您在编辑器中玩游戏时,每个新窗口的大小相同。
当在编辑器中使用每个游戏会话的新窗口玩游戏时,您将注意到每个窗口顶部将显示玩家是服务器玩家还是客户端玩家。同时,在 Play 模式下,移动窗口时,系统将为您下次在编辑器会话中 Play 记住其位置(因此,您无需一直移动窗口,这样使得更简单)。
Advanced Settings 中还包括用于设置附加多人选项的部分:
选项 | 说明 |
---|---|
Number of Players | 此选项定义游戏启动时其中将生成的玩家数量。编辑器和监听服务器均视为玩家,而专用服务器则不会。客户端组成剩余玩家。 |
Server Game Options | 您可在此指定将作为 URL 参数传输到服务器的附加选项。 |
Run Dedicated Server | 如果选中,则将启动独立的专用服务器。否则,第一个玩家将充当所有其他玩家均可连接的监听服务器。 |
Route 1st Gamepad to 2nd Client | 在单个进程中运行多个玩家窗口时,此选项将决定游戏手柄输入的路由方式。如果未选中(默认),第一个游戏手柄将连接到第一个窗口,第二个连接到第二个窗口,以此类推。如果选中,则第一个游戏手柄将连接第二个窗口。然后即可通过键盘/鼠标控制第一个窗口,如果两人在同一台计算机上进行测试则十分便利。 |
Use Single Process | 此选项将在虚幻引擎 4 的单个实例中生成多个玩家窗口。其加载速度更快,但也有存在更多问题的可能性。未选中此选项时,附加选项将可用。 |
Create Audio Device for Every Player | 启用此选项将允许从每位玩家的角度渲染精确音频,但将占用更多 CPU 资源。 |
Play In Editor Description | 此选项根据当前应用的多人设置说明玩游戏时将发生的事情。 |
当选中 Use Single Process 时,虚幻引擎 4 的单个实例中将生成多个窗口。当未选中此选项时,将为分配的每位玩家启动多个 UE4 的实例,而且附加选项将可用:
选项 | 说明 |
---|---|
Editor Multiplayer Mode | 此选项是用于 Play In Editor(Play Offline、Play As Listen Server 或 Play As Client)的 NetMode。 |
Command Line Arguments | 您可在此分配将传输到独立游戏实例的附加命令行选项。 |
Multiplayer Window Size (in pixels) | 定义生成附加独立游戏实例时所采用的宽度/高度。 |
启动多人游戏时,游戏托管方式有两种。第一种方式是通过使用 Listen Server(默认设置),这表示拥有权限的机器也可以运行客户端,并可在为其他玩家托管时正常玩游戏。
第二种方式是通过使用 Dedicated Server,顾名思义,专用服务器仅专用于托管游戏,而没有本地玩家在此机器上玩游戏,因为连接的每位玩家均是客户端玩家。通常情况下,相比作为监听服务器运行,作为专用服务器运行性能因为没有图像或输入而更优化。
默认情况下,在编辑器或独立游戏中玩游戏时,服务器类型设置为监听服务器。
运行专用服务器
单击 Play 按钮旁的下箭头,然后选中 Run Dedicated Server 复选框。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。