What I would like to do is improve upon projects like 'RNG plays pokemon'. There, a computer produces a random sequence of inputs that are transmitted to an emulator and played in-game. Though this seems really pointless, the computer managed to beat the game that way.
However in this project, buttons are pressed at random, so the behaviour of the character is very far from what you would expect from a human player. What I would like to do is to be able to produce a series of inputs that 'look like' one produced by a human player.
A good way to do that may be to record a sequence of inputs as played by a human player, use this data in order to produce a Markov Chain.
However I think a human player may exhibit a behaviour that is not easily taken into account by a Markov Chain. For example in order to double jump, it is generally a bad idea to have the second jump right after the first. So a typical sequence of inputs would look something like this (where f=forward and j=jump) f-f-f-j-f-f-f-f-f-f-f-f-f-j-f-f-f
This sequence of inputs may be common when the game is played by a human, but in order to have a Markov Chain produce such a sequence of inputs, it means that the states have to correspond to sequences of inputs of length (at least) 10, hence a huge state diagram.
Is there an alternative to (or a variation of) Markov chains that can take this kind of behaviour into account?
NB: English is my 2nd language so I apologize if this question is poorly worded...