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.

UnderStudio— a ferramenta, e o estúdio
  • ├── UnderWar Engine — o motor: mundo, física, som, rede, console
  • ├── UnderRender 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

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: construímos o UnderProtection em seis camadas próprias — agente no cliente, cérebro nativo de detecção, autoridade no servidor, telemetria por partida, análise de padrões e revisão humana. Do primeiro sinal ao veredito, a proteção é nossa.

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

Aplicação

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.

Lógica compartilhada

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.

Núcleo

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.

Terceiros

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.

UnderRender

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

Abrir tamerquest

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.

Receba as novidades do Dread Thicket

Entre na lista para receber o aviso do pré-beta e da página na Steam.

Conhecer o jogo