ink icon indicating copy to clipboard operation
ink copied to clipboard

Open World Integration

Open OneManMonkeySquad opened this issue 2 years ago • 2 comments

Hey, I've toyed and looked around on how to best integrate Ink into an open world game (think Skyrim). Currently my dialog looks like this (please don't laugh, I'm a programmer):

VAR talked_to_faye = 0

=== InteractFaye ===
# npcs: Faye
{ talked_to_faye == 0:
	Faye: Bear. Bring me head get reward.
- else:
	Faye: Bear.
}
~ talked_to_faye++
* {has_item("Player", 22)} [Give Bear Head] {remove_item("Player", 22)} 
    Faye: Good. -> END
* [Make Faye hostile] {make_hostile_to_player("Faye")} -> END
+ [Exit] -> END

The game uses _inkStory.ChoosePathString to "start" a dialog. The __inkStory stays the same, meaning the global state is shared. This means that the knot restarts every time the dialog is triggered, thus I have to use the talked_to_faye variable to give a different reaction. I wonder if I could somehow stay inside the dialog, using threads or parallel "flows". Or if that is even a desirable thing, KISS et al.

edit: Hmm, maybe the solution of having a [Move] choice together with having one parallel flow per NPC. That would achieve the dialog pause at predefined points. Lots of options, maybe somebody can share some experience.

OneManMonkeySquad avatar Sep 01 '23 16:09 OneManMonkeySquad