PS5 v1 升级至 v2 适配指引
自 V1.32.01 版本起,Player Network SDK 的 PS5 平台默认提供的预编译库已升级为基于 SIE libc++ v2 标准库构建。本次 PS5 适配基于 Prospero SDK 12.000(PS5 SDK 12.0) 完成。已接入的游戏工程升级 SDK 时,需要同步更新 PS5 依赖库及工程配置。
如果项目在当前 Player Network SDK 版本下仍需使用 SIE libc++ v1,请单独联系 Player Network SDK 团队,获取支持 PS5 v1 的专用版本。该版本需单独提供,请勿将本次默认提供的 v2 预编译库直接用于 v1 工程。本文升级步骤针对 v2 版本。
升级前置条件
- 引擎版本:要求 Unreal Engine 5.7 及以上,并使用对应的 PS5 平台扩展。
- 开发环境:本次 Player Network SDK 的 PS5 适配基于 Prospero SDK 12.000;该版本为本次适配基线,不表示 stdlib v2 从 SDK 12 才开始提供。
- 第三方库:PS5 平台使用的所有第三方库必须更新为基于 SIE libc++ v2 构建的版本,包括第三方插件所依赖的库。
- 预编译库:PS5 平台实际链接的所有预编译库必须为 v2 版本,包括
INTLCore.a、其他 SDK / 插件库,以及工程使用的引擎预编译库。不能继续使用旧的 v1 产物。
第三方库与预编译库升级为 v2 是迁移前置条件。仅修改 Target.cs 不会改变已有库的 ABI(二进制接口);混用 v1 库会导致 PS5 编译或链接失败。尚未取得对应 v2 版本的依赖库,需要先向供应方获取,或基于源码重新编译为 v2 版本,再升级接入。
变更原因
SIE libc++ v2 改进了对 C++ 标准的符合性,与 v1 在标准库实现及部分 ABI 上存在差异。Player Network SDK 切换到 v2 后,游戏工程及其依赖库需要同步迁移,确保跨库接口兼容,避免链接符号缺失或运行时异常。
关于标准库由 v1 升级到 v2 的迁移步骤及差异详情,请参考 Sony 官方文档:
- v2 升级指引:C++ Standard Library V2 Migration Guide — PS5 SDK 12.000。
- v1/v2 差异说明:Differences from the v1 Library Due to Compliance with the C++ Standard — PS5 SDK 12.000。
上述 Sony 开发者文档需要 PlayStation 开发者账号权限才能访问,请确保接入方已加入对应的 PS5 开发者计划。
升级步骤
1. 更新 SDK 及 PS5 依赖库
- 使用新版本 Player Network SDK 及对应插件替换工程中的旧版本文件,保留原有业务配置。
- 将 PS5 平台使用的第三方库及预编译库全部更新为 v2 版本,满足上方迁移前置条件。
- 更新工程中的库引用路径,确保实际链接的是新的 v2 产物,避免继续引用旧目录中的 v1 库。
2. 更新游戏工程配置
打开游戏工程的 Source/<你的工程名>.Target.cs,在构造函数中针对 PS5 平台添加以下配置;如工程有多个用于 PS5 出包的 Target,需同步调整。
if (Target.Platform == UnrealTargetPlatform.PS5)
{
CppStandard = CppStandardVersion.Cpp20;
PS5Platform.StandardLibVersion = SceStandardLibVersion.V2;
}
CppStandard = CppStandardVersion.Cpp20:将 C++ 语言标准模式设置为 C++20。PS5Platform.StandardLibVersion = SceStandardLibVersion.V2:选择 SIE libc++ v2 标准库。
两项配置分别控制语言模式和标准库版本。升级时按上述方式设置;仅选择 C++20 并不等于已切换至 v2,也不能仅因未显式写出 Cpp20 就判断 ABI 不匹配。
如果工程已有 PS5 平台分支(例如配置了 bUseStaticCRT、bAllowLTCG),将上述设置合并到已有分支即可。原先针对 PS5 指定的 Cpp17 或更低版本设置需调整为 Cpp20,并避免后续赋值或模块配置覆盖这些设置。
补充:UE 5.7 引擎侧的 PS5 v2 适配
如果项目组使用的 UE 5.7 引擎仍按 v1 配置生成 PS5 产物,无法与本次 v2 SDK 配套使用,需要先完成引擎侧适配。仅在游戏 Target.cs 中选择 v2,不能将已有的 PS5 v1 引擎预编译库转换为 v2。
对于已包含 v2 支持、但默认标准库配置仍为 v1 的 UE 5.7 编译引擎,按以下方式修改引擎源码:
- 引擎内相对路径:
Engine\Platforms\PS5\Source\Programs\UnrealBuildTool\UEBuildPS5.cs。 - 以引擎安装在
D:\5.7.4为例,完整路径为:D:\5.7.4\Engine\Platforms\PS5\Source\Programs\UnrealBuildTool\UEBuildPS5.cs。
- 打开上述文件,定位
StandardLibVersion的默认配置,将标准库版本设置为 v2,对应枚举值为SceStandardLibVersion.V2。具体声明位置以所用 UE 5.7 分支为准。 - 重新编译 UnrealBuildTool,使引擎侧配置生效,并按 v2 配置重新生成所需的 PS5 引擎产物。仅重新编译 Windows 编辑器或 UnrealBuildTool,不会转换已有的 PS5 预编译库。
- 如果向项目组分发预编译引擎(Installed Build),更新其中的 PS5 引擎库及对应构建工具;开发机与 CI 应使用同一套更新后的引擎。
- 游戏工程继续保留前述
Target.cs中的 C++20 和 v2 配置,并使用 v2 版本的 SDK、插件及第三方库,确保引擎与项目的配置、产物一致。
本节用于补齐引擎侧的 PS5 v2 适配,不是游戏工程配置的替代方式。如果所用 PS5 平台扩展本身缺少 v2 支持(例如没有对应枚举或工具链处理逻辑),应先更新至配套的、支持 v2 的平台扩展,不能仅靠修改编译引擎的默认值补齐该能力。
注意事项
- 此次调整仅针对 PS5 平台,其他平台(Windows / XSX / Switch / WinGDK 等)无需添加上述配置。
- 更新 SDK、更新所有 PS5 第三方库及预编译库、修改工程配置三项操作缺一不可。不能通过修改库文件名或仅调整 Target 配置将 v1 预编译库转换为 v2。
- 如果项目直接操作 STL 内部结构,或在跨库接口中传递字符串、容器等 C++ 对象,应对照 Sony 官方迁移文档处理相关实现差异。
- 若后续 Player Network SDK 再次调整 PS5 标准库或工具链版本,将在版本更新说明中单独公告。