Comments

Log in with itch.io to leave a comment.

Viewing most recent comments 64 to 71 of 71 · Previous page · First page

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!

also, is there a good way of changing variables and things based on choices? kind of hard to use them in a game otherwise

Ah yeah at the moment you'd have to fiddle with the system yourself to grab what choice the player has made -- but I'm planning to release a new version in a few days that'll make this easier. 

my own attempts at making text boxes and stuff were just modified crawling text objects that had an array id have to customise manually (and destroys itself if the string is "" it worked pretty well in my small nsfw uno game

the gms1 version has a mistake in it

instance_destroy() has to be called as a function with no arguments

so id change it to this

 if(myTextbox != noone){
    with myTextbox{
        instance_destroy()};
        myTextbox = noone;

(1 edit)

Actually this isn't a mistake; the function has an optional argument. Its default is just to destroy the calling instance, but you can destroy a specific instance other than the calling one via the optional argument. This is according to the GameMaker documentation on the function.

As far as I know this has never caused me any problems -- have you encountered some errors?

it flagged as an error the second i opened it and it wouldnt run until i removed it

wrong number of arguments

Oh, how weird!

not weird to me, in all the versions of game maker i had all of them had instance_destroy() with an error thrown if you put something in it

if the code is instance_destroy(a), doesn't a : 

with(a) instance_destroy(); 

be enough to make things right ??

(1 edit)

This is wonderful! :) Thank you so much for making and sharing with us. 

For some reason when I import it into my existing project, and run it, the text boxes aren't appearing. I have an object set up to trigger a textevent when the player object collides with it, and I can hear the sound effects playing, and when I press E, I can hear that it's going to the next section, but I still can't see anything. Any ideas why? Sorry, I know that's kind of vague, but if there's any other info I can give you to help you help me, please let me know!

(1 edit)

Thank you :)!

Hmm, off the top of my head, it might have something to do with what layer you're creating the textboxes in (if you're using GMS2) or what depth (if you're using GMS1). It may be that the textboxes are getting drawn "under" everything.

Otherwise I think I'd have to know more about your project/see it for myself and tinker with the code. Feel free to send me the project file/additional info at friendlycosmonaut@gmail.com, or hit me up on Discord if you'd prefer a chat (FriendlyCosmonaut#1735)!

Thanks heaps! :) I'll shoot you an email with my project.

So I managed to get the text box to display by turning off this CRT shader I'm using. But it's very tiny - I'm assuming that's because of the scaling options in the Create event of the obj_textbox, so I just need to tweak those a little. 

Thanks for making this - works really well

No worries! Feel free to throw screenshots at me if you put it into use :)

of course - quick question, do you think the best way of adding new events to this system would be by modifying the “type” variable, with 0 currently being normal and 1 being dialogue options, could I add a type 2 for a personal function like spawning a new object in the room for example?

Ahh that's an interesting one. You definitely could do it with the "type" argument. So then you could jump into the step event and expand the if/else statement to include another check. And what I think I'd do, so that you could use this for a few things, is make our third "type" run whatever script you input into text[page] for that line.

So here's some pseudo code:

if(type[page] == 0) { 
    //normal
} else if(type[page] == 1) {
    //dialogue choice
} else {
    execute_script(text[page]);
    page++;
}

So basically it runs that script and then immediately begins the next line. Or, you could make it wait some time before beginning the next page, ie. by setting of an alarm like if(alarm[3] != -1){ alarm[3] = room_speed; }.

Note that you'll also have to change the "else" in the Draw event to specifically check else if(type[page] == 0), because at the moment it just runs if text[page] isn't 1. Also, depending on what you want, you might still want to have some specific thing that it's drawing - at the moment, it'll draw nothing while we're in this "type" of event. So you might want to get it to keep drawing the text from last time, or just an empty textbox, etc.

Hope that makes sense!

Looks great I'll try it out tonight thanks again

I finally got round to trying this out - thanks for the help.

 I ended up messing with the create_dialogue script you made and added some extra variables to everything (object, object_x and object_y)  to add some more flexibility, like being able to choose what object to spawn on the fly and where abouts it would appear - I  was thinking of adding some extra variables for object names or descriptions, but I'm not sure if I'm inadvertently breaking anything in the switch statement you have in that script.

To be honest I'm kinda lost on what that switch statement does - why does it only change variables based on how many arguments are added when it looks like every argument is added each time the script it used anyway? 

Ah that's awesome! Yeah to be honest I need to clean that script up. When I was initially adding the arguments I wanted to keep them optional, so I just had it depend on the arguments you gave it. But now that there's so many it would make more sense to just check if you input a default argument (-1) instead of having it depend on the argument COUNT, which is pretty silly. 

I'll definitely change this in one of the next iterations to make it easier for you/others to play with the code!

Thank you so much!

You're welcome! :)

Oh it GMS2. I guess it doesn't work for GMS1

I've added a file for GMS1 :)

Wow, this looks slick! Will it work with Studio 1? If so, I'm now torn between continuing to follow your tutorials for dialogue and just being able to skip that and get on with the rest of the game by just using this! Eep! :)

Thank you! I've just uploaded a version for GMS1. Haha, that's always a tough choice. But feel completely free to just use it and go ahead with your game, especially if you're relatively new to coding - this one just about did my head in to make with all the effects and optional arguments and blargh. 

Too many people hit roadblocks in their development and quit projects - I think you should just use whatever you can to make progress. And feel totally free to contact me if you have any troubles!

Thanks! Even though I've not yet decided whether to use this or use your tutorials to build my own system I will try this out as well and see if I can get it to work and manage to customise it to how I'd like :)

The only thing is, I've never imported anybody else's assets/projects before. I remember attempting it once and completely failing, whenever I did 'import' it just opened closed my current project and opened the downloaded assets project on its own. Do you know how to import assets into an existing GMS1 project? Also, if you were to update this project after I'd done so, would it be very difficult for me to get the update, or would I have to do re-do every step again and any changes I'd made.

Thank you!

Ps. I like how there's the option to answer people/choose replies. :) I think that aside from the option to enter text (I was going to have an option to name a cat and have the cat's name be referenced occasionally) this has everything. :) In fact, it's probably not worth the hassle of me even trying to figure out the cat thing since I'd probably only be using such a mechanic once or twice. Maybe I'll just have its name be multiple choice! xD

Also, this entire page is well put together. Like the nice gifs, were they easy to make? :)

Ahh yeah importing things into GameMaker (both 1 and 2) can cause quite the headache. There is a way to import things into a pre-existing project as a resource via the marketplace, which I have done for the GMS2 version, but unfortunately I don't have a GMS1 license to upload to the marketplace. So the next best thing would be to download the demo, and then add the assets to your own project by (for example, for an object):

Right click on the "Objects" folder -> click "Add Existing" -> Locate the folder where the demo .gmx is -> objects -> open each object.

Unfortunately this manual loading takes a bit of time, but I'm not aware of any other method (I would love to be corrected though!). 

Haha yeah I love dialogue options! There could be a way to allow text input at some previous stage, that is saved into a variable, and then you can add THAT variable to the string (you can piece strings together like: "my cat is named " + cat_name + " and they're adorable!".

Thanks so much :)! To be honest, I'm pretty terrible at making gifs. I use GifCam to record them - though half the time they come up with weird pixelation or distortions!

(1 edit)

Arghh! Itch.io never seems to tell me when you reply to one of my comments! Not with an email and not even with a notification when I log in! I only realised you'd replied because I went directly to look at my comment again!

Ah that sounds easy for me to screw up, knowing me! :) Maybe if I import all of the objects (and sprites/sounds/scripts too?) to their own separate folder within my project it will be easier to see I've imported everything successfully. Perhaps I'll wait to try it until you do you update (I saw you mention an update in a comment above), because changing a local/global variable based upon a selected answer would probably be a thing I'd use. :)

I don't know much about uploading to the marketplace, but I know somebody who bought a copy of GMS1 through the Humble Bundle and then realised it's not for Macs and never used it and probably won't ever. I wonder if licenses can be transferred or gifted through Humble Bundle or the GMS website...  Maybe she'd be willing to do that. Although I thought standard GMS1 was free now? I guess I don't know much about how the  marketplace works, perhaps it's a different thing altogether! I think a lot of people still use GMS1? and your dialogue system looks like the best thing out there, so it's a pity it's not on the marketplace, but still really great that it's available here. :)

I guess with entering text, as I don't think it's an option in this dialogue system? I was worried that whatever text-entering system I created myself wouldn't match the visuals of this system, but I forgot that I'd probably want to restyle this system (even though it looks nice already) just to make it unique to my game, so maybe they wouldn't be so difficult to match up after all. :)

Viewing most recent comments 64 to 71 of 71 · Previous page · First page