HomeGamesUpdatesPricingMethodology
Steam News16 June 202613d ago

Migrating backend from JS to TS

When I started making Actor, RE: Actor I knew I needed a backend service to do the game logic to send data and whatnot around to all the clients. I have a long professional history with PHP for like...20 years.

Full notes

Full Actor, RE: Actor update

Read the full published notes in a cleaner layout. The original post stays linked below.

What changed

0 fixes1 addition2 changes0 removals
  • Events
  • Server
  • UI and audio
changedEvent at the second day of converting the solution over, I found 4 bugs I hadn't noticed before. And, I sussed out two other different situations to optimize and fix up.
addedSo when a new version of the Actor, RE: Actor service ready to go up to prod I use three three simple bash scripts that I wrote to do my bidding: build, deploy and install. I simply run ./build 1.2.0 (or whatever semver I am making) to build it. Then ./deploy 1.2.0 and it ships it up to a artifact server. Then on the servers I want to deploy it to, I can pull them out of rotation and run ./install 1.2.0 to install it on that machine, test it and then put it back into rotation. Easy!
changedBefore I wrap up this migration reflection, I wanted to also say that I plan on bringing Actor, RE: Actor to different countries and languages so more people can play. Another benefit of Content Shield is that it supports a lot of languages right out of the gate! And I can supply my own if a language isn't supported, so that's great too. So moderating text is one less thing I have to worry about when making the game in French, Italian, German, etc etc.

When I started making Actor, RE

Actor I knew I needed a backend service to do the game logic to send data and whatnot around to all the clients. I have a long professional history with PHP for like...20 years.

But for Actor, RE

Actor I thought it might be good to branch out and try Node.

So entering that whole world, I was pretty overwhelmed, so I just went with Express and Common JS. I liked the idea of TypeScript, but it seemed like a lot and I wanted to make a prototype and get it all up and running.

The prototype turned out fun (hooray!) and after a lot of development, application separation and restructuring, and deploying, I stepped back and looked at the project as a whole. It was sufficient to do everything I needed for the game and then suddenly I realized: I needed to moderate text going in!! I don't want people to be allowed to use bad words in the game; especially if it is being played in a public place!

I found Content Shield by Zach Handley (https://github.com/zachhandley/ContentShield) and it was a perfect fit! ...Except my app was in Common JS. So! It was finally time to switch over to TypeScript to mainly get to integrate text moderation into Actor, RE: Actor and also get the benefits that TypeScript provides.

I learned a lot really quick and chatted with some friends who know a lot more on the subject than me. They were super helpful, and after a few nights of delirium and asking questions to myself like: "Am I doing this right? Is this how it's supposed to go? Is this even worth it?", I came out with my answer: Yes it was worth it.

Event at the second day of converting the solution over, I found 4 bugs I hadn't noticed before. And, I sussed out two other different situations to optimize and fix up.

As the conversion of the code completed, I now needed a way to deploy all this stuff. At first I had it totally wrong, but a pal showed me how to properly deploy it all.

So when a new version of the Actor, RE: Actor service ready to go up to prod I use three three simple bash scripts that I wrote to do my bidding: build, deploy and install. I simply run ./build 1.2.0 (or whatever semver I am making) to build it. Then ./deploy 1.2.0 and it ships it up to a artifact server. Then on the servers I want to deploy it to, I can pull them out of rotation and run ./install 1.2.0 to install it on that machine, test it and then put it back into rotation. Easy!

Before I wrap up this migration reflection, I wanted to also say that I plan on bringing Actor, RE: Actor to different countries and languages so more people can play. Another benefit of Content Shield is that it supports a lot of languages right out of the gate! And I can supply my own if a language isn't supported, so that's great too. So moderating text is one less thing I have to worry about when making the game in French, Italian, German, etc etc.

Anyhoo, that's enough rambling! Glad I have the Actor, RE: Actor app in TypeScript now!

-Quack Mike

Source

Steam News / 16 June 2026

Open original post

Changelog.gg summarizes and formats this update. How we read updates.