Author Topic: Dialogue Interface  (Read 2572 times)

0 Members and 1 Guest are viewing this topic.

Offline scott_furphies

Dialogue Interface
« on: January 19, 2021, 02:25:34 AM »
Hi all,
I always wanted dialogue to be a big part of the SCI.0 game I'm working on. Initially I thought it would be cool to use the text parser for any dialogue sequence (Instead of INPUT the parser either reads "Action:" or "Say:" depending on whether you've initiated a conversation.) I got the idea from Space Ship Warlock (anyone remember that game?) where you would input fairly naturalistic dialogue into the parser ("Who is the captain?") ("What do you think about space pirates?")etc.

This was all before I found out about Heap memory restrictions so it's not like I can create a dialogue option for every imaginable topic relevant to the game. I'm considering implementing more of a dialogue tree like the one in Space Quest V, Gabriel Knight or Lucas Arts games. This would simplify things, maybe even streamline the gameplay a bit, where you're not constantly guessing what I thought was a good question to ask a character. Trouble is, it seems a tad inauthentic, and weird to keep switching to mouse in a mostly keyboard orientated game.

Also, dialogue choices can ruin the joke, if you already know the phrasing of the question before you ask it.

What are people's thoughts on this?
I'm so involved in the development of this project, when making a design decision I must ask myself, "is this fun?"



Offline lskovlun

Re: Dialogue Interface
« Reply #1 on: January 19, 2021, 05:26:48 AM »
Also, dialogue choices can ruin the joke, if you already know the phrasing of the question before you ask it.
The Tex Murphy series had a nice solution to this. The dialogue choices only described the general tone of each option; the actual lines were at times unpredictable.

Offline Kawa

Re: Dialogue Interface
« Reply #2 on: January 19, 2021, 08:11:33 AM »
Heap is cheap, even in SCI0, if you put the text in Text resources and consider the script implementation carefully. Also, I'm with Iskovlun. As funny as it is to see an option "ɹǝɥʇoɯ ʎɯ noʎ ǝɹɐ .ǝɹɐqpɐǝɹɥʇ uıqqoq ɯ,ı" when the player is dazed and upside-down, the Tex Murphy solution seems funnier in a way.

Offline gumby

Re: Dialogue Interface
« Reply #3 on: January 19, 2021, 09:47:09 AM »
This was all before I found out about Heap memory restrictions so it's not like I can create a dialogue option for every imaginable topic relevant to the game

That's what made me abandon my attempt to port Zork to SCI0.  In my case it was allowing for inventory object interactions within the game that weren't scoped to a single room.  It's really tough to keep the heap down when the desire is to allow for the player to be able do anything at any point in the game.

However, what you are trying to do may be possible.  I did have a degree of success with dynamically loading scripts which handled Said()s and disposing of them as soon as they were unneeded (IIRC lots of Unload or DisposeLoad calls).
In the Great Underground Empire (Zork port in development)
Winter Break 2012 Rope Prop Competition

Offline lskovlun

Re: Dialogue Interface
« Reply #4 on: January 19, 2021, 09:54:15 AM »
However, what you are trying to do may be possible.  I did have a degree of success with dynamically loading scripts which handled Said()s and disposing of them as soon as they were unneeded (IIRC lots of Unload or DisposeLoad calls).
For future reference, this is what Regions and Locales are for. Locales are limited to handling Said statements I think, whereas Regions are more general.

Offline OmerMor

Re: Dialogue Interface
« Reply #5 on: January 19, 2021, 12:33:11 PM »
Iskovlun

It's lskovlun... with a lower-case 'L'... aka Lars...  :)

Offline Kawa

Re: Dialogue Interface
« Reply #6 on: January 19, 2021, 03:29:14 PM »
But that's what I wrote???

Offline scott_furphies

Re: Dialogue Interface
« Reply #7 on: January 19, 2021, 03:42:12 PM »

However, what you are trying to do may be possible.  I did have a degree of success with dynamically loading scripts which handled Said()s and disposing of them as soon as they were unneeded (IIRC lots of Unload or DisposeLoad calls).

I have a feeling this is the solution I need. So far I've moved all of my dialogue scenes into separate (but identical) rooms you go into when you begin a conversation, where there's only dialogue interaction. This seems like a smarter way of implementing the same idea!

I was thinking of separating the dialogue into separate scripts (say have a "who is" script with all the possible characters, a "what is" script for every possible noun etc) it'd be a lot of work, but I think worth it. I like the 'dungeons and dragons' feel of the parser when it feels like the options are limited only by your imagination, so i think that's the way to go, time to learn a bit more about memory management...

I'll take a look at Tex Murphy and see what you mean about that...


Offline OmerMor

Re: Dialogue Interface
« Reply #8 on: January 19, 2021, 05:38:40 PM »
But that's what I wrote???

You wrote with a capital "I" instead of a lower-case "l".

Offline Kawa

Re: Dialogue Interface
« Reply #9 on: January 20, 2021, 09:29:21 AM »
...goddamn, all this time 😹

Offline lskovlun

Re: Dialogue Interface
« Reply #10 on: January 20, 2021, 10:00:22 AM »
For the record, l didn't notice this until OmerMor pointed it out.

Offline OmerMor

Re: Dialogue Interface
« Reply #11 on: January 20, 2021, 11:46:25 AM »

Offline scott_furphies

Re: Dialogue Interface
« Reply #12 on: January 22, 2021, 04:02:17 AM »
I've decided to attempt a dialogue tree interface, if only to see if it's an improvement to the pacing / flow of the game

It functions fine, it's basically just buttons which direct to different states in the script.

The tricky thing is styling the thing so it doesn't look like total garbage.  So far I've customised a few things, using a smaller font and vertical alignment for the buttons plus taking away all of the spacing to make it more compact. Also the directional keys for selection when choosing dialogue options.
Is there a simple way to take away the button borders of the deselected options, kind of like in the inventory?
Also I've been looking for a way to align the button text to the left rather than centered?

Offline Kawa

Re: Dialogue Interface
« Reply #13 on: January 22, 2021, 06:10:33 AM »
Is there a simple way to take away the button borders of the deselected options, kind of like in the inventory?
Also I've been looking for a way to align the button text to the left rather than centered?
Both of these could be done by using custom buttons. Make your own (class CustomButton of DButton and give it a Draw method. You should now be able to draw the button any way you want, using the ns____ rectangle for positioning.

Offline scott_furphies

Re: Dialogue Interface
« Reply #14 on: January 22, 2021, 05:42:33 PM »
Thanks Kawa, I'm trying to get my head around this, if there was an area of the documentation which explains this it would be most helpful!

Would I call these custom buttons as I would in a print statement? eg: =button Print("" #CustomButton "And then I said that's not a chicken!" 1)


SMF 2.0.14 | SMF © 2017, Simple Machines
Simple Audio Video Embedder

Page created in 0.177 seconds with 25 queries.