Pokemon GO Experiment - Part 1

This is the first progress report for an experimental project I'm developing to emulate the augmented reality experience of Pokemon GO (PG) using ezAR plugins for Cordova along with other open source technologies.  Checkout this short video.

Takeaways

The early key takeways from the project are that with simple technologies such as ezAR combined with a 3D library such as three.js a developer can make good progress towards creating cool fun AR experiences. Also I have a great appreciation for the design and technical skills of the Ninantic Labs team that created the Pokemon GO app. 

About

This is my first real development with the three.js and Physijs JavaScript libraries. If you are unfamiliar with these libraries three.js is WebGL 3D graphics library. I used three.js to layout the scene and the objects within it. Physijs is a physics engine that works with three.js and provides the 3d motion simulation for animating the Pokeball when the user launches it towards a Pokemon character. A third library that I made frequent use of is Tween.js for non-physics based animation such as spinning and vibrating Pokemon characters. 

Cube object in three.js design tools

Cube object in three.js design tools

Example Physijs simulation

Example Physijs simulation

I used the Cordova SDK to create Android and iOS versions of the app. The background Pokemon GO theme is played using the Cordova Media plugin.  Similar to the PG app, the music while cute at first can get annoying and earworm-ish after a few minutes of playing. One of the first settings I'll introduce is an option to disable the background music.  

Code

The code is very early in development and can be found here. YMIMV. While I successfully tested the project running on iPhone 6S and iPad Air both running iOS 9.3, I encountered a rendering  issue on my older Nexus 5 running Android 6.0.1. So I can not generally say how well the app will perform on Android.

Being a noob at three.js and Physijs there is much room for improvement. This is a veiled request for leniency from any seasoned three.js developers that may evaluate my work. I plan to reimplement the demo once I've gained a better mastery of three.js. 

Lastly, I will be posting a pure web version of the code soon so you can evaluate the experience directly through your browser rather than building an app.

Request

Please consider following my progress and giving a shout out if you like ezAR on Twitter @ezArTech.

Resources

code on GitHub   
Cordova SDK
Cordova Device plugin
Cordova Media plugin
ezAR videoOverlay plugin
ezAR snapshot plugin
physijs
three.js
tween.js