Rochedo Casterly - Senhor de Rochedo Casterly | Game of Thrones Wiki | Fandom
Senhor de Rochedo Casterly | Game of Thrones Wiki | Fandom

Guia prático para usar rochedo casterly em projetos indie

O rochedo casterly é uma técnica de geração procedural de terrenos rochosos que muitos desenvolvedores independentes acabam descobrindo por acaso. O nome vem de uma implementação inicial que circulava em fóruns de game dev por volta de 2019, e desde então virou meio padrão no ecossistema de prototipagem rápida. Basicamente, você define um conjunto de regras de erosão digital combinado com ruido de Perlin e um sistema de particulas simples, e o resultado é uma malha geológica que se parece com algo que poderia existir no mundo real.

O que é rochedo casterly na prática

Não é uma biblioteca pronta que você instala e funciona. É mais um framework conceitual. Você pega o algoritmo base, que divide a geração em três etapas — formação da base topográfica, aplicação de trincas e falhas geológicas, e depois a simulação de erosão — e adapta para o motor que estiver usando. Já vi gente tentando rodar isso no Unity com URPs diferentes e tendo problemas sérios de performance porque o shader de erosao não era otimizado para aquela arquitetura específica. O que funciona na maioria dos casos é separar a geometria da textura. Gerar o mesh primeiro em CPU, exportar como OBJ ou GLB, e só então aplicar os materiais no engine. Isso evita que o processo inteiro trave quando você está testando variações. Eu já perdi meio dia debugando isso em 2022 porque estava tentando fazer tudo em tempo real dentro do scene view.

Como configurar do zero

Vamos começar pelo mais importante: o seed. Se você não controlar o seed de forma consistente, cada execução vai gerar formas radicalmente diferentes e você nunca vai conseguir reproduzir um terreno que já funcionou. Eu uso uma estratégia simples onde gero um hash a partir do nome da cena mais uma constante fixa, e esse hash vira o seed base. Dentro dele, cada camada do rochedo casterly recebe um offset derivado do seed principal. Funciona, mas tem um problema que poucas pessoas mencionam — a aleatoriedade das trincas pode criar padrões repetitivos em larga escala se o seed for muito pequeno. Recomendo seeds com pelo menos 64 bits de entropia. A segunda etapa é a definição da resolução da malha. Para prototipagem rápida, 257x257 vértices é suficiente. Se você subir para 1025x1025, o tempo de geração sobe de cerca de 3 segundos para algo em torno de 45 segundos numa máquina razoável. O ganho visual é marginal até você dar zoom muito perto, e ai entra a terceira etapa onde a maioria dos devs erra.

A simulação de erosao é onde o rochedo casterly realmente se destaca ou onde ele quebra. O algoritmo original usa um modelo de transporte de sedimentos simplificado — basicamente, agua flui pela malha, dissolve material nas areas de maior pendiente, e deposita nos lugares mais baixos. Rodando isso por 200 iteracoes com um passo de tempo de 0.01, você leva aproximadamente 8 segundos no Unity 2022 com Jobs System habilitado. Sem Jobs System, esse numero sobe para cerca de 40 segundos. Não é muito, mas faz diferença quando você está iterando. Um detalhe que ninguém avisa: a erosao funciona mal em terrenos muito planos. Se a variacao de altura da sua base topografica for menor que 5% da area total, o agua simplesmente não tem onde escoar de forma interessante. O resultado é uma superfície lisa sem nenhum detalhe geologico. A solucao que eu encontro é adicionar um ruído de alta frequência na fase de base, antes da erosao. Um simplex noise com amplitude de 0.3 a 0.5 unidades resolve esse problema na maioria dos casos.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Pegadinhas comuns e como evitar

A primeira pegadinha é achque o rochedo casterly gera terrenos bonitos por padrao. Ele nao. O resultado brutos geralmente parecem pedras quebradas aleatoriamente, sem a logica geológica que daria realismo. A beleza vem das camadas subsequentes — texturas PBR mapeadas corretamente, normal maps derivados da geometria, e occlusion de ambiente. Sem isso, voce tem um monte de vertices Estranho com cores chapadas. A segunda pegadinha é mais subtile e perigosa. Quando voce tenta usar o mesh gerado diretamente como geometry collider, o Unity (e a maioria dos engines) vai reclamar ou travar. Malhas procedurais complexas com milhares de triangulos são péssimas para collision detection. A solucao correta é gerar um NavMesh separado ou usar um collider simplificado baseado em convex hulls. Eu costumo gerar 3 a 5 convex hulls por segmento de terreno ear eles ao collider do objeto. Reduz o tempo de calculo de pathfinding em cerca de 60% comparado a tentar usar a malha completa.

Terceiro ponto importante: o rochedo casterly é bom para terrenos rochosos, mas extremamente fraco para solos orgânicos, areia, ou gelo. Se o seu projeto precisa de biomas variados, voce vai terminar mantendo dois sistemas diferentes — um para rocha usando o casterly, e outro completamente separado para os outros materiais. Tentar forçar o casterly a gerar areia ou neve funciona nos primeiros 10 metros, mas em escala maior os padrões se tornam impossíveis de distinguir de rocha erosionada.

Alternativas quando o rochedo casterly não serve

Se voce precisa de terreno em escala continental, o rochedo casterly não é a ferramenta certa. Sistemas como Houdini com sua node-based workflow, ou mesmo soluções como World Machine, oferecem controle muito mais fino para paisagens grandes. O casterly brilha em escalas de metros a centenas de metros — cavernas, penhascos, formações rochosas isoladas. Também existe a opcao de combinar o casterly com fotogrametria. Se voce tem acesso a escaneamentos reais de formações rochosas, pode usar o mesh escaneado como base e aplicar as técnicas de erosao do rochedo casterly por cima para gerar variações. Isso produz resultados que parecem autênticos porque a base é real. Eu fiz isso para um projeto de survival game e o tempo de producao de assets caío de semanas para dias.

Dicas específicas para rochedo casterly em produção

Cacheie os resultados. Cada geracao de terreno consome recursos e você vai querer as mesmas formas varias vezes durante desenvolvimento e no jogo final. Exportar para um formato persistente e carregar de disco em vez de regenerar economiza tempo de loading e garante consistência. Eu mantenho todos os terrenos em uma pasta assets/rock_terrain com nomes derivados do seed, assim sei exatamente qual arquivo corresponde a qual geracao. Teste em hardware alvo antes de confiar no resultado. O que parece bonito na GPU do seu dev machine pode rodar muito mal no dispositivo final. Especialmente se você estiver usando compute shaders para a parte de erosao, verifique o suporte em cada plataforma. Hardware mobile mais antigo frequentemente tem limitacoes severas com compute shaders, e o processo de erosao simplesmente nao executa ou executa com resultados corrompidos.

O rochedo casterly é uma ferramenta util mas com limitações claras. Ele resolve um problema específico — gerar terrenos rochosos credíveis em escala pequena a media — e faz isso razoavelmente bem quando configurado corretamente. Fora desse escopo, voce provavelmente vai gastar mais tempo fightando a ferramenta do que ganhando com ela. Conhecer esses limites desde o inicio economiza semanas de frustração.