Migrando do 3D para o 2D e novidades

Como comentei na última postagem, estou abandonando o projeto de tentar fazer o jogo todo em 3D e voltando para o meu terreno o 2D. O processo "artístico" está sendo bem científico (na base da tentativa e erro, sendo mais sincera) e irá ganhar uma postagem para si em um futuro, não muito distante assim espero. Durante esse processo de adaptação do projeto 3D para o 2D percebi e aprendi algumas coisas. Pela primeira vez entendi qual é a grande vantagem de utilizar uma arquitetura de componentes em uma engine. Grande parte do que funcionava antes continua funcionando como antes e as perdas de código pela migração foram baixas. Estou tendo que reescrever um pouco do código, mas com toda certeza é menos do que se fosse em outro paradgma.

Estou tendo que reescrever parte do código, mas devido ao não suporte atual da Unity a criação de NavMesh para o 2D. Portanto, estou tendo que escrever por conta todo meu sistema de movimentação dos agentes o que não é um grande problema já que vai ser bastante similar ao que utilizei no Tower Defense do TCC. A ideia central é construir um grafo considerando todos os tiles do terreno e em seguida implementar algum algoritmo de menor caminho, como o A* (provavelmente será ele), para definir a rota entre um ponto e outro do mapa. A grande diferença entre o que criei no TCC e este é que o primeiro utiliza um sistema com apenas 1 nó central em cada tile para a movimentação, enquanto o sistema atual terá 5 nós por tile com 1 nó central outros 4 próximos dos cantos. A construção do grafo já está implementada, assim como a leitura do mapa a partir de um arquivo, portanto, só falta a implementação do A* e um comportamento para seguir o caminho. Para essa parte do A * gosto de usar como referência esse link é bem completo e explica tudo do início. Já para o steering behaviour de FollowPath gosto desse aqui que vem junto com um compilado de outros steering behaviours.

Já que estou comentando sobre o mapa tem outra coisa legal que andei implementando no meu jogo. No Torres de Bymare, eu implementei um sistema legal em que na hora de carregar um mapa era possível escolher qual era a spritesheet que deveria ser utilizada. Isso dava bastante flexibilidade já que eu podia usar o mesmo mapa, mas selecionando uma spritesheet diferente ele tinha uma aparência diferente. Implementei algo similar na Unity, enquanto ela não tem isso pronto. A grande dificuldade para implementar isso foi mostrar um dicionário no inspector. Originalmente isso não é possível fazer isso, mas esse link aqui disponibiliza o código para utilizar dicionários serializaveis e, que portanto, possam ser utilizadas no inspector da Unity, vale a pena dar uma olhada. Com esse código foi possível não ter que ler um arquivo ou mudando direto no código a spritesheet, alterações direto no inspector são sempre bem vindas.
Spritesheet e seu dicionário de tiles
Além deste uso dos dicionários serializáveis, também utilizei para a criação da moeda do jogo: novelos de lã. Como todo o jogo é baseado em tricô e crochê é natural utilizar novelos de lã como moeda, principalmente já o jogo terá muitas mecânicas de construção. Na verdade boa parte do sistema já está implementado e funciona assim, se o jogador quer construir uma casa ele precisa de um novelo do branco e um do marrom. Quando o jogador quiser desmontar essa casa, ele receberá novamente esse novelo branco e marrom. Estou pensando na possibilidade de quando o jogador desmontar ele acaba perdendo esse novelo já que ele embolou, mas isso é futuro e pra balanceamento. Também quero permitir o jogador construir de desmontar tudo no jogo, inclusive o mapa. O 2D me permite fazer isso com bastante facilidade e adicionar/remover tiles do mapa é algo bastante fácil de ser feito já que controlo totalmente o sistema de movimentação dos personagens. O jogador quer um pouco de novelo do branco? Desmonta aquela montanha que tem uma camada de neve e bum! Ele tem branco e marrom! Aquela floresta está no caminho? Desmonta. Tem uma galera que mora do outro lado de um rio? Desmonta o rio e constrói um tile de grama no lugar ao invés de construir uma ponte.
O EconomyController está começando a tomar forma junto com o jogo
Quanto ao comportamento dos agentes, eles vão ter que ser adaptados para o novo ambiente já que a navegação será utilizando esse sistema que estou construindo, mas acho que não vou perder muito do que já está implementado. O comportamento de FollowPath que vou ter implementar para o deslocamento no mapa vai substituir o NavMesh e tudo vai funcionar, pelo menos é assim nos meus sonhos. Assim as mecânicas de missões não serão quebradas assim como o comportamento individual de cada agente. No mais é isso que foi implementado e está sendo implementado de novidade no jogo e hoje não temos nem memes ou gifs já que o papo é bastante técnico.
Compartilhar no Google Plus

Autor: Pâmela de Assis Beltrani

É Bacharel em Ciência da Computação pela PUCPR e Mestre pela UFPR. Também é especialista em Desenvolvimento de Jogos Digitais pela PUCPR.
    Blogger Comment
    Facebook Comment

0 comentários:

Postar um comentário