exaQuark

infinitely connected worlds.

7 billion users can interact simultaneously in a single instance
Augmented Reality means the playground is planet Earth
Develop multiplayer games at unprecedent scales

Infinitely Multiplayer

Built from 20 years of research on scaling virtual worlds like Second Life.

Mixed Reality

Sample apps to get you started. Develop your game for AR headsets, mobile, and browser.

Voice and text chat

Your users can talk, chat, and interact with their neighbors, just like they do in the real world.

Social and sharing

Built-in tools for social networks and sharing digital content.

For Developers

We make it easy for developers to get started simple APIs and sample apps.
Our code is opensource and constantly improving.
// Bind user positions and exaQuark will continuously
// compute the information relevant to their latitude and longitude.

let currentState = function () {
  return {
    iid: 'as7832lnLKas',
    universe: 'SANDBOX',
    geo: {
      lat: 1.288,
      lng: 103.8475,
      altitude: 0.0,
      rotation: [ 0, 0, 0 ]
    }
  }
}
exaQuark.bind(currentState)

// exaQuark sends users only relevant content
// and neighbors based on their position on earth

exaQuark.on("neighbor:enter", entityState => {
  switch (entityState.properties.properties) {
    case 'HUMAN':
      handleNeighbour(entityState)
      break;
    case 'OBJECT':
      handleArObject(entityState)
      break;
    default:
      console.log(entityState)
  }
})
// Share augmented experiences between users
// over peer to peer networking

exaquark.push('data:private', {
  universe: 'SANDBOX',
  iids: ['as7832lnLKas']
  data: {
    content: 'https://content.exaquark.com/g7uoFD',
    position: {
      lat: 1.288,
      lng: 103.8475,
      altitude: 0.0,
      rotation: [ 0, 0, 0 ]
    }
  }
})
// Save persistant AR content in exaQuark
// so that others can discover it

let contentPosition = {
  lat: 1.288,
  lng: 103.8475,
  altitude: 2.1,
  rotation: [ 0, 0, 0 ],
  expires: -1
}
exaquark.getSignedUrl(contentPosition)
.then(signedUrl => {
  let xhr = new XMLHttpRequest()
  xhr.open('PUT', signedUrl, true)
  xhr.send(file)
}).catch(err => console.err(err))

Pricing

Early registration
Free
Register before July and we'll give
you unlimited free access until July 2019.
Personal
$5/month
1 developer
Personal or commercial projects
Unlimited concurrent users
Start up
$45/month
5 developers
Unlimited concurrent users
Email & chat support
Enterprise
Enquire
Unlimited developers
Unlimited concurrent users
Premium support