
NeuroRecoVR

Software Developer
Minigame Modules designed for stroke rehabilitation
One of the most interesting projects I’ve got to work on as a developer were these collections of minigames - all designed to help recent stroke patients rehabilitate their motor functionality and eyesight.
Below is a breakdown of my contributions to each of these 3 minigames.
I Spy | Barrel Breaker | Dino Walk
I Spy
Animals
Everything dealing with the animals - I was in charge. NavMesh, Spawning, Suplementary animation work - you name it, that was my baby.

Working with an asset pack of low poly animals & wandering behavior scripts. I implemented them to spawn onto a Navigation Mesh that would help them wander around a given level.
Not without its challenges…
Where’s the Nav Mesh?
In order to work with this Asset Pack, the animals needed very key Nav Mesh components. However, with the specific version of Unity we were using, they were oddly absent.
After doing some thorough investigation, I was able to find a repository of these missing Nav Mesh features and was able to install them into Unity! Hooray!
Alright, the components are here, but why isn’t the Nav Mesh working?



In most Unity experiences, the NavMesh is something that gets baked on a pre-designed level that doesn’t need to be tweaked very often - usually a one and done setting after a couple edits here and there.
However, I Spy’s levels were designed to be generated by preset tiles at the start of the experience, giving me an interesting development challange.
How do I bake the Nav-Mesh after the levels are generated?

Thankfully, NavMeshSurface has a function that can be called within a script!
So I could build the Nav Mesh on the fly, then initialize the animals once they had a surface to explore on.
Animal Spawning Based on Player’s Field of View

As we wanted this experience to be as customizable for patients as possible, I developed this Field of View system.
With the combination of View Radius, Occlusion Radius & View Angle, a list would be created of all the Spawn Points within the yellow region. The animals that would need to be spawned would then pick a random element from the list and spawn!
Animal Selected Animations

I also worked on creating feedback for the user when they selected an animal. I created animations for each creature, but I specifically wanted to show off the Sasquatch one. :)
Look at this goof
Barrel Breaker
Gameplay Feel
I developed and experimented with different gameplay to see what was best for the user.
Ball
I experimented with how we wanted the ball to move around in the arena.
Initially we tried having it roam freely at a constant speed - but found it too difficult to anticipate which direction it would bounce.
We decided to keep its Y-Axis locked - making it easier for the user to keep track of.
Paddle
When experimenting with the paddle, I initially set it up so that it would track the player’s hand movement 1-1. However this gave the user limited range as it was very difficult to save the ball when it reached the edges.
Instead I created a separate handle for the user to grab. The paddle would then track the movement of said handle and follow it with the desired multiplied value. Making it easier for patients to reach the edges if they needed the assistance.
Barrels
Barrels were an interesting challange as there were multiple aspects that I tested.
- How will they be stacked
- How will they break
- Would they work similar to other Brick Breaker games where they break and are gone, Or do they constantly spawn in?



Initially, I tested stacking them on top of each other with several layers to create distinct layouts per level. However when playtesting, We found that having the barrels react to normal physics made the levels a lot more difficult - as barrels would fall closer to the player making for an unexpected increase in reaction time.
The solution was to have one layer of barrels and lock their physics on the Y - axis. Keeping the difficulty level controlled and not as demanding on the user’s reaction time.
We tested 2 different methods for breaking barrels.
Method 1: Using a mesh deform Asset Pack. This would break apart the barrel at the point of impact, but would also create an abundance of extra geometry, which was not performant for VR.
Method 2: I modelled primitive objects that would mimic the shape of the barrel. Once a barrel was hit - I’d deactivate the original model and activate the collection of objects. Making for a satisfying hit and was much more performant for VR.
As we decided to have a single layer of stacked barrels locked to the Y axis, we found that play sessions would finish quite quickly.
I created a system that would check the distance between the spawn point and the top barrel when the ball would enter the trigger, and spawn a new barrel if there was enough space.
Dino Walk
Borrowing quite a bit of similarities to I Spy, the biggest addition to this module was the Sticker Book System I created.
The book would float in front of the player with silouettes of each possible dinosaur to find. When they found the dinosaur, the sticker would appear!
The white line is a ray trace projecting from the player’s vision. The stickers get activated when the raytrace collides with a dinosaur.