Sharpee
Chord Writer / Getting Started / Publishing

Publishing

Publishing produces a zip: your story, the engine, and a browser client in one folder, ready to upload somewhere or hand to someone.

Publish

Build → Publish… asks where the zip should go, then runs. The Publish tab streams the toolchain's own output while it works, and on success shows you the artifact's path with a Reveal in Finder button.

Publish has no keyboard shortcut, and that is deliberate. Build is a loop step you hit all day. Publishing is something you decide to do.

The Publish tab: the toolchain's publish output, ending with the built artifact's size, IFID, and zip path, above a Reveal in Finder button.
A finished publish: what went into the bundle, the story's IFID, and where the zip landed.

What has to be true first

Two things, both checked by the toolchain rather than by the app:

  • The story compiles. Problems tells you this continuously, so you will know long before you publish.
  • The story has an IFID, the identifier that distinguishes your work from every other piece of interactive fiction. Yours does: Chord Writer gives a story its IFID when it creates it, and keeps it in <story-name>.config.json. The only way to reach this refusal is to publish a story whose config file went missing — restore it from version control, because publishing under a freshly minted identifier would make your story a different work to every archive that already knows it.

The artifact opens from a file

The published zip runs by double-clicking index.html. It does not need a web server, and it does not need to be uploaded anywhere first.

This works because the build embeds your story already compiled. Nothing on the page fetches anything, and there is no compiler in the bundle. A page that loaded its story at startup would work over HTTP and fail on a double-click, because a browser will not let a local page fetch a local file.

Shipping your source

By default the zip does not include your .story file. Publishing your source is a choice you make, not a default you have to notice.

To include it, add publish-source: to your story header:

story:
  title: The Orchard
  author: A. Writer
  publish-source: yes

It accepts yes or no (true and false also work). Anything else is a compile error rather than a silent fall back to the default.

When you do ship it, the file keeps the name you gave it. the-orchard.story arrives as the-orchard.story.

Feelies

A feelies/ folder beside your story is copied into the artifact as a folder, with its structure intact. It is for the things that come with a game rather than things the game consumes: a map, a letter, a newspaper clipping.

This is distinct from assets/, which holds media your story itself refers to and which is copied flat.

Files beginning with a dot are skipped in both folders, which is why a new project uses .gitkeep to keep them in version control rather than a README that would otherwise ship to players.