- Em jogos de construção de cidades, a implementação realista do sistema viário é um elemento central, servindo não apenas como componente visual, mas como base que determina a solidez estrutural do conjunto
- Jogos existentes costumam representar estradas com splines de Bézier, mas isso tem limitações para manter a curvatura e o paralelismo das vias reais
- Estradas do mundo real precisam refletir a distância entre eixos dos veículos e as restrições das curvas; no método Bézier, o formato se distorce ao aplicar offset, resultando em curvas irreais
- Para resolver isso, a aplicação de curvas de engenharia como arcos de círculo (Circle Arc) e clotoides (Clothoid) permite mudanças suaves de curvatura e manutenção de offsets paralelos
- Para superar essas limitações, o autor construiu diretamente seu próprio sistema viário e pretende divulgar futuramente o processo de implementação técnica
O fascínio por estradas e padrões
- O autor encontra nas estradas a mesma satisfação causada por padrões caóticos dentro da ordem presentes na natureza
- Faz uma analogia com formigueiros, colmeias e nervuras de folhas, onde regras simples se acumulam e criam estruturas complexas
- A malha viária também é descrita como um dos padrões mais interessantes já criados pela humanidade
- Ao imaginar os vestígios da rede viária que permaneceriam mesmo após o desaparecimento das cidades, ele destaca sua beleza estrutural
Jogos de construção de cidades e a evolução das estradas
- De SimCity 2000 a Cities: Skylines 2, os sistemas viários evoluíram de forma constante
- SimCity 4 introduziu elevação e estradas diagonais; SimCity 2013 trouxe estradas curvas; Cities: Skylines passou a oferecer posicionamento livre e composição de cruzamentos
- Ainda assim, persistem problemas como curvas pouco naturais, raios de giro bruscos e alças de rodovia irreais
- Com mods, tornou-se possível implementar faixas, marcações e curvas mais realistas, mas isso ainda não supera as limitações fundamentais da engine
As limitações das splines de Bézier
- A curva de Bézier é uma ferramenta matemática poderosa para conectar suavemente dois pontos e é usada na maioria das engines de jogo
- Porém, essa curva não preserva forma nem curvatura ao aplicar offset; em outras palavras, “o offset de uma curva de Bézier não é uma curva de Bézier”
- Isso causa desalinhamento entre a curva interna e a externa, auto-interseções e o fenômeno de pinch
- Como resultado, torna-se difícil reproduzir curvas paralelas que reflitam a trajetória real dos veículos, como acontece nas estradas do mundo real
Aplicação de arcos de círculo (Circle Arc) e clotoides (Clothoid)
- O arco de círculo oferece paralelismo perfeito, preservando a mesma forma mesmo após o offset
- O cálculo da interseção entre dois arcos é muito mais simples do que no caso de Bézier e eficiente, com complexidade O(1)
- Ao conectar arcos com raios diferentes, é possível compor formas viárias tecnicamente válidas
- No entanto, arcos têm curvatura constante, o que gera mudança brusca na aceleração lateral ao passar de uma reta para uma curva
- Para compensar isso, usa-se a clotoide (Clothoid)
- Sua curvatura aumenta gradualmente, proporcionando esterçamento natural e mais conforto de condução
- Embora seja matematicamente complexa, ela é essencial no projeto de vias de alta velocidade
- Em trechos de baixa velocidade, como cruzamentos urbanos, um projeto baseado em arcos já pode oferecer realismo suficiente
Por que criar um sistema viário próprio
- A maioria dos jogadores não se importa muito com a precisão da curvatura dos cruzamentos, mas o desenvolvedor explora isso por curiosidade e desafio técnico
- Embora o nível de implementação em jogos comerciais seja alto, faltam materiais e assets acessíveis para desenvolvedores indie
- Em vez de se limitar a estradas simples em grade, ele decidiu implementar seu próprio sistema para criar algo mais refinado e compartilhável
- No próximo texto, pretende revelar os detalhes técnicos da implementação, e é possível receber atualizações assinando o conteúdo
1 comentários
Comentários do Hacker News
Ao ver o texto dizendo que estradas são o elemento central em jogos de construção de cidades, acho que entendi por que urbanistas têm pesadelos
A base da cidade não é a rodovia/estrada (road) para carros, mas a rua (street) compartilhada por pedestres, bicicletas e transporte público
Como conceito relacionado, vale consultar o verbete Stroad
Road é centrada em transporte (transportation), enquanto street é centrada em interação pública (public interaction)
Ainda assim, acho que a citação original está sendo criticada em excesso. A sociedade moderna tem uma demanda enorme por transporte, então a malha viária dentro e fora das cidades forma o esqueleto urbano
Antes dos anos 1900, só dava para construir cidades perto de vias navegáveis, mas hoje as estradas tornaram possível fazê-lo também no interior
Para criar uma cidade realista, acho que essa abordagem faz mais sentido do que usar estradas falsas
Às vezes imagino como seria uma civilização que projetasse cidades usando apenas bicicletas e deslocamento a pé
Há um jogo de que o autor provavelmente gostaria: Junxions, um sandbox focado em criar cruzamentos viários
O subreddit relacionado está aqui. Parece o tipo de jogo que satisfaz bem essa vontade de projetar estradas
Eu também gosto de Junxions, mas minha abordagem é diferente. Lá eles usam uma estrutura Bézier baseada em nós, enquanto eu gero cruzamentos automaticamente por meio de colisões entre segmentos de estrada
No próximo post do blog vou tratar em detalhe das diferenças entre as duas abordagens
Dizem que só 1% das pessoas se importam com o raio dos cantos em cruzamentos, e eu com certeza faço parte desse 1%
Definir estradas com curvas Bézier não é fácil
Especialmente em curvas fechadas, o resultado visual pode ficar ruim
Eu passei pelo mesmo problema no ano passado trabalhando no projeto Azoth e encontrei uma solução simplificada
Referência: repositório do Azoth, exemplo de Bézier
Elementos que parecem óbvios nos jogos na verdade são resultado de muito trabalho e projeto
Por exemplo, os jogadores não olham para estradas com tanta atenção, mas se elas parecerem estranhas, o incômodo aparece na hora
Senti isso recentemente jogando Kingdom Come 2 — tudo parece natural como na vida real, mas cada detalhe ali foi feito com suor e lágrimas pelos desenvolvedores
Por isso dá para entender por que a indústria de jogos sofre tanto com crunch
Texto relacionado: The Door Problem, matéria da IGN
É por textos assim que continuo acompanhando o Hacker News. Queria dizer ao autor para continuar escrevendo
Tem muita gente com interesses parecidos, então pretendo continuar publicando mais
Esse texto é totalmente a minha cara. Eu tenho a mesma obsessão por estradas
As cidades são formadas por estradas como se fossem vasos sanguíneos, e as ruas de vilas na Europa e na Ásia contam a história de terem surgido sobre trilhas de passos
Já as estradas rurais da minha terra natal seguem em linha reta até que, se um fazendeiro se recusa a vender o terreno, elas de repente fazem uma curva
Só algumas áreas do período colonial ou de cidades planejadas seguem um traçado em grade; a maioria muda de direção conforme o curso do rio ou o relevo
Esses pontos de interseção entre grades são as partes mais bonitas e arquitetonicamente interessantes de uma cidade
Seria incrível se existisse um jogo que simulasse as mudanças do crescimento urbano
Cidades reais se desenvolveram como formigueiros, com uma complexidade dentro de uma ordem natural
Quero escrever sobre esse tema separadamente no futuro
No próximo jogo Canalpunk, vou continuar usando splines Bézier
Acho que seria interessante um sistema de desastres gerados quando caminhos fazem auto-interseção
Estou obcecado em implementar clotoides (curve transition) em um editor de trilhos ferroviários
Em espaço vazio é fácil, mas conectar os trilhos é a parte difícil
Tenho um material explicativo antigo sobre isso: Euler Spiral Explanation
Gostaria de experimentar se esse ponto de cruzamento poderia ser usado para interpolar uma nova spline
Imagem de referência: exemplo visual
Dá para simplificar fazendo como os romanos, com estradas retas :-)
Claro que os romanos não se importavam muito com propriedade privada. Em Lincolnshire, no Reino Unido, onde moro, estradas romanas ainda estão em uso
A única exceção foi quando desviaram uma estrada para ampliar a pista da RAF Scampton
Para mais detalhes, veja Roman aqueduct
Até hoje a linha central das estradas coincide perfeitamente com a direção das torres das igrejas. Essa ideia de território centrado na igreja lembra a dos romanos