Mixed Reality Room Scale Shooting Gallery

A mixed reality shooting gallery using virtual reality tracking hardware.

Similar projects worth following
This is documentation for a game heavily inspired by both James Bruton's mixed reality giant Lego gun and the Master of Shapes mobile room scale plugin. The game mechanics are designed around a shooting gallery setup. Room scale tracked devices paired with a mobile app built in Unreal Engine can shoot at targets that occupy the same space in the physical and virtual world.

Pinned game is a puzzle shooter composed of:

  • Mobile device tracking with Vive Controllers
  • Sixteen servos controlled by the Adafruit Servo Shield
  • Unreal Engine mobile app with sixteen targets
  • Physical target display of the same sixteen targets
  • Pick and yellow color theme and audio effects
  • One minute countdown timer, and scoring system


Tslot base for targets and LEDs

g - 9.35 MB - 11/13/2017 at 16:27



Arduino control sketch

ino - 11.33 kB - 11/13/2017 at 16:05



Tslot corner connector

g - 9.35 MB - 10/23/2017 at 17:27



Vive controller snap on handle

g - 8.47 MB - 10/23/2017 at 17:27



Vive controller phone clamp

g - 6.85 MB - 10/23/2017 at 17:27


View all 7 files

  • 1 × Vive Controller
  • 100 × LED wiring
  • 4 × T Slot Rod 8' Long
  • 1 × Smartphone
  • 1 × Arduino

View all 11 components

  • Hardware Developers Didactic Galactic Presentation

    Richard Hogben04/27/2018 at 14:29 0 comments
  • Pinned Game Hackaday Superconference 2017 High Scores

    Richard Hogben11/12/2017 at 02:41 0 comments

    Finished Build

    The final game build was pushed Saturday afternoon in time for the evening party. I was able to finish the countdown timer and debug the game reset system. Unfortunately there wasnt enough time for scores so I recorded some manually.

    The grip buttons on the Vive Controller are not easy to use, the large top button would have been easier to change ammo colors.

    Figuring out the game.

    Pinned Game High Scores (and low) out of 16 targets

    I didn't get everyone's name down but here are a handful:

    Honorable mentionAlek5/16
    Honorable mentionDrew5/16
    Honorable mentionFrancis5/16
    Participation awardHolly2/16
    Participation awardSammy2/16
    Participation awardTrammell2/16
    Participation awardMatt2/16
    Participation awardDavid1/16
    Achievement 0 pointsNoah0/16

    Too Many notes

    I got lucky and had some helpful attendees explain the game to others! It was difficult to explain but really rewarding when the game finally clicked and players had that 'ahah' moment.

    The targets dim and angle backward when hit.

    Nice form.

    One handed, surprisingly the bootlooping Nexus 6P survived the whole night.

    Searching for targets.

    Lighthouse center top, and one off to the right.

    A small line formed, too bad I didn't have the second controller ready yet.

  • How Do You Define Finished?

    Richard Hogben11/07/2017 at 13:26 0 comments

    Quick video of the LEDs and servos working together. I've left the most important work for last... the game logic, it's coming along but will take at least another late night to finish. 

    The targets stay knocked out now and I have the reset game system running which I should have done first, because it makes testing much easier.

    What else? Second controller could be fun, idle LED animation, get music working, better networking disconnection logic, fix the last two flickering targets... and on and on.

    Instead, posters and a new name that has nothing to do with Pinterest!

  • Trackers, Controllers, SteamVR and You

    Richard Hogben10/27/2017 at 18:52 0 comments

    The Vive Tracker is an accessory that quickly allows prototyping a tracked object in VR. This was my first choice for controller tracking, but poor support in Unreal Engine, and the price of multiple trackers has forced me to look at alternatives.

    The Vive Tracker:

    The Vive Controller:

    In theory the Vive Tracker would allow tracking without a headset attached. SteamVR has two options that look promising, a setting 'requireHmd' or a null driver option that fakes an attached headset. The first problem is that Unreal Engine does not honor setting requireHmd to false. Second, the Tracker firmware must be updated to mimic a controller so that Unreal Engine correctly recognizes the button input. The third problem is that the null driver is only meant for development causing severe lag each time I've attempted to use it. 

        "driver_null" : {
            "enable" : true,
            "serialNumber" : "Null Serial Number", 
            "modelNumber" : "Null Model Number",
            "windowX" : 0,
            "windowY" : 0,
            "windowWidth" : 1920,
            "windowHeight" : 1080,
            "renderWidth" : 1920,
            "renderHeight" : 1060,
            "secondsFromVsyncToPhotons" : 0.01111111,
            "displayFrequency" : 60.0

    This leaves the Vive Controller. I have access to at least four controllers which means I can leave one charging and also have spares. Additionally there are some 3D models available to augment the Controller. Combining these allowed me to attach a smartphone to the Controller. Another benefit of the Vive Controller is I won't need the bluetooth game controller, which is one less piece to worry about.

    I might have to update some of the net code because all trigger input will be on the server rather than the client.

  • Final Assembly

    Richard Hogben10/21/2017 at 02:40 0 comments

    Missing eight of the targets but still looks pretty with the lights off!

  • Tiny LED Solder Pads

    Richard Hogben10/04/2017 at 22:13 0 comments

    Almost finished printing the target hinges, and started soldering the sections of LED strip.

    The 144 LED strip has very small solder pads, but the wiring is holding and I've added hot glue to reduce any stress from the connection.

    Once both the wire and pad is tinned each piece only takes a minute to complete.

  • More Servo Hinges

    Richard Hogben10/02/2017 at 16:19 0 comments

    I've been printing on rafts because the bottom looks cleaner than smashed onto the build plate. There is just so much wasted material... I'm storing it until I can figure out something to do with it.

    Fusion 360 build of the two pieces.

    The back fin is there if I need some counterbalance and it stops the hinge from moving too far back.

    Fusion 360 render if this was made of jello...

    Bottom printed. The layer height is 0.2mm, infill of 20%, and speed around 120mm/s and still this is a two hour part for the Monoprice Mini Delta.

    With the top installed and holding a target.

  • Support Beams for Targets

    Richard Hogben09/28/2017 at 17:41 0 comments

    3/4" aluminum frame.

    Some Fusion 360 design.

    3d printed corners. <3 Zip ties.


  • 3D Printed Servo Hinge Iterations

    Richard Hogben09/26/2017 at 18:58 0 comments

    Design iterations of the servo hinge.

    Monoprice Mini Delta at work.

    The servo hinge will move the target and route the LEDs that light it up.

  • FMOD Studio Integration

    Richard Hogben09/22/2017 at 15:46 0 comments

    I've included the FMOD plugin that imports FMOD Studio projects into Unreal Engine. From what I've read this will let me create dynamic audio events for game sequences. For the soundtrack I'm going to customize and mix in this:

    I'll update the rest of the sound effects as well. FMOD has way more than I need but it's free for small games, so why not?

    UPDATE on the cheap servos. One has already died which I expected would happen during use, but these have been sitting mostly idle so I'm not sure what happened. I've got three extras left...

View all 18 project logs

  • 1
    Physical assembly


  • 2
    Software setup


  • 3
    Network start


View all 3 instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates