An augmented reality game revolving around capturing and battling virtual monsters ('Vira') with friends, other players in your area, and players across the globe.
VimL
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.editorconfig
.vimrc_local.vim
license.md
readme.md Update readme.md Dec 28, 2014

readme.md

νιrα

Vira will be an augmented reality game revolving around capturing and battling virtual monsters ('Vira') with friends, other players in your area, and players across the globe.

The Algorithm™

Vira are procedurally generated using a stateless algorithm. This helps with horizontal scaling, and also lets us safely move a lot of the work off to the client, and just use the server for verification.

After a vira is created it shifts location every 3-15 seconds in a 3-5ft area from its previous location for the duration of its existence (5-30 minutes), or until it's encountered by a player. Movement is based on the vira's UUID.

Creation and destruction of vira happens on five minute intervals. We always use server time when initializing the algorithm, since the client could potentially be off by a minute or two (or more, due to time attacks on other games), which could result in a vira being in the wrong location, or no longer existing, when the player attempts to attack or capture.

Data sources

  • Map data
    • Used as the environment for exploring and battling with Vira
    • Open StreetMap is probably the best bet for this
  • Population data
    • Some types of Vira like being around people more than others, and some types don't like being around people
    • Census data
  • Weather data
    • All the things influence what kinds of Vira appear
    • Forecast.io has a nice (inexpensive) looking API for this

Types of Vira

  • Water
  • Wind / Air
  • Ice
  • Fire
  • Metal
  • Light
  • Dark
  • Earth / Rock
  • Dirt / Ground
  • Plant
  • Electric
  • Poison

Protection against cheating

Some thought needs to be put into this particular bit. First thoughts on this would be to flag players who abruptly jump locations at very high speeds. So for short distances we should assume walking or some other land transportation, and for longer distances we should assume flight. Adjustments might need to be made for high-speed ground transportation, like bullet trains, or vacuum tubes, but this is something we can tweak as time goes on.