Hey DEV community!
I wanted to share a project I am working on in my free time and tell a bit about how it's structured and which frameworks and/or languages I picked to develop it.
The project is called RoboStreamer and allows users to upload pre-recorded video files to have them streamed via RMTP to their Steam Store pages. So its basically a marketing tool for (indie) game developers and publishers.
Everything in this project is done by myself - the planning, development, design and marketing. I am happy to answer any questions you have!
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.
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.
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!
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
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.
Finally, there is the frontend process powering the RoboStreamer website and the control center. The whole frontend is created with Svelte using Elder.js which makes it easy to create fast and SEO friendly web projects.
Partial screenshot of the RoboStreamer controlcenter
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!