Starlight Dawn


Starlight Dawn was created using custom software authored by me! It consists of four parts: the source, a compiler, the engine, and the website.

The source consists of various Ruby files that create objects, each of which is a part of the world. It uses a custom Ruby library I wrote to describe elements of the world.

The compiler uses the source objects and produces the assets necessary to run the game. It uses custom Ruby code I wrote, along with Active Support and the the chunky_png gem. The output of the compiler is a set of JSON files describing each map and their connections, characters, and messages, along with tiles needed to render the map in the browser.

The engine is custom JavaScript I wrote that interprets the JSON files produced by the compiler and, along with some HTML, renders the maps and allows navigation in the browser. This JavaScript is managed by esbuild. There is no other dependency or library used and, by the grace of all deities across the universe, there is no dreaded package.json file! This makes me very happy. It uses the local storage API to save your location.

The website is built from the aforementioned engine and compiler output, along with some HTML and CSS. The HTML was all authored by hand without any framework. The CSS uses Tachyons and custom CSS I wrote. The font is VT323 by Peter Hull. Plausible is used to track traffic on the HTML pages (but not during the experience itself). The website and its assets are/all packaged, bundled, and organized by the greatest system automation tool around: make. The website should respect dark mode if you have that set, although Starlight Dawn does not, and will look the same no matter what.

As for me, the author, people call me “Dave”, though I write technical books under my full name, “David Bryant Copeland” and am known as davetron5000 on pretty much all social media. I am an experienced programmer, technical author, scuba diver, cat lover, and, quite obviously, nostalgic for the good old days. I write tech stuff on my website.