Whack-a-Mole VR
- Techniek
- Unity · C# · VR
- Team
- 2 personen
- Duur
- 5 werkweken
Aanleiding De game is gemaakt tijdens de module Special Input/Output, waarbij wij mochten experimenteren met VR.
De game Het is een Virtual Reality-game waarbij je met je handen de mol die omhoog komt op het juiste moment moet slaan. Je krijgt bij iedere goede slag 2 punten en je probeert je persoonlijke highscore te verbeteren.
Mijn rol Ik heb de arcadekast gemaakt en ervoor gezorgd dat de mollen willekeurig omhoog en weer omlaag gaan. Ook ben ik met de handtracking van Oculus bezig geweest. Mijn teamgenoot heeft zelf een dartspel gemaakt.
Mollen die onvoorspelbaar omhoog komen
De mollen moesten onvoorspelbaar omhoog komen en ook vanzelf weer zakken, zodat je moet blijven opletten. De GameController kiest elke 1,5 seconde een willekeurige mol. Elke mol schuift soepel naar zijn doelhoogte en zakt na 1,5 seconde weer, tenzij de speler hem eerder raakt.
// GameController.cs
if (gameTimer >= 0f)
{
showMoletimer -= Time.deltaTime;
if (showMoletimer < 0f)
{
moles[Random.Range(0, moles.Length)].ShowMole();
showMoletimer = 1.5f;
}
}
// Mole.cs
void Update()
{
transform.localPosition = Vector3.Lerp(
transform.localPosition, myNewXYZPosition, Time.deltaTime * speed);
hideMoletimer -= Time.deltaTime;
if (hideMoletimer < 0) { HideMole(); }
}
public void ShowMole()
{
myNewXYZPosition = new Vector3(transform.localPosition.x, ShowHeight, transform.localPosition.z);
hideMoletimer = 1.5f;
}
Terugblik Naar het maken van een VR-game had ik eigenlijk al uitgekeken vanaf het begin van mijn opleiding. Hoe mooi zou het zijn als je echt iets in VR kunt ontwikkelen dat ook goed speelbaar is? Aangezien ik nog nooit iets in VR had gemaakt, maar het wel graag speel, vond ik het een uitdaging om niet te groot te denken. We zijn met handtracking in VR bezig geweest, wat makkelijk lijkt, maar best een uitdaging was. Er zat een fout in, dus moesten we ons in de handtrackingcode van Oculus verdiepen om die op te lossen: de vingers bewogen namelijk niet mee met de hand. Dat probleem hebben we opgelost door de posities van de vingers na iedere frame te laten verversen. Verder hebben we getest hoe de game beviel bij spelers. Wat leuk was, is dat we na dit project zelfs door afstuderende studenten werden benaderd voor hulp met de VR-bril.
Uitdagingen We waren niet bekend met hoe de headsets werkten en hadden dus veel moeite om alles correct op te zetten. Uiteindelijk hebben we gevraagd hoe we dat moesten oplossen, en toen is het gelukt.
GitHub link Speelbare game- Tech
- Unity · C# · VR
- Team
- 2 people
- Duration
- 5 working weeks
Background The game was made during the Special Input/Output module, where we were allowed to experiment with VR.
The game A Virtual Reality game where you use your hands to hit the mole at the right moment when it pops up. Every good hit gives you 2 points, and you try to beat your personal high score.
My role I made the arcade cabinet and made the moles pop up and go back down at random. I also worked on the Oculus hand tracking. My teammate made a darts game of his own.
Moles that pop up unpredictably
The moles had to pop up unpredictably and go back down on their own, so you have to stay alert. Every 1.5 seconds the GameController picks a random mole. Each mole slides smoothly to its target height and drops back down after 1.5 seconds, unless the player hits it first.
// GameController.cs
if (gameTimer >= 0f)
{
showMoletimer -= Time.deltaTime;
if (showMoletimer < 0f)
{
moles[Random.Range(0, moles.Length)].ShowMole();
showMoletimer = 1.5f;
}
}
// Mole.cs
void Update()
{
transform.localPosition = Vector3.Lerp(
transform.localPosition, myNewXYZPosition, Time.deltaTime * speed);
hideMoletimer -= Time.deltaTime;
if (hideMoletimer < 0) { HideMole(); }
}
public void ShowMole()
{
myNewXYZPosition = new Vector3(transform.localPosition.x, ShowHeight, transform.localPosition.z);
hideMoletimer = 1.5f;
}
Looking back I had been looking forward to making a VR game since the start of my studies. How great would it be to actually build something in VR that is also fun to play? Since I had never made anything in VR before, but do enjoy playing it, the challenge was not to think too big. We worked with hand tracking in VR, which seems easy but was quite a challenge. There was a bug, so we had to dig into the Oculus hand tracking code to fix it: the fingers didn't move along with the hand. We solved that by refreshing the finger positions every frame. We also tested how players liked the game. The fun part was that after this project, even graduating students came to us for help with the VR headset.
Challenges We didn't know how the headsets worked, so it took a lot of effort to set everything up correctly. In the end we asked how to solve it, and then it worked.
GitHub link Playable game