freenode/#shirakumo - IRC Chatlog
Search
14:40:40
Shinmera
From what I can figure, the game consists of multiple storylines, some of which may happen in parallel
14:41:18
Shinmera
each storyline is composed of a number of dialog sequences, where a dialog is invoked by a trigger.
14:42:20
Shinmera
a dialog is composed of textual strings and other display data, such as the current profile and expression displayed along the text
14:44:07
Shinmera
one problem I'm not sure how to deal with yet is if you had multiple interaction triggers with the same NPC at once
14:44:41
Shinmera
in that case there'd have to be a choice where the player can select what to talk about
14:45:28
Shinmera
I'm also not sure how to neatly organise the information of triggers and dialog sequences
14:45:46
Shinmera
since it's a graph, textual representations for that kind of thing tend to get messy
17:45:14
jasom
Shinmera: IF engines have solved this problem many times already; if you do want to go the graph route, I suggest stealing their ideas.
17:46:36
jasom
Shinmera: also for games that do not offer dialog choices (e.g. early JRPGs) they usually just use the first entry in their table if 2 different events have been triggered. Then subsequent talking will move on to the next item
17:47:08
Shinmera
Yeah, I thought of that but if you have multiple questlines it would be confusing to do it that way
17:48:12
Shinmera
Doing it like infinity engine games (fallout etc) where you get a menu system to choose what to talk about would solve the problem adequately in my opinion
17:48:35
jasom
they often present the illusion of very complex behavior with very simple rules (since they were written in the era of cassette drives).
17:49:56
jasom
If it's unusual for a single NPC to have multiple choices, it may be more expedient to go the simpler route, but otherwise you'll want menus.
17:50:21
Shinmera
I was thinking just picking the first one automatically if there's only one active storyline
17:52:06
jasom
If each questline has a natural name, you could just have interactions with PCs that have multipe triggers be "Talk about ...\n -> Quest Name 1\n Quest Name 2"
17:55:38
Shinmera
I'll need some more time to get the whole system laid out in my brain, but I think I'm getting an idea for something that'll work. Basically for each event in the system you can call a function that'll compute a list of applicable dialog options. When defining a dialog sequence you write down the event filter that makes it applicable, and a state change once the dialog is complete. With some macros thrown
17:56:30
Shinmera
So when the player tries to interact with an NPC, enters an area, etc, an event is fired, and the dialog gets fired if applicable
17:57:19
Shinmera
The only thing that's wavy still is the state change bit, since I don't know how complex and indirect that state should be able to be
17:59:12
Shinmera
For the menu I guess a dialog can include an optional title string that's used in the menu for more context
18:05:09
Shinmera
Also on the side trying to solve the channel disparity problem in Harmony on un/pack. Specifically if a source or drain has less buffers attached than promised, the system currently crashes. Might be a reasonable response to some, but I don't know. There's also multiple ways of dealing with the problem and I don't know which is the best or if I should make it configurable somehow.
18:06:02
Shinmera
For instance if a stereo source only has one buffer attached you could either remix by just picking one channel, or mixind both channels together.
18:07:14
Shinmera
Though I think the most obvious solution is to remix on sources and mute on drains.
19:11:07
jasom
Shinmera: actually on reflection I think IF engines are a dead-end unless you want some complex conversation trees
19:12:21
jasom
Shinmera: and now that I think about it, triggers in classic IF would *all* trigger; so e.g. if NPC A would talk about X if you have a ring and Y if you have a sword, then they say both X and Y