Minha participação no Ludum Dare #40
Semana passada foi a edição de número 40 do Ludum Dare, e minha nona participação nesta game jam. Repetindo meu desempenho da edição anterior, eu falhei em terminar meu jogo.
Desta vez o tema foi The more you have, the worse it is (Quanto mais você tem, pior é) e como mencionei no post anterior decidi utilizar a Unity, o que teve suas vantagens e desvantagens. Neste link você pode ver detalhes sobre o meu jogo incompleto, o King’s Duty. Seu código fonte no GitHub.
Game Design
Minha ideia era fazer um jogo de gerenciamento de recursos onde o jogador tinha que controlar os recursos do seu reino para que não tivesse muito de um único tipo, o que fazia ele ter pouco dos demais e levaria seu reino ao declínio (considerando que eu tivesse acertado o balanceamento para ter esse resultado). Os recursos que defini foram Água, Comida e Ouro, sendo que esta era minha ideia inicial para a produção deles baseada na alocação de trabalhadores:
- Produzir 1 unidade de água = consumia 1 unidade de comida e 1 unidade de ouro;
- Produzir 1 unidade de comida = consumia 1 unidade de água e 1 unidade de ouro;
- Produzir 1 unidade de água = ouro 1 unidade de água e 1 unidade de comida;
O jogador seleciona uma célula do tabuleiro que representa o seu reino e adicionar trabalhadores para gerar o recurso que ele deseja e também para proteger seu reino dos ataques de inimigos que podem sugir ao redor do reino e tentarão destruir os recursos e as células que contem os trabalhadores. Não cheguei a pensar muito no combate, mas provavelmente faria algo simples como um inimigo seria destruído por um trabalhador, mas levaria ele junto. Se tivessem mais inimigos do que trabalhadores em uma célula, aquele local seria tomado pelo inimigo e o jogador não poderia mais colocar trabalhardores lá.
Não cheguei a testar se o balanceamento estava correto, mas estes eram os valores iniciais de produção. Para ajudar nisso utilizei um recurso bem legal da Unity chamado Remote Settings, que fica localizado no serviço Unity Analytics. Este recurso permite criar variáveis do tipo string, int, float ou bolean e definir um valor para os tipos de build Development e Release. Quando o jogo é iniciado, é possível buscar estes valores de acordo com o tipo da build, facilitando bastante ajustar detalhes do jogo sem ter que gerar uma nova build.
A versão gratuita da Unity já te dá acesso a isso, basta criar um projeto e habilitar o recurso de Analytics. Para este jogo decidi criar variáveis para cada recurso de valor inicial, produção por segundo e valor máximo (9 variáveis ao todo). Também criei um define para ignorar o remote settings e poder testar com valores locais, sem precisar ficar alterando os valores no site e fazer sync para aplicar. Nem preciso dizer que me empolguei tanto em brincar com isso que percebi que era algo overkill para uma game jam só depois de já gastar algum tempo nisso, mas é bem útil para jogos.
Programação
Esta foi outra parte que me fez perder tempo por que não consegui me desapegar e fazer código de qualquer jeito, então acabei pensando um pouco demais em cada linha que escrevi. Claro que não é o melhor código do mundo, mas com certeza não deveria ter perdido tempo pensando em deixar ele tão flexível. Em uma game jam de apenas 48 horas, e participando sozinho, o ideal seria pensar em fazer um código de protótipo: descartável e direto ao ponto. O código que fiz está reutilizável para eu continuar este jogo, inclusive a estrutura do projeto e dos prefabs usam algumas das melhores práticas que aprendi na Aquiris e que pretendo compartilhar por aqui em posts sobre Unity, com este aqui.
Arte
Este foi o primeiro jogo 3D que fiz para uma game jam, o que pelo menos planejei fazer. A arte é bem simples, basicamente um tabuleiro quadrado com cubos para cada célula e cubos menores para indicar ocupações do jogador e dos inimigos. Assim como na minha participação anterior, busquei um padrão de cores para deixar o jogo com um visual legal, apesar de simples. Esta foi a paleta de cores que utilizei, e buscar uma um padrão de cores tem sido uma boa prática para fazer algo simples e visualmente agradável. Não cheguei a trabalhar muito na interface, foi apenas uma área com informações e botões para adicionar trabalhadores em uma célula.
Conclusão
Pelo tamanho da descrição do game design da pra ver que tentei fazer algo maior do que fiz em minhas participações anteriores e, apesar de ter perdido tempo com o remote settings e escrevendo código flexível, eu acho que teria conseguido terminar pelo menos algo jogável se estivesse mais motivado. Ainda preciso resolver isso para poder participar do próximo Ludum Dare, e até avançar em meus projetos pessoais.