Ink – Inkle's narrative scripting language
inklestudios.com
inklestudios.com
And, if I may self-promote a bit: My colleague and I took that game and made it accessible to Windows screen reader users, as a proof-of-concept for integrating our AccessKit project in Unity, and non-Rust environments in general: https://github.com/AccessKit/the-intercept A truly reusable Unity plugin for AccessKit is in development.
Also a bold - but it turns out sensible - choice, for a language oriented towards producing text to not really have extensive support for strings. Because it turns out that strings are a bad idea in most cases! What you actually want are rich templates.
They have exact semantics of GOSUB, RETURN, and POP from Atari BASIC.
->tunnnel-> is GOSUB tunnel_line_number
->-> is RETURN
->tunnel2-> within a tunnel is basically POP; GOSUB tunnel2_line_number
and
->knot is GOTO knot_line_number
I really like thinking about translating those weird languages into some proper language as directly as possible, but for Ink the host language must have been either Atari BASIC or assembler. Labeled break and continue in modern languages is not powerful enough, even PHP goto is not powerful enough (because it can't goto into a loop or a conditional block).
I mean technically you could do it by simulating goto with break and continue a and faking conditional and loops with this simulated goto, but still there would be limitation that goto target in Ink can be a variable.
Also the whole point of translating language into some proper host language is to able to mix the two as freely as possible.
I wonder how would modern version of goto based programming looked. What tools would we have for tracking errors in such code if we didn't abandon it altogether in favor of nested blocks and functions.
Ink for example tracks dangling ends of the story (not marked with ->END or ->DONE). Maybe goto based coding environment would also have equivalent of something like that. Being split into sections that need to overtly exit to some other section or program end on all the code paths.
I really like how by defining type you also define variable by the same name. I was craving for such feature in many scripting languages in my programming career.
- title contain name
- first sentence describe what it does
- first image shows typical use
This is how you write release notes or landing page.
Wizard/Form Builders are just too constricting, and Static Pages/Doc Generators are too loose. It looks like a good middle ground.
I'm still hesitating between different software. Ink’s Markup format seems good for editing and revision control.
Ink has its advantages, including the text format and custom logic.
[1]: https://jvns.ca/blog/2021/04/16/notes-on-debugging-puzzles/
[2]: https://mysteries.wizardzines.com/slow-website.html
[3]: https://mysteries.wizardzines.com/connection-timeout.html
80 Days is a pretty great game on mobile actually, if you have a few bucks to spare.
It is essentially a slightly steampunk choose your own adventure. I haven't played in like 7 years, time to redownload :)
Here's a "short" game I made using Ink, and a little bit of CSS:
Do your various skill levels affect the game in any way?
for example, my friend and I were working on making a narrative-focused video game awhile back, and I used Ink to rapidly prototype out the opening scene. for the end product (that never ended up materializing… at least, so far), the gameplay would be completely different, and probably not use Ink at all. but it felt great to bang out the opening scene I had in my mind, to set the mood, get in the groove of writing, and start thinking about how the writing and interactivity could intersect.
to demonstrate how useful and easy to use this is, here's the aforementioned prototypical opening scene, in generated HTML form: https://rezich.com/crimpyr (it's "over" when all you have left to interact with is "[TODO]" scenes) and here's the source: https://rezich.com/crimpyr/source.ink.txt (note that I am not, by any means, a professional writer!!)
The entire game wasn’t coded in Ink, so I’m not sure if it’s possible to do that or not, but you can get all of the dialogue done in it!
Full disclosure, but we're probably going to deprecate Ink support soon because there are lots of little edge cases and warts that take too much time to support vs. how many of our customers use Ink. Still, fun to play with and you can do some crazy stuff!
https://en.wikipedia.org/wiki/PILOT
Also I want to compare it to Inform7 which similarly offers the ability to make an ‘adventure’ game with a English language interface with a programming language that could be confused for English.
Open-sourced this year: https://ganelson.github.io/inform-website/
https://www.amazon.com/gp/product/B09ZBN2Y4W/ref=ppx_yo_dt_b...
I tried writing an adventure game in Drools and was able to move between a few rooms but the big problem I ran into was the error messages from Drools didn't make a heck of a lot of sense since Drools mashes up the Java compiler in a complex way with its own syntax.
A really interesting system though would not just have a RETE engine but also a theorem prover. Lately, I have been doing stuff with OWL in which you can define an ontology with not-so-expressive rules and be able to prove its consistency or inconsistency, once you add math to first-order-logic all you can do is say that the prover ran for six hours and didn't find any inconsistencies.
The appeal that Inform 7 adds to this is that it does a very good job of providing a world definition language that looks like English.
https://kianprov.neocities.org/der-anschlag
https://kianprov.neocities.org/minecraft/
https://kianprov.neocities.org/Der%20Kristall/index.html
and the final one
https://kianprov.neocities.org/schere-stein-tod/index.html (scissor stone death)
i think its a great language to learn coding and making games, no need to deal with annoying assets or designs.
[1] https://unfold.studio/stories/10782/
[2] Dijkstra, E. W. (1968). Letters to the editor: go to statement considered harmful. Communications of the ACM, 11(3), 147-148.
and flexibility of control flow I haven't seen since Atari BASIC.
Ink – inkle's narrative scripting language - https://news.ycombinator.com/item?id=16925588 - April 2018 (22 comments)