Documentation for a-frame: https://aframe.io/docs/0.7.0/introduction/
Documentation for clm-tracker: https://www.auduno.com/clmtrackr/docs/reference.html
https://faceoffvr.herokuapp.com/
Depending on when the page was last accessed, initially opening the page may take 5-30 seconds because webpack must bundle the client-side code together. Heroku shuts off the site if it wasn't in use for the past 30 minutes so you may experience this wait. Additionally, the page will ask to use your onboard camera for emotion detection so no surprises!
Fork this project to your local computer, and you must do:
npm install
npm run build-client && npm run start
- Go on over to
localhost:8080
npm run build-client-watch
npm run start-dev
- Go on over to
localhost:8080
- Note, you must have
build-watch
andstart
running at the same time
This game will track your facial expressions to determine what attribute to attach to each bullet.
A bullet is fired after releasing the 'e'
key. To begin tracking your face, you must hold down 'e'
and must create an expression to destory an asteroid. Colors are matched to each particular asteroid,
here is the general schema for what you can destroy:
Asteroid | Color |
---|---|
red | angry |
green | happy |
blue | sad |
yellow | surprised |
brown | any |
Controls
Use your mouse/mousepad
to look around
WASD
to move around
spacebar
to jump
Holddown e
key to track your face
Release e
key to fire projectile
- Make entities render by using random component generator
- Incorporate
physics system
to fire projectiles - Attatch
clmtrackr's
emotion attribute to each projectile - Tracking on projectiles to destroy if attributed bullet crosses verticies with asteroid object.
- Textures to spheres and make vr-space more ambient. (ISSUE: Hosting images/music files costs money AWS S3)
- Color to bullet for correlating emotion.
- Add physics to allow player to jump and not fall through the world
- Deploy!
- Rendering issue with projectile tracking for empty target list and general slowdown.
While still playable, I need to look into
three.js
raycaster docs to create a more performant collision detection component.