Provavelmente em todos os jogos que um desenvolvedor precisa, de alguma forma, lidar com a entrada, sejam simples eventos de teclado e mouse, eventos de toque ou algo como entrada do acelerômetro. Essa entrada afeta diretamente objetos no jogo. Às vezes, a mesma entrada pode afetar objetos diferentes. Agora eu tenho pensado em como modelar isso. Na minha opinião, existem duas abordagens diferentes.
Deixe o próprio objeto do jogo lidar com isso, assine os eventos e chame seus próprios métodos. Isso tem a vantagem de deixar os próprios objetos do jogo decidirem quais entradas causam qual ação. Uma desvantagem parece ser que o código de entrada é mutilado com o código de objeto do jogo "principal". Além disso, os objetos do jogo desconhecem o estado do restante do jogo e, às vezes, talvez não atuem sobre os eventos de entrada. Isso não parece certo.
Peça a um controlador de entrada geral que cuide de toda a entrada e tome decisões sobre quem deve lidar com qual evento. Isso parece separar as preocupações melhor, mas acopla firmemente a classe do controlador de entrada aos objetos do jogo. De alguma forma, é necessário saber quem deseja receber qual evento e em qual estado. Isso também não parece certo.
Quais estratégias você está usando para lidar com isso?