Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics


A member registered Jun 27, 2017 · View creator page →

Creator of

Recent community posts

Hey - it looks like this is actually because you don't have a layer called "Text" in your room. This is where the textbox will get spawned by default.

Hey thanks! Haha fair enough, more player control options are always good :)

Aww thanks Crabby :)!!

Ah okay I think this wasn't clear in the documentation - for lines where there is a choice but you DON'T change any variables (BUT on other lines in the dialogue you HAVE) then you need to set:

myChangeVars[1] = -1; 

for those lines. That basically means there won't be any variables changing in those lines. 

Also, for the changing variable thing to work, you have to give a SPECIFIC instance ID in that argument. You'd given just an object_index, but the function variable_instance_set requires an instance ID. So at the very top when you set the diretor to an object, you can use instance_find to get the ID (hopefully there's just one instance of that object. If not, you can use "ID" to refer to itself).

Also as a note, you'd forgotten to put the "breaks" after your other cases :)

I've put all the changes into this pastebin:

Oh okay hmm - then I'd guess it might just be a misplaced/missing bracket somewhere. Just make sure that you set an option for ALL the possible dialogue choices. If there's two dialogue choices, there should be two values it's going to change to. 

myChangeVars[dialogue_line_number] = [obj_id, "choice_variable_as_string", ["value1", "value2"]];

If you're still having trouble could you send me a screenshot of the code where you declare this?

So basically you just want branching dialogue? That error I think is just an indication that all the variables haven't been set up quite right.

You shouldn't actually need the myChangeVars. The one you want to play around with is the myNextLine variable, where you'll set where you want each line of dialogue to go to. As the documentation says (here is the documentation if you haven't seen it already), for normal lines you can just set myNextLine[number] = number, and for dialogue choice lines you'll set it like myNextLine[number] = [num1, num2, num3] corresponding to the different choices.

It might help if you lay out all your lines consecutively and then plan where you want each line of dialogue to go (what will be the next line). 

Thank you! :)

Hey Aavri - sorry, I didn't see this in my notifications!

I know this may be coming too late - at the moment you can't use the myChangeVars outside of dialogue choices. In the next version I'm going to change this a bit and have a more flexible system where you can just specify scripts (including those to change a variable) to run at any point in the dialogue. 

This was a lovely devlog! They sound like great projects. Looking forward to the follow-up on Sunset Witch -- and I absolutely love the sound of the Valve Kid game having a hand-drawn aesthetic!! Looking forward to your updates :)

Thank you!

The detection_radius is actually already a rectangle (well, a square) - the "radius" is just half the width. This variable is found in the par_speaker variable. By default the speaker objects will inherit this value, but you can tweak it for individual objects. 

Since as you said you might want to make it a rectangle instead of a square, you might want to tweak the step event for some objects too. Instead of just adding the radius to all the rectangle variables, you could add half the collision box height, and half the width, for the x and y values of the rectangle.

I hope that makes sense - let me know if you have trouble!

Awesome game Joel!! You got a great amount of polish in for such a short jam (the art, the bounciness, the sounds & music, the dust particles) - and I loved the dialogue and item descriptions. It's a great foundation and I hope you continue with the missions/building up the town/usurping the double triple mayor once and for all. :)

Oops sorry I missed this notification -- it's possible, but may take a bit of work. In my system, the letters are printed individually, and each time it moves where it's going to draw a letter over by the "width of one letter". This is calculated in one place and just takes the width of a generic letter written in the font. What you may have to do instead is make something like a ds_map  of the font you're using, and enter the string_width of every single letter you're going to be using. Then, in the loop that is printing all the letters, it could look up the letter in the data structure and grab its specific width to move over the y position.

So it would take a little bit of messing around, but not at all impossible - I may look into adding this feature in in the future!

Yes. Or, not really, but it will end up spacing every letter the same amount. 

Adorable, you've done a great job! It's a fun and simple game. I can actually see this translating to mobile quite well, with progression in the levels (perhaps travelling around the world, changing the "scene" a little bit), little power ups (speed, larger basket, invincibility from fallen fruit etc), and a certain "score" that you have to get by the end of each level to progress.

One possible tweak to make might be to reduce the possible spawn points of the fruit to be within the possible distance the player can travel. This is just because sometimes a fruit spawns over the total other side of the screen, and the player has no chance of collecting the fruit. Whereas if it was always "possible", you could even have an achievement mechanic like a "perfect level" where you don't drop ANY fruit.

Sorry for the rambling! Of course it's also totally fine to shelve this and move on to your next awesome project :)

Aw, thank you so much! We're delighted to have this feedback. In future jam games, I'll definitely keep this in mind!

And Happy Holidays! :)

Ah thank goodness!! So glad we solved it. Don't feel bad, I've done things like this so many times before! And I bet someone else is going to run into this problem in the future, so this will help them :).

Then I'm stumped :(! It definitely comes up for me as an existing function (you can middle click on a function to bring it up in the documentation). 

Though, I've done some googling and noticed that it's listed in GMS2 as a new function... perhaps they only recently added it to 1.4 as well? So the only thing I can think of at this point is to make sure you've installed the latest version of GMS1.4. 

Hmmmmm, what version of GameMaker Studio are you using? Is it 1.4?

Thank you! I hope you have a lot of fun with it. If you didn't know already: the next version has now been added, with that functionality of being able to change object variables :)

Hey - that's weird! That function does actually exist in GM1. Could you send me a screenshot of the error so I can see it exactly? (It may be that it's what you're GIVING the script is what it has a problem with.) Also - did you change anything after importing, or does it throw an error as soon as you run the demo? 

Oh goodness this is my bad - you're right, they do look like emotes, but the emotions will indeed change the FRAME of the portrait (the emotes are just squares I put at the corners of the different frames to differentiate them). The actual emotes are the "pop-ups" that appear in little speech bubbles above the character's head. 

Ah yeah true, you can just write names into the text, if that's where you want to put it. But a little textbox on top was exactly what I was thinking! Or perhaps on the portrait itself. I know people will want to play with it and pick the positions.

This was beautiful.  The music and visuals are wonderful, and complement each other so well - both tranquil and eerie, inviting and suspicious. 

I played it late at night, lights off, with headphones, and rain tapping at the windowsill. It was very easy to get pulled into the game; I played through multiple times to get all of the endings. I was full of questions, and suspected everything - I love how you plant little seeds, and the player can let their mind wander. 

And all that aside, the "feeling" the game creates is definitely one that stays with you. Thank you for making this!

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!

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!

Hmmm I'm not sure why that would be. I'm going to upload a new version in a few days, so hopefully it will work then.

Cheers! I've had another commenter run into the same issue, so I'll go ahead and change the code for the new version. (I can't believe I've never run into the problem myself!)

Thanks for letting me know & discussing it with me :)

Sorry I've just done the same thing and can't seem to reproduce the error. But maybe some of the assets are missing?

Did this error throw after you customised/added your own kind of text event? I can't be sure without seeing your code, but I'd say it's because it doesn't have the right number of arguments for the "emotes" part. Make sure you fill all of the arrays with the same number of arguments.

If you're still having trouble, feel free to e-mail me your project at and I can take a look.

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?

Oh, how weird!

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. 

(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?

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)

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, or hit me up on Discord if you'd prefer a chat (FriendlyCosmonaut#1735)!

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) { 
} else if(type[page] == 1) {
    //dialogue choice
} else {

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!

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

You're welcome! :)

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!

I've added a file for GMS1 :)