[Warpunk] Timelapse devlog (6 meses em 1 vídeo!)

Como dito anteriormente, nós pausamos o desenvolvimento do jogo Warpunk para voltarmos a trabalhar no jogo IMPUNES, pois tanto nós quanto outras pessoas estamos mais interessados nele.

Veja: Jogo IMPUNES: Voltando com tudo!

O Warpunk não foi cancelado, mas pausado por um tempo indeterminado.

Portanto eu compilei todos os 6 meses de trabalho em um vídeo de 23 minutos:

Como os outros compilados que eu fiz, geralmente são vídeos enviados no Discord (limite de 8 MB), por isso são de baixa qualidade. Mas isso pouco importa.

Eu gosto muito de fazer vídeos assim, pois é inspirador, não só para outras pessoas, mas também para mim, para ter uma visão melhor do progresso do projeto e desenvolvimento de jogos em geral.

Diferente do vídeo do Nibble: Pizza Delivery e Beetles Underground (eu recomendo assistir eles também!), neste eu quase não usei textos explicativos, pois é mais rápido de montar, e o vídeo fica menos cansativo de assistir.

A ideia inicial era que esse jogo seja feito em alguns meses, somente a base, como treino, e liberá-lo grátis como código aberto para qualquer um continuar e expandir. Mas começamos a gostar muito do resultado, e usamos vários assets pagos, portanto não há mais como.

Mesmo que o jogo morra, foi um grande aprendizado pra gente, e eu inclusive o usei como portfólio numa entrevista de emprego que eu desisti prestes a ser contratado (estava no mês 5 eu acho).

[Warpunk] Construção construindo (mês 6)

Antes tarde do que nunca: mais uma atualização sobre o progresso de desenvolvimento do nosso jogo, Warpunk!
warpunk-jogo-brasileiro-rts-2nibble-dev-7-3777076

Antes de tudo, vamos explicar esse “atraso”:
Eu (Junior_Djjr) sempre pensei neste jogo como algo rápido, a ideia inicial era que uma versão beta seja lançada no início de 2021, mas por fim estou trabalhando no jogo praticamente sozinho, e mesmo assim, eu também comecei a recriar a MixMods no WordPress, e eu, junto com parte da equipe 2nibble, estamos iniciando um e-commerce (ainda secreto) previsto para Dezembro, portanto tudo está muito corrido, criando o site, estudando o assunto, praticando e montando o estoque. Eu até mesmo voltei para a administração do GTA Brasil, trabalhei muitíssimo e parei de novo, e a nova versão da CLEO+ que ficou 6 vezes maior do que a atualização da CLEO 4. Então, é, esta “demora” não foi atoa, eu nunca de fato foquei em desenvolvimento de jogos.
E ainda, recentemente eu tive uma entrevista de emprego para o cargo de Especialista em Unity Engine numa empresa brasileira que trabalha ou já trabalhou com a Globo, Folha de São Paulo, Saraiva, AVON, Abril, Valor Econômico, Philips, Honda, Mercedes-Benz… O meu cargo seria para o desenvolvimento de aplicações para Microsoft Hololens através da Unity Engine. Eu estou esperando o resultado, mas seja qual for, farei uma postagem aqui sobre isto ter me inspirado a continuar — mesmo se eu não for aceito, o que é provável pois eu não tenho experiência de trabalho, só a oportunidade já me deixou feliz.
Inclusive, eu mostrei Warpunk e IMPUNES na entrevista, isto me obrigou a antes passar uma semana polindo o jogo (se bem que eu acabei mostrando rápido demais, nem chegou perto de alguma chance de bug), assim o Warpunk hoje está com excelente estabilidade, praticamente sem bugs conhecidos (mas ainda bastante prototipado). Eu também poli o nosso outro jogo guardado na gaveta, mas nem cheguei a mostrar (pois os 8 GB de RAM aqui não aguentava 3 Unity abertas ao mesmo tempo).
Vídeo gameplay #2
Como de costume, um vídeo do gameplay atualizado!
O que foi trabalhado?
Eu estou gostando de contabilizar o tempo gasto no jogo, pois este jogo é mais como uma prática e desafio pessoal. Não faço ideia de quantos dias trabalhei neste jogo desde a última publicação. Considerei 2 meses, acredito que estamos no mês 6. Mas com certeza passou das 15 mil linhas de código (lembrando que agora foquei em polimento).
Um dos meus focos nesse meio tempo foi no sistema de construção.
Embaixo do minimapa há botões que na versão final serão preenchidos com diferentes visualizações do mapa, e um deles, faz aparecer a grade no mapa todo, para você saber onde é possível ou não construir algo.
warpunk-jogo-brasileiro-rts-2nibble-dev-4-7420846
Enquanto posicionando a construção à ser construída, caso ela precise de uma fonte de energia e/ou recursos, e não há nenhuma próxima, piscará o ícone informando a falta.
Ainda pretendo mudar, pois pisca a cada 1 segundo e pode atrasar o jogador nesta decisão, colocarei “sub-ícones” nos cantos dos quadrados, assim sempre visíveis.
No momento o pipeline URP da Unity não suporta decals ou projectors, felizmente encontrei um ótimo shader do Kink3d para isto. É screen-space (ou seja, não é renderizado no mundo, mas sim na sua tela), consegui fazer parecer ser renderizado somente no chão simplesmente alterando a ordem de renderização. Gostei do resultado.
Inspirado em vários jogos RTS, como Earth2150, as luzes no chão são indicadores de recursos disponíveis à serem coletados (quanto maior e mais brilhante, mais recursos disponíveis, e abaixam com o uso). Somente a coleta de recursos consegue ser construída em cima destas luzes.
Tais campos de recursos são bases, mas, lembre-se, isto é um jogo open world, você não é obrigado a usar aquele campo de recursos para construir sua base lá, você pode procurar por outros campos espalhados pelo mapa para utilizá-los, construir sua base principal longe do campo etc. Não existe bases fixas (pelo menos não no modo normal), e a opção de mapa procedural faz com que você nunca saiba onde estão.
warpunk-jogo-brasileiro-rts-2nibble-dev-3-6872600
O progresso de construção usará uma sequência de modelos que trocam entre si.
Foi necessário usar o método mais simples possível, não há nem animações (além do crossfade com alpha dithering), pois somos uma equipe pequena (inclusive eu tive que modelar todas as construções sozinho, exceto a de pesquisa que o Vítor fez a base), então o jogo precisa ser simples para que seja fácil de expandir.
Também preferi o alpha dithering pois é genérico, diferente de um shader dissolve que é “mágico” demais para o estilo do jogo.
Outro detalhe é que o mesmo progresso de construção é usado para a “desconstrução” durante a demolição de uma construção/estrutura destruída, com a única diferença de que os objetos de materiais de construção são ignorados. Eu acredito que o resultado ficará excelente junto com efeitos especiais de fumaça e poeira.
warpunk-jogo-brasileiro-rts-2nibble-dev-11-1021528
Também recriei o efeito especial de chuva utilizando o VFX Graph, para que seja processado na GPU.
Como sempre, a direção da chuva é influenciada pela direção do vento (assim como fumaça e vegetação).

warpunk-jogo-brasileiro-rts-2nibble-dev-8-4320932
warpunk-jogo-brasileiro-rts-2nibble-dev-9-9405151
O tema deste cenário em específico é floresta tropical brasileira, portanto, faltava casas brasileiras lá.
Lembrando que o jogo se passa num cenário apocalíptico (não confundir com pós-apocalíptico), portanto tais casas estão abandonadas. São destrutíveis.
warpunk-jogo-brasileiro-rts-2nibble-dev-6-6088455
Para poder reutilizar sem a criação de novos modelos (na verdade, eu ainda irei, mas para evitar), eu fiz um shader que possibilita a pintura de até 4 cores. Baseado nas coordenadas no mapa, a textura base e todas as 4 cores (2 na parede, 1 na porta e 1 na janela) são trocadas aleatoriamente.
Para deixar ainda mais natural, por volta da casa será gerado, aleatoriamente, props. Na imagem acima há um poço. Ainda pretendo fazer mais coisas assim.
Lembrando que, devido a existência de um editor de mapa, não pretendo focar tanto no mapa procedural, o resultado já está bem legal.
warpunk-jogo-brasileiro-rts-2nibble-dev-5-7486510
Por parte do Meck, ele modelou a unidade de construção para a raça/civilização steampunk.
warpunk-jogo-brasileiro-rts-2nibble-dev-12-1764107

Nós tivemos a ideia de usar simplesmente um caminhão que carrega recursos. A quantidade de recursos será visível na caçamba (e o número ao selecionar, é claro).

O caminhão vai até o local de construção, levanta a caçamba para “descarregar” os recursos da caçamba e assim iniciar a construção. Isto bate com a ideia da construção continuar sendo construída sem a necessidade de uma unidade de construção lá, afinal, a unidade de construção é só um transportador de recursos, e iremos preservar a simplicidade de não adicionar pessoas: não há pessoas visíveis trabalhando lá, é construído automaticamente.
Podemos aproveitar isto para possibilitar levar recursos de um local ao outro.
No momento a ideia de gameplay é um coletor de recursos, e um distribuidor deles. O distribuidor distribui recursos para construções próximas, e a unidade de construção pode reabastecer ou entregar os recursos lá quando quiser. Se você tem múltiplas bases ou é aliado à outro jogador, você pode levar estes recursos para outro local, basta fabricar várias unidades de construção, abastecê-las e fazê-las levar os recursos para um outro distribuidor, o que deixa o gameplay ainda mais open world e dinâmico.
Também já discutimos muito a ideia de incluir um trem para o steampunk, que possa viajar para entregar recursos e unidades, sobre os métodos mais simples de implementar, vantagens e desvantagens para o gameplay… Ainda não sabemos se será incluído, mas se for, será mais futuramente. Mas ainda existirá um pequeno trem para a coleta dos recursos — é obrigatório que steampunk tenha algum trem!
Prévias 3D otimizadas
Não só curiosidade técnica, mas esta dica também pode servir para outros desenvolvedores de jogos.
Anteriormente, cada prévia do modelo 3D na interface do jogo era uma renderização de uma câmera. PÉSSIMO para a performance.
Eu pesquisei por soluções de otimização e nenhuma realmente solucionava o problema, que é, a cada prévia, era necessário abrir e fechar uma nova renderização de câmera, e mesmo basicamente sem conteúdo, só o processamento da câmera já causa esse impacto.
A solução que idealizei foi simples: renderiza tudo de uma só vez, e corta a imagem final para múltiplas imagens.
warpunk-jogo-brasileiro-rts-2nibble-dev-10-8526231
Nota: objetos iguais foram renderizados separadamente pois, por testes, internamente são considerados diferentes. Eu já fiz a otimização de reutilizar objetos iguais.
Para isto, basta usar uma câmera ortográfica (isto é, sem FOV) para que todo o conteúdo, não importa a posição que está na câmera, seja renderizado igualmente, assim, posso dividir a renderização da câmera em uma grade, posicionar cada objeto em cada posição, renderizar, e cortar a imagem final.
O único problema é que se um objeto ser grande demais, ele ocupa parte do espaço do objeto vizinho, mas basta deixar uma boa margem para que isto não ocorra, e ao cortar a grade, considere essa margem, para que não fique um espaço sobrando por volta da prévia.
Isto faz com que a prévia não seja perspectiva, mas, quem liga? Deu um toque especial ao design, pois a prévia perdeu o efeito de profundidade, e eu achei que isto combinou mais com o fato da prévia estar na interface, que é 2D.
A nova performance desse método ficou abaixo comparado com renderização de poucas prévias (2 ou 3), a vantagem é, você pode renderizar dezenas de prévias que a performance continuará essencialmente a mesma (é uma complexabilidade praticamente constante).
Mas você pode pensar “ok, mas agora além de renderizar uma câmera com resolução muito maior, ainda terá que pegar esta imagem final e cortar,o corte não causa impacto negativo na performance?”.
Sim, não considerei multi threading ainda, mas por enquanto, a solução foi separar toda essa tarefa em 2 frames: nos frames ímpares, a câmera é renderizada, e nos pares, é realizado o corte, sendo assim, com o jogo em 60 FPS, a prévia será de 30 FPS (quem se importa? É só um modelo 3D rodando, ele poderia ser até estático), e nos frames que não está renderizando, o jogo usa os recursos para cortar a imagem do frame anterior.
O processo de corte é leve e rápido, mas mesmo assim foi uma ótima ideia que liberou um pouco de recursos neste outro frame, pois eu posso usar os frames pares para separar outras tarefas do jogo e assim nivelar a performance novamente, pois no momento, esta decisão fez com que os frames ímpares fossem um pouco mais lentos do que os pares (e eu sei que isto é péssimo).
No momento somente as prévias de pesquisa estão com esse novo sistema implementado, eu ainda implementarei no resto.
PunkScript
Já é mais do que provado que, uma das melhores ferramentas de modding, é a possibilidade de adição de scripts externos à linguagem interna do jogo, por exemplo, CLEO para GTA.
Pensando nisto, estava mais do que óbvio que eu (Junior_Djjr) iria implementar algo assim nos jogos que eu crio!
warpunk-jogo-brasileiro-rts-2nibble-dev-1-9804204
Warpunk haverá uma linguagem de programação interna intitulada “PunkScript“, baseada em Lua, interpretada por MoonSharp.
Será programável no Visual Studio Code (concorrente do Notepad++) utilizando uma extensão, semelhante a como mods CLEO hoje são feitos para GTA III/VC/SA.
Se linguagens de programação extremamente simples, como Sanny Builder e gta3script através da CLEO do GTA, já possibilitam mods incríveis, imagine isto com suporte oficial e utilizando Lua como base!
Lua é uma das linguagens de programação mais utilizadas no mundo, mesmo para jogos, seja total (por exemplo, World of Warcraft) ou parcial.
Não só como ferramenta de modding, mas isto também simplifica o trabalho do próprio desenvolvimento do jogo, separando a linguagem principal (no nosso caso, o C#) para uma linguagem mais simplificada para os trabalhos mais simples. Literalmente todos os GTAs, desde o 1 ao 5, usam linguagem interna para programar as missões.  De Lua deve haver muitos, mas um exemplo que eu tenho em mente é Metal Gear Solid V, onde boa parte do trabalho do jogo é realizado em scripts Lua (inclusive missões?).
warpunk-jogo-brasileiro-rts-2nibble-dev-2-1963578
Ainda é um protótipo, mas muito provavelmente usaremos isto para programar o modo campanha singleplayer. Isto é, você poderá criar as suas próprias missões e modo campanha, ou baixar em forma de mod!
Não só Warpunk: Isto tudo pode ser tratado como uma versão alpha/beta de linguagens internas para os nossos próximos jogos. Se IMPUNES voltar, você pode ter certeza absoluta que também implementaremos isto nele.
Também utilizaremos para testes práticos de desenvolvimento direto na própria build. Sabe aqueles jogos que têm um console para digitar comandos? (comum em jogos da Valve) Isto, mas não só uma linha, de fato existirá uma maneira de digitar e rodar scripts inteiros, tudo in-game. Pode ser muito útil para testar gameplay no modo editor.
Lembrando que muitos jogos modernos, inclusive o nosso, basicamente não existe crash, caso algo errado ocorra o script simplesmente é interrompido com uma mensagem de erro minimamente compreensível, portanto os mods, mesmo que mal feitos, não irão destruir o seu gameplay. Ainda não tenho certeza se suportará modo de depuração.
Eu pensei em já implementar isto no NPD, mas seria no mínimo uma semana de trabalho (desconsiderando futuros suportes e atualizações, visto que é algo novo que ainda estou experimentando) pra um jogo que quase ninguém se interessa, então eu acho que não vale a pena.

Nos siga no FacebookTwitter para acompanhar o desenvolvimento deste e outros projetos.

[Warpunk] Primeiro vídeo gameplay (mês 4)

Há 1 mês atrás nós apresentamos um trailer que explica a pausa no IMPUNES e início de um novo jogo que estamos criando: Warpunk, um RTS (Real Time Strategy) multiplayer online que se passa num universo de ficções punk, sendo elas, steampunk, solarpunk e cyberpunk.
  
Eu (Junior_Djjr) deixei de trabalhar durante 20 dias para focar um pouco no GTA Brasil e outros projetos de GTA, e nos últimos dias voltei fazendo umas limpezas no Warpunk.
Agora, gravei um gameplay para vocês terem uma noção de como o jogo está, e será.
Como já foi mostrado no trailer, o jogo tem mais do que isto, mas vamos evitar encher linguiça.
Se deseja rever o trailer, está aqui um reupload do vídeo anterior, cortado com somente a parte do Warpunk, para melhor compartilhamento:
O vídeo acima é de 1 mês atrás.
O ciclo de tempo do gameplay foi acelerado por demonstração, obviamente o dia não passará tão rápido assim.
Como se pode ver no gameplay, com sons de pássaros que os brasileiros reconhecem, esta ambientação específica se passa no Brasil (quantos jogos RTS são ambientados no Brasil?), mas haverá também outras, como deserto e neve.
Agora estas construções já estão praticamente prontas, mas ainda queremos colocar detalhes adicionais para ficar mais “steampunk”. Também foram criadas por mim, mas a base do modelo do centro de pesquisa é do Vítor Kuhn. Também foi mostrado mais uma variação de corpo de tanque steampunk, do Meck, um corpo mais robusto, mais caro e com mais espaços para armas.
Obviamente, e como avisado no vídeo, as construções, como fábricas, serão construídas de outra forma, inclusive com animações de construção. O jogo ainda está no início.
warpunk-jogo-brasileiro-rts-2nibble-dev-6091390
Na parte da programação, já são quase 15 mil linhas de código, contando somente as finais, programadas por mim.
Imersão é algo muito importante, portanto nos últimos dias eu foquei principalmente nos sons ambiente, com sons de pássaros que funcionam semelhante ao GTA V, onde os sons são direcionais às árvores, mas que realmente exista um pássaro que saia voando dela, sendo vários diferentes pássaros, e de noite, grilos e corujas.
Não só pássaros, mas realmente todo o som ambiente do jogo já está programado, dia e noite, e alguns sons próprios. Por eu também ser produtor de música, me facilita trabalhar em sons próprios. Eu baixei em torno de 50 sons e misturei eles para criar o som de fabricação de unidades que combinam com o estilo steampunk (é sério, tem sons de cafeteira e coca cola ali).
 
Os efeitos especiais, como fumaças, estão sendo recriados para rodar na GPU em vez de CPU, que é muito mais otimizado, e por ser um RTS, facilmente haverá centenas de efeitos na tela durante as batalhas, então é uma otimização crucial. Inclusive rodam num sistema de pooling.
O sistema de vento é praticamente todo programado no jogo, quase nada da engine, principalmente para ser algo simples e otimizado, visto que é um detalhe cosmético pouco importante, mas caprichado, com variações de vento e influenciado pelo clima (o vento aumenta antes da chuva etc). Os shaders também são próprios.
Se passaram somente 4 meses e já temos um resultado muito interessante. Esperamos que em menos de 1 ano de desenvolvimento teremos uma versão alpha (ou “pré-alpha”) jogável, ou seja, no final de 2020 ou início de 2021. Antes, haverá um crowdfunding para financiar os custos de produção e licenciamento das músicas, com recompensas para os apoiadores.
Siga a 2nibble no Facebook para acompanhar o desenvolvimento deste e outros projetos:
E agora também estamos no Twitter! Ambas têm as mesmas publicações, para você que prefere o Twitter:
Em breve também abriremos um servidor no Discord.

IMPUNES continua pausado… E NOVO JOGO! (Trailer)


Introdução

Farias, que é o principal programador do IMPUNES, está sem tempo para ajudar, e visto que há somente 3 membros ativos, mesmo que eu (Junior_Djjr) saiba programar, desde o início eu estou encarregado da modelagem, e eu nunca programei um jogo completo, portanto eu prefiro que IMPUNES seja programado principalmente pelo Farias, que trabalha profissionalmente nisto, portanto ele faria algo melhor.

Nós da 2nibble temos 4 outras ideias de jogos, mas infelizmente somos uma só equipe, de atualmente só 3 pessoas (Junior_Djjr, Meck e Vítor Kuhn). Nós decidimos começar a focar numa dessas ideias.

Antes que você pense negativo, na verdade, um projeto paralelo nos vai ajudar muito com aprendizado e alguns sistemas podem ser reutilizados. Portanto o IMPUNES voltará muito mais forte do que antes!

IMPUNES está pausado há 2 anos (desde 2018; desconsiderando 3 meses usados em uma remasterização para a câmera baixa em terceira pessoa). Durante esse meio tempo, nós criamos o NPD e fizemos 2 protótipos de jogos ainda sem detalhes, um jogo mobile de corrida e um puzzle inspirado em Portal com mecânica inédita. Mas decidimos iniciar uma outra ideia, e começamos ela em Fevereiro deste ano.


Assista ao vídeo que mostra a situação atual do IMPUNES, explica de forma resumida, e mostra o gameplay do nosso novo jogo, também com explicações resumidas:
Novamente, este vídeo resume tudo, e com somente 4 minutos mostra muita coisa interessante sobre ambos os jogos.


Resumo


Warpunk
se trata de um jogo RTS (Real Time Strategy; estratégia em tempo real) multiplayer que se passa num universo de ficções punk.

jogo-warpunk-game-2nibble-indie-logo-preto-fundo-3954822

O jogo conta com 3 raças:


Steampunk

warpunk-steampunk-4559187
Tecnologias à vapor e metais. Inspirado na era vitoriana, mas inclui tecnologias como energia elétrica.


Solarpunk

warpunk-solarpunk-3712774
Tecnologias ecológicas e energia limpa.


Cyberpunk

warpunk-cyberpunk-9248965

Tecnologias de cibernética e muitos neons.

Cada uma pode lutar contra raças diferentes ou iguais.

Gameplay

O gameplay se resume em construir construções, gerar energia, coletar recursos, construir unidades de combate e realizar pesquisas para liberar upgrades, e finalmente, destruir todas as construções e/ou unidades dos inimigos. Semelhante à maioria dos jogos RTS, mas inspirado principalmente no Earth2150 e Age Of Empires.


No futuro haverá um modo campanha e singleplayer básico, mas no momento o foco é multiplayer.

O multiplayer funciona de cliente para cliente, ou seja, focado para você jogar com amigos utilizando a Steam. Mas provavelmente também haverá como hospedar salas públicas. Não haverá nenhum tipo de servidor nosso, nem rankings.

Mapa


O mapa é gerado proceduralmente, sendo assim, cada batalha é uma nova experiência.

Num modo de jogo comum, os jogadores aparecem em locais aleatórios, normalmente num mapa procedural, sendo assim, ninguém sabe exatamente onde o outro está, o que pode gerar uma jogatina cheia de surpresas.

O gameplay pelo mundo é modular, ou seja, não existe bases estáticas, você tem a liberdade de construir o que quiser em qualquer lugar, desde que você consiga coletar os recursos para conseguir construir, e tais recursos podem estar espalhados em diferentes locais do mapa. Em outras palavras, é um RTS de mundo aberto e procedural.

“Ah, mas um mapa gerado proceduralmente é só algo aleatório, não é natural e tático”, está certo meu caro questionador anônimo, mesmo que a geração procedural seja minimamente sofisticada, havendo até mesmo estradas com casas, há também um editor de mapa dentro do jogo.

Além de uma seed que pode ser compartilhada (como no Minecraft), você pode jogar mapas criados por você ou pela comunidade, utilizando um editor de terreno e objetos que roda dentro do jogo, e você pode editar os mapas gerados para deixá-los melhores.

Sonoplastia

Temos noção da importância de uma boa trilha sonora. Cada civilização terá suas próprias músicas de fundo durante o gameplay. Provavelmente vozes informativas em português e inglês (queremos contratar profissionais para isto; se você tem microfone profissional, nos contate), e estamos prestes a gastar em torno de 700 reais com licenciamento de músicas.

Especulações finais

Quando concluído — o nosso objetivo é uma versão alpha ainda em 2020 — será vendido na Steam com um preço que pode variar em torno de 10 reais. O preço pode aumentar ou abaixar conforme a qualidade do trabalho final.

Depois do gameplay multiplayer totalmente funcional, pretendemos algum modo campanha básico.
Não temos certeza sobre a criação de ferramentas de suporte à mods, pois não é tão prático e útil em jogos focados em multiplayer competitivo.

Progresso atual

Eu (Junior_Djjr) estive trabalhando neste jogo quase todos os dias durante 3 meses (desde Fevereiro de 2020).
É o primeiro jogo que eu estou realmente programando (Nibble: Pizza Delivery foi programado pelo Farias).
Até o momento eu já programei 19 mil linhas de código (se considerar a programação de ferramentas, testes, códigos deletados, recriados etc acredito que é em torno de 25 mil).

Já foi criado:

Gerador de mapa procedural

A base do funcionamento está feita, mas ainda há muito pela frente.
Ainda tem muito o que melhorar para ficar algo realmente natural e complexo, mas não vamos focar tanto nisto pois provavelmente será mais comum pessoas usarem mapas criados manualmente. De qualquer modo, a geração procedural é útil para gerar um mapa inicial para em seguida fazer edição manual.
warpunk-jogo-brasileiro-rts-2nibble-dev-10-8268356
Utiliza uma mistura de diferentes gradient noises, como o ridged multifractal noise (muito usado nas montanhas e praias) e simplex noise (para criar detalhes finos, como imperfeições).
E a água não é um plano gigante embaixo do solo, são tiles que só são visíveis conforme um algorítimo. E há também um outro algorítimo que evita a geração de águas ou ilhas pequenas demais (um problema comum em mapas procedurais).
Aproveitando, se você é programador Unity, eu agradeço qualquer ajuda na programação de uma geração de mesh baseada nas laterais do terreno, para assim, em vez de tiles, gerar uma mesh de água.
Mesmo que este mapa procedural não seja algo tão sofisticado, eu estou começando a ficar feliz com o resultado, está ficando ótimo para os padrões de um RTS.
warpunk-jogo-brasileiro-rts-2nibble-dev-16-7288596
A geração inclusive cria estradas de terra com casas. Mesmo que as estradas não sejam realmente úteis como um caminho, gerou uma boa imersão, deixando o cenário mais complexo.

Editor de mapa
Além de mapas aleatórios, Warpunk tem um editor de mapa implementado dentro do jogo.

Ainda é um protótipo, mas com base funcional. Ainda não há interface, salvamento/carregamento de mapas, nem editor de objetos.
warpunk-jogo-brasileiro-rts-2nibble-dev-9-3570166
O importante é, não é só uma edição de terreno com texturas automáticas, você pode pintar o terreno com brush de diferentes texturas, e não estou falando de um círculo, é de fato um brush, que utiliza imagem, como editores de imagem, como Photoshop.
Tudo foi muito difícil de conseguir, e eu estou muito feliz que eu tenha conseguido, pois eu vejo a edição de mapa como um ponto crucial para este jogo.
Estilos de ambiente
Não haverá só este ambiente de floresta tropical (que inclusive é inspirada no Brasil), mas também uma floresta fria (de pinheiros), deserto de areia, e neve.
warpunk-jogo-brasileiro-rts-2nibble-dev-12-1119952
Cada um com suas texturas, vegetação, props entre outras características.
Por exemplo, armas que causam efeito de calor serão menos potentes em ambiente de neve. Floresta tropical chove muito, e isto diminui a intensidade do sol, fazendo com que a energia solar do Solarpunk seja menos aproveitada (ideias futuras).
No momento, todos os props e a vegetação está sendo modelada pelo Meck utilizando Blender, com um estilo que é otimizado para câmera alta, tanto visualmente quanto no desempenho gráfico.
Construções
O jogo haverá diferentes fábricas, geração de energia, coleta de recursos etc para cada civilização, inclusive utilizando diferentes mecânicas. As construções estão sendo modeladas por mim, Meck e Vítor Kuhn, sendo que o trabalho de finalização e otimização fica por conta do Meck.
Ainda há somente 2 construções não finalizadas, que é a geração de energia e fabricação de unidades do Steampunk, criadas para ter uma ideia de estilo das construções futuras. Se nota que nem há janelas ainda, faltam muitos detalhes e melhorias, mas já dá para ter noção.
Perceba também que o jogo é semi-baseado em grade. As unidades andam livremente, mas a parte da construção funciona por uma grade.
A parte que realmente constrói as construções ainda não foi feita, mas basicamente funcionará levando uma unidade construtora até o local, e assim iniciará uma animação de construção.
Interface
Obviamente a interface do jogo não será como o mostrado atualmente, mas já dá para ter uma noção do layout.
warpunk-jogo-brasileiro-rts-2nibble-dev-14-2954838
A interface ainda será minimamente estilizada e com botões melhor imaginados.

Movimentação de unidades
Para total desempenho de centenas de unidades, o jogo não utiliza física. A movimentação é simples, mas eficaz, utilizando A* Pathfinding como base, que usa vários núcleos do processador para encontrar o caminho mais curto para cada unidade (pode usar todos, mas notei que acima de 4 núcleos não é benéfico, pelo menos para o i5 9600KF (6 núcleos) que tenho hoje).
Um detalhe interessante é que, por árvores atrapalharem demais a locomoção pelo mapa, elas são derrubáveis ao passar por elas, mas as unidades não simplesmente passam nas árvores como se fossem nada, a inteligência artificial calcula se vale ou não a pena derrubar a árvore, ou desviar dela. Por exemplo, se o desvio for grande demais, a unidade prefere derrubar as árvores.
Pouco ainda foi trabalhado. Provavelmente haverá diferentes modos de formação de esquadrão, e “gravar” e “tocar” sequências de comandos.

Seleção, múltiplas seleções
A experiência de usuário é muito importante num jogo RTS, e pensando nisto, estou dando prioridade à maneira que o jogador seleciona múltiplas unidades e construções do jogo.
Múltipla seleção de unidade é básico, mas em vários jogos RTS não sofisticados não é possível selecionar e editar múltiplas construções ao mesmo tempo, como fábricas, e Warpunk é uma exceção. Mesmo que você selecione construções de diferentes tipos, o jogo lhe dará todos os botões de todas as construções que você selecionou, para comandar várias ao mesmo tempo. Isto é muito útil para desligar todas ao mesmo tempo, dar os mesmos comandos para diferentes fábricas, centros de pesquisas etc.

Montagem de unidade
Até o momento, o sistema mais complexo do jogo (mais de 1 semana pra ser criado).

warpunk-jogo-brasileiro-rts-2nibble-dev-6-6362005
Funciona como um sistema de “tuning” de carros. Você escolhe o corpo, e em seguida há slots (espaços) de ataque e defesa para você clicar, e assim selecionar a arma (ou blindagem, ou campo de força, qualquer coisa). A UX foi organizada pensando em ações rápidas, e todas as informações visíveis para o jogador à todo o momento.
Cada corpo, cada arma, cada upgrade, tem um custo e tempo de produção, e é claro, dano, alcance, vida etc.
Em vez de ícones e texto, tudo funciona como visualização do modelo 3D rotacionando na tela em forma de prévia, e lá você visualiza a prévia da sua unidade final com todos os upgrades instalados e suas estatísticas, custo, tempo de produção, tipo de locomoção etc.
Você pode nomear as suas unidades construídas, e os outros jogadores poderão ver o nome que você deu (um pequeno detalhe que pode gerar umas zoeiras).
Caso você não dar o nome, o próprio jogo gerará um nome para você com base no nome do corpo, e utilizando um extenso dicionário de palavras relacionadas com aquela raça. Por exemplo na Steampunk há palavras como “Victorian”, “Inventor” e “Furnace”; Solarpunk há “Heartwood”, “Salmonberry” e “Symbiosis”; Cyberpunk há “Computeritis”, “Nano” e “Orwellian”.
Não só isto, a geração de nome também considera o tipo de locomoção, por exemplo na água, Steampunk pode selecionar “Whale”; Solarpunk “Chordata”; Cyberpunk “Bait” etc. E o mesmo vale para o ar, e veículos anfíbios (por exemplo, “Frog”). Cada dicionário há em torno de 70 à 100 palavras. Mesmo que não seja algo espetacular, eu gostei da ideia, é muito melhor do que utilizar números.
warpunk-jogo-brasileiro-rts-2nibble-dev-13-1452057
Por fim, as unidades salvas ficam numa lista de fabricação (compartilhada entre todas as fábricas da sua base, desde que sejam do mesmo tipo de locomoção). E você pode clicar num botão do lado da prévia para reabrir a interface, e assim editar a sua unidade já criada com novos upgrades que você liberou.
Cancelar uma unidade atualmente sendo fabricada, gera um processo de “reciclagem” até que a nova unidade se inicie. Durante a reciclagem, os recursos gastos voltam (mas não 100%). Haverá também um centro de reciclagem para você reciclar unidades já fabricadas.
Você pode, com certeza, montar uma lista ordenada de quais unidades são construídas, inclusive quantas de cada uma. O sistema é idêntico ao Earth2150, isto é, a ordem que você clica em cada unidade, será a ordem de execução, e clicar mais de uma vez em uma, criará uma lista de execução, e será mostrado um número e uma barra de progresso da fabricação atual, e total (contanto todas as repetições).
Você pode perceber que a interface não mostra algumas informações importantes, não se preocupe, ainda há muito pela frente, muita coisa ainda será feita.

Árvore de upgrades, pesquisa
Outra coisa que me rendeu 1 semana de trabalho (na verdade, eu esperava mais).

warpunk-jogo-brasileiro-rts-2nibble-dev-7-3354326
Como todo bom RTS, você tem uma árvore para liberar upgrades, normalmente peças, como armas cada vez melhores, e é claro, para ter bons upgrades, você começa do começo.
Você clica em algum upgrade, e o jogo gera uma linha de execução até aquele upgrade, assim, cada upgrade é “pesquisado” utilizando recursos coletados, e tempo. Cada upgrade liberado, aparece na interface de montagem de unidade.
Uma mecânica interessante, é que você pode sim ter mais de uma central de pesquisa trabalhando junto, e você pode sim liberar um upgrade mais rapidamente quando duas centrais de pesquisa trabalham na mesma coisa, no entanto, a cada central de pesquisa adicional, o custo de produção aumenta e o tempo de produção não cai pela metade. As porcentagens ainda não foram escolhidas pois isto é algo a ser decidido durante os testes de balanço de gameplay.
Assim como a fabricação das unidades, há também a reciclagem, que retorna gradualmente os gastos atuais caso você a cancela.
Do lado do técnico, eu montei o sistema da lista de upgrades utilizando uma visualização gráfica com nodes (nós). Isto é facilita muito a organização das ordens e configuração de propriedades de cada upgrade, o que é importante no momento de configurar o balanço do gameplay.
Pássaros
O jogo inclui pássaros procedurais que viajam em bandos pelo mapa, e podem pousar em locais determinados (por exemplo nas construções que você constrói).
warpunk-jogo-brasileiro-rts-2nibble-dev-3-2236865
warpunk-jogo-brasileiro-rts-2nibble-dev-11-3980724
Neste caso eu não programei o sistema, foi comprado pronto (40 reais muito bem gastos). Meck ainda modelará mais variações de pássaros.
O ambiente de estilo tropical é baseado no Brasil, portanto haverá pássaros brasileiros nele com seus próprios áudios.
Estamos pensando em adicionar outros animais selvagens decorativos, mas não é prioridade.

Ciclo de dia e noite, climas
Foi criado todo o sistema de relógio e calendário, e por fim, o ciclo de dias e noites do jogo, inclusive climas.
warpunk-jogo-brasileiro-rts-2nibble-dev-4-1538161
— na imagem acima as construções estão com texturas provisórias, portanto não há janelas ainda —
O sistema é modular e preciso. É possível inclusive avançar anos simplesmente enviando um valor de horas.
E é claro, para uma boa imersão, há climas, como chuva e névoa.
Eu estou muito feliz com o resultado da chuva. Eu utilizei efeitos especiais criados pelo Digital Ruby, o mesmo criador do sistema de nuvens volumétricas do IMPUNES.
warpunk-jogo-brasileiro-rts-2nibble-dev-15-6235238
Eu criei transições graduais naturais para a chuva, que pode chover mais, menos, há tempos nublados, as nuvens se formam gradualmente fechando o céu, alteração de vento que inclusive altera a maneira que as fumaças e vegetação do jogo age (no vídeo o tronco das árvores estão sendo impactados pelo vento; já foi corrigido com vertex color), e por fim, o chão se molha, e continua molhado, sendo seco gradualmente baseado na intensidade atual do Sol, além da chuva limpar unidades sujas, e chão molhado sujar mais quando a unidade anda.
Há também o clima de névoa, que tem mais chances de ser iniciado em manhãs, e em breve vou usar a chuva como base para criar a neve caindo. Também falta raios, que, mesmo com a câmera não mostrando o céu, ainda será necessário criá-los pois são visíveis no reflexo da água.

Shaders próprios
Este jogo está longe de ser um “asset pack”, mesmo os shaders foram criados por nós.
Eu (Junior_Djjr) criei um shader de água para suprimir somente as necessidades do jogo — afinal, não precisamos de uma água sofisticada com vertex displacement etc. Deste modo, mesmo bonita, a água tem um excelente desempenho gráfico.

warpunk-jogo-brasileiro-rts-2nibble-dev-8-6709215
O reflexo da água é em tempo real. Eu utilizei um script que gera um cubemap “assíncrono falso”, isto é, cada frame captura um lado do ambiente ao redor da câmera e aquele lado é jogado para o reflexo, e este mesmo reflexo é utilizado em literalmente todos os reflexos do jogo, sendo assim, devido ao jogo ser baseado em PBR, numa só captura de reflexos é possível ter não só os reflexos, mas em geral uma iluminação que combina com o ambiente ao redor. O desempenho ficou muito bom, ocupando somente 0,8 milissegundos de processamento em uma cena básica numa GTX 1050 2 GB.
Unidades e construções utilizam um shader que, além de detalhes pintáveis para diferenciar jogadores, suporta acumulação de neve realista adicionada somente na parte de cima do objeto. A mesma acumulação de neve será usada para todos os props do jogo em cenários de neve. E é claro, a acumulação é gradual.
warpunk-jogo-brasileiro-rts-2nibble-dev-1-8046510
Nos cenários de terra, quando a unidade anda, é acumulado uma leve poeira no corpo e muita terra/lama nas rodas (como as lagartas dos tanques). Ao chover, a sujeira é limpa, e devido ao chão ficar molhado (com lama), ao andar irá sujar mais do que quando o clima está seco, assim como na vida real.
Mas o real destaque está no shader de texturas stochastic procedurais, que soluciona completamente a repetição de texturas.
Se trata de uma adaptação do rotoscope baseado no paper de Thomas Deliot e Eric Heitz, e por fim implementada por mim (Junior_Djjr) no shader de terreno da Unity com Universal Render Pipeline.
Assim, o terreno do Warpunk não terá tiling com efeito de repetição de textura, como é visto de costume em vários jogos.
warpunk-game-procedural-stochastic-terrain-shader-texturing-unity-urp-7049569
O resultado me deixou de boca aberta, não há nenhuma repetição notável, nem corte de interseção, e eu não notei nenhuma queda de desempenho do jogo. Mesmo assim, nós podemos simplesmente dar a opção de desativar isto. É basicamente uma mistura procedural de um UV mapping triangular baseado numa textura já existente, ou seja, melhor desempenho do que materiais procedurais do Substance.
Nós usaremos isto também para algumas texturas do IMPUNES, como gramas.
Você também quer isto em seu jogo? Liberamos gratuitamente no Github.


Curta a página da 2nibble no Facebook para acompanhar o desenvolvimento deste e outros projetos:
Nós contamos com vocês num futuro crowdfunding (financiamento coletivo) para cobrir custos de produção e licenciamento de músicas, e é claro, você receberá prêmios por isto. Faremos dentro de alguns meses.
Diferente do IMPUNES, que está em fase de prototipagem, nós já estamos incentivando que você divulgue o Warpunk, e podemos fazer futuras parcerias com isto. Caso dúvidas, nos contate na página do Facebook. Há também um tópico no Fórum MixMods para discussões.