A downloadable game

1. INTRODUÇÃO

Entre os diversos gêneros de jogos dentro do mercado, o gênero de Estratégia ainda reside entre os mais vendidos. De acordo com a SteamDB (2024), Civilization VI alcançou mais de 12 milhões de vendas e até hoje é o jogo de estratégia mais jogado dentro da Steam. 

Os jogos táticos, são uma subcategoria de gênero de jogo dentro dos jogos de estratégia. Costumam ser jogados em turnos, sendo mais lentos e dando mais chance para os jogadores pensarem em estratégias para vencer os desafios. (ROGERS, 2014). Dentro dessa categoria, os jogadores costumam ter menos unidades para manusear, formando combates mais localizados.  (ARRIVABENE, 2019). 

Os jogos táticos costumam ter a movimentação a base de Grids, que são coordenadas as quais os personagens devem passar por cima. Para que as unidades dentro do jogo achem os caminhos, o A*(A-Star) é utilizado como ferramenta para encontrar caminhos de forma otimizada a base de valores aplicados no caminho, o node inicial contará o custo para se locomover e escolherá o caminho mais otimizado. (RUSSEL, 2016).

1.1 Objetivos

Desenvolver um protótipo de jogo tático isométrico com três mapas que variam de dificuldade e terreno. Dois times, com três unidades únicas e com diferentes custos e atributos, se enfrentam.

  • Criar um sistema de coordenadas para as unidades se localizarem no mapa; 
  • Estudar e aplicar o sistema de procura A*, para que as unidades encontrem o melhor caminho; 
  • Criar três variações de unidades; 
  • Balancear as unidades com base em custo, para que os jogadores tenham estratégias únicas; 
  • Criar uma árvore de decisões para que as unidades não jogáveis criem um desafio e realizem jogadas coerentes.

1.2 Procedimentos Metodológicos

Para esse projeto, será feita uma pesquisa exploratória, que se dá por pesquisas que visam aumentar o entendimento sobre o problema, com o intuito de torná-lo mais claro. O foco principal dessa investigação é o desenvolvimento de ideias ou a obtenção de novas percepções. Por esse motivo, o planejamento é flexível, permitindo a exploração de diversos aspectos relacionados ao tema estudado (Gil, 2002). 

Assim, também será utilizada a metodologia Diamante Duplo especificamente para o desenvolvimento do projeto, que de acordo com o Conselho de Designer do Reino Unido (2024) é um modelo visual que delineia o processo de design e inovação. Essa metodologia oferece uma estrutura clara para compreender as diferentes etapas envolvidas em qualquer projeto criativo, independentemente das técnicas ou recursos específicos utilizados. 

Além disso, para o desenvolvimento do projeto serão utilizadas as ferramentas Kanban e SCRUM, o primeiro é uma ferramenta de gestão visual que usa cartões e colunas coloridas para controlar o fluxo de trabalho, e o segundo é uma ferramenta de gestão ágil que ajuda a organização da equipe a trabalhar em conjunto para atingir um objetivo específico (FERREIRA, 2023).

1.2.1 Metodologia do Projeto

A metodologia Diamante Duplo consiste em 4 etapas do processo: descobrir, definir, gerar ideias e entrega. 

Fonte: Silva, Angelo, 2022.

De acordo com o Conselho de Designer do Reino Unido (2024), a fase inicial do processo promove empatia e compreensão aprofundada do problema em questão. Ela requer o envolvimento direto com aqueles afetados pelo problema para obter uma compreensão profunda de suas necessidades e perspectivas. Na segunda parte do primeiro processo do Diamante Duplo, as descobertas feitas durante a fase inicial de exploração podem levar a uma redefinição do problema, oferecendo uma nova perspectiva sobre os desafios a serem enfrentados. 

Já o segundo Diamante começa com o fomento da criatividade e da colaboração, incentivando os indivíduos a explorar soluções diversas para o problema bem definido, buscando inspiração em fontes externas e trabalhando em conjunto com uma variedade de partes interessadas. Finalizando o segundo Diamante, tem a fase de implementação que envolve experimentar várias soluções em uma escala menor, eliminando aquelas que se revelam ineficazes e refinando as que demonstram potencial.

2. CONCEITO

O jogo o qual os desenvolvedores trabalharam durante o semestre será um jogo de Estratégia Tático. De acordo com o autor Scott (2014) o gênero de estratégia tem como base o planejamento de forma sistemática para resolver os problemas. A estratégia tática costuma ser mais lenta, feita em turnos os quais dão ao jogador um tempo maior para pensar. 

Neste conceito, o jogo será baseado em partidas isoladas. Cada batalha será realizada em um mapa com uma dificuldade baseada em pontuação. Cada unidade terá uma pontuação que definirá os atributos desta unidade. As batalhas serão curtas e com unidades limitadas. 

O jogador ganhará uma quantidade de pontos baseado na dificuldade que escolheu, em seguida comprará as unidades utilizando esses pontos para decidir a estratégia que achar mais adequada.

2.1 Mecânicas

Combate baseado em turnos. Cada turno, o usuário poderá escolher quais unidades mover e ou atacar. Os turnos não terão tempo, dando a possibilidade de pensar nas ações. Movimentação em uma coordenada que forma uma grade. A movimentação terá um custo baseado na distância ou na especificação da grade. 

Os atributos serão os recursos de cada unidade, a vida é o que manterá a unidade no combate, armadura reduz o dano causado a unidade, velocidade mostra quantas casas ele poderá se mover e dano quantos pontos de dano causara a unidade selecionada. Todas as unidades terão um custo de compra, que será definido baseado nos atributos dela. O jogador poderá comprar as unidades no começo da partida.

2.2 Personagens Não Jogáveis

Dentro do escopo de produção deste projeto existem três unidades não jogáveis. Os atributos são divididos em Velocidade, Armadura, Vida e Dano. Cada uma terá um comportamento diferente. 

Unidade básica de combate: 

  • Unidade com os atributos baixos, será barato e terá mais deles em campo. Seu comportamento é caminhar até o jogador e tentar encostar nele para danificar. Cada turno que estiver adjacente ao jogador, danificará a unidade jogável. 

Unidade pesada de combate: 

  • Unidade com armadura, terá movimento baixo, sendo bem difícil de alcançar o jogador. Seu comportamento será ficar na linha de visão do jogador e impedir as outras unidades de serem atingidas. 

Unidade de tiro a distância: 

  • Unidade com pouca vida, movimentação regular, parecida com a unidade básica de combate. Seu comportamento é manter a distância do jogador e disparando de longe.

2.3 Telas e Interfaces

O design da interface será algo simples, poucas coisas na tela apenas informações importantes do personagem. Na base da tela terão a imagem da unidade selecionada, para saber qual personagem o jogador moverá, ao lado da imagem os atributos fixos como dano e armadura. A vida e a movimentação serão dispostas em barras que serão os atributos variáveis.  

E ao lado esquerdo, uma aba a qual descreve informações básicas da unidade e custo. Como é visto na figura 2. 

Fonte: Autor, 2024.

3. DESIGN TÉCNICO

Nesta sessão, serão abordados os aspectos técnicos do projeto a fim de esclarecer as principais características lógicas que contribuem para o funcionamento do jogo. Os recursos envolvem desde especificações técnicas, que formam o alicerce do projeto, até as estratégias de implementação de inteligências artificiais e algoritmos de comportamento. 

3.1 Motor de Jogo

O jogo será desenvolvido utilizando a Godot Engine, um motor open-source, ideal para o desenvolvimento de jogos 2D e 3D. A escolha da Godot se deve à sua flexibilidade, facilidade de uso e à possibilidade de exportação para múltiplas plataformas. 

A filosofia de design da Godot, segunda a própria documentação da engine, valoriza a criação de um ambiente de desenvolvimento intuitivo, com um sistema de nodes que facilita a organização e implementação de recursos. Dentro desse sistema existe a característica de herança, que acaba se tornando um dos principais mecanismos na montagem de um jogo. 

3.2 Descrição dos Scripts

Os scripts serão escritos em GDScript, a linguagem nativa da Godot, que é semelhante ao Python e otimizada para o desenvolvimento de jogos. Abaixo estão algumas classes principais e suas descrições: 

  • Init.gd: Este script é responsável por inicializar as configurações do jogo, preparando o ambiente e definindo variáveis globais necessárias para o funcionamento do jogo. Ele carrega os dados essenciais e configura a cena inicial, servindo como ponto de partida para todas as interações. 
  • turn-controller.gd: O script turn-controller.gd gerencia a sequência de turnos no jogo, controlando qual jogador ou unidade está ativo a cada rodada. Ele garante que as ações sejam realizadas na ordem correta, passando o turno entre os jogadores e implementando a lógica necessária para uma experiência fluida. 
  • Action-manager.gd: Este script controla a quantidade de ações disponíveis para o personagem selecionado durante o seu turno. O action-manager.gd gerencia o consumo de ações, permitindo que o personagem realize suas ações de acordo com as regras do jogo e assegurando que o equilíbrio seja mantido durante as jogadas. 
  • Heavy.gd: O script Heavy.gd define o comportamento base do personagem da classe Heavy, especificando atributos como saúde, armadura e dano. Ele implementa as mecânicas de combate e movimentação próprias dessa classe, permitindo que o jogador utilize sua força e resistência de forma eficaz. 
  • Ranged.gd: Este script lida com o comportamento base do personagem da classe Ranged, focando em suas habilidades de ataque à distância. O Ranged.gd define os atributos e as lógicas necessárias para que o personagem possa atacar alvos a uma certa distância, otimizando suas ações durante o jogo. 
  • Regular.gd: O script Regular.gd controla o comportamento do personagem da classe Regular, que possui atributos equilibrados entre ataque e defesa. Ele gerencia a movimentação e as ações desse tipo de personagem, proporcionando uma jogabilidade flexível e adaptável às situações. 
  • Grid.gd: Este script representa a lógica de montagem da grid, que serve como base para a movimentação das unidades. O Grid.gd define as coordenadas do mapa, controla a disponibilidade das células e calcula interações de movimentação de acordo com a configuração da grade. 
  • Movement-manager.gd: O Movement-manager.gd gerencia a lógica de movimentação dos personagens, calculando os caminhos que as unidades podem seguir. Ele assegura que os movimentos respeitem as regras do jogo e a estrutura da grid, facilitando a navegação no campo de batalha. 
  • Sniper.gd: Este script define o comportamento da classe Sniper, que possui habilidades de ataque de longo alcance. O Sniper.gd implementa atributos específicos e mecânicas que permitem ao personagem atacar inimigos à distância e se posicionar estrategicamente para maximizar sua eficácia. 
  • Scout.gd: O Scout.gd lida com o comportamento do personagem da classe Scout, caracterizado por agilidade e capacidade de explorar o mapa. Ele define atributos que favorecem a movimentação rápida e a detecção de inimigos, além de ações especiais relacionadas à exploração. 
  • Bruiser.gd: Este script controla o comportamento do personagem da classe Bruiser, conhecido por sua alta resistência e força no combate corpo a corpo. O Bruiser.gd implementa as mecânicas que permitem ao personagem suportar dano e causar impacto significativo nas batalhas. 
  • health-manager.gd: O health-manager.gd gerencia a vida de cada instância de personagem, controlando a saúde, aplicando danos e recuperações, e determinando as condições de derrota ou vitória. Este script assegura que as mecânicas de saúde estejam integradas ao funcionamento do jogo. 

3.3 Inteligência Artificial

A Inteligência Artificial será implementada para os personagens não jogáveis utilizando um sistema de árvore de decisões e algoritmos de busca A* para o pathfinding. Essas unidades seguirão comportamentos específicos com base na situação do jogo. 

  • Unidade Básica: Usará uma lógica simples para avançar e atacar. 
  • Unidade Pesada: Focará em bloquear unidades inimigas e proteger aliados. 
  • Unidade de tiro: Manterá distância e disparará quando possível. 

3.4 Delineamento de Testes

Para garantir a qualidade do jogo, serão elaborados casos de testes para cada aspecto do projeto.

Teste de movimento dos personagens jogáveis: 

  • Descrição: Testar se a unidade selecionada se move corretamente. 
  • Responsável: Vinícius Jung 
  • Resultado esperado: A unidade deve mover-se para o local apontado pelo jogador, navegando pela grid projetada no mapa.

Teste de ataque dos personagens jogáveis:

  • Descrição: Verificar se a unidade selecionada consegue realizar o ataque corpo-a-corpo. 
  • Responsável: Vinícius Jung 
  • Resultado esperado: O alvo deve perder uma quantidade de vida após o movimento ser realizado e o personagem não poderá atacar novamente no mesmo turno. 

3.5 Cronograma

Durante outubro a produção será focada nos fundamentos do jogo, a movimentação baseada em grid e a ferramenta de encontrar caminhos, A* dentro da engine. Nas últimas duas semanas de outubro será para criar as unidades e fazer elas interagirem entre si. 

Em novembro o objetivo será montar o cenário, fazendo um design o qual será balanceado em volta da dificuldade dos inimigos. Concomitante a isso a máquina de estados será desenvolvida, árvore de comportamentos para decidir as ações dos personagens não jogáveis. Os testes serão feitos assim que o comportamento estiver pronto e será feito o balanceamento das unidades. Será selecionado duas semanas deste mês para fazer o primeiro protótipo da interface e na última semana começar a documentação para a m3. 

Dezembro será definido por testes e refinamento, adicionando sprites e animação, além de terminar a documentação. Com mais testes será possível adicionar mais comportamentos, música e efeitos sonoros. Como disposto na figura abaixo.

Fonte: Autor, 2024.

4. CONSIDERAÇÕES FINAIS

O algoritmo A* fornece uma forma de planejar o movimento das unidades de forma sistemática, dando opção para expandir a variação de opções de terreno e pensamentos para as unidades, tanto jogáveis como não jogáveis. 

As possíveis dificuldades e pontos negativos do projeto descrito neste documento serão a complexidade de entender e aplicar as arvores de decisão, pois a inteligência artificial fluida e inteligente é o que define este gênero de jogo. Sem ela não terá desafio e o jogo não se completa. 

Ao decidir este jogo, o escopo foi reduzido para a aplicação desta matéria, mas o que for produzido durante o semestre previsto para este trabalho terá o intuito de ser expandido em relação aos próximos semestres, almejando um jogo com demo jogável até junho de 2025. 

REFERÊNCIAS

ARRIVABENE, Rafael Mariano Caetano. Introdução didática ao Game Design [Recurso eletrônico]/ Porto Alegre: SAGAH 2019 

CHANDLER, Heather Maxwell. Manual de produção de jogos digitais. 2. ed. Porto Alegre: Bookman, 2012. xxv, 478 p. ISBN 9788540701830. 

CONSELHO DE DESIGNER DO REINO UNIDO. The Double Diamond. Disponível em: https://www.designcouncil.org.uk/our-resources/the-double-diamond/. Acesso em: 09 out. 2024.

FERREIRA, Maik Souza. Ferramentas ágeis no desenvolvimento de projetos por engenheiros químicos: uma revisão sobre lean, scrum e kanban. 2023. 32 f. TCC (Graduação) - Curso de Engenharia Química, Universidade Federal de Uberlândia, Uberlândia, 2023. Disponível em: https://repositorio.ufu.br/bitstream/123456789/37802/1/FerramentasAgeisDesenvolvimento.pdf. Acesso em: 09 out. 2024.

GIL, Antonio Carlos. Como elaborar projetos de pesquisa. 4. ed. São Paulo: Atlas, 2002. Disponível em: https://files.cercomp.ufg.br/weby/up/150/o/Anexo_C1_como_elaborar_projeto_de_pesquisa_-_antonio_carlos_gil.pdf. Acesso em: 09 out. 2024.

GODOT. Filosofia da Godot Engine, documentação oficial. Disponível em: https://docs.godotengine.org/en/stable/getting_started/introduction/godot_design_philosophy.html. Acesso em: 09 out. 2024.

GRANBERG, Aron. A* Pathfinding: Documentação do algoritmo adaptada para Unity. Disponível em: https://arongranberg.com/astar/docs/. Acesso em: 7 out. 2024.

MARTINHO, Carlos; SANTOS, Pedro; PRADA, Rui. Design e Desenvolvimento de Jogos. Lisboa: Editora de Informática, 2014.

NOVAK, Jeannie. Desenvolvimento de games. São Paulo: Cengage Learning, 2011. 443 p. ISBN 9788522106325.

ROGERS, Scott. Level Up!: Guide to Great Video Game Design. 2. ed. Indianapolis: Wiley, 2014.

ROGERS, Scott. Level up: um guia para o design de grandes jogos. São Paulo: Edgard Blucher, 2012. 494 p. ISBN 9788521207009.

RUSSELL, Stuart; NORVIG, Peter. Artificial Intelligence: A Modern Approach. 3. ed. Upper Saddle River: Prentice Hall, 2016.

SCHELL, Jesse. A Arte de Game Design. Rio de Janeiro: Elsevier, 2011.

SCHUYTEMA, Paul. Design de games: uma abordagem prática. São Paulo: Cengage Learning, 2008. 447 p. ISBN 9788522106158.

SEBRAE. Método Kanban. Brasília: SEBRAE, 2023. Disponível em: https://sebrae.com.br/Sebrae/Portal%20Sebrae/Arquivos/ebook_sebrae_metodo-kanban.pdf. Acesso em: 8 out. 2024.

SILVA, Stela Soares; ANGELO, Ana Carolina Maia. Contribuição da Engenharia de Produção para a Transformação Digital da Indústria Brasileira. In: XLII ENCONTRO NACIONAL DE ENGENHARIA DE PRODUÇÃO, 42., 2022, Foz do Iguaçu. Anais [...] . Foz do Iguaçu: Enegep, 2022. p. 1-14. Disponível em: https://www.abepro.org.br/biblioteca/TN_ST_387_1915_44994.pdf. Acesso em: 09 out. 2022.

STEAMDB. Charts - Total Player Count for Game: XCOM: Enemy Unknown. Disponível em: https://steamdb.info/app/200510/charts/#1y. Acesso em: 8 out. 2024.

STEAMDB. Charts - Total Player Count for Game: Civilization VI. Disponível em: https://steamdb.info/app/289070/charts/. Acesso em: 8 out. 2024.

GRUPO

Danniel Lopes Chagas;

Luiz Augusto Pardo da Silva;

Nicole Lewandowski;

Victor Fernandes;

Vinícius Jung.