sábado, 18 de dezembro de 2010

Máquina de estados nos Jogos / Game State Machine

Mais uma vez parei de programar devido a um problema que dá vontade de começar tudo de novo.
E só agora realmente tive a vontade de começar tudo de novo.
Para recomeçar eu tive que relembrar alguns conceitos bem importantes e relembrar cada problema que eu tive com a Action RPG Lib.

Estava tudo indo muito bem quando eu lembrei de uma coisa que me encucou bastante.

Máquina de estados. O jogo é uma máquina de estados e alguns objetos do jogo também são máquinas de estados, certo?
Mas o problema é que aquele aglomerado de IFs e ELSEs e CASEs dá a impressão que tem algo errado no código.

void Update()
{
switch( myState )
{
case DoingTheFirstThing:
...
case DoingTheSecondThing:
...
case DoingTheLastThing:
...
}
}


Não existiria uma maneira mais certa ou mais organizada de fazer isso?

Update: O Vinícius Godoy deixou um ótimo artigo que mostra uma ótima solução para Máquina de Estados.
http://www.ai-junkie.com/architecture/state_driven/tut_state1.html
http://sofiaia.wordpress.com/2008/07/11/maquina-de-estados/

2 comentários:

  1. Com certeza. Dê uma olhada nesses artigos do AI-Junkie: http://www.ai-junkie.com/architecture/state_driven/tut_state1.html

    Mostra uma máquina de estados baseada em polimorfismo. A solução final ainda usa uma pilha. Fica simples, elegante e flexível.

    ResponderExcluir
  2. Aqui tem um exemplo da máquina implementada em C++: http://sofiaia.wordpress.com/2008/07/11/maquina-de-estados/

    Eu fiz para a minha pós-graduação em games. Sinta-se à vontade de copiar e adaptar o código, se quiser.

    ResponderExcluir

Related Posts Plugin for WordPress, Blogger...