Uma vista de três quartos numa tela plana
Até a versão 15.0, a nave do TUNL era desenhada vista de cima enquanto a caverna ao redor dela era um corte lateral. Corrigir isso significou um pequeno modelo 3D, uma hitbox que a imagem não podia ultrapassar, e muita contenção sobre o que deveria se mover.
A incompatibilidade
A caverna do TUNL é um corte lateral. A gravidade puxa para baixo, as estalactites pendem do teto, e a aproximação no início de cada corrida é um horizonte urbano ao entardecer. A nave era a única coisa ali desenhada diretamente de cima, como uma planta de um avião voando através de uma imagem do flanco de uma montanha. Os jogadores normalmente não expressam isso assim, mas faz a nave parecer levemente colada por cima.
A correção óbvia, desenhar uma vista lateral simples, teria descartado a silhueta vista de cima pela qual a nave é reconhecível, e a forma da nave fica melhor vista de cima. O meio-termo é uma vista de três quartos: um modelo 3D do mesmo casco, girado a partir da vista de cima em torno do seu eixo longo e projetado de forma plana.
Um renderizador minúsculo
Não há biblioteca 3D no TUNL nem etapa de build, então o renderizador é pequeno. O casco já existia como um conjunto de facetas planas, iluminadas de cima, com a metade superior misturada em direção ao branco e a metade inferior em direção ao quase preto. A versão 3D dá a cada faceta uma terceira coordenada, gira o modelo em torno do eixo longo, projeta-o ortograficamente e preenche cada face no mesmo estilo plano, iluminado de cima. Isso dá cerca de 90 faces visíveis preenchidas por quadro, contra cerca de 40 preenchimentos para o casco plano. Não há desfoque, o que importa porque o desfoque é a chamada cara na visualização web de um telefone, e o brilho é um único preenchimento radial. Se um dispositivo fraco algum dia tiver dificuldades, o corte óbvio é armazenar em cache o casco por ângulo de rolagem numa tela fora da tela.
A hitbox manda
A restrição mais importante é que a colisão não muda. A hitbox da nave é um círculo, e toda a dificuldade do jogo foi ajustada contra ela. Então a imagem 3D não pode parecer maior que o círculo, nem tão menor que a nave "morra" antes que a asa toque visivelmente algo.
Isso transformou o ângulo de rolagem numa medição em vez de uma escolha de gosto. Inclinada 45 graus para fora da vista de cima, só a asa próxima se lê, e a imagem cobre pouco mais da metade até cerca de quatro quintos da altura do círculo. A 90 graus é simplesmente a antiga vista de cima de novo. A 60 graus ambas as asas se leem e a envergadura volta a cerca de 85% do círculo. Construí um pequeno laboratório com cinco vistas candidatas e uma curva de cobertura, e escolhi 60. Um teste agora verifica que, em qualquer rolagem e qualquer enflechamento de asa, o casco desenhado nunca ultrapassa o círculo nem o nariz plano, e que ainda preenche uma parcela saudável do círculo durante o voo.
O que se move, e o que deliberadamente não se move
Assim que a nave se tornou um objeto 3D, foi tentador animar tudo. A maior parte disso foi cortada. O que sobreviveu precisa carregar informação:
- A rolagem segue a subida. Uma mola amortecida gira o casco até cerca de dez graus em qualquer direção, as costas voltadas para a câmera ao subir e a barriga ao cair. É movida pela velocidade vertical como fração da velocidade terminal, então parece igual em cada tela. É uma segunda leitura daquilo que você está tentando julgar.
- As asas recuam com a velocidade que você sente. Como um caça de geometria variável, os painéis externos ficam abertos no início lento e bem recuados quando a caverna atinge o ritmo total. Uma moeda azul, que desacelera o tempo, os joga para frente como um freio aerodinâmico, e eles recuam de volta exatamente tão rápido quanto a desaceleração se dissipa. Um warp os dobra em meio segundo.
- O anel de warp dá um parafuso. Uma volta completa, suavizada. É seguro por construção: um warp te torna intocável, então a imagem saindo do círculo no meio de um parafuso nunca pode decidir uma morte.
O que não sobreviveu foi um balanço livre. Uma variante anterior em que a nave "balançava depois" de um movimento parecia animada, e era ruído: num jogo cuja única habilidade é ler distâncias, um casco que oscila por conta própria compete com a informação de que você precisa. É o mesmo raciocínio que fez um fundo com paralaxe de silhuetas de rochas distantes ser removido no mesmo dia em que foi adicionado. Num jogo que consiste em ler onde estão as paredes, um segundo conjunto de formas se movendo em velocidade diferente é uma distração, mesmo em baixo contraste.
Pintura sobre um casco 3D
Os seis acabamentos de pintura da nave foram projetados para o casco plano, em coordenadas de planta. Em vez de redesenhá-los, usei um pequeno truque de geometria: num dado ângulo de rolagem, a superfície superior do casco se projeta exatamente sobre a planta, achatada verticalmente pelo seno do ângulo de rolagem. Então o pintor existente roda sob esse achatamento e é recortado pela silhueta 3D. As duas coisas que não podem ser expressas assim, as costuras das facetas e a borda, são traçadas no espaço da tela.
Uma correção foi necessária para a versão 3D. O casco plano tem sete facetas e o 3D tem cerca de noventa, e desenhar uma costura clara em cada uma transformava o acabamento STEALTH numa lâmpada. Então em 3D as costuras rodam em meia intensidade e pulam faces pequenas, e quando o casco está quase de perfil no meio de um parafuso, o padrão é pulado por esses poucos quadros.
O que ficou plano
Só a nave em voo recebeu a nova vista. O hangar, a loja e o cartão de compartilhamento ainda mostram a nave de cima, porque esses são retratos de uma nave, não imagens de um voo, e a vista de cima é a que mostra toda a planta. O ícone do app e os gráficos da loja também são retratos vistos de cima, e se algum dia devem seguir a vista em voo continua sendo uma questão em aberto.
O quadro completo de como a nave é construída e pintada está na página de naves, e você pode vê-la voar na caverna de hoje.