查看: 1579|回复: 0

Steam在线子系统Online Subsystem Steam

[复制链接]

835

主题

878

帖子

3616

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3616

最佳新人

发表于 2019-1-12 11:52:52 | 显示全部楼层 |阅读模式
在线子系统Steam

通过Online Subsystem Steam API,您可以将虚幻引擎4(UE4)应用程序发送到Valve的Steam平台。 Steam模块的主要目的是帮助您向Steam用户分发具有一系列功能(例如配对和排行榜)的应用程序。此外,Steam模块实现了在线子系统公开的几个接口,支持Steamworks软件开发工具包(SDK)提供的大部分功能。

一些可用的Steam接口包括:

    配对(Lobbies和GameServer API)

    排行榜

    成就

    语音

    UserCloud

    SharedCloud

    外部UI

请参考我们的在线子系统Steam API参考,以获取当前可用的Steam接口的更完整列表。
满足Valve的要求

Steam子系统需要通过Valve Steamworks进行额外设置。在与UE4一起使用Steam之前,请联系Valve并参考他们的Steamworks SDK文档,以确保您的应用程序符合Valve的要求。
下载Steamworks

如果您的应用程序符合Valve的要求,请继续下载最新版本的Steamworks SDK。 SDK需要解压缩并复制到/ YourUnrealEnginePath / Engine / Source / ThirdParty / Steamworks / Steam [当前版本] / sdk


如果您要更新项目的Steamworks SDK,请确保更新项目的Steamworks路径中的[当前版本]:
/ YourUnrealEnginePath / Engine / Source / ThirdParty / Steamworks / Steam [当前版本] / sdk
您还需要更新位于项目目录中的Steamworks.build.cs。

SteamworksCSFile.png

在此示例中,[当前版本]的格式为v139。

编译UE4

如果您从源代码编译虚幻引擎4,则应采取以下步骤:

    1 打开“OnlineSubsystemSteamPrivatePCH.h”(位于“.. \ .. \ Plugins \ Online \ OnlineSubsystemSteam \ Source \ Private \”),您可以在其中找到以下代码行,定义Steamworks SDK的根位置:

  1. #define STEAM_SDK_ROOT_PATH TEXT("Binaries/ThirdParty/Steamworks")
复制代码


您需要修改要阅读的行:
  1. #define STEAM_SDK_VER TEXT("Steam[Current Version]")
复制代码


设置Steamworks SDK

对引擎的预编译版本使用Steam应该只需要将Valve的SDK中的一些动态链接库(* .dll)复制到相应的文件夹中。 如果您打算针对源重新编译引擎,则还需要将SDK放在正确的位置。 现在,将相关的可再发行文件从SDK的/ redistributable_bin /目录复制到以下位置:

您可以在Steam客户端目录中找到一些64位库(在撰写本文时,Valve未包含SDK中的所有库)。

/ YourUnrealEnginePath / Engine / Binaries / ThirdParty / Steamworks / Steam [当前版本] / Win64

    steam_api64.dll

    steamclient64.dll

    tier0_s64.dll

    vstdlib_s64.dll

/ YourUnrealEnginePath / Engine / Binaries / ThirdParty / Steamworks / Steam [当前版本] / Win32

    steam_api.dll

    steamclient.dll

    tier0_s.dll

    vstdlib_s.dll

Steam App ID

所有使用Steam在线子系统的游戏都必须具有有效的应用程序ID,因为如果Steamworks API不知道您的应用程序的Steam App ID,则不会初始化。在初始化Steam之前,UE4将生成steam_appid.txt(在正常关闭引擎期间,UE4将删除此文件)。请务必注意,steam_appid.txt必须与应用程序的可执行文件位于同一目录中,因为Steam将在当前工作目录中查找文本文件。此外,该文件不应包含在任何Steam图像中。

如果您打开steam_appid.txt,您将看到一个SteamDevAppId条目,该条目将您的应用程序的ID提示为Steam。这使得不必使用Steam客户端启动游戏(尽管它必须运行)。

如果要测试应用程序,可以使用480的SteamDevAppId,这是所有开发人员共享的测试应用程序ID。 虽然您可以使用上述测试应用程序ID测试大多数Steam接口,但您的应用程序在发布之前需要一个Steam App ID。

打包构建

在打包版本中,引擎将检查以确保登录用户正确订阅游戏,并且如果引擎的测试返回false则将关闭(这是帮助确保游戏安全的一种方法)。 此外,使用Steam DRM(请参阅Steamworks SDK)可以进一步防止游戏被篡改。
配置应用程序的设置

如果您使用虚幻项目浏览器创建新项目,则DefaultEngine.ini中不应存在联机子系统设置;
但是,如果您要修改我们的一个示例项目,则可能已存在联机子系统设置。

现在您已经为您的应用程序设置了Steamworks SDK(以及设置Steam App ID),您已准备好配置应用程序的设置以使用Online Subsystem Steam。

步骤

    1 打开项目的DefaultEngine.ini文件并添加以下设置:

  1. [/Script/Engine.GameEngine]
  2. +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
复制代码


NetDriverDefinitions描述了UE4可用的网络驱动程序,其中定义了以下属性:

     DefName是此网络驱动程序定义的唯一名称。
     DriverClassName是主网络驱动程序的类名。
     如果主网络驱动程序类无法初始化,则DriverClassNameFallBack是回退网络驱动程序的类名。

2要告知UE4使用Online Subsystem Steam,请添加以下设置:
  1. [OnlineSubsystem]
  2. DefaultPlatformService=Steam
复制代码


3现在您已告知UE4您希望应用程序使用Steam在线子系统,您需要通过添加以下设置来配置OnlineSubsystemSteam模块:

  1. [OnlineSubsystemSteam]
  2. bEnabled=true
  3. SteamDevAppId=480
复制代码


4最后,您需要为应用程序连接的Net Driver指定Steam类:

最终结果

在本简要指南的最后,您的应用程序的DefaultEngine.ini文件应如下所示。 如果您想了解其他项目如何设置和使用在线子系统,请参阅我们的示例项目库。

完成设置

DefaultEngine.ini

  1. [/Script/Engine.GameEngine]
  2. +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

  3. [OnlineSubsystem]
  4. DefaultPlatformService=Steam

  5. [OnlineSubsystemSteam]
  6. bEnabled=true
  7. SteamDevAppId=480

  8. [/Script/OnlineSubsystemSteam.SteamNetDriver]
  9. NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"
复制代码


Steam在线验证

Steam具有一个特殊的身份验证系统,可以控制对平台提供的一些独特的服务器相关功能的访问,例如广告服务器和播放器计数,检索和响应禁止列表(发布者和Valve Anti-Cheat禁令)以及执行许可证检查。 虚幻引擎4提供了通过FOnlineAuthSteam类与此功能进行交互的功能。 一旦您的应用程序设置为使用Steam在线子系统,就可以通过启用SteamAuth数据包处理程序组件来利用这些功能。
启用SteamAuth

要启用SteamAuth,请将以下内容添加到“DefaultEngine.ini”,或添加到特定于平台的引擎.ini文件(例如“WindowsEngine.ini”,“LinuxEngine.ini”或“MacEngine.ini”)中。 旨在支持Steam在线身份验证:

  1. [PacketHandlerComponents]
  2. +Components=OnlineSubsystemSteam.SteamAuthComponentModuleInterface
复制代码


启用后,Steam在线子系统接口(SteamOSS)功能GetAuthInterface可用于访问SteamAuth功能。
启用S​​teamAuth将导致应用程序为所有加入的玩家运行身份验证过程(针对Steam服务)。默认情况下,SteamAuth会踢掉未通过此检查的玩家,但可以覆盖此行为。
SteamAuth代表

SteamAuth系统中有两个代理,开发人员可能希望覆盖它们:OverrideFailureDelegate和OnAuthenticationResultDelegate。

当玩家尝试在没有Steam身份验证的情况下加入服务器,或者当该玩家在会话期间丢失Steam身份验证时,OverrideFailureDelegate调用玩家的FUniqueNetId。默认情况下,SteamAuth会从游戏中踢出玩家。但是,如果绑定了此委托,则默认行为将被暂停,因此如果仍需要该行为,开发人员将不得不手动踢掉。

OnAuthenticationResultDelegate处理来自Steam的身份验证服务的响应,提供播放器的FUniqueNetId和指示身份验证尝试是否成功的布尔值。
补充说明
模块设置

确保将虚幻引擎Steam模块包含在项目中(有关其他帮助,请参阅UnrealBuildTool目标文件)。具体来说,在mygame.build.cs的construtor中添加以下行应该足以确保Steam模块与游戏一起构建。

  1. DynamicallyLoadedModuleNames.Add("OnlineSubsystemSteam");
复制代码

游客,如果您要查看本帖隐藏内容请回复



关注galaxixv,官方微信公众号。
GALAXIX UE4 讨论学习群 140439020
UE4精英学习群  12762592
UNITY学习群   194092348
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


快速回复 返回顶部 返回列表