Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Wow! I just cannot believe how wonderful you are! This is the best dialogue solution out there, and I did spend a lot of time searching.

I have just two questions/concerns:

1. Would it be possible to log player choices in dialogue for later use? Right now they can't be used ingame except for immediate branching in the same dialogue. Also it'd be great if you could activate different scripts during dialogue, for example, give the player a new item on line 3, and move NPC on line 13, etc.

2. Alough it looks PERFECT, the in-code solution is actually not pretty - importing your dialogue to script is a lot of pain... with like ~10 lines of code for each dialogue line, or keeping track of ~5 long array every time... Would it be possible to optimize this somehow so that we could make coding the actual dialogue easier? Would be perfect if you could just write all the variables needed in one line, like you can do in Visual Novels, etc, like this:

DialogueLine(spr_nancy_happy, X, Y, Z, effects variables etc..., "Look how happy I am!");

I've seen other engines do it, do you think it would be possible at all?

Thank you!

1) Yes I'm working on including an argument in the script that allows you to change a variable according to the player's choice. That'll be in the next version, along with some stuff for animated portraits!

2) I'm not 100% sure what you mean. Are you saying you'd prefer to input each line individually, instead of all at once in the create_dialogue script?

Ahh! Sorry I've confused you!

Here is what I meant, I hope it will be easier to understand:

Currently I think there's a few ways to write dialogue in-script:
1) create_dialogue(choose text and variables) - easy for one-liners, but won't work with several lines... if there is a way, please tell me how!
2) like in GML example file - inside speaker object create user event and pase all variables for each line separately (this way each line of dialogue will require 6 lines of code, which is very hard to write)
3) like in the tutorial above - one create_dialogue with huge arrays inside. pretty hard to follow and keep track of as you need to track the lines and their parameters across several arrays manually...

I'd like to have an option # 4 with writing each line as a full create_dialogue script:
create_dialogue("Hello", Speaker1, spr_spk1_portrait1, etc);
create_dialogue("Good day!", Speaker2, spr_spk2_portrait1, etc);
(etc)

And also option # 5 would be great: writing all text in the separete script so that ALL game text will be locked inside one script file and called from outside (this is important for text-heavy games - for localization and organization functions). So the dialogue will read as (sorry for bad examples):

global.txt[1] = "Hello";

global.txt[15] = "Good day!";

create_dialogue(global.txt[1], Speaker1, ...etc);
create_dialogue(global.txt[15], Speaker2, ...etc);

Do you think it will be possible to implement? This would be really great for text heavy games I think!!

I was also thinking about additional helpful improvements I hope you'll consider!
1)Triggering dialogue without hitbox collision but instead only if you're facing the interactable solid object (with instance_place I think?) so you won't be able to interact with objects by standing in the far corner of their collision box and facing the other way, which is currently a bit weird!
2) Displaying speaker name!
3) Different audio effects for different characters/lines
4) Different speed for different lines
5) Trigger world events during dialogue (movement, execute scripts, change variables, etc)

Thanks again for your great work! Please tell me if you'll consider some of this, it will make me very happy :)) I'd do it myself but I'm pretty bad at scripting for now. Also I think you could release an updated version as a paid marketplace asset, it's really good!

Ahhhh okay I see where you're going with this. It's always good to have options, and I can definitely see the appeal of setting it out like this. I'll work on putting this in in one of the next iterations of the system!