Skip to main content

Introduction

What is ConjureKit

ConjureKit allows developers to create a shared AR experience quickly and conveniently.

After a device establishes a connection to a server, a Session with a shared coordinate system is created. A device can join the session of another device by scanning a QR code momentarily displayed on the screen of the device that is already inside the existing session. The joining device is automatically calibrated into the existing session's coordinate system by observing the pose of the QR code relative to itself.

ConjureKit provides a callback-based networking engine for the participants (devices) inside a session to communicate. Peer-to-peer messages can be sent according to one of a set of predetermined message types or according to a custom message type that allows devices to send arbitrary byte arrays to one another, to be parsed according to the application's custom logic.

Modules

ConjureKit comes with optional packages known as modules:

ModuleDescription
MannaQRcode-based calibration of joining participants into a session.
GrundContinuous vertical calibration of participants.
VikjaA key-value store to attach arbitrary properties to Entities.
OdalDynamic retrieval and instantiation of .glb assets in a remote store. Animation syncing on the instantiated assets.

Entities

ConjureKit supports an Entity data type, a Unity world-coordinate pose with a unique session-level id. When the pose of an Entity changes, all session participants are notified, maintaining a common view of Entities across all participants. A participant can only change the pose of Entities that it owns. Every participant is also assigned a default Entity that represents the participant himself. The pose of the latter is driven by the device's onboard positioning system, typically a smartphone's native SLAM session.

Entity Component System

ConjureKit also implements an Entity Component System, currently accessible only through a low-level interface. This is an experimental feature for which we plan to be adding more support in the future.