From f27538f88f2d888ec0bdac799b09e2e3d681243d Mon Sep 17 00:00:00 2001 From: Brett Broadhurst Date: Tue, 21 Apr 2026 14:40:40 -0600 Subject: [PATCH] chore: update README --- README.md | 80 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 70 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 56e11d6..594bd15 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,73 @@ # Ink -An experimental, high-performance alternative to Inkle's C# compiler and runtime. -## High-level Goals -* Create the fastest possible implementation of Ink -* Eliminate edge-cases that could cause confusion or performance penalties, found within the Inkle implementation of Ink -* Support as much of the language as possible, with some quality-of-life improvements +Ink is a narrative scripting language developed by [Inkle](https://www.inklestudios.com/), designed to allow writers and game designers to express branching narrative in a natural way. It has powered many of Inkle's titles such as _80 Days_, _Heaven’s Vault_, and _Overboard!_. + +This project aims provides a modern, high‑performance implementation of Ink aimed at game engines and custom tooling pipelines, imposing minimal runtime overhead, and even usable in constrained environments. + +> 📝 **Experimental** This project is in an early, unstable state. Breaking changes are expected. Only use in production if you're super rad. + +## Installation + +### Build From Source + +This project tracks the latest release of the Zig compiler (0.16.x), and requires LLVM 21.x to generate its code. + +``` +git clone https://codeberg.org/haxolotl/ink +cd ink +zig build -Doptimize=ReleaseSafe +``` + +## Project Goals + +### Performance + +The canonical Ink implementation is written in C#, and integrates well for Unity. Unfortunately, it is not optimized for software developed in unmanaged languages, such as C or C++, giving rise to competing runtimes such as JBenda's wonderful [inkcpp](https://github.com/JBenda/inkcpp). + +Our goal is to build the **fastest, most efficient Ink compiler and runtime**, with: + +- A compact, pre-compiled binary format +- A stack‑based virtual machine designed for predictable performance +- Zero‑allocation execution paths where possible + +### Ease of Integration + +Ink should be trivial to embed in any engine or toolchain. This implementation is designed to be: + +- **Language‑agnostic** — usable from C, C++, Rust, Zig, C#. +- **Engine‑agnostic** — simple to integrate into Unity, Unreal, Godot, or custom game engines. +- **Build‑system friendly** — self-contained within its generated library file, without any dependencies. + +### Developer Tooling + +Writers and developers deserve tooling that naturally fits into their workflow. This implementation aims to support: + +- Better error messages and reporting +- Fast command‑line compilation +- Binary introspection and runtime tracing +- AST and IR introspection +- Integration hooks for editor extensions and custom pipelines (coming soon!) + +## What is supported? + +This implementation currently only supports the minimum language features to be a usable compiler and runtime for most projects. The following features are not currently supported, but planned for the near future: + +- Tags +- Tunnels +- Lists +- Sequences + +## When will there be a stable release? + +Our benchmark for when the first stable release can be tagged is the ability to compile and run [The Intercept](https://github.com/inkle/the-intercept), a sample of a real-world Ink story created by Inkle. + +## Support + +If you like this project and want to support its continued development, consider buying me a coffee. This code ain't gonna write itself! + +

+ + + +

-## Unsupported Features (Planned for near future) -* Tags -* Tunnels -* Lists -* Sequences