A downloadable game for Windows

This is a fan made recreation of the encounter system in Undertale!

Currently featuring encounters from one to three enemies, six unique monsters each with multiple attacks, blue and green souls, a few items and a slew of flavor text!

On the overworld, press Z next to an NPC to interact with them. All of them will challenge you to a battle, answer yes to fight them. Alternatively, press 1 2 or 3 to trigger an encounter with one, two, or three enemies respectively! The combat controls work like in Undertale, Z is your primary select button, X is a back/skip button, and the arrow keys are used to move.

The overworld features walking and talking to entities, as well as moving through rooms!

Inspiration, many art assets and sounds are from Toby Fox's Undertale game.

Feel free to use this as a template to make your own projects, but show me what you come up with! I do like to collaborate, you know.

StatusIn development
Rated 4.0 out of 5 stars
GenreRole Playing
Tags2D, Arcade, Turn-based

Install instructions

To play the game, just download and run the .exe

For the .zip extract it using WinRAR or a similar archiving tool, then open the UndertaleRemake.project file inside the resulting folder in Game Maker:Studio.


Downfable.exe 6 MB
Downfable Uncompiled.zip 2 MB


Log in with itch.io to leave a comment.

What a good engine! But can you plz add SAVE and menu? Thats help a lot.

this is an old one.
i dont think they'll hear you.

I was using google traduction for writing so sorry for bad English ;w;

how to do when the message appears, after an event happens and another message appears a bit like a cinematic
I hope you understood to answer me very quickly ^^

I got alotta errors when loading it in GMS...

Update tour GMS

(1 edit)

Wow, even though I can't really use the battle system because of it not really showing up I am really impressed with how extensive the dialogue system is. This is all really great! Also is it possible to use the audio clips for the speech in my game?

(4 edits)

So, would it be okay if I kind of cannibalize this project for use in a different one? I assume so but I was just wondering, of course I mean the code, obviously Undertale specific stuff is owned by toby , and your art is yours. So yeah. Also, any idea why the menu's disappear when I played it in Gamemaker Studio 2? Also also, I originally glossed over this because I mistook your user name to mean that this was somehow made with python, silly me. Nevermind the first part, I guess I should have read the description more closely.

Of course you can use the project, that's the purpose of its existence, to give people a head start building a system.  

In regards to the menu thing, with no supporting information, it would be impossible for me to tell you why the menu disappeared.  This was written in GM:S a few years back so there's no import support.

Ok, thanks for the response anyways, I am looking forward to making some cool projects with this. I would have thought that there would be more interest around this, frankly this is amazing. Thanks for all your hard work!

Hey, did you fix the issue with the items not appearing? if you did hit me up

I made no progress on that whatsoever and I still have no idea why the us isn’t showing up, sorry.

does somewone know how to make the battle system pls upload a good video on yt and say the name of the video


(1 edit) (+1)

I think purple and yellow harts will be easy, so will orange attacks(move through it)

But the hard part will be SAVEing.

Anyways, Awesome engine!

After a few days ill post it, anyone can download it, STILL

Credit goes to mintypython

#1 weirdest comment

(2 edits)


*head explodes*

Where's the scrolling???

hOW DO YOU MAKE IT??? Id like center player

EDIT: Well it was already there!

if instance_exists(Player)


camera_x = Player.x - camera_width / 2;

camera_y = Player.y - camera_height / 2;


that always works, dosent it?

*magiclly, my head rebuit*

its nice

Really like this custom engine you've made here. Will you be adding a menu system soon?

One thing I'm confused about: Is there a way to create a text box after another text box is finished?

You never answered my reply before, so I'll put it here.

I really don't understand what you meant, but I just want it to change room after a dialogue finishes, what would be the exact code? I don't know much about ds_list

(1 edit)

Actually nevermind. I figured out how to do it on my own :D

I just had to do some research on ds_list_add

me too ;3 This could REALLY use a bullet hell generator


Is it OK if I use this as a base for my fangame? I have basically everything planned out, but I'm having difficulty with the coding.

By the way, can you make an attack template

Thanks :D

Hey, I wanted to ask a quick Question. I`ve been trying to make a begining screen and my own rooms but i cant find where the player is and how do i make him "Spawn" in a certain room, and quick question how do i make them randomly spawn in the world?

(4 edits)

uhh.. If you want it to be the first room in the game you need to place obj_IntroGuy

EDIT: Dont forget to delete the object in other rooms! Otherwise bad things will happen!

EDIT EDIT: It does nothing?????? Further investigation needed.

EDIT EDIT EDIT: WAIT NOPE! Thats not it! you need to name the room room_intro


Could you (or somebody who understands all this) post a tutorial on youtube for how to do this?

So, every time I try to talk to my custom character, it says this

action number 1
of Other Event: User Defined 0
for object TextBox:

trying to index a variable which is not an array
at gml_Object_TextBox_UserEvent0_1 (line 5) - max_i = string_length(text[page]);

what does this mean?

(1 edit)

Ah yes. Sorry about the rather stark lack of documentation. It was promised, but I have been doing spots of work on other projects.

Text must be passed as a string array instead of a string, with each entry in the array denoting one page. Even if you have only one page, you would still pass a single entry array.

Thusly, text = "String here"; would become text[0] = "String here";

I also had it happen once, but, one question, what would the full line look like then?

How would I have an event happen right after the NPC finishes their dialogue? I've tried various things but couldn't seem to find one that worked.

Oh weird. There's supposed to be a script for that, but there isn't. This project is a mess when it comes to making things clear for people, gee. I'll just show you what the script is SUPPOSED to do.

Sequential events are handled by a ds_list contained within the object Event. Each event is composed of two entries in that list; the name of the script to execute and the arguments to pass to it (if there's more than one argument, they should be stored in an array).

So to add an event right after the NPC finishes their dialogue, you place this chunk of code after creating the text box:

with (Event) {



Once the NPC is finished talking, Event will run the next item in that list, which will be the event you just added.

So if I wanted to make it delete an object, what exactly would I do?

Hey, could I use this as a base for the battle and dialogue engine in my fangame? I'll mention you of course

The reason I'd like to use it is because despite having the rooms ready, the menus, projectiles, and dialogue boxes, are a bit confusing for me right now


Certainly, go ahead and use it.

Hopefully it'll integrate well with what you already have.


a very interesting thing, I would like to see the continuation! (I try to understand how it works in GM:S, but it is not clear for now)



(also, you may want to add talking sprites for your overworld characters, just something you may want to do)

Okay, everything is working fine now, thanks.

But seriously, do you think I could help with sprites? I am not very good at coding but I believe I am pretty good at drawing sprites, and if you don't like them, you could always just not include them.

What did the update exactly include?
Can I read it up somewhere?

Do I open DownfableUncompiled From Gamemaker or from the zip file? Since when I opened it from the file it opened gamemaker but then said "file (insert png or timeline here) not found)" and it does that for every single file. Causing me to have to either restart my computer or click through every single window. Then when it finally starts every single file just says "undefined_" So uh, any tips?

(1 edit)

Did you unpack the zip?

You need to extract the zip file to another location using an archiving tool.When you do, it will no longer be a .zip but a folder containing the project's assets. You can briefly look through the asset folders to make sure they're not empty, if they are you may need to try redownloading.

In that folder will be a file called UndertaleRemake.project, which you can open with Game Maker.

I have a file opener for .rar files, but it won't let me open DownfableCompiled. Could you maybe turn it into a .zip file?

Replaced it with a .zip! I'm still in the stages of modifying it to improve readability, so if anything is unclear, please go ahead and ask.

(And trust me, a lot of it is unclear, which is my fault. I started this not expecting others to read the code, so a lot of it doesn't make a heck of a lot of sense unless you specifically know what does what. That should change soon!)

I'm having trouble with downloading the zip. Not sure if some of gmx were corrupted or not...

I just tried grabbing the zip and opening it in Game Maker: Studio and it seemed fine. Are you extracting it using an archiving tool, like WinRAR? Once you have, open Game Maker: Studio and select the UndertaleRemake.project file inside the first folder.

yeah I think I just had problems downloading it the first time. Great work!

Is there some kind of tutorial you used to make this, or did you make it all yourself? (jeez, I have so many questions aaaaaaH)

I'm mostly self taught, but that doesn't mean I've never looked up general tutorials on how to do certain things. I'm sure there are tons of great tutorials that can help explain what you need. The tutorials I'd specifically look out for would be turn-based combat, projectiles, text boxes, and maybe some animation. Asking a lot of questions just means you have a mighty thirst for knowledge, don't lose that enthusiasm!

Also, on a side note, how do you make such fluid animations? is it just a ton of frames going fast or is there another way?

Indeed there is another way! Most of these enemies are broken into several sprites, which either move around, stretch, or rotate.

To make them move, it's usually a sinusoidal pattern (meaning it'll go back and forth in a wave pattern) like x = sin(timer) * amplitude.

To make them stretch, you can use the image_xscale and image_yscale attributes.

To make them rotate, you can use image_angle, which also usually moves sinusoidally.

Do you think there is a way we could chat/ a way I could show you what I was doing so you could help?

Like what code did you use? I would like to make my own enemies too.

(1 edit)

Sorry about late replies, I totally blanked on this comment section being here. The code for the enemies is mostly centralized around a single "Enemy" object that all other enemies draw from. Each attack is stored in a timeline and each action is stored in a script, which is then executed at the Enemy's discretion. I didn't really write the code in a way that's obvious what's doing what, but I plan on making it a bit more streamlined so that people who know Game Maker will be able to easily edit it!

Thanks! I'm new to gamemaker, so i'm not really sure what a "timeline" is and how to make the actions happen in scripts, especially how to make the cursor go to a different place when you press a button to go to a new menu (such as FIGHT, or ACT)

(1 edit)

A timeline is an in-built utility in Game Maker, basically it will just execute commands over a series of time. The basic premise to most enemy attacks is that it starts the timeline, which then over time will go: At moment 0 (the start) spawn an attack, at moment 30 (one second in) spawn another attack, at moment 60 (two seconds in) end the attack. This gives me control of what happens for the duration of the attack.

When it comes to storing actions in scripts, I used the script_execute function. Each button has a variable that stores a script, and so when I use script_execute on that variable, it will run that script. Items work the same way. For example, the FaceSteak item has a script associated with it, but basically all that's in it is hp += 15;

There's lots of ways to make a cursor move around a menu, the method I used was to have a 2-dimensional array that acts like a grid. When you move with the arrow keys, you change to a new position on that grid. Each grid value has a position associated with it, which the heart then moves to.

Wow! Thanks for all that help! Even though I still may need some other tutorials to help me, I now understand this better. Maybe someday i'll be able to make some of my own enemies!

How did you create this?

It's made in Game Maker: Studio, the same tool that Undertale was created with.

Yes I know, but how? I use that software too.