domingo, 12 de setembro de 2010

Conclusões - Movimentação

Antes de começar a discursão sobre as conclusões algumas informações sobre a Action RPG Lib.
Os ensinamentos sobre o loop do jogo veio desse artigo http://www.koonsolo.com/news/dewitters-gameloop/
Nele mostra alguns tipos de loop e eu optei pelo loop com velocidade do jogo constante. Apesar dos problemas que poderiam aparecer eu escolhi esse porque é mais simples e, como os jogos serão jogos 2D e que demandarão pouco da CPU, mesmo um computador mais lerdo não deve travar o jogo.
Então o código do meu loop ficaria assim:


while( game_is_running ) {
updateGame(sleep_time);

next_game_tick += SKIP_TICKS;
sleep_time = next_game_tick - GetTickCount();
if( sleep_time >= 0 ) {
Sleep( sleep_time );
}
}


O sleep_time(que vou começar chamar de delta) contém o tempo que o jogo deve ficar parado.
O delta é passado para o método de movimento, então resolvi fazer o movimento assim: distância = velocidade x tempo.
Os objetos que se movem tem uma variável que a velocidade e o delta é o tempo.
Parece ser mais fácil assim controlar a movimentação.

Agora restou fazer a visualização da movimentação.
Tendo em mão uma sprite sheet qualquer dá pra ver o deve ser feito.



Se eu mudar a frame da sheet toda vez que o objeto se movimentar vamos ter um problema, que é:



Então eu coloquei uma taxa de atualização na visualização também, baseada no delta. Agora eu posso controlar a troca de frames e ficaria assim:



Por enquanto é isso.

Nenhum comentário:

Postar um comentário

Related Posts Plugin for WordPress, Blogger...