UE4.27配置Steam为DefaultPlatformService后无法创建在线会话求助
UE4.27 Steam在线会话创建失败解决方案
报错信息:STEAM: Failed to Initialize game server with Steam!! - No session created
以下是适配UE4.27版本的针对性修复步骤:
- 适配新版本Steam SDK的项目构建配置
UE4.27内置的Steam SDK版本从4.26的1.48升级到了1.51,需要先在项目的Source/[项目名].Build.cs中确保正确引入依赖模块,参考配置如下:
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "OnlineSubsystem", "OnlineSubsystemSteam" }); PrivateDependencyModuleNames.AddRange(new string[] { "OnlineSubsystemUtils" });
- 补充DefaultEngine.ini的Steam配置项
除了已设置的DefaultPlatformService=Steam外,需要在Config/DefaultEngine.ini中新增4.27要求的额外参数:
[OnlineSubsystem] DefaultPlatformService=Steam [OnlineSubsystemSteam] bEnabled=true SteamDevAppId=480 bInitServerOnClient=true bAllowP2PPacketRelay=true P2PConnectionTimeout=90 [/Script/OnlineSubsystemSteam.SteamNetDriver] NetConnectionClassName=OnlineSubsystemSteam.SteamNetConnection
如果是正式发布的项目,将SteamDevAppId替换为你在Steamworks后台申请的正式AppID,测试阶段可以用Steam提供的测试AppID 480。
- 修正会话创建调用的参数
不要依赖CreateSession接口的默认参数,显式指定非局域网会话属性:- 调用CreateSession时将
bIsLAN参数强制设为false - 公共连接数
NumPublicConnections不要超过32(Steam默认免费版会话最大支持人数上限) - 不要在UE编辑器内启动测试,打包后将
steam_appid.txt(内容为你的AppID,测试阶段填480)放在exe同级目录,单独启动exe测试,编辑器默认会占用UE的官方Steam AppID,无法正常初始化自定义游戏会话
- 调用CreateSession时将
- 排查网络与客户端环境
- 测试前确保Steam客户端处于正常登录状态,没有切换到离线模式,SteamOverlay处于开启状态
- 关闭系统防火墙或者放行Steam和游戏程序的网络权限,开放UDP 27015~27030端口的出入站规则
- 确认当前登录的Steam账号没有被VAC封禁,测试阶段不要使用共享账号或者家庭组授权的小号启动游戏
内容的提问来源于stack exchange,提问作者Siddharth Shekar
相关产品推荐
相关产品推荐

