Em uma palavra: Swiping.
Joguei a edição do campeonato Pac-Man no meu telefone Android e o que eu pensei que realmente funcionou é que, enquanto havia um joystick na tela, você não precisava tocá-lo para mover o Pac-Man na direção correta. Se o seu dedo caiu do joystick, não importava. Tudo o que importava é em que direção você moveu o dedo.
Para subir, deslize para cima. Para descer, deslize para baixo. Para mover para a esquerda, deslize para a esquerda. Para mover para a direita, deslize para a direita.
Você pode facilmente tornar o contexto de deslizamento sensível às regiões e ações da tela que estão ocorrendo atualmente dentro do jogo. Imagine que seu telefone está no modo paisagem e você está segurando-o como um controlador de videogame. A metade esquerda da tela pode ser reservada para o movimento usando o deslize descrito acima. A metade direita da tela pode ser usada para ações como pular, atirar, proteger, quaisquer que sejam as habilidades de jogo que você deseja que o seu jogador use o golpe de maneira muito semelhante. Ou se você tiver apenas uma habilidade (como pular no Super Meat Boy) - apenas trate a metade direita da tela como um botão.
Atualizar
Estávamos discutindo isso no bate-papo e parecia que minha solução, da maneira descrita acima, é muito parecida com um bastão virtual que se move quando você levanta e coloca o dedo. Quero elaborar que esse não é o caso e é realmente muito mais flexível do que isso.
A imagem acima mostra o padrão de deslizamento que se pode levar para mover Pacman no quadro. Observe que a ação tomada não se baseia em onde você coloca o dedo pela primeira vez. Se você acidentalmente mover o dedo muito longe ao deslizar para a direita ou não o suficiente ao deslizar para baixo, tudo bem. Com esta implementação, desde que você tenha deslizado o suficiente para que ele se registre corretamente no software, ela será usada e o local onde seu dedo terminou como o próximo ponto de partida, ou se você tirar o dedo, ele usará o próximo local em que abaixe o dedo.
Como eu disse antes, você pode aplicar isso a um jogo de plataforma apenas dividindo os controles em regiões separadas, para que seus toques e toques façam coisas diferentes, dependendo de onde na tela você executou a ação. A rota óbvia é fazer o movimento da alça do lado esquerdo usando apenas deslizar. Em seguida, o lado direito seria usado para lidar com ações e habilidades do jogador usando qualquer combinação de furtos e toques.