-
“赛博朋克 2077”登陆 Mac
深入了解幕后故事,看看“赛博朋克 2077”如何登陆 Mac,为 macOS 上的 3A 游戏体验树立新标杆。探索 CD PROJEKT RED 开发团队如何利用 Apple 强大的硬件、软件和开发工具,将这种高保真体验变为现实。了解如何将类似的技术应用到你的游戏中;以及创新的“针对此 Mac 优化”预设如何自动优化图形设置,在 Mac 全线产品上平衡视觉保真度和帧率。
章节
- 0:00 - Introduction
- 0:44 - What is Cyberpunk 2077
- 2:57 - Why bring it to Mac
- 3:45 - How we brought it to Mac
- 4:50 - Game Porting Toolkit evaluation
- 13:05 - What we did to stand out
- 13:16 - "For this Mac" preset
- 26:59 - Next steps
资源
- Performing your own tone mapping
- Personalizing spatial audio in your app
- Download the Game Porting Toolkit
相关视频
WWDC26
-
搜索此视频…
你好 欢迎! 我叫 Garrett Austin 我是 Apple 游戏性能团队的工程师 今天我请来了一位特别嘉宾 Paweł Sasko CD PROJEKT RED 联合游戏总监 Paweł 将介绍 《赛博朋克 2077 终极版》 这是 Mac 上的非凡成就 它充分利用了 独特的平台功能 并在众多 Mac 设备上 提供出色性能 现在 我请 Paweł 向大家 讲述将游戏移植到 Mac 的历程 以及他们如何让游戏脱颖而出 Paweł? 谢谢 老朋友! 我来和大家分享 将《赛博朋克 2077》 移植到 Mac 的经历
我将先概述 《赛博朋克 2077》本身 介绍我们如何处理 Mac 开发流程 最后分享那些点睛之笔 以及让《赛博朋克 2077》 在 Mac 上大放异彩的亮点 那么《赛博朋克 2077》 是款什么游戏? 这是一款开放世界 RPG 你扮演 V 一名在夜之城中 活动的赛博朋克雇佣兵 玩家探索城市及周边区域 结识各种角色 建立关系 并作出大量决策 其中一些决策会带来 难以预料的后果 这是一款规模庞大的游戏 世界广阔 没有加载画面 需要持续处理大量数据 但从一开始 游戏就被设计为可扩展的 能在各种硬件上运行 这在我们将其移植到 Mac 时 给了很大帮助 时至今日《赛博朋克 2077》 仍是业界基准测试工具 每当有新硬件发布时 都会使用它来测试 这背后有几个原因 夜之城充满了动态元素 人群 交通 AI 物理 动画 任务 以及大量系统交互 都在同时并行运行 这给 CPU 带来了极大压力 《赛博朋克 2077》中 到处都有混合光照 霓虹灯 招牌 水洼 反射面 车头灯 发光灯 体积雾 这些往往同时出现在一个场景中 游戏还支持高级图形模式 如光线追踪和路径追踪 这使游戏对硬件的要求 大幅提升 并与 GPU 性能 高度正相关 你可能知道 我们一直在持续更新 《赛博朋克 2077》 我们推出了终极版 引入了地铁系统 扩展了浪漫情节 车辆自定义 以及更多游戏内容 在开发游戏的过程中 我们始终致力于让游戏 保持新鲜感和吸引力 因此 我们自然也在寻找 其他可以发布游戏的平台 这就引出了下一个问题
我们为什么决定 将《赛博朋克 2077》移植到 Mac 以及为什么现在 是合适的时机? 在 CD PROJEKT RED 我们在 Apple 平台上 有着相当悠久的历史 我们希望延续这一传统 随着 Apple Silicon 的发展 硬件能力已经进化到足够强大 让我们能将《赛博朋克》 规模的游戏带到 Mac 上 不仅仅是让它运行 而是追求真正高品质的体验 有了 Apple Silicon 我们有信心 能交付出一款 我们敢于署名的作品 当然 将游戏带到 Mac 上 也是触达更多玩家的机会 这始终是我们乐于去做的事 一旦我们达成共识 "是的 这值得去做" 下一个问题就是
对于《赛博朋克 2077》在 Mac 上 "做好它"意味着什么? 我们为自己设定了品质标准 主要包含三个方面 维护游戏的视觉保真度 和独特风格是关键 画面 光照 材质 这些都与赛博朋克的 核心身份紧密相连 另一个方面是稳定的性能 在 CPU 和 GPU 高负载的场景下 大量人群 屏幕空间反射 穿越密集区域 战斗 评估各重度场景的性能 以及各区域的表现 确保一切流畅运行 最后但同样重要的是 那些让体验感觉原生的 点睛之笔 我们始终努力将平台能力 发挥到极致 我们希望在 macOS 上 呈现与众不同的体验 让玩家喜爱的 原生功能与行为 在我们开始为《赛博朋克 2077》 在 Mac 上构建原生路径之前
我们使用了 Apple 的 Game Porting Toolkit 在 macOS 上的转译环境中 评估 Windows 构建版本 这让我们在编写任何代码之前 就获得了宝贵的洞察 例如"将《赛博朋克 2077》 移植到 Mac 是否可行 并达到我们为自己 设定的品质标准?" 压力最可能在哪里 CPU GPU 还是某些特定系统? 以及我们应该首先 重点规划哪些领域? 目标不是最终的性能数字 而是获取信息 帧时间花在了哪里 实际游戏过程中 面临哪些性能挑战 以及进入原生阶段后 应该先构建什么
为了让评估数据有价值 我们在评估环境中 执行了一组预定的热点序列 进行测试 每次测试运行时 我们从三个角度查看数据 统计帧时间数据 来自我们引擎内部的性能分析器 以便一致地比较各次运行 Metal HUD 用于关联 场景中的操作 与追踪中看到的内容 加载 Shader 转译 或某些已知事件 如保存游戏 以及按线程分解的 引擎内部性能分析 这样我们就能看到 哪些 CPU 系统在何时处于活跃状态 从而理解热点和峰值 后来 一旦我们有了原生构建 我们就转而使用 Metal HUD 作为 Mac 上 主要的帧时间捕获工具 这让我们能在多台设备上 收集可比较的测量数据 最重要的是 在未启用调试 或性能分析设置的构建版本上进行 从而获取尽可能 可靠的数据 有了这个方法之后 各项信号变得相当清晰 在高规格硬件上 即便在这么早期的阶段 GPU 时间看起来也很健康 这让我们感到 非常惊喜 它足够稳定 可以作为基准线 这表明我们有一条 切实可行的路径 一旦 Metal 渲染管线原生化 就能实现我们的性能目标 在高强度游戏过程中 体验受 CPU 压力影响 例如在城市驾驶场景中 我们能看到最优情况下 GPU 是瓶颈所在 但在热点情况下 CPU 时间急剧上升 当场景中充满交通 人群 和动作时 在这个阶段 我们发现了 几种模式 这些是评估环境 产生的特有现象 一是帧时间的波动 由实时 Shader 转译引起 另一个是我们的音频中间件 在某些场景下看起来负载较重 这两个问题在我们 切换到原生二进制文件后都已解决 Game Porting Toolkit 帮助我们识别了这些问题 因此我们在原生实现阶段 早期就知道要对其进行调查 有了这些信号 我们就能将评估结果 转化为生产路线图 首先是将 Mac 设为真正的目标平台 原生构建 原生库 以及调整后的数据管线 然后我们以构建可运行版本为目标 通过使用 Metal API 构建渲染和 Shader 路径 以及 Metal shader converter 一旦这些就位 剩下的才是最有趣的部分 让它达到发布水准 添加平台原生功能 然后优化性能 并进一步打磨 将 Mac 纳入我们开发管线 作为真正目标平台 有三个核心部分 首先是 macOS 上的原生构建 我们需要使用 macOS 工具链 生成 Apple Silicon 构建 不仅是游戏可执行文件 还包括我们在开发过程中 依赖的开发工具 其次是数据管线 《赛博朋克 2077》内部 已有完整的构建管线 为所有支持的平台配置好了 我们将 macOS 作为 另一个并行平台加入其中 遵循相同的流程 平台特定的输出 例如存档和 Shader 缓存 需要按照这条已有的管线生成 最后是架构桥接 游戏和引擎中积累了多年 针对其他 CPU 架构的假设 因此在流程初期 我们通过单元测试验证了哪些可用 并确定了需要哪些改动 才能让它在 Apple Silicon 上良好运行 完成这一步后 我们继续推进 Shader 管线 一旦我们有了能显示画面的 基本 Metal 路径 Metal shader converter 帮助我们 快速获得广泛的 Shader 覆盖 从而能够渲染有意义的场景 在实践中 我们将 这个过程视为一个循环 将 Metal shader converter 集成到我们的 Shader 构建中 使 Metal Shader 输出作为 正常构建的一部分生成 验证可重复的场景 并查找差异 包括光照响应 材质 和后处理效果 对更少量的高级 Shader 进行精细调整 或处理转换结果与 预期不完全匹配的边缘情况 然后将这个流程作为 构建和测试管线的一部分重复执行 在使用 Metal shader converter 让 Shader 上线的同时 我们也在构建 原生 Metal 渲染基础 我们从单元测试开始 逐步构建 Metal 后端 在增加更多复杂性之前 仔细检查基础输出 一旦基础层稳定 我们就转向游戏内的静态场景 在那里你可以验证 单元测试覆盖得 不够好的部分 光照堆栈 后处理效果 和场景级行为 之后我们进入动态场景 摄像机运动 流式加载 以及游戏过程开始 暴露出真实的边缘情况 当我们实现 光线追踪和路径追踪时 我们在优化性能的同时 验证了 视觉输出与其他平台 保持一致 以保留游戏的 独特风格和视觉效果 一旦原生 Metal 基础稳定 下一个挑战是在不同 Mac 上 扩展性能 MetalFX 超分辨率 正是这一问题的解决方案 简单来说 MetalFX 让你 以较低的内部分辨率渲染 并在更短的时间内 重建出更高分辨率的输出 实际效果非常直接 它在重度场景中 给了我们更多性能余量 而不必全面降低画质 我们还使用了动态分辨率缩放 以帮助在各种 Mac 硬件上 保持稳定的性能表现 作为时序超分辨率技术 它帮助图像在运动中 保持完整性 尤其是在快速移动 和特效密集的场景中 此时 我们在 Mac 上 已经有了完整的游戏 它能在可运行的构建版本上跑起来 渲染效果可以预期 并且可以游玩了 从那时起 你真的需要 问自己 "好了 那么真正让它 准备好发布的是什么?" 对我们来说 还有几个方面 一是默认设置 也就是你第一次启动游戏时 看到的样子 然后是我们如何通过 平台原生功能 让这个版本的游戏与众不同 最后是打磨游戏 以提供出色的整体体验
是时候将我们所构建的一切 转化为 Mac 上真正出众的 首次启动体验了 我们希望每台 Mac 在首次启动时 都能提供出色的性能
这就是"为此 Mac 优化" 预设发挥作用的地方 "为此 Mac 优化"是一种 基于设备的图形预设系统 它会检测你 Mac 上的硬件 并自动为你的设备 配置最佳设置 无论你拥有 哪款受支持的 Mac 启动游戏就能立刻获得稳定 愉快的起始体验
我们的流程从为每款 受支持的 Mac 设备选择设置开始 以维持图像保真度 我们将目标帧率设为 30 或 60 MetalFX 与动态分辨率缩放 配合使用 我们调整了分辨率的 最低和最高边界 以达到目标帧率
"为此 Mac 优化"预设独有的特性 是我们还调整了视频设置 这是我们设置 最终输出分辨率的地方 动态分辨率缩放 在此范围内运作 我们设置了 VSync 以配合目标帧率实现适当的帧节奏 我们还根据显示器的能力 启用了 HDR 然后我们针对每台 Mac 逐一调整游戏中的每项设置 确保它们不仅性能出色 而且画面精美 当玩家下载游戏 并首次启动时 可以放心 游戏已针对 他们特定的 Mac 进行了优化 在我们的调优过程中 真正帮助到我们的是 使用了几个一致的场景 以不同方式对 CPU GPU 和流式加载系统施压 然后我们收集性能数据 调整设置 并在整个产品线上 循环重新验证 直到找到每台 Mac 的理想设置 让我们感到很高兴的是 自《赛博朋克 2077》在 Mac 上发布以来 我们看到其他开发者 开始采用 "为此 Mac 优化"设置 用于他们自己的游戏 我们认为这对整个生态系统 非常有益 看到这一点 我们真的很开心 现在让我们来看看 游戏中的"为此 Mac 优化"
这是"为此 Mac 优化"预设 对于这台搭载 M5 Max 芯片的 MacBook Pro 我使用超高画质预设作为基础 在这里 我可以看到 其余的设置
首先是 MetalFX 超分辨率 配合动态分辨率缩放 目标帧率为 60 渲染分辨率在目标输出分辨率的 50% 到 80% 之间动态调整 然后我可以深入设置 那里有更多微调 对于 M5 Max 我们不需要 太多调整 它是相当强大的芯片
我们还在"为此 Mac 优化"预设中 调整了视频设置 这里的目标是 开启 VSync 锁定 60 FPS 分辨率上限已设置 内置显示器选择了 2336x1460 由于 MacBook Pro 的显示器 支持 HDR HDR 默认开启 HDR 使用 Apple 的 EDR API 自动校准 玩家无需 进入校准页面 这是一个很棒的功能 我稍后会详细介绍 现在 我要进入游戏中 最耗性能的区域之一 是的 这个区域是犬镇的一部分
如果你玩过《幻影自由》你就懂了 我不会在这里剧透故事 但我会进入 黑市区域 这是玩家 第一次真正进入这个空间的时刻 这里的几何体 灯光 反射和角色密度极高 这是整个游戏中 负载最重的区域之一 这再次展示了 我之前提到的 部分品质标准 我们真的希望在 游戏最艰难的场景中 强调帧时间稳定性 当然 在《赛博朋克》中 没有加载界面 你可以以任何方式 穿越各个场景 一切都在流畅地加载和卸载 当我在这里四处走动时 有各种各样的霓虹灯 和光源 这里真的非常密集 但一切都以 60 帧每秒流畅运行 开箱即用的设置下 这两位先生 实际上是我们的创始人 Marcin Iwiński 和 Michał Kiciński 我们的公司起步于一辆面包车 那时他们在 90 年代末的波兰 销售电子游戏 所以我们扫描了他们 并把他们放进了游戏里
在游戏的所有本地化版本中 他们都说波兰语 他们实际上也亲自 参与了配音工作 这只是我们 在这里隐藏的彩蛋之一 好了 我们没有止步于 单纯的设置优化 我们还采用了大量 平台特定功能 涵盖窗口管理和 App 切换 游戏控制器和输入设备 显示和音频 以及让你 随处畅玩的云存档技术 现代游戏与多任务处理 密不可分 玩家在不同场景下游玩 并切换上下文 macOS 可以在这些 情况发生时通知你 我们希望为玩家打造 流畅的系统体验 macOS 以 NSNotification 的形式 广播事件供我们利用 在游戏中响应 NSNotification 事件 帮助我们确保游戏 与系统的原生融合感 能够处理 App 切换 并响应显示器配置变化 我们还降低了游戏在 非焦点状态下的 CPU 和 GPU 活动 接下来 我将带大家了解 其中一些行为 首先 我们降低了游戏 在后台时的活动 当游戏不可见时 我们无需渲染 可以为玩家节省 CPU 和 GPU 资源 为此 我们监听 NSWindowDidChangeOcclusionStateNotification 以了解何时需要检查变化 然后检查 NSWindow 的 occlusionState 来确定 是否应该暂停渲染 或者是否应该 重新开始渲染 接下来是显示设置 玩家在多任务处理时 可能会更改所连接显示器的设置 我们希望确保游戏窗口 能感知这些变化 从而正确填满屏幕 当我们收到 NSApplicationDidChangeScreenParametersNotification 时 我们获取新的屏幕分辨率 并相应地更新游戏窗口 不仅显示设置可以更改 玩家还可能将游戏移动到 一个全新的显示器上 收到 NSWindowDidChangeScreenNotification 后 我们收集关于新显示器的详情 这包括显示器 ID 分辨率 镜像模式和屏幕名称 根据这些信息 我们知道 是否以及如何更新游戏窗口 我们使用自己的光标 以匹配游戏风格 为了打造无缝的系统体验 我们监听两个通知 以便在游戏窗口 失去焦点时管理光标 例如 当我打开游戏覆盖层时 我们的游戏光标消失 系统光标出现 以提供无缝的系统体验 当我关闭游戏覆盖层时 系统光标消失 我们的游戏光标出现 将我们带回游戏中 NSWindowDidResignKeyNotification 是我们的信号 用于显示系统光标 并隐藏游戏光标 相反 NSWindowDidBecomeKeyNotification 是我们的信号 用于隐藏系统光标 并显示游戏光标 除了通知之外 另一个值得关注的是 Game Mode Game Mode 是 Apple 的系统功能 为游戏提供对 CPU 和 GPU 更高优先级的访问 并降低后台任务的影响 从而带来更流畅的体验
它还通过将 Bluetooth 采样率翻倍 提升了无线配件的响应速度 这降低了无线游戏控制器的延迟 以及 AirPods 的音频延迟
好消息是 Game Mode 会为 被归类为游戏的 App 自动启用 被归类为游戏的 App 我们的验证结果表明 玩家确实从中受益 接下来我们来谈谈输入 在 Apple 平台上 Game Controller 框架使我们能 轻松实现对各种第三方控制器的原生支持 支持多种第三方控制器 它还支持高级 控制器功能 如触控板和自适应扳机 这让我们能够轻松地桥接 我们游戏中已有的 这些功能的实现 我们还支持 Apple 的 原生输入设备 Magic Mouse 和触控板 例如 每台 Mac 笔记本电脑 都有触控板 所以要确保你的 控制选项设计 能适应当前的输入方式 在我们的例子中 我们自动检测 并启用切换瞄准 以及鼠标中键的替代方案 通过使用修饰键 加鼠标点击实现
显示器值得单独说说 Apple 的高端显示器是我们见过的 《赛博朋克》运行效果最好的显示器之一 夜之城建立在对比之上 霓虹高光 昏暗巷道 明亮招牌 在 HDR 下看起来令人叹为观止 我们通过 Apple 的 扩展动态范围管线实现了 HDR 它独特地让我们 能够访问 关于显示器的信息 从而自动校准我们的 HDR 呈现 这对玩家来说是极大的便利 他们能获得最佳的 HDR 呈现 而无需手动调整 HDR 设置 在 Apple 显示器的 校准页面上 为了动态校准我们的 HDR 输出 我们只需轮询 maximumExtendedDynamicRangeColorComponentValue 以获取显示器当前的 最大 EDR 值 然后将其传递给我们的色调映射器 这个值可以动态变化 取决于显示硬件的能力 和其他条件 因此使用它来驱动色调映射器 的最大 HDR 输出 始终能在 Apple 显示器上 实现最佳 HDR 渲染效果 我们为具有足够 EDR 余量的显示器 自动启用 HDR 例如 Apple 的 XDR 显示器 为此 我们检查 maximumPotentialExtended- DynamicRangeColorComponentValue 并查看显示器的最大潜在 EDR 值 是否大于 2.0 如果是 我们默认启用 HDR 以提供无缝体验 音频是 Apple 平台 提供特别体验的另一个领域 《赛博朋克 2077》的音景 是为空间音频而设计的 我们得以利用 Apple 的空间音频 API 为使用 AirPods 的玩家 启用头部追踪空间音频 这是一种真正独特的方式 让你进一步沉浸于游戏之中 并且默认启用 无需额外设置 我们的游戏已通过音频中间件 支持空间音频 我们的音频中间件 通过 AVAudioEngine 实现了 Apple 的空间音频 API 我们为 AirPods 启用了头部追踪 通过设置 AVAudioEnvironmentNode 的 listenerHeadTrackingEnabled 属性为 true 最后 我们希望 为玩家减少阻碍 在将我们的游戏 引入新平台时 在 Mac 上 我们支持 iCloud Drive 集成 允许你在 Apple 设备之间 传输存档文件 由于我们有自己内部的 跨平台进度保存方案 玩家可以跨平台 延续他们的存档
可以在任何地方开始 在 Mac 上继续 反之亦然 那么结果如何? 在 Apple Silicon Mac 上 呈现原生的《赛博朋克》体验 以符合我们品质标准的方式 集成了平台功能 以符合我们的品质标准 我们在所有平台上 共售出 3500 万份 《幻影自由》另外 售出了 1000 万份
我们的玩家在 App Store 上 给予了极高的评价 我们对此深表感谢 《赛博朋克 2077 终极版》被评为 Mac 年度游戏 荣获 Apple 2025 年 App Store 大奖 我们对这一认可 感到由衷的感激 这付出了大量心血 但我们真心认为值得 说到底 重要的不是 你投入了多少工作 而是对玩家带来 了什么样的成果 好了 我们现在就说到这里 老朋友 非常感谢! 很荣幸与你们分享这些 谢谢你 Paweł 希望你们喜欢 这次特别演示
如果你感到受到启发 试试 Game Porting Toolkit 的 评估环境 看看你的下一款游戏 在 macOS 上的运行效果 无需编写任何代码 设置快速简便 使用 Metal HUD 在 Game Porting Toolkit 中评估 游戏的性能 然后 通过出色的 首次启动体验让你的游戏脱颖而出 为玩家提供 优化后的设置 并启用原生平台功能 如 EDR 以及 AirPods 的 头部追踪空间音频 查看"用智能编程 加速游戏移植" 了解 Game Porting Toolkit 4 中 全新的智能功能 最后 你可以探索 强大的分析工具 参见"发现并修复 Metal 游戏 中的性能问题" 好了 感谢收看 我们期待在 Apple 平台上 畅玩你们的游戏!
-
-
- 0:00 - Introduction
Garrett Austin (Apple Game Performance) introduces guest Paweł Sasko (Associate Game Director, CD PROJEKT RED) to share how Cyberpunk 2077: Ultimate Edition was brought to Mac with great performance across a wide range of devices.
- 0:44 - What is Cyberpunk 2077
An overview of the game — an open-world RPG set in Night City — and why it remains an industry benchmark: dense scene complexity and streaming, realistic lighting and materials, and demanding ray tracing and path tracing modes.
- 2:57 - Why bring it to Mac
The motivation for the port: CD PROJEKT RED's long history on Apple platforms, Apple silicon hardware maturing enough to hit a serious quality bar, and the opportunity to reach more players.
- 3:45 - How we brought it to Mac
Defining what "doing it properly" means via a three-part quality bar — visual fidelity, stable performance, and native feel — then executing the port: native builds, an adapted data pipeline, an architecture bridge, Metal Shader Converter, the native Metal rendering foundation, and MetalFX Upscaling for scalable performance.
- 4:50 - Game Porting Toolkit evaluation
Using Apple's Game Porting Toolkit to evaluate the Windows build in a translated environment before writing code — gauging feasibility, gathering CPU/GPU pressure signals, and identifying focus areas using profiling data, Metal HUD, and per-thread breakdowns to build a production roadmap.
- 13:05 - What we did to stand out
Turning the working build into a first-launch experience that feels native to macOS — adopting platform features across windowing and app switching, input devices, display, audio, and cloud saves.
- 13:16 - "For this Mac" preset
A device-based graphics preset that detects each Mac's hardware and auto-configures optimal settings — target FPS, MetalFX with Dynamic Resolution Scaling, resolution bounds, V-Sync, and HDR — tuned per device and demoed live in Dogtown.
- 26:59 - Next steps
Recommended actions: try the Game Porting Toolkit evaluation environment, analyze performance with Metal HUD, plan a great first-launch experience, and explore the related "Speedrun your game port with agentic coding" and "Find and fix performance issues in your Metal games" sessions.