Here are my notes from Feb 6-8, when I was evaluating Godot addons for Ink and Yarn. I think I skipped Twine because it required the Mono edition of Godot, which I prefer not to use, because I don't like the big footprint resulting from all the Microsoft DLLs on Linux.
Downloaded inkgd 0.2.1 <inkgd-45f4b0e452a4e1ffa6d9ad3175e59776d0df6986.zip> from <https://godotengine.org/asset-library/asset/349>. MIT license.
Extracted assets/inkgd/ into new Godot project InkTest.
README <https://github.com/ephread/inkgd/blob/0.2.1/README.md>
Unfortunately, this appears to require the Mono edition of Godot and uses an external C# application.
I looked at Yarn. It's similar to Ink and Twine. It has "shortcut options", which are similar to Ink's weave feature.
At first it looked like Unity is needed to run Yarn scripts. But there's a Godot plugin for it.
Downloaded GDYarn 0.0.1 <GDYarn-bd5d787cd443709ee0e703e60d172fd99bd7f34f.zip> from <https://godotengine.org/asset-library/asset/747>.
The .zip contains a sample Godot project GDYarn that includes the addon.
When running scene test.tscn of project GDYarn, I got a bunch of error messages. I grepped for the first error, and started setting breakpoints. That led me to the yarn_runner.gd script and the property _yarnFiles.
In test.tscn, in the Inspector, node Node2D/YarnRunner's property Yarn Files was set to:
C:/Users/19254/Desktop/Projects/GodotEngine/Yarn/addons/kyper_gdyarn/examples/example1.yarn
I used the browse icon to locate the file example1.yarn. That changed the property to:
~/GodotProjects/GDYarn/addons/kyper_gdyarn/examples/example1.yarn
After that change, scene test.tscn runs without error, and seems to be a correct interpretation of the Yarn script example1,yarn!!!
I tested exporting project GDYarn to Android, HTML5 and Linux/X11. Android and HTML5 fail with the display almost empty; Linux/X11 works. I suspect the problem could be that the .yarn file is being read via the global file system, rather than res://.
Continued evaluating Yarn and plugin GDYarn. A problem with the plugin is that there are no helpful diagnostic messages about syntax errors. Another problem is that some of the important Yarn features don't seem to be supported, such as variable interpolation and conditional statements.
After that, I implemented my own "dialog handler". It "works", but it's cumbersome to use, because the dialog is hard-coded. For example, here's a portion of the dialog:
"not accepted":
d(loc2
+ '\nFiona: "Hello adventurer! I lost my necklace. Can you'
+ ' find it for me?"')
c('"Yes"', [
["d", '\n"Yes, I will try."'
+ '\nFiona: "Thank you!"'],
["s", "quest_state", "accepted"],
["c", '"Bye"', [
["j", "k_game"]
]],
])
c('"No"', [
["d", '\n"No"'
+ '\nFiona: "If you change your mind, you\'ll'
+ ' find me here."'],
["c", '"Bye"', [
["j", "k_game"]
]],
])
Here's the completed test of this dialog handler: http://beinoni.org/godot/Inklike_HTML5_3.4/