Entendo acho que isso ocorre, pois quando a tecla e precionada ela so continua a fazer os movimentos sem pausa. poderia talvez adicinar uma pausa de milissegundos de um movimento para o outro.

pygame.time.delay(30)
# delay de 30 milissegundos 

sugestão de onde colocar:

if key[pygame.K_LEFT] or key[pygame.K_a]:
        new_posx -= 64
        self.context["direction"] = "WEST"
        self.frame_motion()
        pygame.time.delay(30)
        # adicione um em cada if

E por favor compartilhe o código se possível adoraria contribuir em um projeto como este. Além desta ajuda indicaria a deixar a parte do código responsável pelo movimento em uma função separada.

ja tentei, outro problema, quando eu aumento o key delay todos updates sãos atrasados e na verdade eu só queria que o movimento fosse separado da taxa de atualização do mundo, entende?

Como podemos entrar em contato pra conversar mais sobre ficaria feliz em ter com quem compartilhar ideias, e o projeto também.

Nao sei, qual é sua idea?? por onde podemos entra em contato?? acho melho no github
Acho que discord seria uma boa me add lá. igribeiro#9869
Tenho conta no discord nao, acha melhor pelo github com colaborador assim posso enviar pull request