Username:
B
I
U
S
"
url
img
#
code
sup
sub
font
size
color
smiley
embarassed
thumbsup
happy
Huh?
Angry
Roll Eyes
Undecided
Lips Sealed
Kiss
Cry
Grin
Wink
Tongue
Shocked
Cheesy
Smiley
Sad
page  <- 1234567891011121314 -> <- 1 .. 8 .. 14 ->
--
--
List results:
Search options:
Use \ before commas in usernames
Anime is not real.
Welcome, Pixel!  Glad to see you've gotten into running this wonderful game!

The knowledge base is fantastic here.  If you're curious about anything be sure to ask questions!
Edit history:
TGH: 2015-11-20 12:52:43 am
TGH: 2015-11-19 04:43:21 pm
Anime is not real.


Did anyone know this?  When you actually hold DOWN and LEFT when Flowey circles you with the bullets it'll end the attack about .5 seconds faster.





Also you can pour water on Undyne from this spot (slightly closer to the exit) for a tiny timesave.
Edit history:
Th3Hatt3r: 2015-11-21 12:20:19 am
Remembered something that I forgot
The Flowey first encounter I guess was pretty well known already since the requirement for going through it is to get hit as quickly as possible VIA running into his Love Bullets. the water pouring is new though from what I seen.
Anime is not real.
Quote from Th3Hatt3r:
The Flowey first encounter I guess was pretty well known already since the requirement for going through it is to get hit as quickly as possible VIA running into his Love Bullets. the water pouring is new though from what I seen.


But if you HOLD down and left at that spot, the attack will end before the bullets actually hit you.
Everything's better with Magitek
Hey everyone, I've been learning the true pacifist route, and I'm planning to start streaming runs this next week. Thank you to everyone who's helped to route this game!

Anyway, I think I found something that will save a few seconds. Before fighting Asgore the first time, save at the 2nd to last save point (the one in the throne room) instead of the one in the last corridor. When you reset after finishing with Flowey, you won't have to walk back through the last corridor. You will still have to skip through Asgore's text in the last corridor on your 2nd trip through, but overall this should save time.
Edit history:
TGH: 2015-11-23 12:38:09 am
TGH: 2015-11-23 12:37:40 am
Anime is not real.
Quote from Essentia:
Hey everyone, I've been learning the true pacifist route, and I'm planning to start streaming runs this next week. Thank you to everyone who's helped to route this game!

Anyway, I think I found something that will save a few seconds. Before fighting Asgore the first time, save at the 2nd to last save point (the one in the throne room) instead of the one in the last corridor. When you reset after finishing with Flowey, you won't have to walk back through the last corridor. You will still have to skip through Asgore's text in the last corridor on your 2nd trip through, but overall this should save time.



Just tested this.

Gain: avoiding the the ~5 second walk from the "The End" save point to the "Throne Room" save point
Loss: about 2 seconds total talking to Asgore again in the room before the barrier, maybe about 1/4-1/2 of a second since that save point is a tiny bit out of the way

Overall gains somewhere between 2.5-3.5 seconds as far as I can see.


Good observation!  Best of luck with your runs!
Edit history:
Mylexsi: 2015-11-24 05:42:32 am
Mylexsi: 2015-11-24 05:36:51 am
Something I should probably actually mention in here:

In the gun phase of Omega Flowey, while you're waiting for the 8th volley, go to a corner (or just really far away from the gun). Saves ~3s

Reason: The gun fires immediately the moment its facing its target(though, pauses after each 3rd shot). It sets targets randomly within a certain distance of you. It rotates at a fixed speed. So, if you sit inside it, it will spend much more time rotating than actually shooting, because the target locations could be on all sides of the gun. If you go as far away as possible though, it barely has to turn at all before firing, and so it shoots all of its bullets extremely quickly.
Edit history:
Tenebrae: 2015-11-24 09:45:15 pm
Tenebrae: 2015-11-24 09:44:57 pm
Quote from Essentia:
Hey everyone, I've been learning the true pacifist route, and I'm planning to start streaming runs this next week. Thank you to everyone who's helped to route this game!

Anyway, I think I found something that will save a few seconds. Before fighting Asgore the first time, save at the 2nd to last save point (the one in the throne room) instead of the one in the last corridor. When you reset after finishing with Flowey, you won't have to walk back through the last corridor. You will still have to skip through Asgore's text in the last corridor on your 2nd trip through, but overall this should save time.


I always wondered about this. Going through Asgore's Throne Room talk twice always killed any idea of saving earlier, but this is just early enough to work.

Combined Times Between Last Corridor and The Barrier:
The End Save: 93.77-94.23 || (Standard)
Throne Room Save: 90.3-91.03 || (3.2-3.47 seconds saved)
Throne Entrance Save: 90.57-91.66 || (2.57-3.2 seconds saved)

Quote from Mylexsi:
Something I should probably actually mention in here:

In the gun phase of Omega Flowey, while you're waiting for the 8th volley, go to a corner (or just really far away from the gun). Saves ~3s

Reason: The gun fires immediately the moment its facing its target(though, pauses after each 3rd shot). It sets targets randomly within a certain distance of you. It rotates at a fixed speed. So, if you sit inside it, it will spend much more time rotating than actually shooting, because the target locations could be on all sides of the gun. If you go as far away as possible though, it barely has to turn at all before firing, and so it shoots all of its bullets extremely quickly.


Very interesting, I had no idea the gun rotation could be locked down while in the corners. I just tested it and if you count to 7 volleys and move accordingly, it can save over 4 seconds.

Time From Soul Start to Game Close:
Center: 18.70-20.12
Corner: 14.27-15.76
Runs things speedily
Awesome, nice finds guys! thumbsup
Hi, I'm new to speedrunning and have been learning the TPE route pretty much for the past month or so. One thing I'm having problems with is practicing the early midgame strats (Dummy and beyond) because if I mess up (or die), I have to go through the entire beginning of the game again. This can get pretty tedious, and I was just curious if anyone had any recommendations for practicing or if I have to keep running the beginning. Running the beginning isn't that bad, because I'm only getting to the Undertale logo by 8:49(PB)-9:10 and there is room for improvement in menuing, but I'd really like to practice some of the things I haven't gotten to yet.

Also is there any difference in Complimenting Froggit vs Taunting Froggit? I accidentally taunted froggit once but I still got the spare and gold from it.
The difference between them is that you get his Yellow Credits by complimenting him, which is part of one category. Other than that, not really.
Planning on attempting Neutral and AYC runs, but after I beat Genocide's Final Boss. Would love to run Genocide, but the fact that we stop the timer so closely to the game crash and the sheer difficulty will get to me. Regardless, it'll be fun while I wait for Frisk Mode to get fully implemented into the game rather than die off at Toriel.

Also is there a Discord group that we have up? Would love to join it and chat more directly with you guys.
Edit history:
Wolfiexe: 2015-11-25 04:02:43 pm
Runs things speedily
Quote from PinkDreemurr:
Hi, I'm new to speedrunning and have been learning the TPE route pretty much for the past month or so. One thing I'm having problems with is practicing the early midgame strats (Dummy and beyond) because if I mess up (or die), I have to go through the entire beginning of the game again. This can get pretty tedious, and I was just curious if anyone had any recommendations for practicing or if I have to keep running the beginning. Running the beginning isn't that bad, because I'm only getting to the Undertale logo by 8:49(PB)-9:10 and there is room for improvement in menuing, but I'd really like to practice some of the things I haven't gotten to yet.

Also is there any difference in Complimenting Froggit vs Taunting Froggit? I accidentally taunted froggit once but I still got the spare and gold from it.


You could use this - https://crumblingstatue.github.io/FloweysTimeMachine/ - which will make a save wherever you want it to be made. What I've personally done to practice late game stuff is whenever you SAVE anywhere in the game like before Undyne or Hotlands or whatever, navigate to your Appdata > Local > UNDERTALE folder and copy the files there into a new folder like UNDYNE or HOTLANDS for future use. Then, whenever you want to go practice that again you can just copy those files back over to your UNDERTALE folder.

Quote from TheSapphireCarbuncle:
The difference between them is that you get his Yellow Credits by complimenting him, which is part of one category. Other than that, not really.
Planning on attempting Neutral and AYC runs, but after I beat Genocide's Final Boss. Would love to run Genocide, but the fact that we stop the timer so closely to the game crash and the sheer difficulty will get to me. Regardless, it'll be fun while I wait for Frisk Mode to get fully implemented into the game rather than die off at Toriel.

Also is there a Discord group that we have up? Would love to join it and chat more directly with you guys.


Would be awesome to see more people do AYC runs! The leaderboards for it is looking a little thin at the moment Grin Also for Genocide I think you still have a few boxes before the game crashes, so as soon as you select the final prompt you can just end the timer and close the game, so that shouldn't be too much of a worry. As for Discord I have no idea, not familiar with it but feel free to start whatever you like and spread the word!
Alright, I made the Discord group, just click the link and it'll add you. Nothing too special yet though.
https://discord.gg/0fJMcmFC7YLUOTr1
Expires after 24 hours, though, but I can create a new one.
Edit history:
smellyfeetyouhave: 2015-11-26 03:36:36 pm
smellyfeetyouhave: 2015-11-26 03:35:16 pm
smellyfeetyouhave: 2015-11-26 03:34:28 pm
smellyfeetyouhave: 2015-11-26 03:31:41 pm
smellyfeetyouhave: 2015-11-26 03:18:44 pm
smellyfeetyouhave: 2015-11-26 12:39:31 am
smellyfeetyouhave: 2015-11-25 11:36:11 pm
smellyfeetyouhave: 2015-11-25 11:10:44 pm
smellyfeetyouhave: 2015-11-25 11:08:09 pm
smellyfeetyouhave: 2015-11-25 11:06:38 pm
smellyfeetyouhave: 2015-11-25 11:04:01 pm
So first off, hi! I'm gonna be getting into speedrunning of Undertale more and this is my introduction post! Neutral PB is 1:16:04 after two attempts so watch out ;-)

EDIT: THIS MAY BE WRONG, CHECKING MY MATH
EDIT EDIT: I FLIPPED ARGUMENT2 AND ARGUMENT3, FIXING IT.

Anyways, just posting about a few little things.

Who wants a breakdown of the RNG determining if a battle occurs? Well you're getting one.
The battle finding formula is broken into four main variables.
Code:
//argument0 = base steps
//argument1 = randomized steps
//argument2 = population
//argument3 = population ID


Base steps is a number set in the code for the base number of steps you HAVE to take before you could even consider triggering an enemy
Randomized steps is a random number generated later which is variance on it.
Population is how many enemies are left in the area
Population ID is an ID specific for each area in the game (Flag 200, line 231 in your save file). Ruins is 202, Snowdin is 203, Waterfall is 204, Hotlands is 205. This refers to the flag for that area's kill counter

Now this is the formula breakdown. I'm gonna to use obj_encounter_ruins1, which is the setup script for ruins_room7 (the leaf-pile grind room) in the RUINS.

Code:
100,40,20,202

So we have:
Code:
Base steps: 100
Random Steps 40
Population is 20 (0 is included so it's 21 overall)
Population ID is 202 (this means flag 202 is the kill counter for the area)

This is run when you enter the room.
Now, once global.encounter is greater than global.steps, a battle is triggered.
Once that battle is triggered, it re-executes the step setup script run when you entered the room. This time with different values (130 base steps, 80 random). This is why leaving and re-entering the room is beneficial here.


Now, let's get into the detail of the calculation. So we know the values being passed to the script are 100, 40, 21, 202.

If the population is > your kill counter:
Code:
populationfactor = Total population / total population - your kills in the area

Now, this is unclear in terms of parenthesis. Following the actual rules, this would always result in
Code:
populationfactor = 1 - your kills in the area

This doesn't make sense though, as it'd never meet the other conditions to make it take longer for every enemy killed.
This leads me to believe it's being interpreted as
Code:
populationfactor = Total population / (total population - your kills in the area)



In the ruins case, if you have 0 kills, this means:
Code:
populationfactor = 21/(21-0)
populationfactor = 1


If populationfactor is less than 8 (it'll basically always be under 8 until you hit the last few kills)
Code:
steps = basesteps + (random(randomsteps)) * self.populationfactor

Now, this is also a bit confusing as there was the issue earlier with implied parenthesis.
The "Correct" interpretation is
Code:
 steps = (base steps + (random(randomsteps) * populationfactor)


But as we saw before, it doesn't seem like Gamemaker is following order of operations. The thing is, in that case it's division which could imply 'Everything after the / is the denominator" which is how I could see it being interpreted how it is. In this case, it's unclear though. It could be either:
Code:
 steps = (base steps + (random(randomsteps)) * populationfactor)

Code:
 steps = (base steps + random(randomsteps)) * populationfactor


So in the case of the example it'd either be:
Code:
 steps = (100 + random(40)) * 1.0

or
Code:
 steps = 100 + (random(40) * 1.0)


With the first one, it'd take up to 1120 steps, 37.33 seconds
With the second, it'd take up to 420 steps, 14 seconds

It has to be the first as I just tested it and it was triggered at 908 steps.


So
We have 100 + a random number from 0-40 (it's rounded so as pointed out below, the chance of getting 0 or 40 is much lower) * 1.0.

Now let's say we had six kills.

Code:
populationfactor = 21/(21-6)
populationfactor = 1.4


Code:
 steps = (100 + random(40)) * 1.4



So now instead of it requiring up to 139 steps, it'll require up to 139*1.4 (194 steps).

Once the populationfactor hits 8, it stays at 8. It wont go above 8.

So a tl;dr of the formula is
Code:
steps = (BaseSteps + (number between 0 & RandomSteps)) * (total population / (total population - kills in area)) [


BaseSteps and RandomSteps can be set on a per-room or per-area basis. Some rooms have higher rates than others.


Now, the way the actual encounter is determined is that if global.encounter > global.steps, initiate a battle.

The way global.encounter is determined is on every frame if moving=1 then increment by 1. The game runs at 30fps internally so every second you can make 30 steps maximum. This doesn't change if you're wavedashing, walking normally, etc. If you're walking diagonally it's a single step. If you're just holding up+down it's exactly the same as holding up+down and spamming left+right. There's no difference besides placebo to the game. The number of steps is determined the moment you enter the room. It checks once per frame if you're moving and if you are moving that frame then it adds to the encounter value 1. Once you hit the predetermined amount of steps a battle starts. I can prove this if you guys want me to.

Now, when you've killed everyone, the game explicitly sets self.steps to 20. So for "But nobody came" it's always gonna be 20 steps for the first one in a room. After that it becomes until the step counter is set to 0 again. The step counter is set to 0 when you enter a room which has random encounters. If there are no random encounters, it doesn't reset.
Code:
steps = BaseSteps + round(RandomSteps / 2) * 5

This means that if you've triggered "but nobody came", your best be



Topic two:

It's possible to move without triggering the "encounter" counter, leading to no random encounters. The issue is it's hard, and not very fast.
Demonstration: 

You can also apply this same concept to reduce the amount of overall steps you take without having to be this precise. I did a quick non-scientific test, and a room that took 190 steps walking straight through took 130 just by me hitting C ~2 times a second while holding the direction (not as precise as in this video). In the end, it took 13 seconds instead of 6 seconds, but it also saved 60 steps which in some cases could be the difference between a battle and no battle. Depends on the room. Would need to get proper data for all the rooms to route it out properly.

Opening the inventory menu appears to cancel out the movement but if you hit them in extremely quick succession, the movement is handled by the game before the inventory is, leading to you moving slightly but it getting cancelled out. This same concept actually applies in a few other places. If you talk to someone at the same time you open your inventory, you'll see the inventory open, close, and then the dialog initiate extremely quickly. Seems like the inventory just overrides everything.


Last but not least, here's a fun little fact. The game can do 15 text boxes per second if you can input that fast. With how much of this game is mashing through text boxes, I can't imagine how much time could be saved in a TAS setting.



Anyways, that's my introduction. See you guys around ;-)
Thank you for that very technical explanation of encounter rates.

In your Ruins example you mention:
Quote from smellyfeetyouhave:
Code:
populationfactor = 21/(21-6)
populationfactor = 1.4


So now instead of it requiring up to 139 steps, it'll require up to 139*1.4 (194 steps).

Considering the first Froggit does not count towards activating BNC/genocide: does this mean not killing it could potentially save time by keeping the populationfactor below 7?

As for using the menu to cancel step incrementation, I've known about this but as you said it is generally slower and not really that easy to do for more than 200 pixels or so. It also unfortunately won't work for skipping events because most or all event triggers are 20x20 pixel squares and proc as soon as the menu is closed. Also, you probably already know this but: the reason the game can only handle 15 text boxes per second is because the Room_Speed is set to the default 30. Which means (up to) 30 Steps per second (checks for X, checks for Z, drawing the dialogue boxes, text, etc.).

Welcome and good luck with your future PB's.
Edit history:
Smoof90: 2015-11-26 01:43:36 am
Hello my name is Smoof I bought and played through this game beat and really loved it and have really had some interest speedrunning it after looking at some streams of it. I read the first Post of this thread to give me a outlook on what I need to go fast. Is there any other stuff i need to get started on running UT? (Also my twitch is www.twitch.tv/smashmastr98 )
Edit history:
Anty-Lemon: 2015-11-26 06:11:29 am
First off, I'd like to clarify that the code smellyfeet posted is very likely from the decompiled demo, not the full game. I doubt scr_steps in particular had any major changes, but it always could've been tweaked.

I also have a nitpick about the random function. random(5) returns float n, where 0 >= n > 5, not an integer from 0 to 4. It doesn't matter in this case because it isn't rounded. If it were rounded, 5 would be a possible value, and 0 and 5 would be half as likely as 1-4

Quote from smellyfeetyouhave:
You can also apply this same concept to reduce the amount of overall steps you take without having to be this precise. I did a quick non-scientific test, and a room that took 190 steps walking straight through took 130 just by me hitting C ~2 times a second while holding the direction (not as precise as in this video). In the end, it took 13 seconds instead of 6 seconds, but it also saved 60 steps which in some cases could be the difference between a battle and no battle. Depends on the room. Would need to get proper data for all the rooms to route it out properly.

Opening the inventory menu appears to cancel out the movement but if you hit them in extremely quick succession, the movement is handled by the game before the inventory is, leading to you moving slightly but it getting cancelled out. This same concept actually applies in a few other places. If you talk to someone at the same time you open your inventory, you'll see the inventory open, close, and then the dialog initiate extremely quickly. Seems like the inventory just overrides everything.

That's interesting! I was thinking about the idea of cancelling encounters by pausing at the same frame the encounter is supposed to take place, since they are also cancelled by room transitions. Needless to say, your idea is much more practical, and also less theoretical Tongue

Although getting an encounter and fleeing from it only takes 3.5s, so unless you're really worried about failing to flee you might as well leave it up to random(argument1). Step skipping just doesn't seem to save enough steps quickly enough (actually, how about we call it "skipping?" :U)
Edit history:
smellyfeetyouhave: 2015-11-26 10:45:57 am
smellyfeetyouhave: 2015-11-26 10:45:36 am
Quote from Anty-Lemon:
First off, I'd like to clarify that the code smellyfeet posted is very likely from the decompiled demo, not the full game. I doubt scr_steps in particular had any major changes, but it always could've been tweaked.

Yeah I should have specified that. I don't think it's changed, but I'll bug Mirrawrs for a copy of that script and the various encounter zones. I did a quick test of demo vs final game and it seemed to be the same. From what I've seen, most of the basic stuff wasn't touched after it was done. The RUINS are almost exactly the same in the final game.
Quote:
I also have a nitpick about the random function. random(5) returns float n, where 0 >= n > 5, not an integer from 0 to 4. It doesn't matter in this case because it isn't rounded. If it were rounded, 5 would be a possible value, and 0 and 5 would be half as likely as 1-4

It actually is rounded in one of the functions. I removed that from my explanation to simplify it. That might be the one where it was rounded I'd have to check.


Quote:
That's interesting! I was thinking about the idea of cancelling encounters by pausing at the same frame the encounter is supposed to take place, since they are also cancelled by room transitions. Needless to say, your idea is much more practical, and also less theoretical Tongue

You can't cancel encounters using the menu. I've done some testing with that and the menu overrides the encounter while it's open, but due to the fact the way it works is if encounter>steps, the moment you close the menu it triggers the battle. Once the battle has been triggered, you lose control of the character. If you actually triggered a battle with the menu open, it glitches out. You can force it in debug mode but I can't see it being very helpful as even if you managed to store a choice which triggered an event, the battle scene overrides everything. If you're in the battle, the mainchara object doesn't exist. The battle overrides EVERYTHING from the overworld.
The encounter value isn't reset to 0 until the actually battle function is initiated, so even if you could cancel the battle initiating, encounter>steps is still true and the battle will be triggered again the next game tick.


Quote:
Although getting an encounter and fleeing from it only takes 3.5s, so unless you're really worried about failing to flee you might as well leave it up to random(argument1). Step skipping just doesn't seem to save enough steps quickly enough (actually, how about we call it "skipping?" :U)

Yeah. I don't see it being that helpful in most cases. One room I could see saving some steps in being a fairly good potential save is the three pillar room in the ruins. The first of the three, where you can get a Vegetoid combo like two tiles from the exit of the room.



Quote:
Considering the first Froggit does not count towards activating BNC/genocide: does this mean not killing it could potentially save time by keeping the populationfactor below 7?

PopulationFactor = total population / (total population - area kills).
The area kill counter is the one used for the calculation. That's specifically the one used for genocide as well. So no, it doesn't affect it. The formula is exponential. Here's a graphed representation:
https://www.desmos.com/calculator/q3mmds9khg

Default values are for the leaf room in the RUINS.
Quote from smellyfeetyouhave:
Yeah I should have specified that. I don't think it's changed, but I'll bug Mirrawrs for a copy of that script and the various encounter zones. I did a quick test of demo vs final game and it seemed to be the same. From what I've seen, most of the basic stuff wasn't touched after it was done. The RUINS are almost exactly the same in the final game.

Oh, I already bugged him :U

http://undertale.rawr.ws/encounter2.zip

I didn't ask for scr_steps, but I figured it isn't a very useful script to have. You've confirmed that it's about the same by finding global.encounter anyways
Well he got me the rest of the files anyways. I'm updating the other post now.
Quote from smellyfeetyouhave:
Quote:
Considering the first Froggit does not count towards activating BNC/genocide: does this mean not killing it could potentially save time by keeping the populationfactor below 7?

PopulationFactor = total population / (total population - area kills).
The area kill counter is the one used for the calculation. That's specifically the one used for genocide as well. So no, it doesn't affect it. The formula is exponential. Here's a graphed representation:
https://www.desmos.com/calculator/q3mmds9khg


I'm not understanding why the total population for ruins is 21 when the game only requires 20 area kills. All of the other areas have total populations consistent with their requirement for area kills. Is this because these values are from the demo and not the full game?
Is the froggit that you run into when you're with toriel counted?
Edit history:
Tenebrae: 2015-11-26 04:45:35 pm
Tenebrae: 2015-11-26 04:45:15 pm
Tenebrae: 2015-11-26 04:42:56 pm
Tenebrae: 2015-11-26 04:41:53 pm
Tenebrae: 2015-11-26 04:40:59 pm
No. If you kill it: it counts towards your "total kills" value, but not towards the "area kill" value for Ruins. Toriel does count towards Ruins "area kills" but this is after already triggering genocide (Undying Undyne does the same thing with Waterfall). It's generally preferred to kill it anyway because it's forced and gives enough EXP to reach LV 2. But, with good timing it's still possible to two shot the other Froggits at LV 1 (maximum damage against Froggits at LV 1 with the stick seems to be 17) and all Whimsun will always die in one hit regardless.
Quote from Tenebrae:
I'm not understanding why the total population for ruins is 21 when the game only requires 20 area kills. All of the other areas have total populations consistent with their requirement for area kills. Is this because these values are from the demo and not the full game?

Ruins population is 18 in the demo. In the full game it is definitely 20.

He got 21 from a brain fart, counting 0 where he definitely shouldn't have
Edit history:
TGH: 2015-11-26 06:16:29 pm
TGH: 2015-11-26 06:12:07 pm
Anime is not real.
Quote from Tenebrae:
No. If you kill it: it counts towards your "total kills" value, but not towards the "area kill" value for Ruins. Toriel does count towards Ruins "area kills" but this is after already triggering genocide (Undying Undyne does the same thing with Waterfall). It's generally preferred to kill it anyway because it's forced and gives enough EXP to reach LV 2. But, with good timing it's still possible to two shot the other Froggits at LV 1 (maximum damage against Froggits at LV 1 with the stick seems to be 17) and all Whimsun will always die in one hit regardless.


The first froggit does count towards the area kill total. 

EDIT: My bad, no it doesn't :^)