Game breaking glitch (found by rezoons)
8 years ago
Bretagne, France

Personally i'm all for the NG+ for this category. In the end, the only difference with a NG is the waiting time at the starting area. The NG+ is more interesting to run (and to watch).

But i agree that it's needed to understand the glitch a little more in order to make a definitive choice.

The glitch was only discovered less than 2 days ago and we're constantly discovering new things about it. It's no use to rush anything yet.

PrettzL likes this
Bretagne, France

Well, i just spend the night making some research about the glitch. Here are what i found.

  1. Ghuia was probably right, it's the smoke particles that trigger the glitch. Probably because of a buffer overflow. Moreover, the starting area is the only place where you can trigger it.

  2. Prettz was probably wrong, the path leading to the boss trigger should look more like this

http://i.imgur.com/1SAb3rP.png

I will detail how i did it. (It will be a bit long, sorry)

  1. In order to show that, i looked at the code for the individual levels. You can find them in C:\Program Files (x86)\Steam\SteamApps\common\outtheresomewhere\level

Each file in this folder represent a level. The starting level is 5_5.oel. The level to it's left is 4_5.oel and the one to it's right is 6_5.oel.

Each level looks like this:

<level width="832" height="480" background="sky1" rain="True" thunder="True" message="greetings" messageOnce="True" darkness="False" music="surface"> <reference> \\Reference Point </reference> <Solid exportMode="GridRectangles"> \\List of Solid Object </Solid> <FarBack> \\BackGround image </FarBack> <Back tileset="Back01" exportMode="XML"> \\BackGround tiles </Back> <BackDetails tileset="Front01" exportMode="XML" /> <Backdrop> \\BackGround Details </Backdrop> <Objects> \\Slopes,Checkpoints,lamps,various trigger, etc... </Objects> <Front tileset="Front01" exportMode="XML"> \\Tiles pictures </Front> <FrontDetails tileset="Details01" exportMode="XML"> \\Special textures on some tiles </FrontDetails> </level>

You can easily mess around with it and change any level you want.

http://i.imgur.com/241YUJQ.jpg

http://i.imgur.com/S0XR0bO.jpg

So, using this, i removed stuff until the glitch disappeared. And i discovered that the cause of the glitch is this object:

<play_start id="1" x="288" y="288" />

If you remove it, you will appear at the checkpoint (instead of the space ship) and the smoke won't appear and the glitch will never trigger.

If you add this object to another level containing a checkpoint you will make smoke appear (if you start the game at this level) out of nowhere and the glitch will trigger after 2min50.

If you add two copy of this object in a level, the glitch will trigger after 1min29 and the fps will drop to 36fps (-40%) If you add three copy of this object in a level, the glitch will trigger after 1min00 and the fps will drop to 14fps (-60%)

All this makes me nearly 100% convinced that it's the particules of smokes that causes the glitch. Probably with a buffer overflow as ghuia said.

Moreover, since the starting area is the only area with the "play_start" object it means that the glitch can't be reproduced elsewhere.

We can learn a little bit more about this object in the OTS.oep file in the same folder. This file is a little weird. The games runs perfectly without it and modifying it doesn't change anything. It's weird. Anyway the only mention of play_start in the file is here:

<EntityDefinition Name="play_start" Limit="-1" ResizableX="false" ResizableY="false" Rotatable="false" RotateIncrement="15">
  <Size>
    <Width>32</Width>
    <Height>32</Height>
  </Size>
  <Origin>
    <X>0</X>
    <Y>0</Y>
  </Origin>
  <ImageDefinition DrawMode="Image" ImagePath="images\entities\player\yuri.png" Tiled="false">
    <RectColor A="255" R="255" G="0" B="0" />
  </ImageDefinition>
  <ValueDefinitions />
  <NodesDefinition Enabled="false" Limit="-1" DrawMode="None" Ghost="false" />
</EntityDefinition>

But it doesn't help much. I don't see where the smoke is mentionned here.

  1. In order to understand a little bit better what happens off screen i used the step noise. Step noises looks like this:

http://i.imgur.com/Xz7sSzr.png

Basically it's tac-tac, tac-tac, tac-tac, etc... The speed of your character is 2.5 square for two steps (=for a tac-tac) when the glitch isn't activated. When the glitch is activated it's 3 square for two steps. (I think that's because when the glitch is activated your character has the same relative speed but because of the 20% fps drop the step noises are slower)

Using this i managed to determine that in order to get to the boss trigger you have to walk left 8 squares off screen, jump right, then go right which correspond to the first image.

It's possible that TaiyoGamer is right when he says that there is an upward ejection by the wall. The problem is that when you try it offscreen to the right of the starting area it doesn't work. You can see your vertical position by shooting with the gun (because the bullets goes through the screens) and wherever you are or jump on the right off screen area you stay at ground level, there are no ejection. In the end, i still don't know how this part works.

Also, if you go 14 squares) offscreen to the right you softlock the game (probably because you go through the lava).

Denmark

Wow great work. I would never have imagined that level files were just basic XML and you could look into them like that.

"Using this i managed to determine that in order to get to the boss trigger you have to walk right 8 squares off screen, jump right, then go right which correspond to the previous image." The first right should probably be a "left". Is the jump actually to the right or to the left?

Bretagne, France

Yes, sorry. I'm still editing this a little bit. Thank you for pointing it out!

And the jump is to the right, i tried other setup by jumping to the left but never managed to make them work.

Holy crap, if the level files are just XML we could make a level editor.

This is absolutely amazing work rezoons.

Victoria, Australia

If it helps, the levels are Ogmo Editor files and can be opened in it.

http://www.ogmoeditor.com/

Used to be a dev so when I saw the .oel file extension, I gave it a go and hey. Obviously we don't have the tilesets or entity files but you can still get a vague idea of the levels.

http://i.imgur.com/LpkiNgI.png

PrettzL likes this
Bretagne, France

Wow, i didn't know that. Thank you very much!

Indeed, because of the missing tilesets and entity files it's impossible to edit the levels directly with Ogmo (or i didn't find how). Nethertheless it's very useful to use it in order to see the block coordinates of a level. It makes easier to edit the level manually.

For example, i just made really quickly this short level under the starting area:

http://i.imgur.com/POwJpth.jpg

(and i made a hole in the starting area to go to it) I call it the "boost jump training level"!

Anyway, i'll try using it to edit the level to the left of the starting area and see if you can still go to the boss trigger when you remove/add certain block. Maybe it could help us understand what's happening off screen.

PrettzL likes this

Well here's the assets for the game for you guys to allocate wherever they need to be in order to look at level structure and edit levels:

http://puu.sh/jueqg/bfa3429f82.rar

These were located in: Steam/SteamApps/common/outtheresomewhere/ots.swf

And this is a full rip of all assets including sounds, images, everything.

I hope this helps!

Bretagne, France

Well, after some testing using the level editor i think i start understanding what's happening off screen.

First i replicated the glitch in these modified levels:

http://puu.sh/jxTEt/47dc39295f.jpg

http://puu.sh/jxTuA/c0426cda8f.jpg

And what happened when i moved offscreen to the right was as if only the blocks between the blue lines and the blocks between the pink lines in the following picture existed:

http://puu.sh/jxTR2/8ae2301d41.jpg

I think that the only solid blocks that are loaded are those at the same height as another block at the edge of the level where the glitch happens.

http://puu.sh/jxUcu/7f4ba1e24b.jpg

Which might explains why we can move offscreen freely right and left without bumping into anything.

Another thing i look at was expulsions. We already talk about the possibility that going into a block might push us upward. To look at that in more details i only modified this level this time:

http://puu.sh/jxUBe/0e13e68ae0.png

Then, using the machine gun to determine my height, i looked at if there was ejections when i went right to left, left to right and when i jumped. Here is what happened:

When i went left to right:

http://puu.sh/jxUWi/e91c36bc27.png

I got an ejection.

When i went right to left:

http://puu.sh/jxUXo/07df6e09e7.png

I bumped into the wall and got nothing

When i jumped:

http://puu.sh/jxUYi/f85a117417.png

I got the same result.

That's pretty weird. It looks like we only got an ejection upward if we go into a block from only one direction. But if we combine everything we've got then we can deduce that, when we trigger the glitch in any%, only this part of the left level is loaded:

http://puu.sh/jxViN/cd8e8ff31a.png

And the path to the final boss trigger is this one:

http://puu.sh/jxVyj/c3fa69ef2f.png

I'm still not sure at 100% but that's the best theory i have for now. Also, i'll soon start writing the guide for the run hoping that more person try the any% category.

Game stats
Followers
105
Runs
428
Players
109
Latest threads
Posted 2 years ago
27 replies
Posted 6 years ago
1 reply
Posted 7 years ago
4 replies
Posted 7 years ago
21 replies