Your village is under attack!

Read More
Motivation

The goal was to create a immersive VR experience centered around the throwing motion (gesture) with a motivation to create a robust yet useful throwing detection algorithm with a fun gameplay to keep the player motivated. We also wanted to use minimal hardware and maximize immersion by omitting any kind of hand held controllers and keeping the amount of wires around the player minimal.

Goal

Robust and useful throwing experience with fun gameplay.

Learning objectives

Use appropriate hardware and technologies.

Make use of advanced graphics for best game experience.

Challenges

Throw detection is not a trivial task.

  • More complicated detection methods have to be fine tuned to fit different players.
  • Simplistic methods may be unrealistic in a VR environment and reduce immersion and fun.

Other challenges:

  • Real world interferance.
  • Depth perception.
  • Tight timeframe and unknown technologies
  • Making the game challenging yet fun
  • Reducing player fatigue due to extensive motion.

Photo from ForskarFredag where the first public demo was presented
Credit: Adrià Cruz

Methods

We combine several techniques to achieve an immersive experience

Microsoft Kinect
is used for body tracking.

Oculus Rift
is used as a head mounted display for best VR experience.

Unity 3D with C#
is used as a game engine to create the game logic and functionality.

  • First renders of the scene.
  • Team picture (Credit: Mario Romero)
  • ForskarFredag (Credit: Mario Romero)
  • Comicon 2016
  • Comicon 2016
  • Comicon 2016
  • Comicon 2016
  • Comicon 2016
  • Comicon 2016
conclusions

Playability is important

In order to get feedback on the "important" stuff (important for this course), the game has to be easy to play. It is a hurdle that has to be overcome for a sufficient level of immersion. Then the players will be able to recognize valuable insights regarding graphics and interaction.

Since this project required 2 pivots (Pokemon VR, Breakout VR), the feedback we got from the public at ForskarFredag was a bit vague.

There are many ways to detect throwing

A simple threshold for the speed of the hand is stable and easy to implement but may be too simple. More advanced methods, e.g. recognizing preprogrammed throwing "archs" have to be adapted for different player sizes, handedness and styles.

If one wants to use extra hardware it is advisable to skip the Kinect and go for VR with controllers instead (e.g. VIVE, Oculus Touch)

Combining technologies is a hassle

There might be problems on the software side (SDK/Drivers not working/not available) or on the hardware side (IR pollution, connectivity, faulty devices). Solving them takes time, a very valuable asset of this course. A quick hack will work for a while but it might come back and bite you at a crucial moment.

Game engines have pros/cons for "advanced" graphics

Just like with sorting algorithms or numerical methods for differential equations, learning and programming basic graphics is easy but once you get to the advanced stuff, it is easier to use well-written libraries that are robust and optimized. Game engines often have extensive libraries with good documentation and an active community.

On the other hand, developing your own complex shader based on algorithms or pseudo-code from published papers is tricky if you don't have complete control of the rendering engine. For some game engines, you have to use their API, leading to unnecessary or even impossible workarounds.