Resumo

ZZTT é um projeto de jogo inspirado em Transport Tycoon Deluxe, Factorio e Age of Empires, que está sendo criado por Lucas Montenegro e Thomaz Nardelli.
É um jogo de gerenciamento sobre controlar uma empresa de transporte de recursos em um mundo de fantasia.
"O jogo é um jogo de gerenciamento em estilo RTS, 3D, multiplayer, low poly e procedural."

Video

O que é ZZTT?

ZZTT é um jogo de gerenciamento sobre transporte de recursos em um mundo de fantasia. Em ZZTT você será o dono de uma empresa de transporte de recursos. Seu objetivo é atender às necessidades da população local, coletando, transportando e vendendo diversos recursos por ouro. Neste universo de fantasia, você terá que contratar prestadores de serviço para lidar com uma variedade de tarefas de transporte de recursos, desde cogumelos mágicos perigosos até loot de dungeon que atrai emboscadas. Vamos torcer para que os outros jogadores também não tentem atrapalhar seus serviços, já que, neste ambiente multiplayer, tudo pode acontecer!

Por quê?

Venho estudando e trabalhando na criação de uma arquitetura de software escalável para conseguir criar jogos complexos mais rápido, passando mais tempo criando features do que corrigindo bugs. Enquanto estudava isso, percebi que precisava de um jogo base para poder criar meu framework em cima dele. Seria muito difícil entender do que o framework precisa sem ter um jogo de verdade. Feature creep e ferramentas desnecessárias costumam ser os culpados.
Conforme fui ficando mais velho, passei a valorizar cada vez mais ter menos código, que seja menos "esperto" e mais legível. Ter um projeto de jogo me permite fazer meu framework crescer criando exatamente as ferramentas de que preciso.
Além disso, por que eu escolheria um RTS multiplayer? Eu não poderia criar um jogo menor? Bom, sim, claro! Mas eu estava jogando MUITO TTD e queria fazer isso, então é isso.
Contei ao Thomaz sobre essa ideia e ele me disse que queria treinar suas habilidades de computação gráfica e arte técnica. COMBINAÇÃO PERFEITA. Marcamos uma reunião e em duas semanas tínhamos um documento de design básico com o core loop do jogo.
 

Para onde estamos indo?

Bom, eu não sei. Queremos terminar este jogo e publicá-lo, com certeza. Não posso fazer isso por dinheiro por causa do lugar onde trabalho atualmente, então não tenho certeza. Podemos publicá-lo de graça, talvez até deixá-lo open source, ou podemos pensar em outra coisa. Assim que decidirmos o que vamos fazer, escreverei sobre isso.
A principal intenção aqui é desenvolver meu framework, e o Thomaz quer programar uns shaders e pipelines de renderização bem bonitos. Estamos fazendo isso, então este é nosso principal objetivo por enquanto.
Já que esse é o nosso objetivo, vou tentar manter vocês informados sobre as tecnologias com que estamos trabalhando, os comos e porquês disso.

Sobre o Jogo

Core Loop

O core loop de ZZTT é:

  • Contratar prestadores de serviço por moeda
  • Definir missões de transporte de recursos para os prestadores de serviço
  • Vender recursos por moeda
  • Contratar prestadores de serviço

Nossa ideia é desenvolver as primeiras mecânicas para satisfazer esse core loop e depois adicionar algumas mecânicas para amarrá-las umas às outras. Adicionar algumas restrições, relações, dificuldades. Depois vamos trabalhar na nossa UX para que o jogo seja mais fácil de jogar. Queremos parte da incrível complexidade que TTD tem a oferecer, sem a UI e a UX dos anos 80.

Status Atual do Desenvolvimento

Ainda estamos trabalhando nos componentes básicos do framework. Tenho trabalhado bastante para criar uma boa base para adicionar novas features sem precisar mudar o que já existe. Criei um framework bacana baseado em DI Container que se integra facilmente com a Unity. Adicionei um gerenciador de escopos para separar os componentes da aplicação durante o runtime. Também adicionei o Mirage como nossa solução de rede e recentemente sincronizei servidor e clientes no mesmo nível.
Mesmo tendo feito tudo isso, ainda há muito pouco código de gameplay. Estamos trabalhando bem devagar nisso. Estou acelerando o ritmo agora, e este blog deve me ajudar a chegar lá.

O Thomaz, por outro lado, está trabalhando no sistema de renderização de tiles. Ele criou um render feature capaz de renderizar milhões de tiles usando renderização instanciada. Estamos convertendo nosso tilemap, que é uma classe de dados em c# com referências a assets (para deixar o trabalho no editor bem fácil), em algo que a GPU consiga ler diretamente. Ele também criou uns custom shaders bacanas e um mesh provider especial que nos permite ter regras diferentes de seleção de mesh para cada tile! 

Vou escrever um post depois só para falar sobre as ferramentas e técnicas que estamos usando. Só a geração de mapa já dá para mais de um post.

Galeria

4 imagens