A modern scripting language for a pleasant writing of long dialogues in video games.

Any text line is considered as a dialogue message, unless it explicitly calls one of the language features.
It's really that simple.

How to start Language reference

16:41

Momochi beach

Fukuoka

Character sprite
Guide


							

 

The KoeScript lines are slowly executed for demonstration purposes.

  • ✍️ Easy to read and write, even as a non-programmer
  • πŸ’ Can be implemented as you want to fit any game or application
  • πŸ“– With common functions & tags to ensure a coherent usage between projects
  • πŸ€— An original implementation in C# that even beginner developers can understand
Opposition of visual novel makers tied to engines or languages, and KoeScript that isn't tied to anything

Why.

A lot of existing scripting languages already exists for a long time, especially speaking of visual novel games, but they're always very coupled with their corresponding game engine. Even though some of them have been implemented in other game engines, I thought it could be nice to make from scratch a new scripting language that's implementation agnostic, while being inspired by the existing ones.

Having the same language in different projects, using different engines or frameworks, makes it easy for developers and storywriters.

Mainly made for long dialogues with punctual needs to call functions and such, KoeScript have a very lightweight syntax with a limited set of features.

Each project can interpret differently the same KoeScript function call, as it suits them

100% agnostic.

Can you game understand a sfx function call within a KoeScript dialogue ? Are functions executed line-by-line, or together just before a new dialogue message ? It's all up to you. All of the KoeScript implementations are just meant to parse KoeScript dialogues and represent them in a more code-friendly way, so that each line can be rapidly processed by your game or application.

Of course, depending on the needs of your game or application, you decide of which functions or tags can be used in a KoeScript dialogue. To have a consistent KoeScript usage across various projects, you can choose to follow the Common Reference when you'll implement functions call and tags parsing.

The accessible source code and documentation can lead to easy implementations or languages forks

Open to all.

The original C# implementation could have used a more complex and faster parsing, but it wasn't necessary for such a straightforward scripting language. It makes it easy for everyone, even beginners developers, to have a look inside the parser and understand how text line become usable pieces of code. As such, it also makes it way easier for everyone to collaborate on the KoeScript C# implementation.

You're invited to create your own implementation from scratch in the language that suits you or your project the most. Surely you'll be able to implement most of the language syntax in no time. When used in video games, the execution flow may be the most difficult challenge to overcome, which is why the living Unity implementation is also made available.

Implementations

Due to its first use in an Unity game, the first implementation of KoeScript is written in C#. Over extreme performance, an simpler and more straightforward parsing system has been chosen so that nearly anybody can have a look over the source code and understand its inner workings.

Languages

Games engines

Text editors & IDE

Contribute

No matter how big, any contribution is very much appreciated. KoeScript is still a living language and its specification isn't entirely finished, so we're open to all ideas. Please take a look at our Contributing guide to do so, and also the GitHub documentation if you're new to GitHub.

Roadmap

The language specification is still a living document as a first stable version hasn't been reached yet.

⬀ Feature present in specification
πŸž… Feature in consideration
2.0 Targeted version

  • Messages
  • Function calls
  • Labels
  • Context variable attribution
  • Choice-based flow control