VR Troopers is a weird 2D fighting game from 1995.
Enjoy the demoscene effects in the intermission screens and some level backgrounds.
This is perhaps one the weirdest games I have ever played. You will understand when you see and hear the whole run. You do not need to use drugs. Watching this TAS is the best drug you can get. There are at least 8 weird things in the run that will keep your brain confused for a long time.
Game objectives
- Emulator used: BizHawk 2.11
- Genre: fighting
- Aims for fastest time
- Manipulates RNG
- Takes damage to save time
- Difficulty: Manic
I use two controllers in the main menu to move the cursor faster.
Options changed
Difficulty: Manic.
Number of rounds changed from 2 to 1.
I also waste 5 frames to lower the round timer from 60 seconds to 15 seconds. This may save some frames during score count, but more importantly it will make the video encode 45 seconds shorter in the final boss fight.
Gameplay
With the 'Manic' difficulty the enemies have zero cooldown so they can do 'power moves' at any time. The player on the other hand has 4 seconds of cooldown for most power moves. It is unfairly difficult, so the current RTA WR does not even try to beat the enemies to zero health. It is safer to damage the enemy from a defensive position and then play defensively while waiting for the timer to run out. I am not sure if beating some of the enemies in any other way is humanly viable, because some of them have invulnerability power that they can activate at any time and it lasts many seconds, so the timer runs out before we can do enough damage. Some enemies also have instant moves that are impossible to avoid if they happen, and they happen randomly, if you are close to the enemy. With tas precision we can do small changes to our movements to avoid unwinnable scenarios and beat each fight very fast with some seconds left in the timer.
RTA WR for comparison: https://www.youtube.com/watch?v=rnNll8QZ8hY
Most of the player moves are useless because they are slow and cause knockdown. Knockdown wastes lots of time, so we avoid it. This means that we almost never use any special attacks. The regular punch and kick are all we use until the final hit. Sometimes we need to wait a few frames to avoid the enemy being knocked down by the repeated regular punches.
The game looks simple, but it is actually hard to optimize because the enemy movements can be changed by manipulating the RNG. The damage done to the enemy is also inconsistent. A normal punch can do 1-4 damage depending on the situation. This is not based on RNG but has some strange rules that defy logic.
We can select from 3 different characters and our fighter can be changed before each fight. I use JB Reese for all fights because he has the 'turbine kick' which is the most powerful move in the game doing 11 damage while also being a fast move. There may be setups for even more damage with some moves, because the damage calculations are weird. JB Reese can be selected 13 frames faster than the two other characters, which makes him even better. The RTA WR uses a different character which is better at defensive playstyle.
Attack cancellation can be done by alternating punch and kick. It usually does not save time due to the enemy's immunity period after each hit, but cancellations can be used for RNG manipulation which makes optimizing the game very difficult.
Pausing the game can have an effect on the game mechanics and the RNG, so it is a very weird TAS to fully optimize and I hope to see a better run someday. I have no idea when is a good time to pause and since it loses 2 frames I did not use it. I have no method for fully optimizing something like this because it is so weird.
Bonus rounds
Between fights there are timed 'survival' rounds where two respawning enemies keep appearing until the timer runs out. We can get score by killing the enemies repeatedly, but this will make the score countdown longer. It is usually 1 frame faster to do nothing, so we do that. It may be possible to align the score throughout the run so that the total countdown adds up to something that is occasionally 1 frame faster?
1st fight
The first opponent can make himself invulnerable which needs to be avoided by changing our movements randomly. We also need to delay some punches to avoid a knockdown. Mostly we just try to punch as quickly as possible. When the enemy HP is 11 we can end the fight with the turbine kick. A knockdown does not waste time if it happens on the last hit. The first fight is finished with 18 punches + 1 turbine kick.
I redid the whole fight three times and learned to do it faster each time, but I don't want to do it again because I do not understand this game. Here is the damage pattern I got.
1347 start
1391 punch
1399 61 3
1420 58 3
1445 54 4
1473 50 4
1496 47 3
1520 44 3
1544 41 3
1568 38 3
1592 35 3
1616 32 3
1640 29 3
1664 26 3
1688 23 3
1714 20 3
1736 17 3
1760 14 3
1784 11 3
1824 00 11
477 frames fight duration.
2nd fight
4496 start
5074 end
578
The second enemy can do an instant teleport attack that must be avoided at all cost. Almost all timelines fail, so our movement options are limited. A faster pattern can be discovered, but I stopped writing down precise time and damage because I don't like this enemy at all. You will understand if you try to tas it. It is RNG bullet hell.
3rd fight
8337 start
8884 end
547
This enemy likes to do the uppercut a lot, so our punches miss. That is why we need to crouch or maybe I just played badly?
4th fight
12765 start
13256 end
491
Robot ape. Nothing special about this enemy other than the fact that we can align the player position so that the robot ape never hits us. It works with Ryan because of different hit box? We do not play as Ryan because the trick may not save enough time to be worth the 13 frames it takes to change the character. Also Ryan does not have the 'turbine kick' so we would lose some more frames.
5th fight
17736 start
18245 end
509
All enemies do a projectile instantly when the fight begins? Sometimes running and blocking the projectiles is faster than jumping over them.
6th fight
23316 start
23763 end
453
Easy fight because the enemy has a slow 'power move' that can be canceled with a punch. Actually the power move is super fast but I say 'slow' in the TAS context which means there are a few frames of opportunity during which we can block the attack. This is the fastest fight and 450 seems like a good time to aim for in all fights, if you want to put 50,000 rerecords into this.
7th fight
29441 start
29941 end
500
The last hit is difficult to connect so this is a slower fight, but the game is too weird for me to even try to begin to understand, so I can't improve this piece of untasable garbage without risking a rage quit.
8th fight
36224 start
36774 end
550
This piece of a shiet enemy is too damn fast and can become invulnerable randomly can you believe this shite? We need to manipulate RNG and restrict our movement to avoid dying instantly. I was not able to end the fight with the turbine kick because the enemy is so damn fast that it always avoids our attack and becomes invulnerable on top of that with nonsense RNG randomness. This enemy is probably impossible to fight to zero HP without tas precision and I hate even tasing it.
9th fight
43676 start
43703 end input
27
The final boss is badly programmed like the rest of the garbage game. I found 3 different setups for ending input early and used the fastest one. The last fight ends in 27 frames. If the moron boss acts faster then we could end the fight in 13 frames, but I failed to get the bloody damned RNG for that without losing some frames. Changing the player character costs 13 frames, so we have conclusive proof that the final boss must be completed with JB Reese. Ending input early has no effect on the video encode length. You could make the encode shorter by about 6 seconds if you beat the boss to zero HP instead of ending input early. The input length would then be about 450 frames longer.
This run can be improved in every fight, but to do that you need to LOVE optimizing a weird fighting game with heavy focus on RNG and other madness.
The game has many glitches, so more can be found probably. One useless example is if you simply jump when the round ends you are stuck in a loop that can take a random amount of time to end, possibly even softlock, can you believe this shite? Softlock because the player JUMPED? YES! Can you believe this shite? The player only jumps and the game softlocks? YES!
RAM
You might want to add something like this to your Lua script, but you need much more than this to solve the game:
local hp = mainmemory.readbyte(0xA60D)
gui.text(900,560,emu.framecount())
gui.text(900,600,hp)
If you want you can set this as 'delayed' for a year and wait if somebody wants to improve it before publication.
nymx: Claiming for judging.
nymx: Ok...I finally get it. This game is weird. LOL So...between this and the WR, you sure do destroy this game in a way that humans can't. Having beaten it by over half the time, is the impressive thing to me. Yeah, I think the human run could probably take more risks...but that is what we have to compare against. The bonus rounds, well...that is kinda funny to see enemeis taunting you, yet unable to execute any kind of attack. All I can say here is that this is well done...even that 1 frame you fight so hard for! LOL (Well, or not fighting for :P )
Accepting to "Standard".
despoa: Processing...