Planet Operations per Second

31 Aug 2021

Anos atrás, tive a ideia de desenvolver um RPG 2D old-school de mundo aberto e gerado aleatoriamente. Sempre curti esse estilo e sempre quis criar algo parecido. É um grande desafio e certamente haverá muito aprendizado no processo. Esse é o primeiro post de uma série onde registro as aventuras do desenvolvimento desse projeto.

Inspirações

Gurk, the 8-bit RPG

Um retro RPG para mobile que à primeira vista parece horrível e a jogabilidade deixa a desejar, mas se esses detalhes não forem uma barreira pra você, é possível que você faça como eu fiz e jogue também o Gurk II e III, cada um melhor que o outro. O mundo é aberto: você pode visitar vários lugares a princípio, mas isso não quer dizer que consiga ou deva, no seu nível atual.

Cat Quest

Um ótimo RPG mobile, bem mais recente. Além do mundo aberto com as mesmas características de Gurk, as dungeons informam qual o nível mínimo em que você deve estar para ter alguma chance de vitória.

Minecraft

A geração de mundos em Minecraft usa um algoritmo de noise 3D que permite criar mundos de dimensões enormes, com montanhas e cavernas em escala real, enquanto outro algoritmo distribui vilas e dungeons pelo mapa.

Game design

Alguns elementos acabam tornando o jogo chato, repetitivo, difícil de implementar ou não agregam em nada. A ideia é evitá-los:

  • Grinding - a necessidade de lutar repetidamente com a única intenção de evoluir seu personagem para lidar com inimigos mais difíceis.
  • Crafting - o recurso de construir itens a partir de outros itens básicos. Não é que seja algo ruim, mas não é necessariamente um requisito para um jogo ser bom. É ótimo para jogos de sobrevivência, mas nem todo RPG precisa ser um jogo de sobrevivência.
  • Item hell - o jogo possui uma infinidade de itens e o jogador precisa ler a wiki/documentação para lembrar o que cada item faz.

Geração procedural

Para criar um mundo aleatório, utilizamos técnicas de geração procedural. Vários elementos que compõem um RPG clássico podem ser gerados proceduralmente:

  • Mapa, relevo, clima e biomas
  • Países, territórios, culturas, regimes, governantes, aliados e inimigos
  • Cidades, capitais, fortalezas, vilas e as rotas entre elas
  • Cavernas, minas, calabouços, ruínas, templos, etc
  • Histórias, objetivos e missões
  • Personagens, inimigos e NPC's
  • Itens, magias e habilidades

Porém, nem tudo é tão facilmente automatizável. Para gerar missões, inimigos, animais e itens, por exemplo, é necessário usar modelos feitos à mão e usar parâmetros que variem suas características a cada nova geração. Por exemplo, um modelo de missão do tipo "busca" pode ser gerado com diferentes tipos de parâmetros: "buscar item A na caverna B" ou "buscar pessoa A na cidade B".