游戏上架 Steam 必须要接入 SteamSDK,本篇文章简单介绍一下在 UE4 中接入SteamSDK 的方法,后续与接入 Steam 平台服务相关的内容也会放到这篇文章中。
SteamSDK 的接入可以使游戏与 Steam 的社区整合,Steam 拥有很好的社区生态,这一点是 Epic 刚出的 Epic Games Store 目前比不了的~(当然我是支持市场竞争的。
废话不多说,首先,检查引擎目录下:
1
| Engine\Binaries\ThirdParty\Steamworks\Steamv139
|
该目录下是否有 Win32
/Win64
文件夹,以及其中是否具有以下几个文件:
1
| steam_api.dll steamclient.dll tier0_s.dll vstdlib_s.dll
|
如果没有可以从 Steam 的安装目录拷贝过来。
之后打开项目,打开Plugins
- Online Platfrom
,确保启用以下三个插件:
- Online Subsystem NULL
- Online Subsystem Steam
- Online Subsystem Utils
打开项目的 *.target.cs
文件,加入bUsesSteam = true;
:
1 2 3 4 5 6 7 8 9 10 11 12
| using UnrealBuildTool; using System.Collections.Generic;
public class SanguoWarriorsTarget : TargetRules { public SanguoWarriorsTarget(TargetInfo Target) : base(Target) { Type = TargetType.Game; bUsesSteam = true; ExtraModuleNames.AddRange(new string[] { "SanguoWarriors" } ); } }
|
打开项目的*.build.cs
,额外添加 OnlineSubsystem 的模块依赖:
1 2 3 4 5 6 7 8 9 10 11
| PublicDependencyModuleNames.AddRange( new string[] { "OnlineSubsystem", "OnlineSubsystemUtils", });
PrivateDependencyModuleNames.AddRange( new string[] { "OnlineSubsystem", "OnlineSubsystemUtils" });
|
打开项目目录下的 Config/DefaultEngine.ini
,加入(或编辑) 以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13
| [/Script/Engine.Engine] !NetDriverDefinitions=ClearArray +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")
[OnlineSubsystem] DefaultPlatformService=Steam PollingIntervalInMs=20
[OnlineSubsystemSteam] bEnabled=true SteamDevAppId=480 GameServerQueryPort=27015 bRelaunchInSteam=false
|
注意修改 SteamDevAppId 项为你自己的 Steam 内容的 AppID.
上面的操作完毕之后,打开 Steam(必须启动 Steam 才可以在游戏中使用 Shift+Tab
) 唤出 Steam 的界面。
然后可以使用 Standalone
模式运行游戏,进入游戏后按下 Shift+Tab
如果可以唤出 Steam,即为成功。
如果日志中出现这样的警告:
1 2 3 4 5 6 7 8 9 10 11 12
| [2019.03.18-06.02.22:971][186]LogOnline: Warning: STEAM: Steamworks: SteamUtils() failed! [2019.03.18-06.02.22:971][186]LogOnline: Warning: STEAM: Steamworks: SteamUser() failed! [2019.03.18-06.02.22:972][186]LogOnline: Warning: STEAM: Steamworks: SteamFriends() failed! [2019.03.18-06.02.22:972][186]LogOnline: Warning: STEAM: Steamworks: SteamRemoteStorage() failed! [2019.03.18-06.02.22:973][186]LogOnline: Warning: STEAM: Steamworks: SteamUserStats() failed! [2019.03.18-06.02.22:973][186]LogOnline: Warning: STEAM: Steamworks: SteamMatchmakingServers() failed! [2019.03.18-06.02.22:973][186]LogOnline: Warning: STEAM: Steamworks: SteamApps() failed! [2019.03.18-06.02.22:973][186]LogOnline: Warning: STEAM: Steamworks: SteamNetworking() failed! [2019.03.18-06.02.22:974][186]LogOnline: Warning: STEAM: Steamworks: SteamMatchmaking() failed! [2019.03.18-06.02.22:974][186]LogOnline: Display: STEAM: OnlineSubsystemSteam::Shutdown() [2019.03.18-06.02.22:975][186]LogOnline: Warning: STEAM: Steam API failed to initialize! [2019.03.18-06.02.22:975][186]LogOnline: Display: STEAM: OnlineSubsystemSteam::Shutdown()
|
这是因为启动游戏时,没有打开 Steam,先启动 Steam 再启动游戏即可。
打包需要注意的事情:
使用 Shipping 模式打包,打包完成后在打包输出的 $ProjectName\Binaries\Win64 下新建文件 steam_appid.txt,将你的 AppID 填入其中即可(如 480(Steam 的测试 AppID))。
外部资料