How to Create AR Multiplayer Games for ios

SwiftDart AR Multiplayer Game

SwiftDarts is an AR darts game for solo or multiplayer games, which is based on a game SwiftShot featured in the WWDC18 keynote.

Thereby, SwiftDarts is a customised version of the basic game which uses ARKit, SceneKit, Swift and Multi peer Connectivity.

Requires Xcode 10.0, iOS 12.2 and an iOS device with an A9 or later processor.

SwiftDart AR Multiplayer Game

This article provided leads to a GitHub repository named “SwiftDarts”. It appears to be a project related to a darts game developed in Swift.

Based on the repository’s name, it’s reasonable to assume that the project involves developing a darts game using the Swift programming language. Here are some possible details about the project:

  1. Game Concept: The game is likely to simulate the sport of darts, where players throw virtual darts at a target.
  2. Swift Language: The game is implemented using the Swift programming language, which is commonly used for iOS, macOS, watchOS, and tvOS app development.
  3. Graphics and UI: The game may feature graphics and a user interface (UI) designed to resemble a real-life darts game. This could include a virtual dartboard, score tracking, player profiles, and other relevant game elements.
  4. Gameplay Mechanics: The game might include mechanics for aiming, throwing, and scoring darts. It could simulate realistic physics to determine the accuracy and position of the dart throws.
  5. Possible Features: While I don’t have access to the repository’s code, some possible features that could be implemented in the game include single-player and multiplayer modes, different game variations (e.g., 301, 501), multiplayer matchmaking, and high-score tracking.

Key Features of AR Multiplayer Game

Multiplayer Physics

Each peer in a session runs its own local physics simulation, but synchronizes physics results with a server.

To send information between devices, the customized type PhysicsNodeData and PhysicsPoolNodeData encode it to a minimal binary representation.

Every projectile’s(dart) piece of data represents position, orientaion, velocity, angular velocity and a team of player who throwed it.

A boolean flag isAlive indicates whether a dart should be spawned.


To synchronize game events between players, it uses an action queue pattern. The GameManager class maintains a list of GameCommand structures, each of which pairs a GameAction enum value describing the event with an identifier for the player responsible for that event.

When the player touches the screen(making some action), the game creates and adds it to the queue. Simultaneously, the game sends encoded actions to other players for sync.

Sharing World Maps

As well as the SwiftShot uses Multipeer Connectivity framework, SwiftDarts is completely based on the same classes and logic which creates an ARWorldMap containing ARKit’s understanding of the area around the game board and allows to share worlds with joining players.

Installation and Launch

The game requires an iOS device with an A9 or later processor. After launch choose a game type and follow instructions.

A host player can place, rotate, scale board on vertical surfaces. In multiplayer games a new player can join an existing game session.

Bug list

  • There is a possible bug when a new player joins a multiplayer game and it doesn’t load a game board,
  • Fix projectile despawning when a player throws his dart outside game zone borders. Hint: RemoveWhenFallenComponent type,
  • Investigate the CameraThrower spawning logic. A bug occurs when a new player joins a multiplayer session

Creating AR Multiplayer Games for ios

Creating AR multiplayer games for iOS involves a combination of ARKit, networking, and game development techniques. Here’s a general overview of the steps involved:

Set Up Development Environment:

  • Install the latest version of Xcode, Apple’s integrated development environment (IDE) for iOS app development.
  • Ensure you have a compatible iOS device (iPhone or iPad) with ARKit support for testing your AR multiplayer game.

ARKit Basics:

  • Familiarize yourself with ARKit, Apple’s framework for creating AR experiences.
  • Learn about ARKit features such as plane detection, object tracking, and scene understanding.
  • Explore ARKit documentation, sample code, and tutorials to gain a better understanding of its capabilities.

Networking Setup:

  • Choose a networking framework or library to handle real-time communication between players.
  • Common options include Apple’s Multipeer Connectivity framework, third-party libraries like GameKit, or using lower-level network protocols like TCP or UDP.
  • Set up network communication to exchange game data, player positions, and other relevant information.

Scene Creation and Interactions:

  • Design and create your AR scene using 3D models, textures, and animations.
  • Incorporate interactive elements like buttons, menus, or UI components.
  • Implement touch gestures or other input mechanisms to enable player interactions in the AR scene.

Multiplayer Networking:

  • Integrate multiplayer functionality into your AR game using the chosen networking framework.
  • Establish connections between devices and enable data synchronization between players.
  • Implement mechanisms for handling player interactions and real-time updates in the shared AR environment.

Game Logic and Mechanics:

  • Develop the core gameplay mechanics for your AR multiplayer game.
  • Implement features such as object spawning, player movement, scoring, and game rules.
  • Integrate ARKit functionalities like surface detection or object recognition to enhance gameplay interactions.

Testing and Iteration:

  • Test your AR multiplayer game extensively on different iOS devices to ensure stability and performance.
  • Collect feedback from players and iterate on the gameplay mechanics and user experience.
  • Continuously refine and optimize your game based on user testing and feedback.


  • Once your AR multiplayer game is ready, prepare it for distribution.
  • Follow Apple’s guidelines for app submission to the App Store.
  • Consider utilizing beta testing programs or TestFlight for testing and gathering user feedback before the official release.



Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *