Fazemos o motor, o renderizador, as ferramentas, o anti‑cheat e o jogo.
Oito anos construindo uma camada de cada vez, de baixo para cima. Nenhuma delas é alugada, nenhuma é caixa-preta: cada uma abre na nossa máquina, num arquivo que a gente escreveu.
- Motor
- UnderWar Engine
- Gráficos
- UnderRender
- Proteção
- UnderProtection
- Ferramenta
- UnderStudio
- Jogo
- Dread Thicket
A stack
Tecnologia nossa, de ponta a ponta
Não é um motor licenciado com plugins em cima. É uma pilha de tecnologias que se conhecem, escritas aqui, versionadas aqui, corrigidas aqui — e todas moram dentro do mesmo executável.
-
├──
UnderWar Engine — o motor: mundo, física, som, rede, console
-
├──
UnderRenderNOVO — o runtime gráfico sobre DirectX 9
-
├──
UnderProtection — o anti-cheat, das seis camadas ao painel de revisão
-
└──
UnderTools — empacotador, launcher, esteira de personagem, localização
E o que sai disso: Dread Thicket — o survival que roda em cima das quatro, e que testa cada uma com gente de verdade dentro.
O estúdio
Desde 2018 no mesmo projeto, construindo camada por camada
São oito anos empilhando: primeiro o que fazia o jogo rodar, depois o que fazia ele ser jogável por outra pessoa, depois o que o mantinha de pé com gente dentro. Nessa ordem, porque não dá pra pular etapa — um gerador de mapa não serve de nada antes de existir um editor que abra o mapa gerado.
Estúdio pequeno não costuma ter essa opção. O caminho normal é licenciar um motor, aceitar as decisões de outra pessoa e esperar pela próxima versão quando algo não serve. Fomos pelo outro lado, e isso tem um preço: ferramenta que vem de graça em motor comercial, aqui a gente escreve. Nós escrevemos.
O retorno é que nada do nosso jogo é caixa-preta. Quando alguma coisa está errada, existe sempre um arquivo pra abrir — e não é um arquivo qualquer: é um que passou pela nossa mão.
- O anti-cheat inteiro, do zeroNão integramos detecção de ninguém. As seis camadas — agente no cliente, cérebro nativo, autoridade no servidor, telemetria, análise em lote e revisão humana — são projeto e código nossos.
- O runtime gráficoUnderRender: a camada que desenha, separada do resto do cliente. Compatibilidade com o pipeline DirectX 9 que já existe de um lado, pipeline moderno do outro.
- A interface do jogo, tela por telaSistema próprio de componentes, telas descritas em arquivo de dados, editor visual nosso e recarga a quente — mexer numa tela não exige recompilar nada.
- O gerador de mundoRelevo com erosão, rede de rios, malha de ruas, quarteirões, lotes, construções e vegetação. Cada etapa é um algoritmo que a gente escreveu e que roda dentro do motor, não um script por fora.
- As ferramentas de autoriaEditor de níveis, de física, de partículas, de personagem, de interface e o painel do anti-cheat — todos dentro do mesmo executável que roda o jogo.
- A esteira de personagemDo FBX ao personagem em pé no jogo, com esqueleto, pele e textura convertidos pela nossa ferramenta, sem depender de nenhum programa de terceiro no caminho.
- O backend e o meio de pagamentoDa autenticação ao fluxo de compra que roda hoje, incluindo a carteira do jogador, o histórico de transações e o webhook que confirma o pagamento.
- O launcher e a distribuiçãoInstala, atualiza e verifica o jogo por conta própria, baixando só o pedaço que mudou; a versão sobe a cada build.
O estúdio e uma das nossas ferramentas têm o mesmo nome. Não é descuido — a ferramenta é o estúdio. É nela que o jogo é construído, testado e jogado.
As tecnologias
O que construímos
Cinco nomes, e cada um depende do anterior na ordem em que aparecem.
UnderWar Engine
O motor
Mundo, física, som, rede e sistema de console. É a camada que não aparece pra ninguém e que decide tudo: quantos objetos cabem numa cena, quanto tempo leva pra carregar um mapa, se um tiro registra.
Mantido por nós, o que significa que otimização não é pedido de recurso para um fornecedor — é uma tarde de trabalho no arquivo certo.
A pilha inteira, e os dezoito subsistemas com o arquivo em que cada um mora, estão na seção do motor.
UnderRender
O runtime gráfico · novo
Advanced Graphics Runtime for DirectX 9. A camada que desenha, isolada do resto do cliente e tratada como tecnologia independente: o jogo pede a cena, o UnderRender decide como ela vira imagem.
O desenho tem dois lados. De um, a compatibilidade: todo o pipeline DirectX 9 que já existe continua rodando, sem que a lógica do jogo saiba que alguma coisa mudou. Do outro, o pipeline moderno, que é onde a imagem melhora.
Detalhes e o diagrama completo na seção do UnderRender.
UnderStudio
A ferramenta
Um único executável que é o jogo e a oficina ao mesmo tempo — o mesmo binário que o jogador roda é o que abre o editor. Nada de exportar para testar: aperta uma tecla e o mapa que você está editando vira partida.
É também onde vive o gerador de mundo. Ele começa no relevo — erosão e rede de rios — e vai subindo: malha de ruas, quarteirões, lotes, construções, vestimenta de rua e vegetação. Um mapa nasce de uma semente e só vira nível jogável depois de passar por uma bateria de validação.
- Editor de níveis com painéis fixos, gizmo e histórico de desfazer por tipo de ação
- Editor de partículas, de física, de personagem e de interface
- Painel do anti-cheat, com fila de suspeitos e revisão manual
- Configuração do jogo e dos servidores por interface, sem editar arquivo
- Empacotamento, validação e extração dos arquivos de distribuição
- Tradução do jogo inteiro, com detecção do que ainda falta traduzir
O que há dentro de cada uma dessas frentes está na seção da ferramenta.
UnderProtection
O anti-cheat
Construído por necessidade e mantido por princípio: os dois fornecedores de proteção em que esse tipo de jogo se apoiava simplesmente deixaram de existir, e com eles foi embora toda a detecção. Em vez de trocar por um terceiro e ficar exposto à mesma coisa de novo, escrevemos o nosso.
Hoje não integramos detecção de ninguém — nem uma DLL de terceiro, nem um serviço externo, nem uma assinatura que a gente não possa ler. Quem controla a detecção controla o jogo.
São seis camadas, do agente no cliente até a pessoa que decide. Estão abertas uma a uma na seção do anti-cheat.
Dread Thicket
O jogo
Survival de mundo aberto com PvP e perda do que você carrega quando morre. É pra ele que as quatro camadas acima existem, e é ele que prova cada uma delas — com servidor no ar, gente dentro e alguém tentando trapacear.
UnderWar Engine
O motor, aberto inteiro
Não licenciamos motor. O nosso compila aqui, numa máquina nossa, com a fonte inteira na mesa — e é por isso que todo número desta seção pôde ser contado, e não estimado.
A pilha, de cima para baixo
UnderStudio.exe — o jogo e os editores
Um binário só. O mesmo executável que o jogador roda é o que abre o editor de níveis, o de partículas, o de personagem, o de interface e o painel do anti-cheat.
GameEngine — a cola entre cliente e servidor
Objetos de mundo, inteligência artificial, terreno, física e som vivem aqui e são compilados dentro dos dois lados. É o que garante que servidor e cliente enxerguem o mesmo mundo — a base de qualquer anti-cheat autoritativo.
UnderWar Engine — o motor
Renderizador, sistema de arquivos empacotado, console e variáveis, partículas, animação, rede, tarefas em segundo plano, memória e profiling. Nada disso aparece para o jogador, e tudo decide o que ele sente.
External — 22 SDKs, e a lição que veio deles
Física, som, rede e navegação vêm de bibliotecas conhecidas, versionadas junto do projeto. Dois desses fornecedores deixaram de existir no meio do caminho — foi exatamente isso que nos ensinou a escrever o resto.
Os subsistemas, e onde cada um mora
Renderizador
Direct3D 9 com 281 shaders, materiais, fontes e pós-processamento. É o coração do motor — e a razão de o UnderRender existir.
Terreno
Grade de altura em megatextura, partida em blocos, com camadas de pintura, LOD e colisão própria.
Vegetação e rocha
Coleções em quadtree: dezenas de milhares de instâncias com física criada no carregamento, não uma a uma.
Iluminação
Luzes dinâmicas, sondas de luz, cubemap e mapa de ambiente gerado a partir de qualquer ponto da cena.
Água
Um plano d’água por corpo, com altura, cor, atenuação e ondas pré-geradas por FFT fora do jogo.
Partículas
Emissores com curvas Bézier e gradiente por tempo, editáveis ao vivo com pausa, passo e câmera lenta.
Animação e pele
Esqueleto, pele e pilha de animações com influência por camada — e o diagnóstico visível dentro do editor.
Física
Colisão cozinhada por malha, heightfield do terreno, ragdoll, gatilhos e casca simplificada para o jogador.
Som
Eventos 3D com raio mínimo e máximo, volume por fonte e ambiente definido por nível.
Rede
UDP autoritativo, com servidor mestre, supervisor e servidores de partida abertos sob demanda.
Navegação
Malha de navegação e regiões convexas geradas dentro do próprio editor, com nome e visualização.
Sistema de arquivos
Pacote comprimido com verificação por CRC, reconstrução, medida de desperdício e extração — e, em desenvolvimento, arquivo solto vence o pacote.
Console e variáveis
Cada variável é registrada com tipo, faixa e callback. É esse metadado que permite configurar o jogo por interface em vez de arquivo.
Recarga a quente
Textura, shader, malha, animação e configuração recarregam sozinhas quando o arquivo muda no disco, com aviso na tela.
Tarefas em segundo plano
Fila de trabalho para carregar, cozinhar e gerar sem travar a janela do editor.
Memória e orçamento
Alocador de arena próprio, medidor de orçamento por categoria e limites gravados por nível.
Entrada e plataforma
Teclado, mouse e os oito botões remapeáveis, janela sem borda e a camada de sistema que segura tudo isso no Windows.
Profiling e queda
Profiler com exportação em arquivo, pilha de chamadas, minidump nativo e leitura do hardware da máquina.
UnderRender
Advanced Graphics Runtime for DirectX 9
Um runtime gráfico de alto desempenho, feito para estender uma aplicação DirectX 9 com técnicas de renderização modernas sem quebrar o pipeline que já existe.
Motor antigo tem um problema conhecido: o código que desenha está espalhado por todo o jogo. Mexer na imagem vira mexer no jogo inteiro, e por isso ninguém mexe. O UnderRender existe para desfazer isso — toda chamada de desenho passa a atravessar uma camada nossa, e a partir daí a imagem é um assunto separado da lógica.
A camada de compatibilidade já está compilada dentro do motor. Ela é o alicerce: enquanto ela responde exatamente como o DirectX 9 respondia, o jogo continua igual — e o pipeline moderno pode crescer atrás dela sem risco.
D3D9 Compatibility
A prova de sucesso é a imagem não mudar. Cada chamada de desenho do jogo atravessa a camada e sai idêntica — mesma cena, mesmo pixel. É o que permite trocar o que está embaixo sem que nada em cima perceba.
- Camada única de desenho
- Imagem dourada
- Regressão por comparação
- Sem tocar na lógica do jogo
Enhanced Pipeline
É aqui que a imagem melhora. Iluminação, sombra, pós-processamento e escala de resolução, cada um ligável por nível de qualidade — do computador antigo do jogador ao nosso.
- HDR
- PBR
- Fog
- LOD
- SSAO
- Shadows
- Tonemap
- Lighting
- Bloom
- SSR
- AA
- Upscale
Por que isso é uma tecnologia, e não uma opção de menu: quando a camada gráfica é sua, a decisão de qualidade deixa de ser "o que o motor licenciado permite" e passa a ser "o que a gente escreve". Um efeito novo é um arquivo novo, não uma solicitação a um fornecedor.
UnderProtection
Seis camadas, e a última é uma pessoa
Nenhuma delas é comprada, licenciada ou integrada. As seis são projeto e código nossos, e mudam no dia em que precisam mudar.
-
01
Agente no cliente
Compilado dentro do próprio executável, sem uma única DLL: confere a assinatura do binário, procura depurador acoplado e varre a memória atrás de módulo injetado — por conta própria e quando o servidor manda escanear.
-
02
Cérebro nativo, no lugar do fornecedor
O serviço de detecção que esse tipo de jogo usava não existe mais, e as bibliotecas dele são inobteníveis. Em vez de aceitar a proteção morta, reescrevemos o cérebro com a mesma interface e ligado estático no executável. O desafio sai do servidor, a resposta vem do agente, o veredito é nosso.
-
03
Autoridade no servidor
Onde o jogador não alcança. Cada partida é validada contra dezenas de tipos de trapaça — vida infinita, voo, velocidade, tiro através de parede, arma adulterada, distância impossível, cadência, item aparecido do nada, receita forjada, inventário, recarga, veículo — em quase duzentos pontos de verificação.
-
04
Telemetria própria, por partida
Cada partida grava quem entrou, quem matou quem, a que distância, em quanto tempo e com quantos tiros na cabeça. É banco nosso, formato nosso — e substituiu por completo o serviço de telemetria que desapareceu.
-
05
Análise em lote
Fora da partida, o histórico é cruzado à procura de padrão que um humano não veria em tempo real. O que a análise produz não é punição: é uma fila de suspeitos. E, quando é o caso, o servidor ainda pede uma captura de tela ao cliente na hora.
-
06
Revisão humana, dentro da ferramenta
A fila abre num painel do próprio UnderStudio, com as ocorrências e o que cada uma significa. O veredito final é sempre de uma pessoa — a máquina aponta, ninguém aqui é banido por um número sozinho.
UnderStudio por dentro
Um executável, a oficina inteira
O jogo abre num hub. Dali sai tudo: o jogo em si, os editores e as ferramentas que mantêm a operação de pé — inclusive as que não têm nada a ver com editar mapa.
-
Editor de níveis
Painéis fixos, no lugar de modos
Hierarquia à esquerda, inspetor à direita, console embaixo — sempre visíveis. Objeto selecionado no mundo acende na lista, e vice-versa. O layout é salvo e volta na próxima sessão.
-
Editor de níveis
Desfazer que alcança tudo
Trinta e cinco tipos de ação no histórico, do terreno esculpido ao objeto colado. Salvamento atômico com cópia de segurança, autosave e restauração — trabalho perdido é bug, não fatalidade.
-
Editor de níveis
Achar em vez de decorar
Busca global, paleta de comandos por atalho, atalhos remapeáveis por clique, minimapa clicável que voa até o ponto e um validador que lista o que está errado no mapa — cada linha leva você até o objeto.
-
Geração de mundo
Um mapa a partir de uma semente
Relevo, rede de rios e lagos, assentamentos, malha de ruas, quarteirões, lotes, construções, vestimenta de rua, vegetação, som e regiões de jogo. Sete etapas encadeadas, todas dentro do motor.
-
Geração de mundo
Régua, não opinião
Todo mapa gerado passa por um portão que mede altura, declividade, água, densidade e acessibilidade — e compara com um mapa de referência. Se não passa, não vira nível.
-
Interface
Editor visual das telas do jogo
Cada tela é um arquivo de dados, montado num editor dentro do Studio e recarregado a quente. Vinte telas próprias já vivem assim — do menu ao HUD, da loja à carteira.
-
Personagem e animação
Do FBX ao jogo
Malha, esqueleto, pele e textura convertidos pela nossa esteira, sem programa de terceiro no caminho. O editor de personagem monta o boneco, troca equipamento e mostra as três câmeras do jogo.
-
Operação
Anti-cheat e servidores por interface
Painel do anti-cheat com ocorrências e fila de suspeitos, configuração dos servidores sem editar arquivo, empacotamento e verificação da distribuição — a operação inteira mora na mesma janela.
-
Idiomas
Português por padrão
Todo texto do jogo passa pelo sistema de idiomas desde a primeira linha, em sete pacotes. A ferramenta mostra o que ainda falta traduzir, em vez de deixar aparecer errado na cara do jogador.
Como trabalhamos
Seis regras que a gente não afrouxa
Custaram tempo pra serem aprendidas e economizam muito mais do que custaram.
-
Não terceirizar o que pode desaparecer
Serviço externo que some leva a funcionalidade junto. Já aconteceu conosco — duas vezes, no anti-cheat — e é por isso que a proteção, a interface e a telemetria são nossas.
-
Ler no código, nunca deduzir pelo nome
O papel de um arquivo se lê onde ele é carregado e usado; pasta, extensão e convenção de nome são pista, não verdade. Se a fonte contradiz o palpite, a fonte ganha. Temos a fonte inteira justamente pra isso.
-
Medir antes de afirmar
Número que aparece nos nossos documentos foi contado, não estimado. Antes e depois de cada mudança, com a mesma régua e o mesmo conteúdo dos dois lados.
-
Português por padrão
A língua de fábrica do jogo é português do Brasil, e todo texto passa pelo sistema de idiomas desde a primeira linha. Tradução não é etapa final aqui.
-
A ferramenta mora dentro do motor
Nada de script externo gerando conteúdo por fora. Se o motor sabe assentar um objeto no terreno, o gerador chama o motor — não reescreve a conta em outro lugar, onde ela vai divergir.
-
Uma camada por vez, e a de baixo primeiro
Ferramenta antes de conteúdo, motor antes de ferramenta. É mais lento no começo e é o motivo de hoje conseguirmos gerar um mapa inteiro a partir de uma semente.
Fora da linha oficial
Projetos de fã
Coisas que a gente construiu por gosto. São projetos de fã, sem vínculo, patrocínio ou aprovação de qualquer detentor de direitos.
Tamer Quest
Projeto de fã · não oficial
MMORPG gratuito de captura, treino e batalha de criaturas, jogável direto no navegador e todo em português. Nasceu como homenagem ao gênero de domar monstros e continua no ar com servidor próprio.
Dread Thicket abre em pré-beta
Survival de mundo aberto rodando na nossa stack inteira. O pré-beta sai antes da página na Steam — dá pra entrar na lista de avisos agora.