目录
IP地址
OnlineSubsystem
插件打开
模块加载
Config修改
Cpp
测试:
在之前的文章中,我们讲解了在同一个WiFi下相互连接的制作。
但是我们并不只想在同一个本地连接,我们想要的是在不同的WiFi下一起玩游戏。
所以我们先来讲解一下ip地址:
现在在同一个WiFi下,3个电脑的ip地址按顺序不同。
这样,只有玩家A的电脑能够通过ip地址连接玩家B和玩家C的电脑。
然后你的WiFi为了能连接到Internet,所以会在外部再给予你的WiFi一个地址【这样认为就可以了】
外部的信息会从外部到你的WiFi,再到你的玩家身上。
如图:
所以在之前的本地连接是如此的简单。
那么如何和,假如另一个玩家在地球的另一端,你们应该如何一起玩游戏?
而我们所需要的平台又有很多,如果发布在不同的平台,需要学习很多不同的平台的一些代码,比如steam、Xbox等等。
而虚幻引擎提供了一个在线的子系统,我们只需要通过这个来决定:
他有一个抽象层,这个抽象层将其他平台的特定的代码抽象掉了,所以我们并不用担心。
而这个系统叫做:OnlineSubsystem
我们以steam为例:
我们打开项目,打开插件,然后搜索:
这里面可以看见许许多多的平台,不过这里我们使用的是steam的这个:
因为打开了这个插件,现在我们进入VS中看看:
这个模块需要添加一个OnlineSubsystemSteam和OnlineSubsystem,不知道的话看:
然后就是这个样子:
这样子我们就能访问相关的模块了。
找到你的项目文件,然后打开config。
接下来我们打开的是这个DefaultEngine.ini的文件
我们要在这个文件中添加一些东西,让我们的项目配置为使用steam,详情可以看:
虚幻引擎Online Subsystem Steam接口 | 虚幻引擎5.1文档 (unrealengine.com)
在这个里面我们可以找到:
第一个是将网络驱动程序定义为steam的网络驱动,这样我们就可以连接到steam了。
第二个是定义了在线子系统为steam,这样就可以使用steam的网络配置了
第三个是默认的应用开发ID,默认为480,你如果没有就用480即可。
现在我们将这个东西复制到我们的DefaultEngine.ini中:
现在我们关闭vs和编辑器,打开项目文件,删除一些不需要的东西后,重新生成vs:
然后点击虚幻标志右键,Generate Visual Studio project files:
双击后会说你缺少文件,但不需要担心,只需要点击是即可,因为他会重新将Binaries文件重新生成的。
在头文件里面创建:
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"
然后是在构造函数里面创建指针:
然后打印:
这里我们编译的时候可能会出错
对此我们并不需要担心,这是正常的,我们和之前一样,退出来,将binaries,saved,intermediate删除,然后重新更新一下即可。
这里运行后可以看见这里知道了指针NULL,实际上这并不是说你找到了空NULL,而是因为在虚幻引擎中有一个名字为NULL的OnlineSubsystem(这个你可以拿来测试局域网内的连接)。
然后你会发现不论如何在编辑器中设置,他始终是NULL,而不是steam。
接下来你只需要将其进行打包,然后再打开就会发现,左上角连接的是steam。
在这里就可以做一些steam的操作了(比如万恶的shift+tab出现的那个窗口)