UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)

目录

IP地址

OnlineSubsystem

插件打开

模块加载

Config修改

Cpp

测试:


在之前的文章中,我们讲解了在同一个WiFi下相互连接的制作。

但是我们并不只想在同一个本地连接,我们想要的是在不同的WiFi下一起玩游戏。

所以我们先来讲解一下ip地址:

IP地址

UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)_第1张图片

现在在同一个WiFi下,3个电脑的ip地址按顺序不同。

这样,只有玩家A的电脑能够通过ip地址连接玩家B玩家C的电脑

然后你的WiFi为了能连接到Internet,所以会在外部再给予你的WiFi一个地址【这样认为就可以了】

外部的信息会从外部到你的WiFi,再到你的玩家身上。

如图:

UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)_第2张图片

所以在之前的本地连接是如此的简单。

那么如何和,假如另一个玩家在地球的另一端,你们应该如何一起玩游戏?

UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)_第3张图片

而我们所需要的平台又有很多,如果发布在不同的平台,需要学习很多不同的平台的一些代码,比如steam、Xbox等等。

而虚幻引擎提供了一个在线的子系统,我们只需要通过这个来决定:

他有一个抽象层,这个抽象层将其他平台的特定的代码抽象掉了,所以我们并不用担心。

而这个系统叫做:OnlineSubsystem

OnlineSubsystem

UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)_第4张图片

插件打开

我们以steam为例:

我们打开项目,打开插件,然后搜索:

这里面可以看见许许多多的平台,不过这里我们使用的是steam的这个:

 UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)_第5张图片

模块加载

因为打开了这个插件,现在我们进入VS中看看:

UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)_第6张图片

这个模块需要添加一个OnlineSubsystemSteam和OnlineSubsystem,不知道的话看:

然后就是这个样子:

UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)_第7张图片

这样子我们就能访问相关的模块了。

Config修改

找到你的项目文件,然后打开config。

UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)_第8张图片

接下来我们打开的是这个DefaultEngine.ini的文件

我们要在这个文件中添加一些东西,让我们的项目配置为使用steam,详情可以看:

虚幻引擎Online Subsystem Steam接口 | 虚幻引擎5.1文档 (unrealengine.com)

在这个里面我们可以找到:

UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)_第9张图片

第一个是将网络驱动程序定义为steam的网络驱动,这样我们就可以连接到steam了。

第二个是定义了在线子系统为steam,这样就可以使用steam的网络配置了

第三个是默认的应用开发ID,默认为480,你如果没有就用480即可。

现在我们将这个东西复制到我们的DefaultEngine.ini中:

UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)_第10张图片

现在我们关闭vs和编辑器,打开项目文件,删除一些不需要的东西后,重新生成vs:

UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)_第11张图片

然后点击虚幻标志右键,Generate Visual Studio project files

UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)_第12张图片

UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)_第13张图片

双击后会说你缺少文件,但不需要担心,只需要点击是即可,因为他会重新将Binaries文件重新生成的。

Cpp

在头文件里面创建:

TSharedPtr是非UObject的智能指针

//向前声明的接口类
	//typedef TSharedPtr IOnlineSessionPtr
	//class IOnlineSessionPtr myOnlineSessionInterface;因为是多线程的,所以我们并不能这样使用,当然,如果你将#include "Interfaces/OnlineSessionInterface.h"的头文件放在头文件中,也可以使用这个【class要去除】
	TSharedPtr myOnlineSessionInterface;

然后进入玩家的cpp文件中:

#include "OnlineSubsystem.h"

//你也可以将这个放在头文件中,然后用这个IOnlineSessionPtr myOnlineSessionInterface
#include "Interfaces/OnlineSessionInterface.h"

然后是在构造函数里面创建指针:

 UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)_第14张图片

然后打印:

UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)_第15张图片

这里我们编译的时候可能会出错

对此我们并不需要担心,这是正常的,我们和之前一样,退出来,将binariessavedintermediate删除,然后重新更新一下即可。

测试:

UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)_第16张图片

这里运行后可以看见这里知道了指针NULL,实际上这并不是说你找到了空NULL,而是因为在虚幻引擎中有一个名字为NULL的OnlineSubsystem(这个你可以拿来测试局域网内的连接)。

然后你会发现不论如何在编辑器中设置,他始终是NULL,而不是steam

接下来你只需要将其进行打包,然后再打开就会发现,左上角连接的是steam

UE4/5多人游戏详解(二、通过OnlineSubsystem和OnlineSubsystemSteam连接steam,如实现在steam类游戏里面shift+tab打开steam的弹窗)_第17张图片

在这里就可以做一些steam的操作了(比如万恶的shift+tab出现的那个窗口) 

你可能感兴趣的:(#,ue4/5c++,#,ue4/5多人游戏,游戏,网络,c++,ue5,ue4)