Resumo |
O objetivo deste projeto foi o desenvolvimento de um jogo RPG (Role-Playing Game), implementando regras baseadas em jogos de tabuleiro. O projeto teve como base o jogo de tabuleiro Dungeons & Dragons versão 3.5. O projeto teve influência de RPGs clássicos das décadas de 1970 e 1980, chamados MUD (Multi-User Dungeon) e Roguelikes, estilos estes pioneiros no gênero RPG eletrônico, cujas características principais, e mantidas neste projeto, são: a representação do mundo através de texto ou gráficos simples; interação através de comandos; vasta opção de ações para os personagens; e um sistema complexo de regras e mecânicas de jogo. A ideia principal deste projeto foi o de novos tipos de representação para esse estilo de jogo, trazendo novos recursos de visualização e interação, que não eram possíveis a esses jogos de 40 anos atrás, devido ao poder de processamento bastante limitado. Foi desenvolvido um motor de processamento de comandos que delega as ações a módulos específicos da aplicação, possibilitando que qualquer ação possível dentro do jogo fosse realizada através de comando de texto. A parte de navegação e movimento dentro do mundo é uma Matriz de Adjacência e conta com um sistema de regiões criadas sobre esta matriz, o que possibilitou representar áreas no mapa com diferentes informações, como nome e descrição, clima e tipo de terreno. Foram utilizados os algoritmos A* (“A” Star ou “A” Estrela) e Algoritmo de Bresenham, para cálculo de rotas e projeção de raios para o campo de visão. Os NPCs (Non-Playable Character, personagens não controláveis por jogador) foram implementados com agentes orientados a objetivos, usando a técnica de inteligência artificial GOAP (Goal Oriented Action Planning, Planejamento de Ações Orientada a Objetivos) o que permitiu ações mais orgânicas e adaptativas para estes personagens. O projeto foi desenvolvido em Java, e é composto de diversos módulos desenvolvidos separadamente, utilizando MAVEN para gerenciamento de dependências. Foi desenvolvido na versão Java 8 e utiliza de recursos funcionais e bibliotecas externas para manipulação de arquivos XML e JSON. O jogo conta com diferentes níveis de visualização do mapa (Zoom) e possibilita acesso direto às principais informações do personagem e mundo do jogo em tempo real, o que possibilita a tomada de decisão mais ágil, uma vez que não é necessário digitar um comando de solicitação de tais informações, como em jogos clássicos deste tipo. |