Katelog #6: Paving the way for tools

The experimental release for August 2023 is here!

This release is fully incompatible with previous versions. You can either access https://kate.qteati.me/?reset=erase-all-data or go to Settings -> Diagnostics & Recover -> Delete all data to reset Kate’s storage to be able to use the new version.

This release has focused heavily on adding the basic infrastructure to allow game dev tools (and other kind of tools) to be released as Kate cartridges. That means a new cartridge format and new powerful capabilities, but also some support for text input.

You’re not going to see the current command-line-based publishing tools as cartridges just yet—but they’re coming in the next release! Instead, to test the waters, this release went with a much simpler tool: the Kate Importer.

The Importer is a small cartridge that can take in a Ren’Py or Bitsy game that was originally released for PC/Windows (or Web, in Bitsy’s case), and patch it so that it works as a regular Kate cartridge. This means it’s possible to play some Ren’Py games released only for PC on your phone’s browser with a little bit of effort. There are some significant issues with more complex parts of Ren’Py though, and a fairly long startup time, so don’t expect it to work for larger/more commercial games.

Though not exactly visible, there has been some good progress on the device sync and store features. It’s still too early to say if they will make the next version’s cut, but one of them might! Otherwise, the focus will be on lifting the current publishing tools from their command-line form into proper graphical user interfaces and a release as Kate cartridge.

See you in September!

Katelog #5: Ren'Py support (and more!?)

The experimental release for June 2023 is here! You can try it out by going to https://kate.qteati.me/ — hold down Menu, or Left Shift on the keyboard, select About Kate, and click on the update button to update!

The biggest chunk of work in this release was getting proper support for Ren’Py games. This version features an IndexedDB bridge that implements a subset of the IndexedDB API over Kate’s own storage API in order to support save data for Ren’Py games exported with Ren’Py web.

Plenty of other things also changed to make Ren’Py cartridges feel more like a first-class supported runtime in Kate, including mouse support and a bridge for automatically patching Ren’Py specific logic to work in the platform. There’s still some features missing, such as text-input support (since Kate does not allow the cartridge to receive focus or keyboard input directly).

Support for Bitsy games was also improved by filling in some of the gaps with how we prepare the HTML to run in the sandboxed cartridge process, which can now handle Audio and Video elements (but not srcset attributes).

For the next version we’ll focus on support for synchronising save data (and settings/cartridges/etc) across your own devices; importing Ren’Py games directly from Windows/etc releases; and initial support for a Kate store to make finding and distributing cartridges easier.

The release is not happening in July, however, because winter/summer vacation. You should take winter/summer vacation too. Breaks are important!

See you again in August!

Katelog #4: Native binaries and more

The experimental release for May 2023 is here!. You can try it out by going to https://kate.qteati.me/ (use Applications -> About Kate to update!) or by trying one of the native binaries that will start being published as of this version.

The native binaries are not yet sandboxed, however (the Kate kernel and cartridges are sandboxed as usual).

The two biggest changes in this version were improved input support (there are now screens to configure keyboard and gamepad inputs, some minor quality-of-life improvements to touch controls, etc), and a completely rewritten storage API.

If you’re curious about why the storage API was rewritten, there is a very long technical document with all the details, but it boils down to two main things:

  • The previous API was not very grounded. It was an experiment, and it made it hard to reason about its safety and privacy properties. We need to be able to understand those to guarantee to players that their data can’t be tampered with, corrupted, or accessed by a different application.

  • The lack of versioning made it very easy to corrupt data on upgrades. That’s the same with regular file systems, but that doesn’t mean 60 years old file system designs are a good idea.

The new API has a very small formal semantics, and the whole API is derived from those simple operations. This makes it possible to both understand the safety implications of the API and check these safety properties. As Kate aims to be very safety and privacy conscious, these are good things to have.

It also has completely isolated versions. Isolated versions make it possible for users to upgrade cartridges without having to worry about version incompatibilities (or accidental corruption). If they upgrade, and something doesn’t work as they expected, they can downgrade to the older version and have the cartridge’s data in the exact same state as before the upgrade happened.

So, what’s next in the horizon for Kate? Well, the focus area of the next release will be finishing the storage updates. Storage migrations are not implemented yet, and an IndexedDB bridge is long overdue. With this completed, support for Ren’Py web export will be at almost 100% — currently Ren’Py cartridges cannot save data, so that limits releasing longer VNs.