chore: update README

This commit is contained in:
Brett Broadhurst 2026-04-21 14:40:40 -06:00
parent 127db83041
commit f27538f88f
Failed to generate hash of commit

View file

@ -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_, _Heavens Vault_, and _Overboard!_.
This project aims provides a modern, highperformance 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 stackbased virtual machine designed for predictable performance
- Zeroallocation execution paths where possible
### Ease of Integration
Ink should be trivial to embed in any engine or toolchain. This implementation is designed to be:
- **Languageagnostic** — usable from C, C++, Rust, Zig, C#.
- **Engineagnostic** — simple to integrate into Unity, Unreal, Godot, or custom game engines.
- **Buildsystem 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 commandline 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!
<p align="center">
<a href="https://www.buymeacoffee.com/haxolotl">
<img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" height="50" />
</a>
</p>
## Unsupported Features (Planned for near future)
* Tags
* Tunnels
* Lists
* Sequences