Thexder is a game where you control a transforming ship that can walk as a robot, or fly. This is the MSX version, which has different maps than the same game on other platforms. This speedrun is only about speed. Some damage is taken when it saves time.
Game objectives
Emulator used: openMSX 0.12.0, running on Debian GNU/Linux
Objective: fastest finish.
Comments
Most of the work in this speedrun was the creation of the maps for the game. Due to the tiled view which scrolls one tile at a time, and the very limited amount of tiles, it is often not easy to find out how many tiles are being passed while moving. Also, I didn't want to miss any secrets that I might be able to use, and I didn't feel like gluing screenshots even it was easy.
So I used openMSX's debugging capabilities and stared at disassembly a lot, and then I wrote a script that extracted and unpacked all the level data from the ROM file and presented it as an image. This code, and the images, can be found at https://github.com/wijnen/tas/.
With the map made, the run is straightforward. It may be possible to beat some of the "bosses" faster, though.
Other comments
The player can walk or fly. They happen at exactly the same speed, so there is no bonus to either. Conversion costs time though, so that should be minimized. Important differences between the states are listed here.
When walking, the player is higher and doesn't fit through small horizontal passages. Horizontally, the size is the same, so there is no difference for narrow vertical tunnels.
When flying, the player cannot stand still. When bumping into something, the ship is automatically deflected if possible, or converted into the walking robot otherwise. Unless it is currently in a place where the walking robot doesn't fit, in that case the plane turns 180 degrees. By using well timed controls, such a 180 degree turn is also possible in the open.
The walking robot automatically aims. It shoots in turn at everything that it can reach, but without regard for walls. This makes it a very slow killer if there are many targets. The plane on the other hand cannot aim and always shoots forward, making it more useful for targeted shooting. The only problem is that you are always approaching something while shooting like that.
Enemies are 2x2 characters. The player can move into the first character, but is then blocked by the second. The enemies can move through the player at will. It is possible to trick the enemies into moving through the player, so that they don't block the way. This is used a lot to avoid lengthy fights.
Overall I'm quite happy with the result, but the "boss" fights in particular can probably be improved a bit.
Frame 32570 (09:03.53) would be a good screenshot.
Samsara: I took a closer look at this and found that the overall optimization is lacking. I was able to save 30 frames in Level 1 with a very quick test. As such, I would recommend redoing the run, possibly taking my notes and test of Level 1 into consideration as you do so. There's potential for seconds to be saved all throughout, possibly even up to 10, just by taking corners better, not to mention that some of the weird chokepoints I mentioned in my notes could have new strategies just waiting to be found. Unfortunately, I have to reject this for, just barely, not meeting the site standards of optimization. I'm hoping to see that improvement in the future, though!
Sweet, Thexder.
If the author wants, I can make a quick temp encode of the submission.
/Edit:
The encode's here:
Link to video
If the author wants to make his own or an encoder wants to make a proper version, I can take it down.
As for the TAS itself, I liked it. I can't tell for sure if it's fully optimized, but I found it interesting enough. Voting yes though I figure it will go to vault.
You're right, those boss battles can probably be improved. On level 8, for example, can't you fit the ship in where it hits the top part of the boss and not have to travel down the corridor to turn around?
Some of the general level movement seems a bit sloppy too, such as not lining up for your next path right away when it looks like you should be able to. I could tell some of those were to trigger enemy movements, but others I saw no obvious reason for a course correction.
@scrimpeh: Thanks for the encoding, please leave it up. :-)
The movements didn't take extra time; When going diagonally the speed is maximum in both horizontal and vertical directions, so as long as I keep moving horizontally, it doesn't matter if I also do vertical adjustments.
I tried to not move back and forth in the tunnel, but the alternatives I found are worse:
* I tried being a walker and jumping on the spikes. I don't remember why it didn't work; either it's too slow, because the attack is spread over everything, or it cost too much energy and I died.
* Converting between flying and walking in that area is worse; the conversion takes almost all time.
* Flying in that area leaves almost no time actually targeting the "boss".
Interesting run. It does seem like the basic movement is reasonably straightforward (once you have the maps, anyway), which leaves health management and the "bosses" as the two biggest sources of difficulty in the run. Maybe better movement in earlier levels would leave you with more health and enable you to spend more time in "walker" form in later levels despite being dogpiled by enemies -- but I didn't see anything obviously suboptimal.
I assume the last level is just a big pile of powerups? That's what it looks like, anyway, and it'd explain why you skipped it.
Anyway, it's not a great run, but it was interesting to see, and I could believe it's fairly fun to play. Thanks for making the run!
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
Hi shevek! This appears to be a very difficult game done very well.
In level 7, at 6:51 in scrimpeh's video, is travelling in the lower path and then turning around done to trigger the enemies above so that they are out of the way when you take the upper path?
@dedakon: There are some actual enemies in there as well, in fact. But yes, it's mostly powerups. I skipped it because I could, and I wanted to go for the fastest run. ;-)
The game is fun to play, and much harder than it looks here. The problem is that it is not unusual to get stuck in enemies, unable to move until you die. And you don't have lives; you have to start from level 1. Last time I played it normally was 25 years ago or so, I don't remember ever getting to level 3.
@dunnius: Yes, the "slime" that's sitting on top of the other things when I fly over it is blocking the tunnel, and it's too tough to shoot through, so this is the fastest way to get past it.
By the way: should I vote on my own submission, or is that considered bad?
Voting on your own submission is frowned upon.
I should mention that I voted yes. The bounce back in flying mode is ridiculous in conjunction with small areas to maneuver during some of the "bosses" make me wonder how that would be done in realtime.
Joined: 11/13/2006
Posts: 2823
Location: Northern California
Just watched this and I have a couple questions, since I'm not familiar enough with the game to accurately judge the level of optimization.
1. There are quite a few awkward-looking moments where you take wide turns to avoid enemies. Is it possible to manipulate these enemies in any other way or are their patterns completely fixed? I thought it was a movement issue at first but the rest of the turning throughout the run looks tight.
2. About how much do you think the boss battles can be improved? Would it be worth going back through and attempting to improve them all?
The run strikes me as more of a "reactionary" run rather than a fully planned-out TAS run, where you're more reacting to what the game gives you rather than planning around it in advance and potentially manipulating it away, but that could just be the game not being manipulable in any other way than needing those sloppy-looking moments.
EDIT: Notes/optimization questions from a rewatch. Timestamps from the encode:
From the encode:
0:43 - definitely looks like manipulating enemy movement, seems short enough, but it does beg the question of how much enemies can be manipulated in general apart from just moving to a certain place at a certain time
1:05 - is transforming there the only way to deal with that section? you transform back shortly afterward, so it seems like a couple unnecessary transformations
1:17 - just a questionable part in general, but that may be something related to how the game handles transformations. more specifically, could you transform earlier and start falling faster?
1:29 - also manipulating enemy movement, but surely there's a faster way around it?
2:15 - is this the only way you can deal with this section? couldn't you just shoot out everything blocking your way using robot form in the upper corridor? or is that not an option? it would be a viable if it's less than 20-25 seconds by my count
3:03 - another weird transformation moment. do those enemies completely block your movement in ship form or something? it looks like you fly right through one after that
3:25 - this fight... could that last enemy be handled better/earlier? having to transform and move away then come back just to kill it really doesn't look good
Those are some specific moments, most of the rest of the run either looks fairly tight or it's just the same weird, questionable stuff as 1:17.
TASvideos Admin and acting Senior Judge 💙 Currently unable to dedicate a lot of time to the site, taking care of family.
Now infrequently posting on Bluesky
Joined: 11/13/2006
Posts: 2823
Location: Northern California
User movie #28683048471852959
I bit the bullet, learned how to TAS on openMSX, and made a dirty test TAS of Level 1. 30 frames saved mostly just from movement optimization, which in a corridor-heavy game such as this, means that there's probably a lot more time that can be saved all throughout.
TASvideos Admin and acting Senior Judge 💙 Currently unable to dedicate a lot of time to the site, taking care of family.
Now infrequently posting on Bluesky
Thanks!
I think they move purely based on my position. That said, there is quite a bit of room to change the position without hurting the time, because diagonal moves are not horizontally slower than horizontal moves. In all cases where it was hard to get "through", I tried several ways to see which was fastest. But as you point out, I may have missed some.
It's not that hard to do the whole run, so redoing them would be an option, but only with a strategy, I think.
I did plan which route to take, of course, and in several cases I manipulated monsters to be out of the way. But there is not a lot of room for that indeed, because monsters only move when they are near the viewport. So there is not much room for preparation of manipulation.
But yes, this is mostly meant as a starting point; it's definitely not the fastest possible.
There is only a very limited number of enemy "brains". In my maps, every monster has a 2-digit hex code above it. The first digit is the brain, the second the shield. All of them are only manipulated by player position.
Yes. The first transformation is not voluntary; I fly into the monster. It has too much shield to kill it before that happens, so I don't waste energy on shooting at all. Because it moves into me, I can walk through it shortly after the transformation.
If I transform earlier, they form a "fence" around me and I end up standing on them, so I don't fall until after I kill them.
Maybe. I tried several times, but it's very easy to get stuck. When they become a clump, I just don't move at all anymore, so that is something to prevent (it's the usual cause of death when playing normally).
No, I have to be in the lower corridor to be able to hit the two blocks on the bottom. But I just checked a trial run I did, and it does seem like being a robot in the lower corridor (and thus missing a lot) is (a lot) faster than what I did here; that's strange, because I thought I timed both options and then chose this. This is a good reason to redo it; it costs way too much time this way.
They do, and the transformation to a robot happens automatically. The fact that it doesn't happen all the time is mostly because it's a TAS.
I tried several things there. One thing I do is making sure some other enemies aren't approaching as well. The fastest would be to ignore that last enemy and take damage, but I don't have enough energy for that (more than I already do).