While everyone is social distancing I am digging deep into some of the inner workings of Kin.
So I’d try to talk a little bit about what is going on and what I am building. This will become nerdy and technical, but I hope you’ll bear with me. Since I last wrote something here I moved to Copenhagen where I now share a big house with Robin and Amanda. Amanda is running animation software startup Animakey and Robin is the lead producer of College of Wizardry.
Now, the entire shtick about rewriting the application is to remove a ton of manual work that I had to do previously, both in just running it for games, but also for maintaining and expanding on the feature set. So … in my usual manner that can probably best described as fully ramblomatic I’ll try to explain what I am working on.
Backend: Database Stuff
Mmmmm. Databases. They’re the best. They’re sexy and done right can be incredibly powerful.
Now, back in Kin v1, each game was running their own application, with its own database. This was problematic for a number of reasons, but mostly because if I made a change to the database schema (aka. the database model) I’d have to write migrations that reached each single running installation of Kin. That meant if I forgot to include a game in a rollout of bugfixes or feature changes, that game would most likely be locked to the old version. Updating would be timesink of manual tweaks.
For Kin v2 the system is essentially designed to operate as one big platform, also known as Software-as-a-Service. This means every single game that uses Kin runs in the same database and uses the exact same data structure. That means I only have to run migrations once the application instead of N number of times. Now, so far I’ve done that manually because changes to the database schema have been relatively few and far between. But it is now also becoming cumbersome, so I am adding some database migration automation, so if changes to the database are scheduled they will happen automatically whenever I push a new version of the application. Yay!
myKin: NPC’s and Organisers
I am working on adding some features and tooling that will enable to Game Runners to invite other Kin users to co-run the games with them, essentially sharing the management responsibility. There will still only be one Game Runner, but they can add an almost infinite number of co-runners. I haven’t settled on nomenclature yet.
I’ve wanted to add NPC functionality to Kin for a long time. For a while, the Pages function served that purpose, but I want those to exist more to represent organisations within the game world, and so I needed to figure out a way to add NPC’s.
Now there are a few requirements that have thrown a couple of curveballs at me.
- NPC’s should be virtually indistinguishable from normal characters, ie. any given participant should never know if they are interacting with another player or an NPC. I believe this will add to the richness and depth of the universes that Kin support.
- NPC’s should be shared between the Game Runner and whatever co-runners that person has added to a game. Ie. they should be able to log into a game, and switch between all NPC’s in order to keep the game running.
Client: Groups and Pages
One of the biggest requests (apart from Private Messages, but that is an entirely different beast) is re-adding Groups and Pages to Kin v2. Luckily I can migrate a lot of the code and functionality from v1, so I hope to have that in place with this release as well.
Okay, but after that?
Putting all of this stuff together means that a pretty beefy update is coming down the line. Once that is out, my plan is to switch my focus and attention to getting Ratatosk up and running. Hermes is the message transporting interface I am building for Kin. It is meant to be a real-time transport of notifications and private messages. It’s not something I’ve dabbled in before, so I am careful about it, but if I can pull it off it means we’ll have near-instant messaging baked into the platform.
As with most things of this size, I have no real idea when it will be done, except as soon as possible. 😀 I am spending all of my time next week on this, though.