Live data from Hacker News

Ink 1.0 – Open-source scripting language for interactive narrative

inklestudios.com

31–40 of 58 posts

Re: Ink 1.0 – Open-source scripting language for interactive narrative

#31
post #27

Can anyone compare Ink to Inform? I played with Inform many many years ago and have always wanted to return to it.

On the software side, ink is open source and has C# and JavaScript compilers, a Unity plugin and a separate IDE called inky. Inform7 is not open source yet, although they had plans in 2019. As far as I can tell, it's a single app that outputs its own format that can be uploaded to https://www.ifarchive.org/ Disclaimer: I've never used either, ink just seemed more legible.

To add some detail, Inform 7 compiles to reasonably well-documented portable binary formats that have been standardized for decades, with the earliest versions dating back to Infocom days. There are a variety of emulators, including web-based. This is why games uploaded to ifarchive many years ago still work. Even if an old game’s source were available, they were sometimes written in obscure genre-specific programming languages that nobody uses anymore.

The binary formats are specific to the genre, which is pretty niche. Casual users are unlikely to have downloaded an emulator even if it’s easy to do, so a game will be bundled with one when it’s published to an app store.

But as formats go, it seems like a pretty remarkable success story for the long-term preservation of games, and it would be neat if there were a similar file format that were more general-purpose and more popular, much like we have for images, music, and video.

Re: Ink 1.0 – Open-source scripting language for interactive narrative

#32
I absolutely love the ink team, for releasing this. They have a fairly decent Unity which is free and is more than good enough for creating basic narrative games. It would still probably be a good idea, to have a good grasp of unity before integrating it though

Re: Ink 1.0 – Open-source scripting language for interactive narrative

#33
post #28

Can anyone compare Ink to Inform? I played with Inform many many years ago and have always wanted to return to it.

Because ink is a type of markup language, using it to write narrative is very easy. You're writing the script for your game and ink will handle how parts of it connect to eachother. It is also very portable owing to being plaintext with relatively simple syntax. There are currently ports of it in both Unity and Unreal, and many developers have used it in some capacity for html/css/javascript games. Procedural generat…

> It's quite good compared to ink at simulating objects with a lot of metadata

can you give an example? I have zero familiarity with IF programming, but I would be very interested in understanding this.

Re: Ink 1.0 – Open-source scripting language for interactive narrative

#34
Very cool. I’m working on an interactive fiction engine in my spare time, and it’s interesting to see how someone else chose to manage the complexity that exponential branching starts to cause. Their concept of knots makes a lot of sense for a video game with narrative “hubs”. Definitely like the text based approach, the flow graphs that other engines use look like they get really messy really fast.

Re: Ink 1.0 – Open-source scripting language for interactive narrative

#35
post #16
post #14

Earlier quoted context omitted.

Row 6 column 2?

Ah, thanks. Had to get my glasses. The background is #fee where the other ones are #aaa, which is a bit too subtle for my old eyes and monitor.

Youngsters... turns out i had the same problem.

Prolly designed for kids with perfect eye sight.

Re: Ink 1.0 – Open-source scripting language for interactive narrative

#37
post #28

Earlier quoted context omitted.

Because ink is a type of markup language, using it to write narrative is very easy. You're writing the script for your game and ink will handle how parts of it connect to eachother. It is also very portable owing to being plaintext with relatively simple syntax. There are currently ports of it in both Unity and Unreal, and many developers have used it in some capacity for html/css/javascript games. Procedural generat…

> It's quite good compared to ink at simulating objects with a lot of metadata can you give an example? I have zero familiarity with IF programming, but I would be very interested in understanding this.

In inform7, you can do this:

> A race is a kind of person. Dwarf, elf, and half-elf are kinds of race.

> A town has numbers called friendliness, services, comfort, and population. Leadership relates a person to a town. The verb to lead implies the leadership relation. "F [friendliness] / S [services] / C [comfort] / P [population]".

> Rivalry relates various towns to each other. The verb to be rivals with implies the rivalry relation. The verb to be rivals of implies the rivalry relation.

Then you can make a town like this:

> Bremen is a town in Ten-Towns. "Founded by dwarf prospectors, the sleepy town of Bremen sits on the west bank of Maer Dualdon, at the mouth of the Shaengarne River.". It has friendliness 3. It has services 1. It has comfort 2. It has population 150.

> Dorbulgruf Shalescar is a dwarf. Bremen is led by Dorbulgruf Shalescar.

And now inform7 can be used to query or act on all this metadata:

> Every turn when the player is in a town: repeat with town running through towns: say "Rivals of [town]: [list of towns that are rivals with town][line break]";

This is the kind of thing you have to work hard to represent in ink because you only have functions, variables, and lists (a hashmap). As you add more metadata to inform7, it can make EXTREMELY sophisticated queries or conditions like "list of weapons that were in hidden rooms which are gilded". So for very little work, you can have inform7 reason about whether a player can 'wear' a specific item by checking what they're wearing, how the item affixes to things, and what attachment points you've defined (which can be as broad or granular as you want). And as a bonus, it's also very little code to comment on the player wearing a strange thing (like pants on their head) or wearing colours a specific character thinks clash with eachother.

This kind of query is one of ink's notable weaknesses (and requires quite a lot of lists or very clever lookup functions to achieve). But, ink can leverage its frontend (often a general purpose programming language like C# or javascript) to provide that functionality.

Re: Ink 1.0 – Open-source scripting language for interactive narrative

#39
post #37

Earlier quoted context omitted.

> It's quite good compared to ink at simulating objects with a lot of metadata can you give an example? I have zero familiarity with IF programming, but I would be very interested in understanding this.

In inform7, you can do this: > A race is a kind of person. Dwarf, elf, and half-elf are kinds of race. > A town has numbers called friendliness, services, comfort, and population. Leadership relates a person to a town. The verb to lead implies the leadership relation. "F [friendliness] / S [services] / C [comfort] / P [population]". > Rivalry relates various towns to each other. The verb to be rivals with implies the…

Apologies that I forgot this line for the example above:

> Bremen is rivals with Lonelywood, Targos, and Termalaine.

When you write it, you effectively get 3 pieces of metadata for 'free' without any extra code:

> Lonelywood is rivals with Bremen. Targos is rivals with Bremen. Termalaine is rivals with Bremen.

Re: Ink 1.0 – Open-source scripting language for interactive narrative

#40
post #38

How does this differ from Twine?

Twine exports to HTML, while Ink plugs in to other game engines/code as a kind of backend engine for handling narrative and text

Isn’t twine also being used as a backend engine for games as well?
Post reply on HN