Mixer Mini Golf

In 2018 we started to wind down the Xbox VR investigations and transition to prototyping to grow the number of users on Xbox. At this time, Microsoft had a streaming video service primarily for streaming games called Mixer. Mixer was a lot like Twitch, but it had some very interesting low latency interactivity which enabled developers to place an iframe (HTML, CSS, and Javascript) on the same page as the video.

I think it was around high school when I was super into Candystand.com’s collection of flash games. My favorite was their mini golf game with its not so subtle advertising for delicious candy.

My idea was to make a simple multiplayer mini golf game, like Candystand’s, but to spawn in a ball for every stream viewer and provide locally-rendered, zero latency controls while sending the input to a server which would be playing Unity and streaming the game feed to Mixer via OBS. As the project started to show promise, a few more devs jumped on to help me. I led this team to make, at the time, the number one game streamed on Mixer, beating out the likes of Fortnite and GTA. At it’s peak, we’d see >300 players all playing together with no game download. We added controller and touch support so Mixer viewers on Xbox and phone could join in on the fun too.

To break up the monotony of playing hole after hole of the same few dozen levels, we built a level editor that was a mixture of locally rendered HTML5 canvas images for fast placement and remote (Unity) rendered elements. I was particularly happy with a dust cloud effect that masked the ~500 ms latency after placing a local element before it was sent to the server and round tripped back to the video tag.

As the popularity grew, we decided to host some live tournements with real prizes. We built a few additional admin tools into the game and used OBS to have a webcam insert of our host Esther. It was awesome to watch viewers join the stream and ask how they could play and see the chat tell them they already were playing! Just click on your ball on the video to get started.