Hover Hero

Overview

As part of two parallel project courses, Active Sports Games and Modern Shader Techniques, our team developed Hover Hero, a Kinect-controlled endless runner created in Unity. The project combined gesture-based interaction with custom shader development in order to produce a more technically ambitious and visually polished result than either course would have allowed on its own.

The game was developed over several months as a group project. Our team consisted of four members across both courses:

Felix KosianProgramming, Shaders
Alexander EppleProgramming Lead, Shaders, UI
Musfira Naqvi3D Art
Marcel ZurawkaShaders

Trailer

Project trailer

Challenges

The most significant challenge was the Kinect-based interaction model. Tracking quality degraded when the player was partially occluded, gesture recognition required carefully tuned thresholds, and there was a noticeable delay between movement and recognition. Together, these factors made it difficult to achieve gameplay that felt both responsive and fair.

A second challenge was the design of the game world. As an endless runner, the level generation needed to provide enough variation to avoid repetition while remaining readable and balanced from a gameplay perspective.

In addition, all visual effects and materials had to be implemented using custom shaders, as the use of built-in Unity shaders was not allowed within the course framework.

Solutions

Kinect Interaction

Achieving reliable Kinect interaction required extensive iteration. With the help of Rumen Filkov’s Unity Kinect plugin and a large amount of playtesting, we gradually refined the recognition logic until the controls became stable enough for enjoyable gameplay. In addition to gesture-based actions, the player could physically move to avoid certain obstacles, which helped make the interaction feel more direct and engaging.

I implemented and tuned multiple versions of nearly all gameplay gestures. The final system supported jump, crouch, shield, two fire gestures, sword input, and step-left / step-right movement. Each item or action was tied to a distinct gesture, which improved usability once the recognition became reliable.

To improve accuracy across different players, the game begins with a calibration phase. During calibration, body dimensions and key joint positions are measured and stored, allowing gesture thresholds and gameplay parameters to be adapted to the individual player. This significantly improved recognition quality.

The calibration phase uses a T-pose to capture player-specific body measurements

Some gestures proved particularly difficult. The fire attacks involved multi-stage motion patterns that had to be recognized robustly, while jump detection required balancing responsiveness against false positives caused by tracking noise. The final jump solution triggered reliably at a modest jump height, which kept the mechanic both playable and physically reasonable.

The two projectile gestures were implemented as a throw and a Hadouken-style attack. The throw gesture used arm movement relative to the shoulder to estimate a trajectory, while the Hadouken required a charge gesture followed by a forward push. Both contributed strongly to the game’s interaction identity.

World Generation

The level generation system was designed to balance variation with playability. Generation proceeded in several stages: first, a biome such as a cave or temple was selected; next, a straight or curved track segment was chosen from a library of predefined pieces. Each segment contained carefully defined spawn points for obstacles, enemies, and items.

At each obstacle spawn point, the generator selected from several prebuilt obstacle variants. This made it possible to create runs that felt dynamic without sacrificing readability or fairness. Because the game is structured as an endless runner, new segments were continuously appended to the active path throughout play.

Shaders

The rendering side of the project relied entirely on custom shaders. The main material shader supported forward rendering with up to four lights, along with ambient occlusion, normal mapping, specular maps, and emission. The base lighting model was Blinn-Phong; a physically based approach was considered but remained outside the available project scope.

I also worked on several specialized shaders for gameplay and environmental effects. These included a shader for obstacles that gradually dissolved as they approached the camera in order to preserve visibility, a lava shader using flow maps and vertex displacement, and a fireball shader that used periodic Perlin noise and turbulence to animate projectile geometry and texture movement.

Additional visual effects were built using combinations of custom billboard particle shaders and compute shaders. These were used for effects such as blood, explosions, and a portal effect inspired by cinematic visual motifs. The portal was particularly involved, as it required coordinated particle windup, circular motion, and a relatively high particle count. The project also included a stylized laser sword effect with emissive glow and outline shading.

Overall, the shader work gave the project a distinct visual identity and was one of the main reasons the final result felt substantially more polished than a typical student game prototype.

Conclusion

Hover Hero was one of the most involved and technically demanding student projects I worked on. It combined gesture recognition, procedural content assembly, custom shader programming, and UI / gameplay implementation into a single system, and required substantial iteration across both design and engineering.

I created a gameplay trailer to summarize the final result, which is linked below. Because the project includes some copyrighted assets, the version on GitHub does not run without additional setup. The latest playable build, which requires a Kinect V2, is available for download below.

Leave a Reply

Data protection
I, Alexander Epple (Place of residence: Germany), process personal data to operate this website only to the extent technically necessary. All details in my privacy policy.
Data protection
I, Alexander Epple (Place of residence: Germany), process personal data to operate this website only to the extent technically necessary. All details in my privacy policy.