The RoboStreamer logo in front of a background of computer parts, maybe a mainboard

Hello World, this is RoboStreamer

Posted on May 21, 2022 by Christian Engel

About me

My name is Chris - I am living in germany and currently working as Head of Datadriven Content Portals for t-online.de - one of, if not the biggest german news site with more than 47 million monthly active users.

My team is responsible for concept/planning, development and delivery of the web portals which deliver live stock market and sports data.

I am an active web developer for nearly 20 years now and worked on lots of medium and big projects, try to be helpful for other devs and in the open source community and even founded a startup once.

In my free time, I work on different pet projects and one of them is RoboStreamer.

Why I started working on RoboStreamer

Out of personal interest, I have a closer eye on the indie point-and-click adventure bubble. In my childhood, I loved playing games like Monkey Island, Day of the Tentacle, Kings’ Quest and others.

Four screenshots of the games 'Curse of Monkey Island', 'Day of the Tentacle', 'Kings Quest VII' and 'Indiana Jones and the Fate of Atlantis'

Four screenshots of the games 'Curse of Monkey Island', 'Day of the Tentacle', 'Kings Quest VII' and 'Indiana Jones and the Fate of Atlantis'

During a recent Adventure Game Steam Event, I noticed some developers were hosting pre-recorded Steam Broadcasts. I researched a bit about how this is done and noticed that its surprisingly much work to do so. You not only have to produce your video but you need to leave your computer running and follow strict configuration parameters in order to make your video appear as a live stream on your Steam Store Page.

And there are lots of developers doing this because - totally understandable - they have games to develop.

I noticed that - when you know how to do it, it’s relatively simple to let an instance of ffmpeg handle the streaming part. For initial tests, I had a webserver running, installed ffmpeg there and configured the streaming settings by hand. I did so in order to support an indie game developer friend of mine.

This worked surprisingly well, and I thought by myself: if I add a simple UI around it, I may be able to help a lot of indie devs out there!

How RoboStreamer works

This is my first personal project I built in a decentralized manner where even parts of the main system are separated processes being able to run on separate servers. For the sake of development speed, I settled with Strapi as my main data storage solution. It gives me an API and user authentication without much hassle. And from Strapi, its relatively straightforward piping events to my other services.

A diagram showcasing the different parts of the RoboStreamer system

A diagram showcasing the different parts of the RoboStreamer system

There is the upload service which accepts large video files cut into small pieces. It’s responsible for merging the pieces back together and moves them to a storage solution hosted with Hetzner. I will add video conversion there as well to make it even easier to create Steam Broadcasts from pre-recorded videos.

Another service is the coordination process which will spread streaming jobs to multiple running streamer processes. The coordination process is like a load balancer for the streaming requests - it will give jobs to streamer instances with free capacity or even boot up new streamer instances, when needed.

All of those services are written in Typescript and run via Node.js.

Finally, there is the frontend process powering this website and the control center. The whole frontend is created with Svelte using Astro which makes it easy to create fast and SEO friendly web projects.

Screnshot of the RoboStreamer Controlcenter with cursor hovering over a 'Start Stream' button

Partial screenshot of the RoboStreamer controlcenter

Thanks for reading!

If you are interested in using RoboStreamer for your Steam Store Page, give me a shout on Twitter or register for the newsletter on the homepage.

If you’d like to discuss techy things - you are very welcome to have a chat with me as well!

Greetings,
Chris


You have a question or just want to talk?

You can reach out by mail or find RoboStreamer on Twitter or join my RoboStreamer Discord Server.
I am always available for a chat (just sometimes, I need to sleep a few hours)!