Shiku's World January 2023
My personal game development project where I try out different ideas in a multiplayer online setting. It is unique in that building any kind of game is possible without ever restarting the server, all the while players are playing the game.
My Tech Stack


Writing an engine is insane so I tried to really look into Unity, Godot, Bevy and other Engines that support web builds but I was not able to find anything that meets all my requirements. I wanted to build multiple games while the server was running and clients were connected so the client would need to be very flexible and work inside the browser together with a very flexible server and I could not find a good way to add or rewrite the current solutions on the market to something that really fit my vision.
Thankfully I was able to find a good rendering engine with Pixi.js and a good physics engine implementation with Rapier while using the browser for its multimedia capabilities, so it felt more like sticking together the parts than building everything from the ground up. This also allowed me a lot of flexibility to integrate the solution with my twitch extension for the stream and other systems. I decided to use Rust for the server engine because I saw its potential for writing applications that cannot crash, as long as you avoid certain unsafe features of the language. This would put my mind at ease over the server crashing during a live stream.
I also wrote a little speech to text tool that runs in the browser that I overlay on my stream to make my voice appear as a text bubble akin to playing an rpg.
Having to really think through all states of your application is something that I love rust for and that prompted me to try to replicate some of its amazing features like exhaustive pattern matching in typescript.
For deployment I use Dockerfiles that I build with the Github Action Pipeline with my own custom Github Action which I wrote in an attempt to standardize me setting up Ci/CD for new projects. I have an infrastructure folder in my repository that automatically gets updated when I commit and build via Github Actions. All I need to do then is manually release a new production version from my command line.