Estou postando aqui um exemplo da utilizacao do projeto.Ainda esta no comeco, mas da para ver algumas funcionalidades ja implementadas como movimento e ataque. Tem alguns pequenos bugs mas a maioria e por causa das constantes que estou utilizando para largura do Personagem e tiles colidiveis.Nenhum dos graficos usados sao realmente meus, so estao sendo utilizados para exemplificar.Use as setas para mover, X corre e A ataca e "conversa". E ESC sai.E por favor, ande por cima da grama.DownloadCriticas e sugestoes sao muito bem vindos. Apesar de demorar postar o andamento da Action RPG Lib o projeto continua andando.Muitas funcionalidades ja foram implementadas.-> Movimento e colisao-> Ataque-> Dialog Box-> Triggers para mudanca de mapa-> Data Driven-> Mudanca visual de terreno (igual a graminha de pokemon e Zelda a link to the past)O que possibilitou uma boa organizacao do projeto foi a implementacao da Maquina de Estado mostrada no post anterior.No metodo Enter sao carregadas as informacoes que dependem do estado, como a sprite sheet e as informacoes de area de colisao, por exemplo.Porem, apesar do meu esforco eu nao consegui o fraco acoplamento que eu queria. Queria que a cada funcionalidade que eu fosse implementar nao precisasse alterar tanto o codigo ja feito. Mas os componentes mantiveram sua independencia, o que ja e bom o bastante. O uso de Model View Controller contribuiu para essa independencia tambem.O proximo passo sera implementar a inteligencia artificial para NPCs e Inimigos.Mas uma vez, utilizarei o conceito de Controller separado do Model para facilitar e fazer uma classe AIinput.Porem ainda me falta teoria para comecar implementar. Consideracoes para a proxima versaoProblemas->Problema com os sprites e suas dimensoes, ja que um sprite pode diferir de tamanho para o mesmo personagem.Alem Disso, existe o problema maior que e onde estaria o referencial de uma imagem. Ha sprites em que o pe do Character esta na base da imagem e em outros o pe esta no meio da imagem.O que causa problemas no codigo de colisao e em outros lugares tambem.SolucaoEu decidi que a posicao de cada objeto sera o posicao da metade da largura objeto e a altura da base. No caso de um humano o Ponto de Referencia seria o ponto entre os pes, aproximadamente.->Animacao Baseada em tempo: o problema e quando um personagem anda 0.31 pixels/frame. Na hora de desenhar, cada pixel e indivisivel, assim quando arredondo o personagem andara 0 pixels.SolucaoA solucao que usei e armazenar cada parcela de pixel que o personagem andou ate que se some 1, e assim realizar o movimento.Decisoes->Para facilitar tanto programacao e entendimento sera passado como argumento do metodo os componentes. Assim ficara claro que outros componentes cada componente depende.->Componente State: A criacao desse componente facilitara o controle dos estados do componente.->Especializacao de Componentes: Existira tipos de State como CharState, ItemState e MonsterState. Assim, cada tipo de GameObject tera um State mais personalizado, simplificando cada Maquina de Estados. Sera extendido para controle, Movimentacao e muitas outras coisas. Isso ira diminui a genericidade de cada componente, mas simplifica e organiza o codigo.->A primeira vista, parece ser interessante abusar do uso