A downloadable tool for Windows and Linux

Node-Based Dialog System for Games

Schnack is a multi-platform editor that provides node-based dialog creation for games and interactive fiction.

Built-In Localization Support

The pronounciation of the name is "shnuck", which is a term for "talking" or "chatting" in north Germany.

Lua-Powered Logic

Implement your dialog logic using Lua. There are different types of nodes that allow you to express different sorts of logic in your dialogs. Additionally, each node has an optional precondition, which is checked in order to decide whether it may be executed. After the execution of a node, a script can be evaluated in order to modify the state of your game world. Preconditions and post-execution scripts are expressed in the Lua scripting language.

Schnacker Runtimes

While "Schnack" means "casual conversion" in North German dialect, "Schnacker" is someone who talks a lot without actually doing that much (basically a "blatherer").

This is not entirely true for the Schnacker family of libraries. In order to run the dialogs created with Schnack, you can use one of the existing runtime libraries, which parses the file and interprets the dialog logic. There are libraries available for different languages, such as C++, Javascript, Python and C#.

Git-Friendly JSON-Based File Format

The dialog files are based on the JSON file format. The files are automatically stored with line-breaks and indentation, which makes them easy to read for a human being, as well as easy to merge when used with a version control system, such as git. The use of universally unique identifiers (UUIDs) for node IDs instead of auto-incremented numeric IDs ensures that Schnack files can be merged after being edited concurrently.

Free and Open-Source

Schnack is released under the permissive zlib license that allows for the use within private, open-source and commercial projects free of charge.

Used in the ALPACA Point and Click Adventure Engine

Schnack is developed for the ALPACA engine ("A Library for Point And Click Adventures"), which is also free and open-source: https://brain-connected.itch.io/alpaca

Download

Download
schnack-dialog-editor-windows.zip 100 MB
Version 0.7.4 40 days ago
Download
schnack-dialog-editor-linux.zip 96 MB
Version 0.7.4 40 days ago

Comments

Log in with itch.io to leave a comment.

Hi :D. Can you please tell me how to use questions and branches.

Hi, of course:

Question nodes don't contain any text, so if an NPC asks you a question, you would have to add a normal text node before the question node. The question node is just used to indicate that there are answer nodes following. The answer nodes can contain text, but it is intended that this text is not the spoken text by your character, but the choice you are presented when asked this question. Then, you can add text nodes after the answer nodes if any character should say something (including the player character). This way, you can also add options like "[End Dialog]" and nobody says anything.

The branch node is similar to the random and cycle node. These nodes can have multiple successors. The random node always chooses a random successor node, the cycle node remembers which successors were already used and goes through them in a round-robin manner and the branch node always uses the first possible successor. The first possible successor means: The first successor where the precondition evaluates to true.

Each node can have a precondition, a Lua expression for example "return playerHasTalkedToNpc and playerHealth > 4". In this example, the node would only be chosen if the condition is true. For branch, random and cycle nodes, nodes with negative preconditions will be ignored, for answer nodes, the answers with a negative precondition won't show up in the possible answers.


I hope this helps. Maybe I will find the time to record a short video tutorial in October...

(+1)

thx :D

I wish I had a use case for this. It looks very promising :)

With new projects there will be new use cases :-)
And maybe the editor will be released as a 1.0.0 by then