For some reason, thinking about Twitch Plays Pokémon lead me to the following question:
For a given game, what is the shortest series of inputs which, when repeated indefinitely, will eventually complete the game?
I don't have a good name for this category, nor am I at all sure that anyone would ever want to try to make a movie that explores it ^_^ But it seemed like an interesting new way to view a game as a puzzle, and one that TAS tools would be uniquely suited for exploring.
Obviously, every TAS is already an entry in this category, just not a very good one. In many, many cases, the very beginning and very end can be made to overlap trivially (e.g. in any justice-based right-holder). It seems like maybe a good cutoff point for "Is this worth considering" is if you can shorten to the input to at least half of the total length of the movie file, ie., cause it to loop fully at least once, though maybe it could still be interesting to do less than that. In the extreme case, it would be pretty magical to find a 50-frame loop that beats a multi-hour RPG or something, but that will probably never happen.
Anyway, just this just came to me and I thought some people might get a kick out of thinking about it, so here it is. Has anyone ever done anything similar?
A warb degombs the brangy. Your gitch zanks and leils the warb.
Joined: 10/12/2011
Posts: 6449
Location: The land down under.
I'm going to say N?K and I win. 55~56 inputs per round (average).
#4192: Spikestuff & NhatNM's PSX Tekken 2 in 02:11.78
If not possibly a second or third place.
But the thing seems more restricted to fighters.... so no.
Disables Comments and Ratings for the YouTube account.Something better for yourself and also others.
But you use different inputs each time, so surely that doesn't count?
And before anyone else brings it up:
In Rampage you can just spam (I think it's A) over and over to keep using continues and the game eventually completes itself due to everything timing out.
Didn't adelikat hack FCEUX to do sort-of-this with Super Mario Bros.? If that version still exists, it should be possible to use for this. At the very least, it's an interesting concept.
Spikestuff:
I'm pretty confused about how that N?K video has anything to do with this topic. I think that it doesn't?
Since I guess there is some confusion about what I meant by 'indefinitely', I will attempt to elaborate:
1. Write down a sequence of button inputs (like the first n frames, maybe all of them, of any current TAS).
2. Load a ROM, start recording, feed inputs from your sequence into the emulator, wrapping back to the beginning when you hit the end.
3. If the game is eventually completed, stop recording. You have now demonstrated that it can be beaten with a cycle length of n.
Scepheo:
Adelikat's infinite mario TAS is definitely playing around in the same space as this, and may have subconsciously influenced my thinking about it. Not quite the same, though, since it has a complete playthrough in each loop, designed to account for the small variations, and never terminates. But it is very cool!
alden:
So, it looks like your Rampage run has a period of 6? Would it still work with a period of 2, just autofiring A the whole time?
A warb degombs the brangy. Your gitch zanks and leils the warb.
I was talking more about the emulator hack. It allows you to record some input, and then loop the rest of the input. If you instantly start looping, this emulator hack could actually be used to record and play back such movies as you suggest.
Hey, Personman, I had the exact same idea after seeing adelikat's infinite run at the time :D (and learning about how he managed to loop the input sequence)
It's all about finding the smallest list of inputs to loop in order to finish a game... But it would be a nightmare to do, because every little change like adding or removing inputs (changing the lenght of the loop when creating that "run") would really change everything for the whole run.
I tried thinking about some genres where it would be "easier" and I still don't have a good idea, maybe a really simple shoot em up, or a shooter like Time Crisis, but a basic one (but that would be boring, it would just involve firing almost everywhere, the only difficulty could be bosses).
It can be interesting with a platformer, you just have to find someone crazy enough to attempt it ^^.
Grincevent:
That's really neat that you had the same thought! :D
This might be tractable for individual levels of platformers. I might try to play around with SMB or SMB3 level 1 later...
Scepheo:
Oh, I see! Sorry for misunderstanding. It is nice to have an existing tool for trying this out, I suppose!
A warb degombs the brangy. Your gitch zanks and leils the warb.
I'm now imagining an emulator mode where it shows multiple displays, each one corresponding to one loop of the input. So when you changed the input, the emulator would re-run the entire game and let you see the corresponding variations in gameplay in each loop. That would rapidly show you that e.g. on loop #36 Mario falls into a pit because you changed the B button press to be 1 frame later.
Of course, this would mean simulating thousands of frames each time you changed the input, which gets computationally expensive...but I think that this concept is unlikely to get much traction outside of simple NES/Gameboy games anyway simply due to game complexity increasing.
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
And for some reason this part of your post made me think about this idea:
1-Get the fastest tas file for pokemon blue (reason for blue will be said later)
2-Use this file as a seed to make a order 1 markov chain table (http://en.wikipedia.org/wiki/Markov_chain).
3-Make a program that play the emulator using this markov chain table.
4-Markov Chain plays pokemon blue.
PS:The reason behind playing pokemon blue is that you can catch meow that can use payday to get money, money is needed to enter safari and the markov chain playing the game will run out of money.
PS: In markov chain table, combinations of buttons are considered different buttons, so "press A" is considered a different button from "press A and UP" Tas Start and Tas stop are also considered "keys"
This could be made in 3 ways.
Way 1
"Tas end" is removed from table.
First key generated is Tas started.
Program continue until it beat the game.
Way 2:
1- "Tas end" is removed from table.
2- The program generate random random key based on how likely they are to be pressed.
3-If this key generated is not "tas start", generate the keys before this one until it generates the "tas start" key.
4- Video start and play the already generated keys up to the first one generated in step 2.
5-Then continue from there generating the next keys until it beat the game.
This is "truer to markov chain spirit" than way 1 but you need to geneate some keys before the video start to broadcast, so some stuff is not generated live.
The thing about a markov chain for a pokemon RBY TAS is that it mashes buttons randomly for no reason other than to manipulate the RNG, so it will be very 'noisy'
I definitely tested out a period of 2; it either didn't work at all or ended up being slower in the long run. Either way I think it's definitely a contender for shortest period (though trivial and uninteresting).
I was actually considering yesterday that "Twitch Plays Rampage" would probably finish much quicker than Pokemon or SMB (SMB will never finish :P). Having it be 2 player might be better in that case.
Another amusing one might be Sonic 1 or 2... hold right, and jump. You could finish at least the first level that way I suspect.