Easiest way to start on visionOS is with RealityKit. The GameController framework supports lots of controllers for different types of games. 200GB of Background Assets available for content rich games.
For synchronizing objects in a Shared spatial environment, consider using TableTopKit, which is compatible with GKMatch in the GameKit framework. If you’re using RealityKit, you can use SynchronizationService to coordinate shared physically simulated objects. We also recommend the WWDC session: Share visionOS experiences with nearby people.
The Performing Calculations on a GPU sample code shows how to use Metal to identify available GPUs and run calculations on them.
Processing a Texture in a Compute Function sample code demonstrates creating textures by running copy and dispatch commands within a compute pass on the GPU.
You can capture a gputrace and replay it with profiling. Go to Performance and select the Xcode → Editor → Export GPU Counters option to export the performance metrics as a CSV file.
GameKit provides APIs for querying the player’s earned achievements and leaderboards. You can read from those APIs and write to your own SwiftData or other persistence system to trigger rewards in your game. Generally speaking, Game Center does not directly interact with SwiftData so it’s easiest to use GameKit APIs to post scores and achievement progress in parallel with your own database or backend services.
If the app is set to the Games category, it will show up in the Games app automatically without extra work. If you adopt Game Center it will also appear in the games library. Most importantly, the more Game Center features the game adopts, the more the OS knows about it and the more places it can be featured in the Games app. Adopting Game Center makes your game eligible for the Top Played Games chart. This chart measures play time where play time is measured starting from when your game initializes Game Center.
For fully offline play, use Multipeer Connectivity or the Network framework. You can use Multipeer Connectivity or Network framework to create a local P2P network-based game without requiring Internet. For a local peer-to-peer games, Game Center’s Nearby Multiplayer offers useful features but requires an Internet connection.
You can develop in Metal, as there is template code available for it. Metal 4 can help reduce the CPU overheads for encoding rendering, and VisionOS supports presenting from Metal 4 command queues.
Metal 3 and 4 support the same GPU-driven rendering features (ICE).
Concurrent CPU encoding is typically a good starting point for improving performance through parallelism, and three threads is a good match for a standard Metal drawable pool.
Metal 4 makes concurrent CPU encoding easier through explicit scheduling.
Use a separate queue for issuing compute long running compute dispatches so that interactive rendering can run concurrently and use Metal events for synchronizing data dependencies between command queues.
Game Center itself has had a series of improvements for developers and players: activity feed, widgets, integrations into the App Store, improvements to friending and the social graph, multiplayer matchmaking, and more.
The new Games app brings all of these Game Center capabilities together in one place that players can easily find. It also offers deeper game discovery through search and personalized recommendations. From within your games, you can guide users into the Games app if you’d like, you also have the option to bring them into the Game Overlay so they don’t need to leave your game experience.
The more you integrate features like Challenges, the more prominently your game will appear within the Games app, which can help keep players engaged in ways the original Game Center app did not.
The new GameKit bundle in Xcode is recommended as it provides UI for configuring these elements in Xcode. Under the hood, the GameKit bundle is a JSON file, which can be easily automated with a script. You can also checkout the WWDC session: Get started with Game Center for best practices in configuring challenges.