Blog Post #1 - Idea Formulation - April 6th, 2021


What we accomplished

This week we spent a lot of time thinking about and iterating on our capstone project design. We all met together and iterated through a few different possible ideas ranging from a VR farming game very similar to Stardew Valley, mini-games which a user could play while working out, a VR application which simulates being at the school/office, an educational app which would educate people on the effects of overfishing, etc. Initially, we all decided on pursuing the earth creating game. The earth creating game is a simulation game that creates the Earth using various dots on the field of gravity. We thought this would be interesting to recreate in VR. We spent a pretty significant amount of time thinking about how to implement this in VR using WebXR. We researched how to recreate the game - particularly trying to see how we could make it using AFRAME. We created a small application with 20,000 spheres using glitch and this was too computationally intensive. After determining this wouldn’t be too feasible to recreate and also discussing our idea with the course staff, we decided to switch our project idea to VR Dodgeball.

Project Idea: Dodgeball

The project we are now pursuing is VR Dodgeball - based on the classic game dodgeball but instead in VR. We decided to settle on recreating dodgeball as we felt the idea was simple enough to expand upon and also allowed people to connect with their friends or family over a light-hearted game. We aim to implement a few core features such as multiplayer mode using the croquet API, different maps, character customization as well as voice chat between teammates.

But this is only where the fun starts. Once we implement the base games, we plan on adding features and add-ons to add a twist to the game that is only possible in VR. Some features we are considering are as follows:

Implementation Plans

We spent the rest of the week discussing how we would implement this using the technologies we’ve learned thus far in class. We researched different physics engines to use with our app for collision detection and came across a few viable options - particularly AFRAME’s physic option seemed the most user friendly. We also spent a good amount of time on creating our website, fleshing out the main ideas on our project requirements doc, and working on this blog post! We still need to work out a few aspects of our design, but we feel fairly confident in where we are right now, especially as we were able to complete a small proof of concept for throwing a sphere and having it interact with a solid body.

Throwing objects seems to be pretty well supported. In the demo app shown in class you can throw paper airplanes, as well as a ping pong ball. Catching also seems feasible (although that requires some practice). There also seems to be collision detection for only the hands and not the rest of the user’s body.

We will need to figure out how to implement a body for each player. Right now we are considering the avatar to be a sphere around the user’s head (VR headset). This makes it easier to do with a rig entity and a camera entity. This is important since implementing maps would mean that users will have 2 ways of moving around (moving their head and moving positions using controls). If we made a full body avatar, we would have no way to track if, for example, the user were to dodge a ball coming at their legs by lifting their legs.

We plan on using Croquet to create the multiplayer environment but we still need to do more research on the api for that.


Individual work log


Plans for next week

Our main goal for next week is to complete our project requirements doc which will give us a good plan moving forward in where we should be throughout the rest of the course - to ensure we finish our project on time. As a group, we will also start coding for our project. Additionally, we will spend a fair amount of time on our project pitch since this is due as well - in conjunction with the project requirements document. We mostly plan to work together for this, and figure out a design for our final project that will allow us to split up our work better starting next week.


Blocking issues

One concern is the integration of Croquet with a physics engine, as it seems that aframe’s default physics engine does not work with Croquet (although we haven’t tested this). While there may be other physics engines that work with Croquet, we’re not sure if they’ll be compatible with aframe and object interactions (e.g., can we pick up and throw objects?). We’re probably not the only group facing this issue, though, and the people at Croquet are scheduled to give another demonstration soon, so we can ask them then.


Questions:

We were wondering if we could buy this Udemy a-frame course as a group so we can get more comfortable with a-frame. Although the tutorial is no longer under discount, Udemy has pretty frequent discounts so we were wondering if we can get this with our group budget.

Notes