VR Shoot Ball
VR OCULUS RIFT HTC VIVE ARCADE PROTOTYPE UNITY
Roles:
Solo-Project
Project Timeline:
1 Week
Team Size:
I'm alone 😢
Overview
Basketball, but with a sharpshooting twist: Score points by shooting the ball into the hoops... but make sure to keep scoring or you will fall to your death!
Goals
-
Create a game that you can use to introduce your friends to VR
-
Fast-paced
-
Natural controls
-
Easy to pick up and play
-
Sense of anxiety
Aim Assist
Initially, I had trouble with users becoming really frustrated with how hard it was to score. This was really hindering my ability to create a fast-paced and anxiety fostering experience.
Solution 1: Make everything closer so it's easier to score and also slow down the pace of the game.
This solution would work but would also stray away from the design goals.
Solution 2: Help the players out a little bit and make them feel like superstars.
VR to me is about creating an experience for the player that they can't have in real life, this solution also matched my design goals.
Design of Aim Assist:
I didn't want the players to notice there was any aim assist. Protecting the belief that the player is achieving all of this on their own was very important to me.
Observing playtest sessions I saw that the further away hoops were, the exponentially harder it was to score. This caused players to never try to go for the big points. For this reason, I decided to make a dynamic aim assist system so that the aim assist strength depends on your distance from the hoop.
Implementation:
I created a magnet like system that pulls anything that is inside the collider toward a specified point (the center of hoop). I decided to use scriptable objects so that I can easily swap out different settings during playtests and quickly iterate.
I set 3 main settings to adjust. I used curves to be able to easily adjust values dependant on their distance from the player.
1. Strength: the percentage of velocity adjustment per second
2. Length: the length of the magnetized zone (capsule collider)
3. Radius: the radius of the magnetized zone (capsule collider)
I also implemented assist percentage so I can quickly edit overall strength without having to touch curves.
On Initialization, all aim assist areas read the scriptable object and adjust their strength, length, and width.
Before initialization
After initialization
Aim Assist Off
Default Aim Assist
Aim Assist Max
Kleenex testing showed that the aim assist implementation was not noticeable by players. Aim assist in general turned out to be a big success which brought down the barrier of entry and increased enjoyment.
Outcome
Playtest sessions have been showing extremely positive results.
People have been playing this game a lot longer than I expected. Even though it is more of a toy in its current state.
I have laid down the groundwork for this project I'm hoping to keep building on it in my free time.