<!--
{
  "documentType" : "article",
  "framework" : "TechnologyOverviews",
  "identifier" : "/documentation/TechnologyOverviews/games-technologies",
  "metadataVersion" : "0.1.0",
  "role" : "article",
  "title" : "Game technologies"
}
-->

# Game technologies

Plan the creation of your game and incorporate the gameplay features people expect.

## Discussion

Game development starts with [Xcode](doc://com.apple.documentation/documentation/Xcode),
Apple’s integrated development environment, which includes code editors, debugging tools, device simulators,
graphics performance and analysis tools, and platform SDKs. When you
[create a project](doc://com.apple.documentation/documentation/Xcode/creating-an-xcode-project-for-an-app),
Xcode lets you choose the initial platforms, templates, and game technologies for your project. If you already
have a game, you can also [bring that game](https://developer.apple.com/games/game-porting-toolkit/)
to Apple platforms.

Great games take advantage of the characteristics and capabilities of the devices that they run on. For example,
someone might use their iPhone when travelling or relaxing on the couch, or use their Mac when they’re sitting
at their desk. [Design your game](doc://com.apple.documentation/design/Human-Interface-Guidelines/designing-for-games)
with these factors in mind and take advantage of all available hardware connected to the device.

## Create gorgeous graphics

Get the best graphics performance on all Apple platforms using [Metal](https://developer.apple.com/metal/) — Apple’s
API for hardware-accelerated 2D and 3D graphics. With Metal, you have the power of the graphics processing unit (GPU)
at your fingertips. Deliver smooth 3D animations with realistic visual effects from your game’s rendering code. Tune
the performance of that code to maximize frame rates and efficiency on a variety of Apple devices.

![An image of two firetrucks and a sphere on a shiny surface.](images/com.apple.TechnologyOverviews/game-technologies-metal-ray-tracing-ipad@2x.png)

Metal offers the features you need to create detailed graphics, with the performance you need to achieve high frame
rates:

- [Run commands](doc://com.apple.documentation/documentation/Metal/setting-up-a-command-structure) directly on the
  device’s GPU. Encode [compute passes](doc://com.apple.documentation/documentation/Metal/compute-passes) to run in parallel with
  [render passes](doc://com.apple.documentation/documentation/Metal/render-passes) so that computations don’t impact graphics rendering.
- [Load graphics resources](doc://com.apple.documentation/documentation/Metal/resource-loading) faster by streaming
  asset data to textures and buffers asynchronously.
- Improve the performance of 3D scenes using high-performance temporal antialiasing or spatial upscaling. Upscale
  low-resolution images to higher-resolution images in less time using <doc://com.apple.documentation/documentation/MetalFX>.
- Apply high-performance filters to images, multiply matrices, and vectors using the
  [Metal Performance Shaders framework](doc://com.apple.documentation/documentation/MetalPerformanceShaders).
- [Accelerate ray tracing tasks](doc://com.apple.documentation/documentation/Metal/accelerating-ray-tracing-using-metal)
  using Metal’s built-in ray tracing support.

Make your game fast and efficient using the powerful suite of
[Metal development tools](doc://com.apple.documentation/documentation/Xcode/Metal-developer-workflows).

- [Validate your Metal code](doc://com.apple.documentation/documentation/Xcode/Validating-your-apps-Metal-API-usage)
  and catch shader execution errors in Xcode.
- [Investigate visual artifacts](doc://com.apple.documentation/documentation/Xcode/Debugging-the-shaders-within-a-draw-command-or-compute-dispatch),
  and [optimize GPU performance](doc://com.apple.documentation/documentation/Xcode/Optimizing-GPU-performance), using the
  [Metal debugger](doc://com.apple.documentation/documentation/Xcode/Metal-debugger).
- [Find the cause of low frame rates](doc://com.apple.documentation/documentation/Xcode/Analyzing-the-performance-of-your-Metal-app)
  so you can fix interruptions and stutters.
- [Maintain a small memory footprint](doc://com.apple.documentation/videos/play/wwdc2022/10106) to improve overall performance.
- [Analyze your game’s performance in real time](https://developer.apple.com/documentation/xcode/monitoring-your-metal-apps-graphics-performance/)
  with the Metal Performance HUD, which shows CPU and GPU metrics in real time.

Make sure you tune your graphics code specifically for Apple silicon:

- [Fix architectural differences in your code](doc://com.apple.documentation/documentation/Apple-Silicon/addressing-architectural-differences-in-your-macos-code)
  to ensure your code runs well on Apple silicon. Make sure your code supports virtual memory-page sizes, cache line sizes, variadic functions,
  memory that’s simultaneously writable and executable, and more.
- [Manage thread priorities and schedules](doc://com.apple.documentation/documentation/Apple-Silicon/tuning-your-code-s-performance-for-apple-silicon)
  using <doc://com.apple.documentation/documentation/Dispatch> and [Quality of Service (QoS)](doc://com.apple.documentation/documentation/Dispatch/DispatchQoS)
  levels.
- Accelerate your code’s performance using the open source [SSE2Neon](https://github.com/DLTcollab/sse2neon) and
  [AVX2Neon](https://github.com/kunpengcompute/AvxToNeon) libraries. The Neon instruction set provides single instruction
  multiple data (SIMD) operations to accelerate performance on ARM processors.
- [Optimize for Apple GPUs and Tile-Based Deferred Rendering](doc://com.apple.documentation/documentation/Metal/tailor-your-apps-for-apple-gpus-and-tile-based-deferred-rendering).
  Write your Metal code to use features like imageblocks, tile shading, and raster order groups.

## Build a spatial computing game for visionOS

Apple Vision Pro gives you an opportunity to create immersive 3D experiences. Whether you’re creating a fully immersive
game or an augmented reality experience, take advantage of [visionOS](doc://com.apple.documentation/documentation/visionOS)
features. And if you’re making a game for iPad or iPhone, that game can also run run on Apple Vision Pro in a window and use
direct and indirect gestures as input.

![An illustration of a person in a room wearing Apple Vision Pro.](images/com.apple.TechnologyOverviews/spatial-computing-visionos@2x.png)

- Integrate your game’s virtual content into someone’s real-world environment using [RealityKit](doc://com.apple.documentation/documentation/RealityKit),
  [SwiftUI](doc://com.apple.documentation/documentation/SwiftUI), and [ARKit](doc://com.apple.documentation/documentation/ARKit).
  RealityKit makes your virtual content look more realistic by applying depth mitigation, passthrough, ground shadows, and other
  effects automatically.
- [Create a fully immersive app](doc://com.apple.documentation/videos/play/wwdc2023/10089) and render everything yourself
  using [Metal](doc://com.apple.documentation/documentation/Metal) and [Compositor Services](doc://com.apple.documentation/documentation/CompositorServices).
- [Design your game for spatial input](doc://com.apple.documentation/videos/play/wwdc2023/10073) using
  [ARKit](doc://com.apple.documentation/videos/play/wwdc2023/10082). Support interactions with attached game controllers
  and keyboards, which passthrough makes visible even in a Full Space.
- [Bring your existing Unity VR app to visionOS](doc://com.apple.documentation/videos/play/wwdc2023/10093) or
  [create a new immersive Unity app](doc://com.apple.documentation/videos/play/wwdc2023/10088).

Get started by [learning about the building blocks](https://developer.apple.com/videos/play/wwdc2023/10260/) that make
up spatial computing, and find out how you use these elements to build your game experiences. Adapt your 2D games by
adjusting your content to [take advantage of 3D](https://developer.apple.com/videos/play/wwdc2023/10076/). For example,
render objects in separate layers to create a parallax effect, and add smoke, sparks, and other visual elements that
come out of visual plane.

## Create exceptional soundtracks

Increase engagement and realism by adding sound effects and music that complement the action within your game.

- Play your app’s music, audio, and sound effects using the <doc://com.apple.documentation/documentation/AVFAudio>
  framework. Configure your [audio session](doc://com.apple.documentation/documentation/AVFAudio/AVAudioSession) to
  mix your audio components the way you want, then play back your audio using an
  [audio player](doc://com.apple.documentation/documentation/AVFAudio/AVAudioPlayer) object.
- Play music from someone’s iTunes library using the <doc://com.apple.documentation/documentation/MusicKit> framework.
- [Create an immersive audio experience](doc://com.apple.documentation/documentation/PHASE/playing-sound-from-a-location-in-a-3d-scene)
  that reacts in real time to events in your game using the <doc://com.apple.documentation/documentation/PHASE> framework.
- Perform advanced audio manipulation, or work directly with audio hardware, using the
  <doc://com.apple.documentation/documentation/CoreAudio> framework.
- [Add audio](doc://com.apple.documentation/documentation/RealityKit/scene-content-audio)
  to RealityKit [entities](doc://com.apple.documentation/documentation/RealityKit/Entity) to bring those objects to life.
  <doc://com.apple.documentation/documentation/RealityKit> automatically applies reverb and real-world acoustics to your
  entities to give them a realistic sound. [Explore other aspects of immersive sound design](doc://com.apple.documentation/videos/play/wwdc2023/10271)
  to further improve the audio experience of your game.

On iPhone and Apple TV, get the player’s attention and reinforce actions with tactile and audio feedback using
the <doc://com.apple.documentation/documentation/CoreHaptics> framework. Play both transient and continues patterns
to match the events in your app. For example, play a short vibration pattern when someone toggles a switch, and play
a continuous pattern to represent the ringing of a telephone. Generate haptics for an attached game controller using
the <doc://com.apple.documentation/documentation/GameController> framework instead.

## Support input devices

Let players interact with your game in more natural ways using <doc://com.apple.documentation/documentation/GameController>.
Support the latest

- Support third-party gamepads, arcade sticks, and racing wheels, as well as the mouse and keyboard.
- Overlay a virtual controller on mobile devices to emulate a physical controller.
- Support [advanced game controller features](doc://com.apple.documentation/videos/play/wwdc2020/10614) such as
  [rumble and haptic feedback](doc://com.apple.documentation/documentation/GameController/GCDeviceHaptics) from a
  physical controller.

The App Store adds a game controller badge to your game if it supports controllers.

## Build a social network

Take advantage of the services Apple provides for social gaming and storing game data using
[Game Center](https://developer.apple.com/game-center/). Let Apple help promote your game organically through players sharing and interacting with each other.

![An image showing Game Center on iPhone and iPad.](images/com.apple.TechnologyOverviews/game-technologies-game-center@2x.png)

- Grow discovery and engagement using [Game Center](doc://com.apple.documentation/documentation/GameKit/initializing-and-configuring-game-center),
  Apple’s social-gaming network.
- Keep players engaged using [achievements](doc://com.apple.documentation/documentation/GameKit/rewarding-players-with-achievements) and
  [leaderboards](doc://com.apple.documentation/documentation/GameKit/encourage-progress-and-competition-with-leaderboards).
- [Connect players to their friends](doc://com.apple.documentation/documentation/GameKit/connecting-players-with-their-friends-in-your-game)
  and create new ways for friends to interact with each other.
- Let people continue your game on any of their devices by saving game data in their [iCloud storage](/documentation/TechnologyOverviews/shared-data#Make-your-apps-content-available-on-multiple-devices).
- Present familiar interfaces to [match players](doc://com.apple.documentation/documentation/GameKit/finding-multiple-players-for-a-game)
  with other players before the game starts.
- [Share data between players](doc://com.apple.documentation/documentation/GameKit/sending-messages-to-players-in-turn-based-games)
  to advance the gameplay as each person takes their turn. [Exchange messages](doc://com.apple.documentation/documentation/GameKit/exchanging-data-between-players-in-turn-based-games)
  between players in turn-based games.
- Let people communicate with each other using FaceTime or Messages by turning your game into a
  [shared activity](doc://com.apple.documentation/documentation/GroupActivities).
- Add a screen-sharing or game-streaming feature to your macOS game using <doc://com.apple.documentation/documentation/ScreenCaptureKit>.

## Distribute your game

The [App Store](https://developer.apple.com/app-store/features/) lets you easily distribute your game to hundreds of millions
of people around the world on all Apple platforms. The App Store processes customer payments, provides secure and reliable
downloads, manages releases, and helps promote your game.

- Distribute your game through the App Store. Join the [Apple Developer Program](https://developer.apple.com/help/account/get-started/about-your-developer-account/)
  and upload builds using Xcode. Use [App Store Connect](https://developer.apple.com/help/app-store-connect/get-started/app-store-connect-workflow/)
  to configure game-oriented features, distribute your game for beta testing, and submit builds to App Review.
- [Prepare your app for distribution](doc://com.apple.documentation/documentation/Xcode/preparing-your-app-for-distribution)
  and let the App Store optimize downloads for each platform. Enable faster downloads of your game by
  [hosting assets on the App Store or your own server](doc://com.apple.documentation/documentation/BackgroundAssets), and downloading
  them separately.
- [Create your product page](https://developer.apple.com/app-store/product-page/) on the App Store with app previews, screenshots,
  and a description that gets players excited about your game.
- Make your macOS game available on Apple silicon only. [Target your game](https://developer.apple.com/macos/submit/) for the
  “Apple silicon-only apps” section of the Mac App Store by targeting your game to Macs with an M1 chip or later.
- Give players confidence that your macOS game is from you and is free of malicious components by  
  [notarizing it](doc://com.apple.documentation/documentation/Security/notarizing-macos-software-before-distribution)
  before distribution.
- Protect the integrity of your game by enabling the [Hardened Runtime](doc://com.apple.documentation/documentation/Security/hardened-runtime)
  capability. Select options to prevent against malicious code injection, dynamic library hijacking, and process memory space tampering.

Contact Apple if you’re working on a groundbreaking, unreleased game and would like Apple to consider it for the
[Apple Arcade](https://developer.apple.com/apple-arcade/) game subscription service.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)