I cannot recommend Ink enough. If you've never written a game before, you can have one written by the end of the day using Ink. It is such an easy way of writing any story that is primarily story with branching narratives. Jon Ingold's GDC talks are all (the pun was the aim) gold.
I'm a huge fan of Ink. It has some cool features and targets one of the critical aspects of branching narrative games. A great alternative to Twine, and if you want to use an different engine for your game than Ren'Py. Very powerful language and you can see some of the possibilities with the game series Sorcery!
Ink and Monogatari are some of the best systems I found when looking for alternatives to Ren'Py, Monogatari is especially cool because it's written entirely in HTML, CSS, and JS, so it's perfect for web integration.
This is an interesting inkosystem. Normally I jump at the chance to learn a new programming language, but I also love that there's a tool in the inkosphere to work with it without needing to learn the underlying guts. And as someone whose favorite part of game design is writing, I am 100% on board with this project :D
Monogatari is also a great visual novel engine, its written entirely in HTML, CSS, and JS, designed to be easy to use on the web. But can also export to a desktop application, of course.
Was going to mention Yarn as well. I've not used it but it's been used in Night in the Woods, a Short Hike, and Dredge. Amongst others. Safe to say that it's worth picking up one of these tools for making your dialogue rather than falling into NIH and making your own version.
Very interesting. I work a little on Visual Novels as a side hobby and was already curious if I should look at Godot. With Ink this becomes even more interesting.
Monogatari is also a great visual novel engine, its written entirely in HTML, CSS, and JS, designed to be easy to use on the web. But can also export to a desktop application, of course. Would love to see you make a video on it!
Ink isn't node/graph based, works much closer to writing a play/film script. Means in some cases you can be more flexible about how you present text in various scenarios as you can pull from multiple different buckets of text at once if you need to. Also a few games like NEO CAB just have all the game logic run through functions in ink, which is doable for text-forward games. Don't think there are any killer features over dialogic so main thing is if you like using it or not! It's easy enough to learn the syntax and play about
If I understand correctly, ink comes with a different quest line variable implementation baked in (see their GDC talks) that helps encourage non-linear quest outcomes
@@generrosity Yeah, using Lists for knowledge and progression tracking is so much easier and more flexible then using a traditional flags structure in a VN. Ink would be worth using for that alone.
The only issue is you have to implement your own localization pipeline for ink. 1. Other FOSS langs are YarnSpinner (official C# and 3rd-party C++, Rust, GDS, TS, Py), Clyde (official TS/GDS), There is also ChoiceScript (proprietary). 2. Engine specific FOSS languages are Renpy lang and Godot Dialogue Manager lang. 3. There is also a commercial plugin, Naninovel for Unity. It's the most powerful tool that I've ever seen. And it features a scripting language for dialogues/screenplays. 4. All of them supports localization, except ChoiceScript. Sadly the translation methods are all traditional, relying on key and values, similar to gettext. No one has implemented a more sane method, like source code to source code translation, etc. ps. Fountain, a markdown variant that's specifically designed for writing screenplays.
I made a Unity game that had tons of dialogue, and all of it was powered by Ink. You can define C# functions and bind them to the Ink run time, which means you can extend Ink to do anything. I wrote generic systems in C#, but most interactions were written in Ink with a collection of dozens of custom functions. It made it fast and easy to add complex behavior. Highly recommended.
1:15 I actually played Sorcery! I had an itch to play a point and click adventure game but with a role playing aesthetic. I got all of them on my tablet, it was great but it has been a while. Also, the fact that it is markdown-like rather then programming-like is a huge selling point. Now my friends can't say "But I can't code!" when they give me their excuses lol. 🤣
This has zero support for localization/translation. I have been using Godot Dialogue Manager and that has excellent localization support, if that is important.
Groovy! I used TWINE standalone before and was hoping there was something similar or better that I would be able to use that would more directly integrate with an existing engine that wasn't the lackluster Articy Draft.
Aww, i was hoping to see you use Inky, the IDE for ink, since I actually added some features to it! (Tracking threads and files) a really nice little open source project! I also use ink and Godot together all the time. It won't export to web at the moment for godot 4, but it's still really great. I need to standardise my ink to godot interface one of these days...
I would love to hear from people who have found a way to STRUCTURE Ink in such a way that it's less messy. Ink is great for branching narrative, as it can create narrative on a SENTENCE level instead of a SCENE level, but it tends to get MESSY very fast. The messiness makes Ink games notoriously hard to translate. I think it has to doe with Ink missing structures like Sections, timespans like Scenes and primitives like Actors, Locations and Props that help give a script reader something to hold on to while they are parsing the text. Ink is a bit like C or ASM in that it can do too much and it will try to kill you when things get big.
Ink can be structured into at least three levels: files, knots and stitches. The difficulty in translating is due to the high level of complexity it can get, and also the fact there's no built-in, automatic system to extract the text from the whole code.
LIST is very powerful as to controlling characters, location, objects, but ink is still bare-bone. It doesn't even have a spellchecker, so much post processing is needed. Thus the ASM reference. Moreover, I don't see ink being updated to a standard level app but remaining a beta tool that already fulfills the dev's need. Thus, no need for new features.
I remember when they had a web interface (inklewriter) and i used to write a bit of test narrative there. Forgot about it for a couple of years and then found out it was deactivated and they've pivoted to Ink as a language. Shame i couldn't recover what i've made, but always wanted to try Ink. I've remembered about it recently and now that i'm deeper into gamedev than i've ever been your video couldn't arrive at a better time.
Altough renpy is my go-to for fast and easy VN development, I'm hype for this since it can integrate with Godot it opens more opportunities to really add gameplay to your VN.
Hi Gamefromscratch. I want to ask you. Do you remember or know a engine for conversational games like the 8bits games (Jabato, la aventura original, BAT, etc). could be nice a blueprint to do the game or using a inner -own- language for do this. I do not want to use c, c#, javascript, etc. I want to use a personal language or using like a RAD development app. As always, my like is given to you.
@@gamefromscratch Thank you.. And for the text games? Not like point and click. Only 100% text game. (could be a if then game with text, like Chose your own adventure game, without graphs for a pc).
If I’ve understood your request correctly, what you’re looking for is what many people now call “parser-based interactive fiction”. I’m proud to say the community around parser interactive fiction has never really died out, we just became very obscure, and there are many tools now for writing your own games. TADS seems like a good fit for your needs, but Inform 7 is also very popular. The major hub for the community these days is the Intfiction forum.
this reminds me of the "Dialogue Manager" for godot, the language looks verrry similar. i cannot post links or yt will auto delete my comment. speaking out of experience
I'm playing around with DM, nice addon for Godot, DM's language is a bit cleaner imho, but Ink features are impressive, then there's a C++ runtime, the possibilities...
I'm sure it's very useful, but wouldn't using your own JSON accomplish at least half of what Ink is for? You have to implement extra logic in my case, but on the other hand you also need an interpreter of Ink to run in your engine. I will give it a try anyway.
I want create game like Wolfenstein 3D with RPG elements. Which game engine is good for game like this?I work in Unreal Engine but I think this engine is overpower for this use.
Honestly Godot would probably be pretty good for that. Or maybe one of the extended DOOM engines, like what Ashes 2063 used (I think they used GZDoom).
@@BrunoCaxito In Unreal Engine are too many thigs to make for relative good result. For example is hatd to make textures, materials and all lighting elements work together. I am remaking Heretic at dark fantasy feeling and I spend much time with lighting setup but result is still ugly. I like to use engine with basic lighting setup, basic materials and texture with a small amount of adjustment.
Godot is made for it. Setting up billboard sprites (like doom, wolf3d) is a matter of clicking one box. And if you do enclosed/small maps rather than huge worlds (again like doom/wolf3d) it is simpler still.
Interesting. Could have used that about two years ago… wrote a DSL to help lawyers assemble contracts based on decisions and constants…. 😑 this could be a great document generator. Not just for stories.
DSLs should generally be implemented as macros (instead of standalone languages) to better integrate with the rest of the technology. It's a shame few languages have proper meta-programming support, though.
How hard would it be to get Ink working in Unity with a made up language? (With invented characters not in existing fonts.) I don't expect anyone has the answer to this, lol. Edit: Or an alternative that supports localization?
I use yarn in my current project. It is an alternative for those who needed something battle-tested to work with. At least it seems to work for certain people.
Obviously, this is what we want - more dialogues in video games. Dialogues are so much fun. I can't wait to participate in another dialogue. Dialogue is my precious reward for investigating the boring world, collecting pointless artifacts and fighting useless monsters. MORE DIALOGUESSSSSS!!!!!!!!!!!!
It depends on how you use it. Not all of it is boring, annoying filler, but I get what you mean. And even when done well, some are more into it than others.
Links
---------
gamefromscratch.com/ink-programming-language-for-game-narrative/
Our Twine Coverage:
gamefromscratch.com/twine-interactive-fiction-tool/
-----------------------------------------------------------------------------------------------------------
GFS Patreon : www.patreon.com/gamefromscratch
GameDev News : gamefromscratch.com
GameDev Tutorials : devga.me
Discord : discord.com/invite/R7tUVbD
Twitter : twitter.com/gamefromscratch
-----------------------------------------------------------------------------------------------------------
I cannot recommend Ink enough. If you've never written a game before, you can have one written by the end of the day using Ink. It is such an easy way of writing any story that is primarily story with branching narratives. Jon Ingold's GDC talks are all (the pun was the aim) gold.
Their GDC talks are great 👌
I'm a huge fan of Ink. It has some cool features and targets one of the critical aspects of branching narrative games. A great alternative to Twine, and if you want to use an different engine for your game than Ren'Py. Very powerful language and you can see some of the possibilities with the game series Sorcery!
Ink and Monogatari are some of the best systems I found when looking for alternatives to Ren'Py, Monogatari is especially cool because it's written entirely in HTML, CSS, and JS, so it's perfect for web integration.
This is an interesting inkosystem. Normally I jump at the chance to learn a new programming language, but I also love that there's a tool in the inkosphere to work with it without needing to learn the underlying guts. And as someone whose favorite part of game design is writing, I am 100% on board with this project :D
Love that you’re covering these tools again! Ink is fantastic
Other alternatives to Ink:
Clyde (syntax almost the same as ink)
Yarn Spinner (Allows simulation and node graph in Visual Studio Code)
Me ;)
Yarn Spinner is so goated. Used in a couple of my Unity projects and it has worked wonderfully well in most scenarios.
Monogatari is also a great visual novel engine, its written entirely in HTML, CSS, and JS, designed to be easy to use on the web. But can also export to a desktop application, of course.
Was going to mention Yarn as well. I've not used it but it's been used in Night in the Woods, a Short Hike, and Dredge. Amongst others.
Safe to say that it's worth picking up one of these tools for making your dialogue rather than falling into NIH and making your own version.
Very interesting. I work a little on Visual Novels as a side hobby and was already curious if I should look at Godot. With Ink this becomes even more interesting.
There's also the Dialogic plugin which is worth checking out it you wanna try making VNs for Godot.
Monogatari is also a great visual novel engine, its written entirely in HTML, CSS, and JS, designed to be easy to use on the web. But can also export to a desktop application, of course. Would love to see you make a video on it!
Godot and dialogic combination works good for me , but the more the merrier , I wonder what features ink has that are different from dialogic
Dialogic will sometimes crash Godot on me when typing dialogue, so I hope it's more stable and user friendly.
Ink isn't node/graph based, works much closer to writing a play/film script. Means in some cases you can be more flexible about how you present text in various scenarios as you can pull from multiple different buckets of text at once if you need to.
Also a few games like NEO CAB just have all the game logic run through functions in ink, which is doable for text-forward games. Don't think there are any killer features over dialogic so main thing is if you like using it or not! It's easy enough to learn the syntax and play about
If I understand correctly, ink comes with a different quest line variable implementation baked in (see their GDC talks) that helps encourage non-linear quest outcomes
@@generrosity Yeah, using Lists for knowledge and progression tracking is so much easier and more flexible then using a traditional flags structure in a VN. Ink would be worth using for that alone.
The only issue is you have to implement your own localization pipeline for ink.
1. Other FOSS langs are YarnSpinner (official C# and 3rd-party C++, Rust, GDS, TS, Py), Clyde (official TS/GDS), There is also ChoiceScript (proprietary).
2. Engine specific FOSS languages are Renpy lang and Godot Dialogue Manager lang.
3. There is also a commercial plugin, Naninovel for Unity. It's the most powerful tool that I've ever seen. And it features a scripting language for dialogues/screenplays.
4. All of them supports localization, except ChoiceScript. Sadly the translation methods are all traditional, relying on key and values, similar to gettext. No one has implemented a more sane method, like source code to source code translation, etc.
ps. Fountain, a markdown variant that's specifically designed for writing screenplays.
I made a Unity game that had tons of dialogue, and all of it was powered by Ink. You can define C# functions and bind them to the Ink run time, which means you can extend Ink to do anything. I wrote generic systems in C#, but most interactions were written in Ink with a collection of dozens of custom functions. It made it fast and easy to add complex behavior. Highly recommended.
Oh wow, this is a big one. I like Ink's approach.
It is hard to get used to it at first. But when you get the hang of it Ink is a really handful asset.
1:15 I actually played Sorcery! I had an itch to play a point and click adventure game but with a role playing aesthetic. I got all of them on my tablet, it was great but it has been a while.
Also, the fact that it is markdown-like rather then programming-like is a huge selling point. Now my friends can't say "But I can't code!" when they give me their excuses lol. 🤣
Ink for me is second only to renpy in usability. But ink is far more versatile cause it's not limited to one game engine
This has zero support for localization/translation. I have been using Godot Dialogue Manager and that has excellent localization support, if that is important.
Groovy! I used TWINE standalone before and was hoping there was something similar or better that I would be able to use that would more directly integrate with an existing engine that wasn't the lackluster Articy Draft.
I remember playing with it when I was in IT years ago it’s quite fun to use
Cool, I was looking for something similar, thanks for this video
I wish I knew this sooer. This is so good. It can call functions to your game, I think it is possible to make mode support with ink
Aww, i was hoping to see you use Inky, the IDE for ink, since I actually added some features to it! (Tracking threads and files) a really nice little open source project!
I also use ink and Godot together all the time. It won't export to web at the moment for godot 4, but it's still really great. I need to standardise my ink to godot interface one of these days...
Vampire the Masquarade the Coterie of NY ... has amazing art. 😊
We are indeed using Ink on Bloodlines 2 :)
No plugin for Stride, damn. I plan on using Stride to make my RPG.
The developers really covered a lot of options when making this.
I would love to hear from people who have found a way to STRUCTURE Ink in such a way that it's less messy. Ink is great for branching narrative, as it can create narrative on a SENTENCE level instead of a SCENE level, but it tends to get MESSY very fast. The messiness makes Ink games notoriously hard to translate. I think it has to doe with Ink missing structures like Sections, timespans like Scenes and primitives like Actors, Locations and Props that help give a script reader something to hold on to while they are parsing the text. Ink is a bit like C or ASM in that it can do too much and it will try to kill you when things get big.
Ink can be structured into at least three levels: files, knots and stitches. The difficulty in translating is due to the high level of complexity it can get, and also the fact there's no built-in, automatic system to extract the text from the whole code.
LIST is very powerful as to controlling characters, location, objects, but ink is still bare-bone. It doesn't even have a spellchecker, so much post processing is needed. Thus the ASM reference. Moreover, I don't see ink being updated to a standard level app but remaining a beta tool that already fulfills the dev's need. Thus, no need for new features.
Twine is great for interactive stories too. No integration with game engines, however it will export to HTML.
I remember when they had a web interface (inklewriter) and i used to write a bit of test narrative there. Forgot about it for a couple of years and then found out it was deactivated and they've pivoted to Ink as a language. Shame i couldn't recover what i've made, but always wanted to try Ink. I've remembered about it recently and now that i'm deeper into gamedev than i've ever been your video couldn't arrive at a better time.
OH MY, they've revived Inklewriter (the web based tool)! If for some reason my account still exists and i can recover my test story i'll be mindblown
I didn’t know they wrote Heaven’s Vault!
Cools, but how to do the localized with this?
Altough renpy is my go-to for fast and easy VN development, I'm hype for this since it can integrate with Godot it opens more opportunities to really add gameplay to your VN.
Hi Gamefromscratch. I want to ask you. Do you remember or know a engine for conversational games like the 8bits games (Jabato, la aventura original, BAT, etc). could be nice a blueprint to do the game or using a inner -own- language for do this. I do not want to use c, c#, javascript, etc. I want to use a personal language or using like a RAD development app.
As always, my like is given to you.
Maybe check out BladeCoder?
@@gamefromscratch Thank you.. And for the text games? Not like point and click. Only 100% text game. (could be a if then game with text, like Chose your own adventure game, without graphs for a pc).
@@germanskena6537 Choicescript?
If I’ve understood your request correctly, what you’re looking for is what many people now call “parser-based interactive fiction”. I’m proud to say the community around parser interactive fiction has never really died out, we just became very obscure, and there are many tools now for writing your own games. TADS seems like a good fit for your needs, but Inform 7 is also very popular. The major hub for the community these days is the Intfiction forum.
Please do a review of Articy Draft.
this reminds me of the "Dialogue Manager" for godot, the language looks verrry similar.
i cannot post links or yt will auto delete my comment. speaking out of experience
I'm playing around with DM, nice addon for Godot, DM's language is a bit cleaner imho, but Ink features are impressive, then there's a C++ runtime, the possibilities...
One language only, no localization?
it can be used as an alternative to Ren'py for visual novel game.
Inkosphere? I like it.
I'm sure it's very useful, but wouldn't using your own JSON accomplish at least half of what Ink is for? You have to implement extra logic in my case, but on the other hand you also need an interpreter of Ink to run in your engine. I will give it a try anyway.
Any options for pythong or pygame?
Ok, up next, InkGPT!
There is also articy:draft 3
I watched the masquerade videos and cannot see how it's used, any ideas?
probably in dialog sequences
Oh, ink is so neat
I want create game like Wolfenstein 3D with RPG elements. Which game engine is good for game like this?I work in Unreal Engine but I think this engine is overpower for this use.
First Person Shooters are always easier and simpler with Unreal Engine, as long as you're ok with learning it since it has a steeper learning curve.
Honestly Godot would probably be pretty good for that. Or maybe one of the extended DOOM engines, like what Ashes 2063 used (I think they used GZDoom).
@@BrunoCaxito In Unreal Engine are too many thigs to make for relative good result. For example is hatd to make textures, materials and all lighting elements work together. I am remaking Heretic at dark fantasy feeling and I spend much time with lighting setup but result is still ugly. I like to use engine with basic lighting setup, basic materials and texture with a small amount of adjustment.
Godot is made for it. Setting up billboard sprites (like doom, wolf3d) is a matter of clicking one box. And if you do enclosed/small maps rather than huge worlds (again like doom/wolf3d) it is simpler still.
T@@aceofswords1725 Thank for your tip. I try Godot.
Interesting. Could have used that about two years ago… wrote a DSL to help lawyers assemble contracts based on decisions and constants…. 😑 this could be a great document generator. Not just for stories.
DSLs should generally be implemented as macros (instead of standalone languages) to better integrate with the rest of the technology. It's a shame few languages have proper meta-programming support, though.
How hard would it be to get Ink working in Unity with a made up language? (With invented characters not in existing fonts.) I don't expect anyone has the answer to this, lol.
Edit: Or an alternative that supports localization?
I use yarn in my current project. It is an alternative for those who needed something battle-tested to work with. At least it seems to work for certain people.
Yarn spinner is another alternative to Ink. Twine is not good.
I prefer const char*
Hm. Maybe i have to get rid of my own narrative system and use Ink instead. It looks way more flexible.
The github contributor's name at 1:27 had me laughing.
would be nice to see you cover RPG Developer Bakin , not so popular but pretty cool game engine!
best regards
C++ is my script language
C++
🤣🤣😅
@@BrunoCaxito ink is good for story writing not for games
I think that something like this could be helped along via A.I. such as chatgpt, Bing, Claud 2, etc.
Obviously, this is what we want - more dialogues in video games. Dialogues are so much fun. I can't wait to participate in another dialogue. Dialogue is my precious reward for investigating the boring world, collecting pointless artifacts and fighting useless monsters. MORE DIALOGUESSSSSS!!!!!!!!!!!!
It depends on how you use it. Not all of it is boring, annoying filler, but I get what you mean. And even when done well, some are more into it than others.