该在线子系统蒸汽API使您能够出货虚幻引擎4(UE4)应用,Valve的Steam平台。Steam模块的主要目的是帮助您将具有一系列功能(比如匹配和排行榜)的应用程序分发给Steam用户。此外,Steam模块还实现了在线子系统公开的几个接口 ,支持Steamworks软件开发工具包(SDK)提供的大部分内容。
一些可用的Steam接口包括:
-
配对(Lobbies和GameServer API)
-
排行榜
-
成就
-
语音
-
UserCloud
-
SharedCloud
-
外部用户界面
参考我们的在线子系统Steam API参考, 以获得更完整的当前可用的Steam接口列表。
满足阀门的要求
蒸汽子系统需要通过Valve Steamworks进行额外的设置 。请联系Valve 并参考他们的Steamworks SDK文档 ,确保您的应用程序符合Valve的要求,然后再尝试使用UE4的Steam。
正在下载Steamworks
如果您的应用程序符合Valve的要求,请继续下载最新版本的Steamworks SDK 。SDK需要解压缩并复制到/YourUnrealEnginePath/Engine/Source/ThirdParty/Steamworks/Steam[Current Version]/sdk
如果您要更新项目的Steamworks SDK,请确保更新[Current Version]
项目的Steamworks路径:
/YourUnrealEnginePath/Engine/Source/ThirdParty/Steamworks/
Steam [当前版本]/sdk
您还需要更新Steamworks.build.cs
,它位于项目目录中。
在这个例子中,[Current Version]
格式为v139
。
编译UE4
如果您从源代码编译UE4,应采取以下步骤:
-
打开
OnlineSubsystemSteamPrivatePCH.h
(位于..\..\Plugins\Online\OnlineSubsystemSteam\Source\Private\
),您将在其中找到以下代码行,定义Steamworks SDK的根目录位置:#define STEAM_SDK_ROOT_PATH TEXT("Binaries/ThirdParty/Steamworks")
-
你需要修改这一行来阅读:
#define STEAM_SDK_VER TEXT("Steam[Current Version]")
设置Steamworks SDK
使用Steam对引擎的预编译版本应该只需要将Valve的SDK中的一些动态链接库(* .dll)复制到适当的文件夹中。如果您打算重新编译引擎,请将SDK放在正确的位置。现在,将相关的可再发行文件从/redistributable_bin/
SDK目录复制到以下位置:
选择您的操作系统
Steam App ID
所有使用Steam在线子系统的游戏都必须拥有有效的应用程序ID,因为如果Steamworks API不知道应用程序的Steam应用程序ID,它将不会初始化。在初始化Steam之前,UE4将生成steam_appid.txt
(在引擎正常关闭期间,UE4删除该文件)。需要注意的是,steam_appid.txt
必须与应用程序的可执行文件位于相同的目录中,因为Steam将在当前工作目录中查找文本文件。另外,该文件不应包含在任何Steam图像中。
如果打开steam_appid.txt
,您将看到一个SteamDevAppId条目,这是一个将您的应用程序ID提示为Steam的字段。这使得不必使用Steam客户端启动游戏(尽管它必须正在运行)。
如果你想测试你的应用程序,你可以使用SteamDevAppId的480
,这是所有开发人员共享一个测试应用程序ID。虽然您可以使用上述测试应用程序ID来测试大多数Steam接口,但您的应用程序在发货前需要一个Steam应用程序ID。
发货版本
在发货版本中,发动机将检查以确保登录用户正确订购了游戏,并且如果发动机的测试返回错误(这是帮助保证游戏安全的一种方法),则会关闭。另外,使用Steam DRM(参见Steamworks SDK)应该进一步保护游戏免受篡改。
配置您的应用程序的设置
如果您使用虚幻项目浏览器创建新项目,则在线子系统设置不应该存在于DefaultEngine.ini
; 但是,如果您要修改其中一个示例项目,则在线子系统设置可能已经存在。
现在您已经为您的应用程序设置了Steamworks SDK(以及设置Steam应用程序ID),您可以配置应用程序的设置以使用Online Subsystem Steam。
脚步
-
入门,打开你的应用程序的
DefaultEngine.ini
文件。 -
添加以下设置:
[/Script/Engine.GameEngine] +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
NetDriverDefinitions描述了可用于UE4的网络驱动程序,其中定义了以下属性:
-
DefName是此网络驱动程序定义的唯一名称。
-
DriverClassName是主网络驱动程序的类名称。
-
DriverClassNameFallBack是如果主要网络驱动程序类未能初始化时的后备网络驱动程序的类名称。
-
-
要告诉UE4使用Online Subsystem Steam,请添加以下设置:
[OnlineSubsystem] DefaultPlatformService=Steam
-
现在您已经告诉UE4您希望您的应用程序使用Steam在线子系统,您需要通过添加以下设置来配置OnlineSubsystemSteam模块:
[OnlineSubsystemSteam] bEnabled=true SteamDevAppId=480
-
最后,您需要为应用程序的连接指定Net Driver的Steam类:
[/Script/OnlineSubsystemSteam.SteamNetDriver] NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"
最终结果
在本简要指南结束时,您的应用程序的DefaultEngine.ini
文件应该看起来像下面的设置块。如果您想了解其他项目如何设置和使用在线子系统,请参阅我们的示例项目库。
DefaultEngine.ini
[/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
[OnlineSubsystem]
DefaultPlatformService=Steam
[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480
[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"
补充笔记
模块设置
确保包含虚幻引擎Steam模块作为项目的一部分(请参阅虚幻构建系统目标文件 以获取更多帮助)。具体来说,在construtor中添加下面的行mygame.build.cs
应该足以确保Steam模块与您的游戏一起构建。
DynamicallyLoadedModuleNames.Add("OnlineSubsystemSteam");
在Mac上蒸汽覆盖
Mac上的Steam覆盖需要使用Steam客户端启动游戏。为此,首先需要使用“Steam游戏”菜单中的“将非Steam游戏添加到我的书库”选项将游戏添加到图书馆。