Page 1 of 1

Keen 6 speed run in 5:25 (with glitches)

Posted: Sat Oct 10, 2015 19:36
by GoldenRishi
So this probably was a topic some time, but I just found it again and I think it's pretty cool:

https://www.youtube.com/watch?v=X9SeCIBXZSk

He also did it in 5:25 more recently. He also did speedruns of Keen 4 and Keen 5.


BTW:
This guy, Cosmo, (I'm curious if it's a reference to Cosmo's Cosmic Adventures) is also the person who holds the world record for Legend of Zelda: Ocarina of Time, which he beat in 18:10. His speedrun stuff is really amazing. If you like Zelda, you should really watch that video, it's really amazing the kinds of bugs that people can discover when they play a game that they love over and over again.

Posted: Sun Oct 11, 2015 9:06
by kvee
AGDQ! I love these! :]

The latest Keen 6 strats even involve double jumping off of the bullet in mid air! (27:15 here)

Also, with all the disassembling work that's been done on the engines, do we have any clue why bullets are platforms in K6?

(edit: included timecode in URL)

Posted: Sun Oct 11, 2015 15:06
by Fleexy
KeenWiki wrote:The explanation likely revolves around the fact that Keen's bullet has the collision property of the Gik or Goplat. The bug means that Keen can stand on his shots, but the only place this can occur is just after a bullet has hit a tile, when it has stopped moving but has not yet become a "zapped" bullet. When Keen lands on the bullet and it vanishes the game become confused as to where the bottom of Keen's clipping box. When Keen fires a second shot, if that shot is in the same vertical column as he is (Shot upwards or close to a wall), the game reads Keen as standing on it and clips him on top of it.
Source

Posted: Sun Oct 11, 2015 15:25
by GoldenRishi
Now that I'm thinking about it, I'm pretty sure that I discovered the bullet riding trick. I know I discovered that you could stand on the bullets on the ground, but I think that I also developed the riding trick, and I think I even once managed the bullet double jump. But that was so long ago, it's hard to remember, but I know that I discovered at least some of these.
Fleexy wrote:
KeenWiki wrote:The explanation likely revolves around the fact that Keen's bullet has the collision property of the Gik or Goplat. The bug means that Keen can stand on his shots, but the only place this can occur is just after a bullet has hit a tile, when it has stopped moving but has not yet become a "zapped" bullet. When Keen lands on the bullet and it vanishes the game become confused as to where the bottom of Keen's clipping box. When Keen fires a second shot, if that shot is in the same vertical column as he is (Shot upwards or close to a wall), the game reads Keen as standing on it and clips him on top of it.
Source
That's pretty interesting. I sometimes wonder what was in those guy's code in order to achieve efficiency. Given the ultra-low memory, ultra-low processing power of desktop machines back then, it's hard to believe what kinds of shenanigans they had to go through to get a stable, efficient program. As I recall, the technique to even achieve side-scrolling was quite a feat for Keen 1-3, and only being a year later when these games were released, it's difficult to imagine that the hardware that much better for Keen Dreams/4-6.

But it's also crazy to think how much effort went into programming all of the games that Id released from 1990-1993. It truly was a herculean effort to release (18 games, at least 4 of which were cult classics, i.e. Keen 1, Keen 4, Wolfenstein 3D, and Doom). It's incredible how much they pushed the envelope.

Posted: Sun Oct 11, 2015 17:42
by kvee
Fleexy wrote:
KeenWiki wrote:The explanation likely revolves around the fact that Keen's bullet has the collision property of the Gik or Goplat. The bug means that Keen can stand on his shots, but the only place this can occur is just after a bullet has hit a tile, when it has stopped moving but has not yet become a "zapped" bullet. When Keen lands on the bullet and it vanishes the game become confused as to where the bottom of Keen's clipping box. When Keen fires a second shot, if that shot is in the same vertical column as he is (Shot upwards or close to a wall), the game reads Keen as standing on it and clips him on top of it.
Source
Thanks!
So perhaps they were just playing with the bullet's flags when implementing Gik and forgot to remove that bit.

Posted: Thu Oct 22, 2015 1:03
by Levellass
The explanation is a little more basic. The game keeps track of the sprite Keen is 'riding' so that as its location is changed his is as well without any problems. It does this by simply storing the number of the sprite being used. Keen can ride his bullet like a platform due to a piece of code inserted deliberately in his collision, possibly as a test.

Keen's shot is nearly always the 'last' (most recently created) sprite in the level. When it vanishes the next sprite created, wherever it is, will take the now vacant bullet spot and the game will resume altering Keen's position relative to it. This can be seen for example with the pink shots; in, say, the first guard post Keen can do the trick and when a gun fires ride the pink shot.

To work the new sprite must also be traveling in the same direction as the old one (Horizontal or vertical) even if the speed of travel is 0. So not every replacement sprite will work.

Posted: Thu Oct 22, 2015 1:09
by VikingBoyBilly
Levellass! You're back!!! Weeee! We love you, levellass, and we missed you! Now go grab some popcorn and tune in before the drama dies down.

Posted: Thu Oct 22, 2015 8:11
by kvee
Levellass wrote:The explanation is a little more basic. The game keeps track of the sprite Keen is 'riding' so that as its location is changed his is as well without any problems. It does this by simply storing the number of the sprite being used. Keen can ride his bullet like a platform due to a piece of code inserted deliberately in his collision, possibly as a test.

Keen's shot is nearly always the 'last' (most recently created) sprite in the level. When it vanishes the next sprite created, wherever it is, will take the now vacant bullet spot and the game will resume altering Keen's position relative to it. This can be seen for example with the pink shots; in, say, the first guard post Keen can do the trick and when a gun fires ride the pink shot.

To work the new sprite must also be traveling in the same direction as the old one (Horizontal or vertical) even if the speed of travel is 0. So not every replacement sprite will work.
Ah, makes sense!
Thanks!