规划你的游戏

如果你是初次为 Apple 平台开发游戏的新手,请花点时间熟悉入门所需的工具和技术。Apple 为你提供所需的硬件、图形、音频、社交游戏以及开发和分发工具,助你在 Apple 平台上打造新一代游戏。

含有游戏新创意的故事板。

    轮到你出彩了

    Apple SDK 提供了为所有 Apple 平台打造精彩游戏所需的一切。该 SDK 包含各种 API,无论是强大的 GPU 加速图形,还是游戏手柄集成,甚至令人沉浸的空间音频,都可以通过这些 API 轻松实现。

    创建高性能的冒险、赛车和动作游戏

    使用硬件加速的 3D 图形、触觉和声音反馈以及空间音频,构建令玩家身临其境的动作类游戏。支持热门的游戏手柄、赛车游戏方向盘以及设备特定的触控和动作功能。

    创建益智和策略游戏

    使用标准控件打造游戏界面,绘制你自己的 2D 视图,并制作硬件加速动画。让 GPU 承担处理大型数据集和大量计算的任务。

    创建多人游戏

    通过 Game Center 添加匹配、查找朋友、语音聊天和其他社交游戏功能。使用排行榜、成就和挑战来鼓励竞争。让玩家能够使用同播共享功能,通过 FaceTime 通话与亲朋好友一起开始畅玩你的游戏。

    虚拟与现实世界相融合

    在 visionOS 中,将游戏的图形和空间音频与玩家的真实世界相结合,呈现在 3D 空间中,并根据玩家选择的沉浸程度进行调整。驾驶宇宙飞船穿过墙上的洞,或者将你的 2D 棋盘游戏投影到玩家的桌上。

    在所有设备上顺畅运行

    将你的游戏数据存储在 iCloud 中,以便玩家可以在任何 Apple 设备上继续玩游戏。调整 iOS 游戏,使其同样可以在 iPadOS 和 macOS 中运行。在游戏的不同 Apple 平台版本之间轻松共享代码。

    从何处着手

    Xcode 着手,便可以利用 Apple 技术开发游戏。Xcode 是 Apple 的集成式开发环境,包含代码编辑器、调试工具、设备模拟器、图形性能和分析工具以及平台 SDK。

    Mac App Store 下载 Xcode

    Xcode 包含适用于 iOS、iPadOS、macOS、Apple tvOS、visionOS 和 watchOS 的 SDK。

    首先创建 Xcode 项目,然后选择平台、“Game”(游戏) 模板以及你要使用的游戏技术 (例如 Metal)。如果你更喜欢通过 C++ 来使用 Metal,或者有 Unity™ 项目,请参阅下方的“将现有游戏移植到 Apple 平台”。

    针对 Apple 平台进行设计

    优秀的游戏会融合其运行设备的独有特征和功能。玩家玩游戏时,可能正在旅行途中、坐在办公桌前、在沙发上放松或者站在客厅里,请考虑这些情况。尽可能让玩家能够使用多点触控手势和语音控制功能来与游戏交互。充分利用高分辨率显示屏、Apple 芯片、外置游戏手柄、耳机和扬声器。在 visionOS 中,实现透视效果、根据玩家的周围环境调整音频、处理触碰事件并添加自定手势。如需平台特定的设计指导,请参阅《人机界面指南》的“平台”部分

    创建绚丽的图形

    利用 Metal 充分发挥玩家强劲的 Apple 硬件提供的图形性能。Metal 在所有 Apple 平台上提供支持硬件加速 2D 和 3D 图形功能的低级别 API,以及专为 Apple 芯片设计的强大功能。

    向 GPU 提交工作。要在设备的图形处理器 (GPU) 上执行命令,请创建一个命令缓冲区,向其中写入命令,然后将缓冲区提交到命令队列。如需了解更多信息,请参阅“GPU 设备和工作提交”

    将资源流化到 GPU。通过异步方式将资源数据流化到纹理和缓冲区,从而更快地载入图形资源。如需了解更多信息,请参阅“资源载入”

    Macbook Pro 的截屏,屏幕上打开了视频游戏“Stray”

    通过画质提升功能实现性能提速。使用高性能时间性抗锯齿或空间画质提升功能来提高 3D 场景的性能。与直接渲染图像相比,使用 MetalFX 框架可以在更短的时间内将低分辨率图像提升为高分辨率图像。

    使用针对每个 GPU 系列进行调节的着色器。使用 Metal Performance Shaders 框架向图像应用高性能滤镜,乘以矩阵和矢量。

    在 GPU 上运行计算。计算通道 (在 GPU 的多个核心上与渲染通道 并行运行) 进行编码,这样一来,计算便不会影响图形渲染。如需在 GPU 上实现光线追踪,请参阅“使用 Metal 加速光线追踪”

    如需查找你想要实现的功能的有效代码,请参阅“Metal 示例代码库”

    提升图形质量和性能

    使用一套功能强大的 Metal 开发工具,帮助你打造快速高效的游戏。

    查找并修复 Metal API 问题。在 Xcode 中运行游戏,以验证你的 Metal 代码并捕捉着色器执行错误。如需了解更多信息,请参阅“验证 App 的 Metal API 使用情况”“验证 App 的 Metal 着色器使用情况”

    调试和剖析游戏。使用 Metal 调试器 调查视觉构件并优化 GPU 性能。采集你的 Metal 工作负载,并使用“Performance”(性能) 时间线 查看 GPU 执行性能。采集 Metal 工作负载后,使用着色器调试器 调查其中的视觉构件。

    Xcode 的截屏,通过 Metal 调试器的“Performance”(性能) 时间线显示了 GPU 追踪情况。 Xcode 的截屏,通过 Metal 调试器的“Performance”(性能) 时间线显示了 GPU 追踪情况。

    修复图形中断或卡顿问题。要分析游戏帧率低的问题,请使用 Instruments 中的“Game Performance”(游戏性能) 模板,该模板整合了线程和系统调用信息以及 Metal System Trace 工具。如需了解更多信息,请参阅“分析 Metal App 的性能”

    优化内存使用。使用 Instruments 剖析工具可让游戏保持较少的内存占用,并提高游戏的帧率。如需了解更多信息,请参阅“剖析和优化游戏的内存”

    实时分析性能。在游戏上叠加 Metal 性能 HUD,以实时查看 CPU 和 GPU 指标。如需了解更多信息,请参阅“监控 Metal App 的图形性能”

    制作出色的配乐

    添加声音效果和音乐,为游戏中的动作场景锦上添花,从而提高玩家参与感和游戏真实感。

    添加音频、声音和音乐。要播放音频、控制摄像头和处理音频,请使用 AVFoundation。要配置语音聊天或将音频与其他源混合,请使用 AVAudioSession。要控制播放,请使用 AVAudioPlayerAVAudioEngine。要播放资料库中的音乐,请使用 Media Player。要直接与音频硬件交互,请使用 Core Audio

    将空间音频集成到场景中。使用 PHASE (物理音频空间化引擎) 框架打造更逼真、更令人身临其境的音频体验,实时响应游戏中的事件和场景。PHASE 可在多个平台和输出设备 (例如耳机和扬声器) 之间提供一致的空间音频 体验。

    添加触感反馈

    使用 Core Haptics 整合触觉和音频反馈,在 iPhone 和 Apple TV 上通过实际接触的方式吸引玩家。要吸引玩家的注意力并促使他们采取行动,可以针对瞬时事件 (例如切换开关) 或连续性事件 (例如铃声的振动和声音) 打造自定触感体验。要通过游戏手柄提供触感反馈,请参阅下方的“支持输入设备”。

    支持输入设备

    使用 Game Controller 框架,让玩家以更自然的方式与游戏交互。

    • 支持第三方游戏手柄、游戏摇杆、赛车方向盘以及鼠标和键盘。
    • 在移动设备上叠加虚拟手柄,以模拟实际手柄。
    • 通过实际手柄播放轰隆声和提供触感反馈。如需了解更多信息,请参阅“GCDeviceHaptics”“游戏手柄中的改进功能”

    如果你的游戏支持手柄,App Store 会向游戏添加游戏手柄标志。

    面向 Apple 芯片调节图形密集型游戏

    充分利用强大的 Apple 芯片 GPU。

    构建适用于 Apple 芯片的代码。使用虚拟内存页面大小、缓存线大小、可变参数函数、同时为可写和可执行的内存等。如需了解更多信息,请参阅“在 macOS 代码中解决架构差异”

    更新 CPU 线程优先级。除了使用 POSIX 线程优先级和调度策略外,还可以使用 Grand Central Dispatch (GCD) 管理线程调度和保持系统快速响应,并使用服务质量 (QoS) 给线程附加语义。如需了解更多信息,请参阅“面向 Apple 芯片调节代码的性能”

    借助 Neon 实现性能提速。Neon 指令集提供单指令多数据 (SIMD) 操作,以提示 ARM 处理器的性能速度。要在 Apple 平台上使用开源 Neon 资料库,请参阅“SSE2Neon” 和“AVX2Neon”

    优化 GPU 性能,提高 GPU 效率。编写使用 GPU 功能 (例如图像块、分块着色和光栅顺序组) 的 Metal 代码。如需了解更多信息,请参阅“针对 Apple GPU 和基于图块的延迟渲染量身定制 App”

    为 visionOS 构建空间计算游戏

    思考如何修改代码,以便在 visionOS 上打造令人身临其境的出色体验。

    将虚拟物体融入现实世界

    使用 RealityKit 创建虚拟物体,以逼真的方式与周围现实世界中的物体相融合。

    在共享空间中,RealityKit 会将玩家房间的真实光照应用到你创建的物体上。RealityKit 还会应用其他效果来让虚拟物体更加逼真,例如深度减轻、近场光晕渐变、透视,以及虚拟物体位于真实物体附近时的地面阴影等。

    你可以使用内置的基于物理的渲染 (PBR) 着色器,也可以创建自定着色器并在 Reality Composer Pro 中进行编辑。你还可以应用自己的自定光效。如需了解更多信息,请观看“认识 Reality Composer Pro”

    在无限的 3D 空间中渲染场景

    你需要为设备提供模型、纹理和着色器,由设备为每只眼睛渲染场景。如果你想提供完全令人沉浸其中的游戏,让玩家置身于不同的场景中,请使用 RealityKitSwiftUI 和 ARKit

    如果需要直接控制 GPU 以实现高性能图形,请使用 Compositor Services 访问 Metal,由你自己为每只眼睛渲染场景。然后使用 ARKit 进行现实场景追踪 和手势追踪。如需了解更多信息,请观看“探索如何使用 Metal 打造沉浸式 App”

    要让 2D 游戏适应 3D 空间,可以考虑在单独的图层中渲染物体以添加视差效果,并让元素出现在平面之外,例如产生烟雾或火花等。如需了解更多信息,请观看“设计空间用户界面”

    要将你的内容锚定到现实世界 (包括玩家的双手),请使用 RealityView

    通过引人入胜的音频增强体验

    要在 3D 空间中栩栩如生地呈现你的物体,可以通过 RealityKit 在场景中的特定实体上播放音频。RealityKit 会自动匹配混响和现实世界的声学效果。对于“制作出色的配乐”中提到的使用其他 API 制作的音频,你可以使用 ARKit queryPose(atTimestamp:) 方法实现头部追踪功能,从而获取玩家的头部位置。如需了解更多信息,请观看“探索沉浸式声音设计”

    为眼睛和手设计交互

    将玩家的眼睛、手和头部姿势用作输入设备,充分调动他们的积极性。

    在 SwiftUI 中,让玩家伸出手去选择或拖动物体。使用 CollisionComponent 定义物体的形状,并使用 InputTargetComponent 将它们标记为可交互的对象。

    要通过玩家的双手创建自定手势,请使用 ARKit 追踪手部并获取房间的虚拟网格。使用 ARKit 找到水平和垂直表面,甚至获取这些表面的材料,例如地毯或木头。如需了解更多信息,请观看“空间输入设计”“了解 ARKit 在空间计算中的应用”

    对于传统游戏,玩家可以在全空间运行模式下使用游戏手柄或键盘,因为透视效果能让玩家看到他们所持的设备。

    将游戏移植到 visionOS

    通过使用间接和直接手势,现有的 iPad 和 iPhone 游戏可以在设备上的窗口中自动运行。要添加立体效果并充分利用设备功能,例如使用手势输入和各种效果,以便在 3D 空间中增强 2D 游戏,请使用 RealityKit 针对空间计算设计游戏。

    对于现有的 Unity VR 游戏,请观看“为 Unity VR App 带来完全令人沉浸其中的体验”“打造引人入胜的 Unity App”

    要开始构建游戏,请通过 RealityKit 模板创建一个 visionOS 游戏,然后在 Apple Vision Pro 模拟器中运行该游戏。如需了解更多信息,请观看“开始构建用于空间计算的 App”“为空间计算制作精彩的游戏”

    将现有游戏移植到 Apple 平台

    Apple 提供适当的支持和工具,可协助你将现有游戏移植到 Apple 平台。

    评估 Windows 内容在 Apple 芯片上的可执行情况。如果要将 Windows™ 游戏移植到 Mac,请在不修改游戏的情况下,在搭载 Apple 芯片的 Mac 上测试游戏图形和性能。如需了解更多信息,请观看“将游戏移植到 Mac:制定有效的游戏计划” 并下载游戏移植工具包

    在基于 Unity 的游戏中使用 Apple 技术。在 Unity 项目中使用 Apple Unity 插件,以访问 GameKit、Core Haptics、PHASE、Accessibility 和 Game Controller 框架。

    搭配使用 C++ 和 Metal。如果你现在已有 C++ 代码,可以继续将它与 Metal 搭配使用。Metal-cpp 可让你从 C++ 访问 Metal API,无需另外使用 Objective-C 或 Swift 文件。如需了解更多信息,请参阅“Metal-cpp 入门”

    将着色器代码转换为 Metal。使用 Metal 着色器转换器将 DirectX Intermediate Language (DXIL) 转换为你添加到 Xcode 项目中的 Metal 资料库,从而节省时间。如需了解更多信息,请观看“将游戏移植到 Mac:编译着色器” 并下载 Metal 着色器转换器

    转换游戏资源。如果你有 Windows 资源创建管道,请使用适用于 Windows 的 Metal 开发者工具 将你的资源移至 Apple 平台。使用 Metal 编译器来编译图形和计算着色器,并使用纹理转换工具将纹理转换为 Metal 支持的格式。

    构建社交网络

    使用 Game Center,充分利用 Apple 提供的服务来实现社交游戏体验和存储游戏数据。Apple 让玩家能够相互分享内容、充分互动,通过这种自然的方式帮助你推广游戏。

    提升游戏曝光度和玩家参与度。启用 Game Center (Apple 的社交游戏网络),让新玩家更容易在 App Store 上以及通过朋友发现你的游戏,并让现有玩家继续享受游戏乐趣。

    多个 iPhone 和 iPad 截屏的合成图像,显示了 App Store 和游戏中的 Game Center。

    激励玩家并鼓励竞争。要通过朋友活动提高玩家愉悦度并推广你的游戏,请使用 GameKit 框架添加 Game Center 社交游戏功能。

    • 使用成就、排行榜和挑战来保持玩家的参与度。
    • 让玩家能够查看他们的 Game Center 活动,并在游戏中邀请朋友玩游戏。
    • 访问玩家的朋友列表,为朋友打造在游戏中互动的新方式。

    保存游戏和玩家数据。使用 GameKit 或 CloudKit 将玩家的游戏数据存储到他们的 iCloud 账户中,让玩家能够继续在多台设备上玩游戏。此外,还可以将游戏数据存储在游戏的私有 iCloud 容器中,或存储在所有玩家均可访问的公共 iCloud 容器中。

    提供熟悉的多人游戏体验。使用 GameKit 的匹配和通信 API 可以轻松添加多人游戏功能。

    • 展示将玩家与其他玩家进行匹配的界面,并快速开始游戏。
    • 使用特定于游戏的匹配规则创建更好的匹配。
    • 当玩家执行操作和轮换时,在玩家之间发送匹配数据。
    • 在实时游戏中添加通信功能,并在回合制游戏中添加交流功能。
    • 让朋友能够使用同播共享功能通过 FaceTime 通话参与群组活动。

    如需了解更多信息,请参阅“寻找多个玩家畅玩游戏”

    捕捉和重播游戏内容。使用 ScreenCaptureKit 框架为 macOS 游戏添加屏幕共享或游戏流化功能。ScreenCaptureKit 能够以最小的 CPU 和 GPU 开销录制你指定的窗口、App 和显示屏的视频和音频。

    分发游戏

    通过 App Store,你可以轻松地在所有 Apple 平台上将游戏分发给全球数亿用户。App Store 可以处理顾客付款、提供安全可靠的下载、管理发布内容并帮助你推广游戏。

    通过 App Store 分发游戏。加入 Apple Developer Program,然后使用 Xcode 上传构建版本。使用 App Store Connect 配置游戏类功能,分发你的游戏以进行 Beta 版测试,然后将构建版本提交至 App Review。

    缩减下载内容的大小。App Store 会针对各个平台优化构建版本,并为你托管按需资源,以缩减游戏大小并加快下载速度。如需了解更多信息,请参阅“准备分发你的 App”。你也可以使用 Background Assets 托管自己的资源。

    帮助用户发现你的游戏。使用能让玩家对你的游戏产生兴趣的 App 预览、截屏和描述,在 App Store 上创建你的产品页面

    打造仅能在 Apple 芯片上运行的 macOS 游戏。要专门面向搭载 M1 芯片或后续芯片的 Mac 打造游戏,请参阅“将 App 提交至 Mac App Store”的“仅限 Apple 芯片的 App”部分。

    公证 macOS 游戏。为了让玩家确信你分发在 Mac App Store 之外的 macOS 游戏由你提供,并且已通过针对已知恶意组件的检查,请使用 Xcode 或 notarytool 命令行工具在分发前公证你的 macOS 游戏

    保护游戏的完整性。启用强化版运行时 功能和选择选项,以防止恶意代码注入、动态资料库劫持和进程内存空间篡改。

    如果你正在开发一款打破惯例、尚未发布的游戏,并希望 Apple 将它考虑纳入 Apple Arcade 游戏订阅服务,我们很乐意了解你的想法。