Skip to content
Abandoned visual novel built with TypeScript and nw.js
TypeScript CSS PowerShell Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
notes on scene format.txt

Project Katana Source Release

TypeScript/nw.js visual novel engine

XCVG Systems 2017-2019


This is the source code for Project Katana, a now-abandoned visual novel. It is written in TypeScript and runs in nw.js.

This project- game and engine- is basically abandoned at this point, but perhaps you can make some use of it. At this point it's good enough to get a basic game running, but still missing a lot of features.


The engine was going to be named OpenVNS at some point so that's why there's references to that.

Everything is done with HTML elements on the DOM, there is no Canvas. It's a bit unusual, and I'm not sure if it was a great decision or a horrible one.

I don't think the battle system works at all. Quests are tracked but there's no quest log, and the inventory system is probably broken. Everything else is mostly working.

Most of the asset folders are self-explanatory. Backgrounds go in the bg folder, character heads go in the char folder, music in the mus folder, scene files in the scenes folder, sound effects in the sfx folder, and videos in the video folder. Standing character images or other images used for hotspots are considered UI graphics and go in the ui folder. The data folder contains inventory and quest definitions, initial state, and a legacy file with multiple scenes in it.

The scene format is poorly documented. I've included what notes I have, as well as some example scenes. It's 90% the same as what CommonCore uses for dialogue (at least at this point in time).

This won't run in a browser as-is because it relies on node.js functions for file handling and possibly a few other things. To adapt it, you'd need to rework the way assets are loaded and modify save state functionality to use something like cookies, localStorage, or IndexedDB.

The April 2019 demo of Project Katana isn't protected in any way, so you can download that and tear it apart to get an idea of how a game should actually be put together.


The code and included assets are licensed under the MIT License. The fonts, project template, libraries and definition files are provided by third-parties under various licenses. See the CREDITS file for details.


BCIT Game Dev Club for inspiring this in the first place, though I'm not sure how it happened.

Hank Lo (aify) for his contributions to the game before it was abandoned.

JSON Editor Online, which a shockingly large proportion of the game was written in.

The people behind nw.js, Chromium, node.js, TypeScript, jQuery, and a few other projects for building the technological foundation that underpins this whole thing.

You can’t perform that action at this time.