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/
Com certeza. Dê uma olhada nesses artigos do AI-Junkie: http://www.ai-junkie.com/architecture/state_driven/tut_state1.html
ResponderExcluirMostra uma máquina de estados baseada em polimorfismo. A solução final ainda usa uma pilha. Fica simples, elegante e flexível.
Aqui tem um exemplo da máquina implementada em C++: http://sofiaia.wordpress.com/2008/07/11/maquina-de-estados/
ResponderExcluirEu fiz para a minha pós-graduação em games. Sinta-se à vontade de copiar e adaptar o código, se quiser.