Time for another bi-yearly quarterly update on the progress of Synk and issues that are currently attempted to be solved.

Public Alpha (Announcement)

As of this blog post I've decided to open up the application to the public in the coming weeks and will allow registration and usage for free. The accounts will be somewhat limited in their scope and there is no guarantee your rooms will be retained between certain updates. However your room state will kept on a best-effort.

Alpha Limitaions:

  • 1 Room Allowance
  • 100 Room Scenes
  • 150 Room Resources
  • 15 Instances per Scene
  • 10 Listeners per room

These numbers are expected to change over time as we figure out what the limitations of the current structure is. There will also be a way to report issues and track the progress of their resolution.

Alpha Usage

Due to the cost-saving efforts of not having to host or be legally on the hook for copyright infringement the only supported audio type is a media file that can be played in the browser hosted on your own publicly available storage. This can be Dropbox, OneDrive, Box, or AWS S3, Google Cloud Storage, or any other storage service that you can provide a direct link to the file mp3/ogg/wav asset. The rest will be handled by Synk. Do keep in mind the size of your files as each client will need to download the file.

You will be able to create rooms and play audio for up to 10 people. For now while we're building out the applications there will not be a feature lock as we want to have everyone be able to test what's available.

Why the delay?

This article was originally written back in Q3 of 2019 but I became frustrated being roadblocked by FeatherJS's release cycle and backward incompatible changes with seemly trivial components of my application. Over the same time I discovered NestJS and after a successful integration at my place of work I got to see the absolute power of this new(ish) framework.

So I did what any engineer would and rewrote the entire backend to be using NestJS and the amount of effort it took to get to get API parity was a mere fraction of the time it took to build the FeathersJS implementation. This isn't to say feathers is a poor framework, it's actually a pleasant framework to use if you can shoehorn your entire application into CRUD options and you get realtime event replication for free. A lot of what I relied on to relay all the events and authentication was now gone and even without the hand holding did cause some massive headaches.

Alongside this rewrite I wanted to be able to support certain audio mutations such as scene looping and scene shuffling. This was an endeavor to separate the audio event stream from the UI components and also allow the audio state to manage itself but be directed by UI events. So far with this rewrite nearly all sound state bugs are completely gone bar a few lost sound states if you abuse certain buttons fast enough.

How long is this actually going to take?

If I could give a definite answer I would. Between my own career and the amount of time I have free to devote to these projects and my best guess would be sometime in March at the latest. Anytime sooner than that would be great, but I need to ensure what's provided can't be abused too badly otherwise my costs could make it prohibitive to allow open usage. There aren't many tasks left to complete before a public alpha is ready.

Future Direction

With big ideas comes big changes. Synk will no longer be a standalone application but instead a component of the overall kit of tools available to run in person and online tabletop roleplaying games. As time goes on more will be revealed about the other projects to be coupled with Synk and I hope it's as exciting as it sounds in my head!