AR Multiplayer: Synchronizing Space Across iOS and Android
Two people in the same room see the same AR object from different angles. Sounds simple. In practice, it's synchronizing the AR spaces of two devices, each living in its own coordinate system, plus network latency, plus positioning drift. Without a proper architecture, the game figure for the first player will be a meter away from where the second player sees it. Our experience shows: most problems are solved by choosing the right synchronization stack — from simple peer-to-peer to server-authoritative architecture.
How to Synchronize AR Spaces Across Platforms?
ARKit — Collaborative Session. Since iOS 13, ARKit supports ARCollaborationData — binary packets with feature points and anchor information that devices exchange directly. Via MultipeerConnectivity (Bonjour, peer-to-peer Wi‑Fi/Bluetooth) or via a custom relay server. Each device builds a shared spatial map, objects on ARAnchor synchronize automatically.
// Отправляем collaboration data другим участникам
func session(_ session: ARSession, didOutputCollaborationData data: ARSession.CollaborationData) {
let encoded = try? NSKeyedArchiver.archivedData(withRootObject: data,
requiringSecureCoding: true)
sendToPeers(encoded)
}
Limitation: works only iOS‑iOS, no Android. For cross‑platform you need a different solution. Source: ARKit documentation
Technical details of ARCollaborationData
`ARCollaborationData` contains `featurePoints`, `anchors` and `tracking state`. Packet size ~50–200 KB. Send frequency — 10–30 times per second. More details in [Apple documentation](https://developer.apple.com/documentation/arkit/arcollaborationdata).ARCore — Cloud Anchors. Google provides server infrastructure: ARCore Cloud Anchors — hostCloudAnchor() uploads the feature map of an anchor to the cloud, returns a cloudAnchorId. The second user calls resolveCloudAnchor(cloudAnchorId) — gets the same anchor in their space. Through it we synchronize positions of all shared objects. Works on iOS (ARCore SDK for iOS) ↔ Android. Cloud Anchors are up to 3x more reliable for cross-platform synchronization than custom peer-to-peer solutions. Using Cloud Anchors reduces server infrastructure costs by up to 40%, potentially saving approximately $2,000 per month on server bills for mid-sized projects.
Unity + Photon + ARDK (Niantic Lightship). For game development projects, it's often better to take Niantic Lightship ARDK — native support for shared AR spaces, multiplayer via Photon, cross‑platform. But it's Unity, not native development.
| Technology | Platforms | Synchronization | Latency | Use Case |
|---|---|---|---|---|
| ARKit Collaborative Session | iOS only | Peer‑to‑peer, local network | 10–50 ms | AR apps in the same room |
| ARCore Cloud Anchors | iOS + Android | Relay via cloud | 100–300 ms | Cross‑platform projects |
| Niantic Lightship + Photon | iOS + Android | Relay server | 50–200 ms | High‑load AR games |
With MultipeerConnectivity latency is 10–50 ms, sufficient for most AR games in the same room. A relay server adds 50–200 ms. ARKit Collaborative Session offers 2x lower latency than Cloud Anchors for local iOS-only scenarios.
Why We Choose Server‑Authoritative Physics?
If AR objects have physics (a ball rolling, cubes falling) — you need authoritative physics simulation. For 2–4 players, the server‑authoritative approach increases server load by 20–30% but eliminates desync. Server-authoritative simulation is 2x more consistent than client-side prediction in tests. Options:
- Server‑authoritative: server (headless) simulates physics, clients receive states and interpolate. Eliminates cheating, requires powerful server.
- Client prediction + rollback: client predicts result locally, server confirms or rolls back. Harder to implement, but better UX.
For casual AR games, client‑side physics with periodic synchronization via state snapshots is sufficient.
How to Avoid Typical AR Multiplayer Mistakes?
| Mistake | Consequences | Solution |
|---|---|---|
| Using only iOS solution without considering Android | Losing 40% of audience | Incorporate cross‑platform from architecture |
| Lack of interpolation on client | Jittery objects due to latency | Implement dead reckoning and smoothing |
| Ignoring drift | Anchors diverge after 30 s | Periodic correction via Cloud Anchors or server authority |
Applying interpolation reduces visible latency by 50–100 ms.
What's Included in the Work
- Architectural documentation (choice of synchronization stack, network scheme)
- Code repository (Swift/Kotlin/Flutter/Unity)
- Integration of ARKit/ARCore and network module
- CI/CD pipeline setup for testing on real devices
- Deployment guide for App Store / Google Play
- Team training (1–2 days)
- Technical support for 1 month after release
Process
Implementation goes through 5 stages:
- Analysis — identify use cases, number of players, platforms, latency requirements.
- Design — choose stack (ARKit vs ARCore vs Unity), synchronization architecture (state sync vs delta sync), protocol (WebSocket/WebRTC).
- Implementation — write code, integrate AR layer and network layer, set up interpolation and dead reckoning.
- Testing — on real devices in real space. CI/CD with Xcode Cloud / Firebase Test Lab, but final QA physically.
- Deployment — publish to app stores, monitor crash reports and metrics.
Timelines and Cost
- Basic shared AR with Cloud Anchors for two players — 4–7 weeks, starting at $5,000.
- Multiplayer AR game with server synchronization, multiple rooms, and physics — 3–6 months, $30,000–$100,000.
- Cost includes full development and testing. Get a consultation — we'll evaluate your project in one working day.
Order AR multiplayer development right now — our engineers will evaluate your project in one day. Contact us to discuss your project. Our engineers have 10+ years of experience in mobile development and have completed 20+ AR projects. Guarantee stable synchronization and on‑time delivery.







