Um laboratório de dinâmica veicular que vira jogo: física de rodas escrita do zero, e o rastro do carro pinta território que pode ser roubado.
Confira em Configurações ▸ Apps ▸ Asphalt Canvas que a versão diz 0.34.0.
O carro agora responde à luz da pista. A carroçaria ganhou iluminação em faixas, e a
sombra no asfalto é projectada pela luz direccional a partir da geometria real do veículo.
Direcção, comprimento e silhueta acompanham o sol, o modelo e a pose do carro; não existe
uma mancha desenhada por baixo dele.
O peso do carro agora anda para frente e para trás. Freando, a carga vai para as
rodas dianteiras e elas ganham aderência; acelerando, vai para as traseiras. Até aqui o
eixo dianteiro carregava metade do carro o tempo todo, com o pé no fundo ou no freio — e
um toque no freio numa curva a 60 km/h mais que dobrava o raio, de 33 para 65 metros. O
carro simplesmente parava de virar. Agora ele faz 41, que é onde a conta diz que deveria
estar.
Entrar de freio passou a funcionar. Chegar acelerando, frear, jogar o peso na
frente e virar: em baixa velocidade essa curva agora fecha 22% mais que virar solto.
E o drift piorou — isto é um teste, não um acabamento. É o mesmo mecanismo nas duas
pontas: acelerando, a frente alivia, e uma frente leve não roda o carro. Dezesseis
comportamentos de drift que o jogo tinha medidos saíram do lugar. O equilíbrio dos vinte
carros foi afinado sem esse eixo e vai precisar ser refeito por cima dele — esta build
existe para saber como ela se sente antes disso.
A carroçaria passou a se mexer sobre a suspensão. Ela deita para o lado de fora nas
curvas e mergulha o nariz nas freadas, a partir da carga que cada roda está levando de
verdade. As rodas ficam plantadas no chão; só a chapa trabalha por cima delas.
O dinamômetro ganhou som e freio-motor. No modo manual dá para ouvir o motor
responder ao pedal, sem precisar dirigir — é o melhor lugar do jogo para julgar o som,
porque não há pista nem pneus no caminho. E o motor agora cai de giro quando você
tira o pé: antes ele ficava pendurado na rotação para sempre, porque a bancada não
tinha atrito nenhum.
O motor ganhou altura. Antes ele tinha cor mas não tinha nota — soava a filtros
apitando em vez de uma máquina girando. Agora a série de harmônicas acompanha a rotação,
que é o que o ouvido reconhece como o motor subindo de giro.
E cada cilindro queima com a sua própria força, sorteada uma vez por carro. Motores
reais não têm dois cilindros iguais, e é essa irregularidade que separa um som vivo de
um laço repetido.
Os carros passam a soar diferentes uns dos outros. Antes, os vinte distribuíam o
som quase da mesma forma — um V8 e um quatro cilindros eram praticamente o mesmo timbre
com nomes diferentes. Agora o escape de cada motor é descrito banda a banda, e o número
de cilindros decide onde o peso do som assenta.
Continua a soar sintético, e isso é sabido: este é um som calculado, não gravado.
O que esta versão traz é que agora dá para distinguir os carros de ouvido.
O chiado de fundo saiu. Ele vinha do som dos pneus, que toca conforme a energia
que a borracha queima contra o chão — e recebia quatro vezes mais do que o seu volume
máximo, do começo ao fim de qualquer volta. Os pneus ficam mudos até isso fazer sentido,
então o motor agora se ouve sozinho.
O som do motor foi refeito. Na versão anterior ele picotava — dava para ouvir cada
explosão separada, principalmente parado na garagem, e havia um chiado de fundo. Agora a
cauda de cada explosão acompanha a rotação: em marcha lenta elas se sobrepõem e o motor tem
inércia, em giro alto ela encolhe e o tom sobe junto com o ponteiro.
Cada um dos vinte carros tem o seu motor — número de cilindros, disposição e se é
aspirado, turbo ou com compressor — e é daí que sai o timbre. Na garagem cada carro dá a
partida quando você o escolhe.
E a velocidade máxima da garagem agora é a que o carro atinge. Ela mostrava onde a
última marcha acaba o giro, ignorando o arrasto — então um carro podia dizer 364 km/h na
ficha e ter menos barra de velocidade que outro de 363.
Agora dá para ver qual carro é maior. A garagem fotografa todos da mesma
distância, sobre o mesmo anel — antes cada carro era enquadrado pelo próprio tamanho e
os vinte saíam iguais na tela.
O tuning virou garagem. A primeira tela mostra só o carro, num anel que diz que
ele gira com o dedo; o nome, as cinco barras e os botões saíram de cima da foto. A
afinação abre por cima, num painel com barra de rolagem — antes, arrastar para rolar a
lista mudava a configuração que estivesse debaixo do dedo.
E o carro do showroom deixa de se acumular. Em alguns aparelhos a imagem anterior
não era apagada e o carro virava um borrão ao ser girado. Se você viu isso, é esta build
que corrige.
Agora o carro do tuning gira com um arrasto horizontal do dedo. A câmera e as luzes
ficam paradas: só a apresentação gira, sem alterar o rumo ou as forças do carro na pista.
Comprimento, largura, altura, entre-eixos e rodas renderizadas passam a obedecer às mesmas
cotas usadas pela física. A limpeza do carro anterior no showroom continua activa.
Esta build traz vinte carros. Aos três de sempre juntam-se cinco da era dos
jogos de rua e doze inspirados nos carros de drift de competição — cada um com as cotas
reais do veículo que o inspirou, e por isso com um comportamento diferente no asfalto.
Agora cada carro tem a sua própria carroçaria 3D. Os chassis vieram dos modelos
preparados no Tripo, mas as quatro rodas continuam sendo as rodas do jogo: elas seguem
a suspensão, o esterço e o giro calculados pela física em tempo real.
Cada carro tem cinco barras — aceleração, velocidade, curva, tinta e o quanto ele
se solta. Nenhuma foi escrita à mão: todas saem das medidas do carro, pela mesma física
que o move. A barra de tinta é a que conta no jogo — diz quanto asfalto uma
passagem pinta, e cresce quando o carro anda de lado.
Os carros de competição são difíceis de propósito. Têm muito mais força do que os
pneus seguram, e nota-se. Se quiser começar por algo dócil, o Fureca e o MX-5 são os mais
calmos da lista.
O servidor foi republicado junto com esta build, mantendo a física do cliente e das
partidas na mesma revisão. Salas de drift são de dois lugares; a arena, de oito.
| Versão | 0.34.0 · build 114 |
|---|---|
| Pacote | com.asphaltcanvas.prototype |
| Arquitetura | arm64-v8a |
| Android mínimo | 8.0 (API 26) |
| Orientação | Paisagem |
| SHA-256 | f73dc4a7d48cb97ba8015e729dbe87807424fcc997c40658ff226e5c956eac66 |
Os números de desempenho e os interruptores de teste ficam dentro da tela de pausa, em qualquer aparelho: toque em II no canto superior esquerdo. Os quadros por segundo e o ping ficam sempre visíveis no canto superior direito. A versão de computador ainda traz a telemetria do carro e as opções de carro e equipe atrás do botão DEV.
| Windows |
AsphaltCanvas-windows.zip
— 107 MB · 64-bit 2ac7d0b9715a2b85853597422e32f6b6d82c63fcc87113889c1ad88121232225 |
|---|---|
| macOS |
AsphaltCanvas-macos.zip
O macOS vai recusar na primeira vez — veja a nota logo abaixo da tabela. — 115 MB · Apple Silicon e Intel 77c7e8232a9dd87e437deaab5b57382946f1db70da07acfab398d5f85b34ac93 |
| Linux |
AsphaltCanvas-linux.zip
— 105 MB · x86_64 a09b244c17d25bcc65e6c149a7d2247780fe7e640cfe5ccf5c7451a7024691d6 |
Nenhum dos três é assinado. É um protótipo, não um produto publicado, e cada sistema
reage a isso de um jeito. Nada disto quer dizer que o ficheiro está com problema — quer
dizer que ninguém pagou a uma loja para o avalizar.
macOS — ao abrir, o sistema diz “O item AsphaltCanvas não foi aberto — a Apple não
pôde verificar se está livre de algum malware”. É o Gatekeeper a recusar um aplicativo sem
assinatura da Apple, e tem duas saídas:
Sem Terminal: feche o aviso e vá a Ajustes do Sistema ▸ Privacidade e Segurança.
Role até ao fim: há uma linha sobre o AsphaltCanvas com o botão Abrir Mesmo Assim.
Confirme, e da próxima vez ele abre direto.
Com Terminal, de uma vez só, na pasta onde descompactou:
xattr -dr com.apple.quarantine AsphaltCanvas.app
Windows — o SmartScreen mostra “Windows protegeu o computador”. Em
Mais informações ▸ Executar assim mesmo.
Linux — dê permissão de execução:
chmod +x AsphaltCanvas.x86_64
| 0.34.0 · build 114 | Harmonização da física no servidor e correção da altura do chassi. A pilotagem nas partidas online passa a ser idêntica ao modo solo: o servidor agora recebe a preparação mecânica do carro (relação de diferencial, faixa de potência e resposta do acelerador). Um carro tunado na garagem passa a rodar no servidor com as mesmas relações e resposta com que o jogador pilota localmente. As assistências de pilotagem passam a operar no passo fixo de 60 Hz da simulação: consistência nos filtros de pedal e contra-esterço independentemente da taxa de quadros da tela. A altura do chassi no multiplayer foi corrigida: as suspensões agora repousam na cota calculada da física em vez de retraírem na origem do mount. O protocolo de rede sobe para a versão 13, de modo que clientes anteriores não entram em partidas desta versão. |
|---|---|
| 0.33.0 · build 113 | O motor passa a ter inércia — e o freio de mão passa a servir para arrancar. Até aqui, puxar a alavanca apagava o regime do motor no mesmo instante. O ponteiro caía para a marcha lenta e, ao largar, voltava a subir do nada. Isso acontecia porque o jogo não guardava a rotação do motor: calculava-a a partir das rodas, a cada instante, e com a embraiagem aberta as rodas não tinham nada a dizer sobre ela. Agora o motor é uma massa a girar, com a inércia que lhe corresponde. O que isso muda para ti: com a alavanca puxada, o acelerador sobe os giros e eles ficam lá. Podes segurar o motor em cima e largar — o carro dá o tranco, as rodas patinam e sai fumo. É controlo de arrancada, feito como se faz a sério: o freio de mão passa a ser o desvio ao controlo de tração, e quem decide o regime de largada és tu. Numa arrancada normal, sem alavanca, o controlo de tração continua a dosear por ti e o carro sai progressivo. A diferença é que agora tens as duas coisas. O diferencial passou a ligar as duas rodas, e não só a repartir força entre elas. Uma roda que começa a girar mais depressa que a parceira deixa de ser premiada por isso. E o freio ganhou curso no telefone. O botão valia zero ou um, e um toque levava as rodas da frente ao bloqueio num instante — não havia como travar a meio. Agora enche em 0,16 s e alivia em 0,08 s: alivia mais depressa do que pisa, de propósito, porque aliviar o freio é como vais buscar aderência à frente para apontar o carro. Mais, por baixo: um carro parado deixou de gerar força lateral do nada; quando ficas de lado tens meio segundo para corrigir, e não 0,37 s; e o chassi deixou de ser uma peça rígida nas contas de transferência de peso. Isto muda o protocolo de rede, de 10 para 12. Um jogo na 0.32.0 ou anterior não entra em partida online — vai dizer-te isso em vez de te meter num jogo desalinhado. Actualiza nas quatro plataformas. E no ambiente de trabalho a janela passa a poder ser redimensionada. |
| 0.32.0 · build 112 | Em partida online, cada carro é o carro certo — e à altura certa. Até aqui o teu jogo desenhava os outros jogadores com um carro por omissão, porque nada na rede dizia qual deles cada um conduzia. O servidor sabia e o teu jogo não. Agora sabe. E vinha com um segundo problema por cima, que era o mais visível: a altura a que um carro se desenha depende do centro de massa dele, e esse varia dezanove centímetros entre o mais baixo e o mais alto da frota. Com o carro errado nessa conta, o resultado era um carro afundado no asfalto. Quem desenha passa a perguntar ao próprio carro. Trocar de carro também passou a mudar o que se vê. Preparar um carro, entrar, sair, trocar e voltar a entrar deixava o modelo anterior no ecrã — o servidor já corria o novo, só a imagem é que não. Era a mesma raiz: a figura de um carro e as contas de outro. Isto muda o protocolo de rede, de 10 para 11. Um jogo na 0.31.0 deixa de conseguir entrar em partida online e vai dizer isso em vez de entrar num jogo desalinhado — é para isso que a verificação de versão existe. Actualiza nas quatro plataformas. |
| 0.31.0 · build 111 | Um mini-mapa no canto, e a mesma física em todas as plataformas. O mapa aparece no canto superior direito quando a pista tem traçado — base cinzenta translúcida, o desenho do circuito em branco, e tu como uma seta. Uma seta e não um ponto, porque num carro de lado saber onde estás e saber para onde apontas são duas coisas diferentes. Na arena de pintura ele esconde-se: lá o chão é um quadrado e não há traçado nenhum para mostrar. E o servidor passou a correr a física desta versão. Até aqui o jogo em rede andava num carro anterior às mudanças de suspensão, o que quer dizer que uma partida online e um treino sozinho não eram o mesmo carro. Agora são. Windows, macOS e Linux são reconstruídos desta mesma árvore. |
| 0.30.0 · build 110 | Três câmaras, e a de trás é a que muda o jogo. Na pausa, na página Frame, o primeiro botão roda entre de cima, perseguição e drone. A de cima continua a ser a publicada e é a única em que se consegue ler o rasto de tinta e o território — de trás o chão fica em fuga e esse modo deixa de se poder jogar. A de perseguição fica atrás da direcção em que o carro VAI, e não do nariz dele. É a diferença entre um drift aparecer e desaparecer: alinhada com a carroçaria, o carro fica sempre apontado ao centro do ecrã e o que se vê é a pista a torcer-se; alinhada com o caminho, vê-se o flanco do carro a andar de lado. E com meio segundo de atraso, que é o que deixa a traseira sair do enquadramento antes de a câmara a acompanhar. Ela também recua dois metros e abre oito graus entre os 50 e os 150 km/h. É daí que vem a sensação de velocidade — uma câmara de distância fixa faz 150 parecer 50 com outros números. O drone são os mesmos números com outros valores: mais alto, mais longe, e mais lento a virar, para se ver o traçado em vez de o volante. |
| 0.29.3 · build 109 | Se o carro cair para fora da pista, o jogo vai buscá-lo. Saindo pela borda para um sítio onde não há chão, o carro caía — e continuava a cair, sem nada que o trouxesse de volta. Havia o botão de recomeçar, e funcionava, mas era preciso saber dele. Agora, um metro abaixo do chão e meio segundo depois, o carro volta sozinho à grelha. Meio segundo, e não logo: um salto legítimo pode pôr o carro abaixo de um lancil por um instante, e recomeçar por causa disso seria tirar-te um salto que acertaste. |
| 0.29.2 · build 108 | O chassi ganha suspensão a sério, e as assistências passam a saber que carro conduzem. Até esta build a carroçaria era rígida: cada roda carregava um quarto do carro, e a carga que uma curva ou uma travagem movem era somada por uma conta. Agora ela sai da compressão da mola de cada canto — travar comprime a frente porque a mola comprime, e a carroçaria inclina-se de verdade em vez de o representar. Rolagem e arfagem passaram a existir na física, não só no desenho. O que isso muda ao volante. Iniciar um drift com uma guinada de volante era quase impossível: a janela entre não acontecer nada e o carro passar dos 45° sem retorno tinha um décimo de segundo. Medido no Japan a 60 km/h, com guinadas de 0,15, 0,25 e 0,40 s: antes dava 21°, depois parava atravessado, depois parava atravessado. Agora dá 10°, 14° e 30°, e o carro continua a andar nas três. Era um degrau, é uma rampa. Um carro de mil cavalos deixou de andar com pneu de utilitário. Dez dos vinte carros estão escritos como builds de competição e corriam com a mesma borracha e a mesma largura de um hatch de rua. Passaram a levar pneu de competição, e o ângulo médio de deriva desses carros caiu de 41–44° para 17–27° — a faixa onde um drift se segura, e que estava vazia. E o controle de tração passou a ser útil nos carros fortes. O piso dele era uma fracção fixa do pedal, e essa fracção estava acima do que o pneu de um carro forte aguenta: o assistente cortava tudo o que tinha e as rodas continuavam a patinar. Três carros rodavam na saída de curva com a tração no máximo; agora não roda nenhum dos vinte. Nos carros leves é o contrário — o Japan recupera mais de metade do pedal que o assistente lhe tirava. Também entram: a barra estabilizadora traseira, a queda de aderência da roda que patina, a curva de binário de um turbo a distinguir-se de um aspirado, a caixa a deixar de descer duas marchas de uma vez ao largar o travão de mão, e os menus de nove escolhas para quatro — com o Assistente de tração a aparecer em ecrã pela primeira vez. |
| 0.29.1 · build 107 | A sombra agora vem somente da luz e da geometria. O contorno e a mancha fixa sob o carro foram removidos. A malha real entra no mapa de sombras da luz direccional, e as variantes de sombra do asfalto e da tinta foram corrigidas para sobreviver ao build Android. A silhueta projectada acompanha o modelo, a pose e a direcção do sol. |
| 0.29.0 · build 106 | Primeira tentativa de sombra, luz e contorno. A carroçaria ganhou iluminação em faixas, mas a sombra de contacto ainda era uma mancha projectada separadamente e o contorno prejudicava a leitura. Ambos foram substituídos na build seguinte; colliders e forças da simulação permaneceram os mesmos. |
| 0.28.1 · build 105 | O peso do carro anda para frente e para trás, e a carroçaria mostra isso. Freando, a carga passa para as rodas dianteiras e elas ganham aderência; acelerando, vai para as traseiras. Até esta build o eixo dianteiro carregava metade do carro o tempo todo. O efeito disso era grande e ninguém tinha medido: um toque no freio numa curva a 60 km/h levava o raio de 33 para 65 metros — o carro parava de virar quando você encostava no pedal. Agora faz 41, que é onde o círculo de atrito diz que ele deveria estar. Em baixa velocidade inverte: frear e virar agora fecha 22% mais que virar solto, que é a entrada de curva que o jogo não tinha. A carroçaria deita e mergulha. Ela sai da horizontal para o lado de fora nas curvas e afunda o nariz nas freadas, tirado da carga que cada uma das quatro rodas está levando — não é uma animação, é a mesma conta que move o carro. As rodas continuam plantadas onde a física as põe; só a chapa trabalha por cima delas, que é o que se lê como suspensão. E o drift piorou. Isto é um teste. É o mesmo mecanismo nas duas pontas: acelerando, a carga sai da frente, e uma frente leve não gera o giro que põe o carro de lado. Dezesseis comportamentos de drift que o jogo tinha medidos e travados saíram do lugar — a entrada por aceleração de um dos carros caiu de 40° para 13°. O equilíbrio dos vinte foi afinado sem esse eixo e precisa ser refeito por cima dele. Esta build é para sentir a física nova antes desse trabalho, não é um acabamento. |
| 0.27.14 · build 103 | O app emagreceu 47 MB e o som continua igual. Os onze motores estavam guardados sem compressão nenhuma — 630 trechos de áudio cru, que sozinhos pesavam 61 MB e ocupavam a mesma coisa na memória do aparelho. Agora vão comprimidos e são descomprimidos só na hora de tocar: 174 MB → 127 MB. E o aparelho passou a devolver a memória. Antes, cada família de motor que você ouvisse ficava carregada para sempre — passear pelos vinte carros da garagem prendia os onze motores de uma vez. Agora, quando nenhum carro em cena usa aquele motor, ele sai da memória. O contador é cuidadoso de propósito: em multijogador vários carros podem compartilhar o mesmo motor, e quem sai não pode levar o som de quem fica. Nada disso muda o que se ouve. |
| 0.27.13 · build 102 | Os motores agora são motores. O som do carro deixou de ser sintetizado. Onze motores foram simulados de verdade — pistões, virabrequim, ordem de ignição, coletor e escape — e gravados fora do jogo numa grade de rotação por carga. O jogo já não calcula som nenhum: ele diz em que ponto o motor está e o banco responde. Cada família tem o seu motor. Um três cilindros de 1.0, um V12 de 6.0, e mais nove no meio. Dentro de uma família os carros ainda diferem, com o tom, o brilho e o escape que já estavam no cadastro de cada um — o Mustang RTR corta os agudos a 4,6 kHz e o Japan leva-os até 15. E metade dos cilindros dos motores em V estava queimando fora de hora. Isso ficou para trás: cada cilindro tem agora o seu próprio pino no virabrequim, e o pedal voltou a mudar o timbre em vez de só o volume. O arquivo cresceu bastante — 174 MB contra 116. É o preço de onze motores gravados, e dá para reduzir bastante; fica para a próxima. |
| 0.27.12 · build 101 | O som estava dez vezes mais baixo do que devia. Você disse que estava baixo no celular, e estava: o motor saía a um décimo do volume que um jogo deve ter. A culpa é da minha bancada. O programa que gera os arquivos de áudio para eu escutar encosta cada um deles no volume máximo antes de tocar — então eu estava ouvindo o motor quatro a seis vezes mais alto do que o seu celular toca, e afinei o timbre inteiro em cima disso. Agora o nível é medido e não chutado, e existe um teste que reprova se ele cair de novo. Nenhum dos testes de som que já existiam pegava isso: todos comparam a proporção entre graves e agudos, que é a mesma em qualquer volume. Junto veio um teto na saída, porque com o motor mais alto uma troca de marcha com o turbo soprando estourava a escala — e estouro digital é o barulho mais feio que um jogo faz. |
| 0.27.11 · build 100 | O dinamômetro ganhou som e freio-motor. No modo manual agora dá para ouvir o motor responder ao pedal. É o melhor lugar do jogo para julgar o som: tem um pedal, um motor, um gráfico do que ele está fazendo, e mais nada no caminho — nem pista, nem pneus, nem câmera se mexendo. E o motor cai de giro quando você tira o pé. Antes ficava pendurado na rotação indefinidamente, porque a bancada roda sem resistência do ar — de propósito, ela existe para medir a transmissão e não a aerodinâmica. Mas atrito mecânico é outra coisa: mancais, anéis, bombeamento, comando. Isso existe numa bancada de rolos igual à estrada, e é a razão de um dinamômetro sempre medir menos potência do que o catálogo promete. |
| 0.27.10 · build 99 | O motor ganhou altura, e não só cor. O escape do jogo é descrito por ressonâncias em frequências fixas — está certo, porque um escape não muda de tamanho com a rotação, e é dele que vem o timbre. Mas o que o ouvido reconhece como a altura de um motor é a série de harmônicas da ignição, que sobe e desce junto com ele. Ela não existia: havia cor e não havia nota, e o resultado soava a filtros apitando. Agora são oito harmônicas ancoradas no intervalo entre explosões, e o quão longe elas vão depende do motor — um abafado perde as agudas cedo, um metálico leva-as longe. E cada cilindro passou a queimar com a sua própria força, sorteada uma vez por carro e fixa depois disso. Nenhum motor real tem dois cilindros idênticos, e é essa pequena irregularidade que separa um som vivo de um laço. Continua sendo som calculado e não gravado. |
| 0.27.9 · build 98 | Os carros passam a soar diferentes uns dos outros. O timbre de cada motor era descrito por três números, e três números não chegam: medido contra gravações reais, os vinte carros distribuíam a energia do som quase da mesma forma — um quatro cilindros e um V8 saíam a menos de meio por cento de diferença. Agora o escape é descrito banda a banda, de 45 Hz a 11 kHz, e a contagem de cilindros decide onde o peso do som assenta: um V12 fica agudo e metálico, um V8 fica grave, um três cilindros fica áspero. A parte aguda do som, que praticamente não existia — os carros tinham menos de 1% da energia acima de 1 kHz, contra 15% a 60% num motor real — passa a estar lá. É ela que faz um motor soar a metal com gás dentro em vez de a um zumbido. Continua a soar sintético. Este som é calculado e não gravado, e a distância ao motor real ainda é grande. O que mudou é que agora os carros se distinguem de ouvido. |
| 0.27.8 · build 97 | O chiado de fundo saiu, e não era do motor. Vinha dos pneus. O som deles toca conforme a energia que a borracha queima escorregando contra o chão, e foi feito para chegar ao volume máximo numa derrapagem violenta — 22 kW. Medido no jogo, ele recebe 88 kW em média e fica acima do máximo em 99% do tempo com o carro em movimento. Ou seja, tocava no volume máximo do começo ao fim de qualquer volta. O som não estava errado: estava dizendo a verdade sobre o que a física faz, porque os carros escorregam as rodas o tempo todo. Os pneus ficam mudos até isso ser decidido, e o motor agora se ouve sozinho. O timbre do motor ainda é artificial, e isso não se resolve ajustando — é o limite de sintetizar o som em vez de gravá-lo. Está documentado, com o caminho para resolver. |
| 0.27.7 · build 96 | O som do motor foi refeito. Ele picotava: cada explosão soava separada da seguinte, sem inércia entre elas, e pior parado na garagem — que é só marcha lenta. A causa era a cauda de cada explosão ter uma duração fixa. Agora ela acompanha o intervalo entre explosões: em marcha lenta elas se sobrepõem e o motor ganha corpo, em giro alto ela encolhe e a altura do som sobe com a rotação. Cada explosão também deixou de ser um estalo instantâneo e passou a ter duração, o chiado de fundo foi filtrado muito mais fundo, e o escape ganhou uma terceira ressonância — dois modos soavam finos demais, e fino se ouve como sintético. E a velocidade máxima da garagem passa a ser a que o carro atinge. A ficha mostrava onde a última marcha acaba o giro e a barra mostrava o que o carro alcança contra o arrasto: dois números com o mesmo nome na mesma tela. Um carro podia dizer 364 km/h e ter menos barra que outro de 363. |
| 0.27.6 · build 95 | O jogo passa a ter som. Cada um dos vinte carros tem motor próprio, cadastrado: quantos cilindros tem, como estão dispostos e se é aspirado, turbo ou com compressor. Um quatro cilindros e um V8 não soam diferentes por decisão artística — soam diferentes porque o intervalo entre explosões é outro, e é essa conta que o jogo faz. Na garagem, cada carro dá a partida quando você o escolhe, e assenta na marcha lenta dele. O motor acompanha a rotação, a carga e a troca de marcha; os pneus soam conforme a energia que queimam contra o chão, e uma derrapagem não soa como uma patinada. Turbo enche com atraso e alivia quando você tira o pé; compressor assobia desde baixo. Esta é a primeira versão e o som ainda é artificial demais — mais parado na garagem do que em movimento. Está publicada para ser ouvida. |
| 0.27.5 · build 94 | A garagem mostra o tamanho de cada carro. A câmera se afastava conforme o comprimento do carro que estava na frente dela, então todos enchiam a tela na mesma medida: o hatch de 3,45 m e o cupê de 4,80 m apareciam do mesmo tamanho. Agora a distância é a mesma para todos, e o anel no chão também deixou de mudar de tamanho — ele é a régua contra a qual cada carro se lê. |
| 0.27.4 · build 93 | O showroom deixa de acumular a imagem anterior. Em alguns aparelhos Android a tela do carro não era apagada entre um desenho e o seguinte: girar o carro deixava um rastro e trocar de carro não o limpava. A tela agora é apagada explicitamente, e só é redesenhada quando há motivo — ao trocar de carro, ao mexer num ajuste ou ao girar. Não acontecia no computador nem no emulador. O tuning virou garagem. A primeira tela mostra o carro e mais nada dentro do quadro, com um anel no chão no lugar da legenda que ficava por cima dele. Nome, barras e botões passaram para a coluna ao lado. A afinação abre num painel por cima, com o carro visível — e a lista ganhou barra de rolagem, porque arrastar sobre uma linha para rolar mudava o ajuste que estivesse ali. E os carros deixam de aparecer achatados em algumas pistas. A carroceria era medida com o carro já posicionado na linha de largada, então o rumo da pista entrava na medida: em Aspar, Jarama e no RBC o corpo era desenhado com menos de 40% da largura entre rodas colocadas certo. Arena e Ricardo Tormo largam alinhadas aos eixos e por isso nunca mostraram o problema. |
| 0.27.3 · build 92 | As rodas agora têm a mesma dimensão na apresentação e na física. A malha-base media dois metros e era escalada como se medisse um, duplicando o diâmetro visível. O construtor agora normaliza pelos limites reais da malha. Os carros com referência confirmada também receberam as medidas nominais dos pneus dianteiros e traseiros, incluindo conjuntos escalonados. Raio, largura, contacto, velocidade de superfície, inércia, transmissão, bancada e telemetria passam a usar a mesma cota por eixo. O servidor foi publicado na mesma revisão. |
| 0.27.2 · build 91 | O carro do tuning agora pode ser girado com o dedo. Um arrasto horizontal orbita a apresentação e mantém o ângulo ao trocar de carro, para comparar modelos na mesma vista. A rotação não toca no controlador físico. Escala visual e física foram reunificadas. A carroçaria segue comprimento, largura e altura externos; os pivôs seguem entre-eixos e bitola; as rodas visuais usam o mesmo raio e largura dos pontos de contacto. A redução visual de 40% da build anterior foi removida porque criava duas escalas diferentes para a mesma roda. |
| 0.27.1 · build 90 | O palco passou a limpar carros órfãos antes de cada troca. Esta build também tentou reduzir as rodas visuais em 40%. A comparação de escala da revisão seguinte mostrou que isso separava apresentação e física, por isso a redução foi revertida na 0.27.2. |
| 0.27.0 · build 89 | Os vinte carros ganharam carroçarias próprias. Cada modelo passa a usar o chassis 3D preparado para ele, tanto no showroom quanto na pista. As rodas trazidas nos modelos foram removidas da apresentação: ficam as rodas renderizadas pelo próprio jogo, ligadas aos quatro pontos de contacto da física, com suspensão, esterço e rotação em tempo real. O comportamento dos carros não foi substituído pelo modelo visual. Massa, pneus, suspensão e forças continuam vindo das definições e da simulação já existentes. |
| 0.26.5 · build 88 | Recomeçar do início, na pausa do treino. O carro volta ao ponto de partida, parado, e você volta directo à pista. Só aparece no treino: numa partida quem manda na posição do carro é o servidor. E o contador do showroom estava errado. Ele somava carros que já tinham sido removidos mas ainda não tinham desaparecido da memória, e por isso acusava três carros com um carro limpo no ecrã. Agora conta só o que está mesmo a ser desenhado — portanto, se algum dia ler PALCO 2, é real. |
| 0.26.4 · build 87 | As legendas das barras voltaram — desta vez a sério. A correcção da build anterior mexia na largura, e o problema era a altura: a linha era curta demais para a letra, e quando o texto não cabe o motor não desenha nada. Agora tem folga. E o contador do showroom passa a aparecer. Na build anterior ele só existia em versões internas, por isso não servia de nada a quem instalava o APK. Ao lado da velocidade lê-se palco 1; se alguma vez disser PALCO 2, é isso que queremos ver numa foto. |
| 0.26.3 · build 86 | As legendas das barras voltaram, e o showroom passou a dizer-se. No telemóvel as legendas desapareciam quando não havia largura para a linha inteira. Corrigido. Sobre os carros que apareciam misturados: não conseguimos reproduzir o problema fora do telemóvel, e as três causas que investigámos foram todas descartadas. Por isso esta build escreve, ao lado da velocidade, quantos carros o showroom tem — normalmente palco 1. Se voltar a ver o carro às manchas, uma foto com essa linha visível diz de que lado está o problema. |
| 0.26.2 · build 85 | Corrigido: o showroom mostrava vários carros ao mesmo tempo. Depois de algumas trocas, os carros anteriores ficavam no lugar e apareciam misturados com o escolhido — daí as manchas de cores diferentes no mesmo carro. O palco passa a limpar o que ficou para trás antes de montar o seguinte. E as legendas das barras voltaram. No telemóvel elas desapareciam quando não havia largura suficiente para a linha inteira. |
| 0.26.1 · build 84 | Cada carro mostra as suas cinco barras, abaixo dele. Aceleração, velocidade, curva, tinta e o quanto o carro se solta — na cor do próprio carro, para se lerem de relance. Elas mudam quando você troca de carro e ficam quietas quando você mexe num ajuste, porque descrevem o carro e não o que você lhe está a fazer. Corrigido: na build anterior as barras tapavam metade do carro no telemóvel. Agora ocupam só um canto, sobre um fundo escuro. |
| 0.26.0 · build 83 | Vinte carros, e cinco barras para os comparar. A frota passou de três para vinte: cinco carros da era dos jogos de rua e doze inspirados nos que correm drift de competição. Cada um leva as cotas reais do veículo que o inspirou — distância entre eixos, bitola, roda, peso, força — porque é daí que sai a diferença no asfalto. Ainda são caixas com rodas; a forma vem depois. As barras são medidas, não opinião. Aceleração, velocidade, curva, tinta e o quanto o carro se solta. Todas calculadas a partir do próprio carro. Duas que você talvez esperasse não estão lá: travagem, porque os travões de todos os carros já excedem o que os pneus aguentam e a barra seria igual em toda a frota, e o 0‑100, que dava o mesmo valor em catorze dos vinte pela mesma razão — por isso a aceleração passou a ser medida até aos 150. Os carros de competição não são para todos. Alguns têm seis vezes mais força do que os pneus seguram. Nos nossos testes automáticos, nenhum deles completa uma volta sozinho — o que dá uma ideia do que eles pedem das mãos. As ajudas de condução da build anterior continuam onde estavam, na pausa em AJUDAS, e continuam desligadas por omissão. |
| 0.25.0 · build 82 | O acelerador deixou de rodar o carro na saída da curva. A queixa era que o acelerador é um botão e a traseira sai sozinha. Medimos, e não era na arrancada: ali o nariz não desvia um grau. Era na saída da curva — com o volante a meio e o dedo no fundo, o carro girava 167°. Agora gira 2,6°, e continua a ser possível soltar a traseira de propósito com volante e pedal, sem freio de mão. O assistente de direção estava a tirar-lhe o volante das mãos. Quando você contra-esterçava a fundo, ele devolvia ao carro menos de um décimo do que você pediu. Agora ele dá uma referência e você soma por cima dela. Nada disto vem ligado. É uma build de teste: os interruptores estão na pausa, em AJUDAS, um por camada, e há BASE DE TESTE e PUBLICADO para trocar entre os dois carros num toque. O canto do painel mostra um código curto da combinação — se algo parecer estranho, é esse código que diz em que configuração você estava. A física do carro não mudou. O que mudou é o que acontece ao seu comando entre o dedo e o carro. |
| 0.24.12 · build 81 | A câmera parou de tremer, e os bots pararam de encalhar. A câmera tremia só no multiplayer. O alvo é que andava aos degraus: a simulação corre a passo fixo e a tela ao ritmo do aparelho, e no treino é o motor de física que desenha os quadros do meio. Numa partida esse desenho não acontecia, então o carro saltava um tique inteiro de cada vez. Medido: os quadros andavam de 0 a 167 mm; agora andam 139 mm cada, por igual. Os bots da arena saíam do asfalto e ficavam presos. O chão da arena sabia onde o asfalto acaba — é de lá que tira a aderência menor do run-off — mas não dizia, e o bot lia pista até o muro. Em dez minutos ele andava 152 m e passava quase todo o tempo parado fora do asfalto. Agora anda 6 491 m sem sair uma vez. Nada mudou na física do carro nem na câmera do modo solo. |
| 0.24.11 · build 80 | O multiplayer voltou, e agora tem com quem jogar. Cliente e servidor voltaram a falar a mesma língua. Durante três versões o servidor publicado era antigo demais para entender o carro que viajava no aperto de mão, e recusava a conexão na entrada. Foi publicado a partir do mesmo commit que esta build. Você nunca entra sozinho. Ao entrar numa sala, um bot senta-se com você. Ele cede a vaga assim que uma pessoa chega — mas se a corrida já começou, fica até ao fim, porque perder o adversário no meio é pior. E há um botão Adicionar bots no lobby, que soma um de cada vez até encher a sala. A pista decide quantos cabem. Um percurso de drift é uma batalha entre dois, e passou a ter dois lugares em vez dos oito que o lançador dava a toda a gente. A arena continua com oito. |
| 0.24.10 · build 79 | Os botões de física estavam fora da tela outra vez. A build 78 paginou o painel e ainda assim três das cinco fileiras de botões ficavam abaixo da borda inferior — TRANSF, BATENTE, GUINADA e FISICA PADRAO continuavam inalcançáveis. A página espalhava os próprios filhos pela altura toda e empurrava a grade para fora. O teste automático passava. Ele somava as alturas declaradas, e as alturas declaradas estavam certas; o que não as obedecia era o layout. Foi encontrado rodando o jogo e fotografando a tela — agora o harness de captura tem uma sequência que fotografa cada página da pausa, e existe um teste para a flag específica que causou isto. Nada mudou na física em relação à build 78. Esta é a build em que dá para chegar aos ajustes dela. Continua sendo build de validação: o multiplayer não entra em sala. Veja a nota do download. |
| 0.24.9 · build 78 | Os controles de teste voltaram para dentro da tela. Metade do painel estava desenhada abaixo do aparelho. Na build anterior os ajustes de física existiam, respondiam ao toque e estavam fora do alcance do dedo: o painel somava mais de duas telas de altura numa coluna de uma. Agora são três páginas — QUADRO, FISICA e CARRO — com um seletor no topo. Os campos de resistência, aliás, já estavam fora da tela desde que nasceram. A frente do carro estava arrastando quase tudo que a traseira empurra. Medido num drift de quarenta graus: o eixo dianteiro carrega metade do peso, produz 1902 N de arrasto contra 2219 N de empuxo traseiro, e o pneu da frente está varrendo a setenta e dois graus em vez de rolar. Sobravam 353 N para sustentar o drift — que é exatamente a sensação de "só consigo manter ângulos curtos dosando muito o acelerador". Faltava a carga ir para trás quando você acelera. Nenhum carro deste jogo aliviava a frente com o pé no fundo. Agora existe o botão TRANSF: com ele em 1,0 a frente cai para 41 % da carga, o arrasto cai, o empuxo traseiro sobe, e o que sobra para sustentar o drift vai de 353 N para 904 N. Vem desligado — é experimento, e quem decide é o teste no telefone. Continua sendo build de validação: o multiplayer não entra em sala. Veja a nota do download. |
| 0.24.8 · build 77 | O carro já vem montado, e a física virou um painel de botões. O carro que você recebe agora é um carro de drift. Kit de ângulo, bitola alargada, caster no máximo e três graus de cambagem negativa já vêm instalados — antes era preciso achar a tela de tuning para montar tudo isso à mão. Medido no simulador, com o carro nascendo de lado: o carro de fábrica dá 0,22 s antes de escapar, e este dá 0,74 s. Três vezes e meia mais tempo para reagir. Quem prefere o de fábrica desmonta peça por peça na tela de tuning, onde cada régua continua sendo medida a partir dele. Dez botões de física dentro da pausa, em Treino. Na coluna da esquerda da tela de pausa, embaixo dos números de desempenho: sensibilidade à carga, transferência dianteira, platô e queda do pneu, aderência de deslizamento, atrito, bloqueio de diferencial, queda longitudinal, rastro pneumático e inércia de guinada. Cada toque avança uma posição, verde é o que o jogo publica, vermelho é o que você mexeu, e a linha fisica em cima resume o que está valendo para você conseguir relatar junto com o que sentiu. FISICA PADRAO devolve tudo. Nada disso é salvo e nada disso vale em partida — são medições, não configurações. O diferencial existe pela primeira vez. As duas rodas de trás sempre receberam torque igual, que é o comportamento de um diferencial aberto; agora dá para travá-lo, mandando torque para a roda que está mais devagar, como faz um autoblocante de verdade. Nas medições ele não faz o carro dar mais tempo, mas faz ele girar bem mais: o ângulo de pico sobe de 94° para 115° no Japan e de 100° para 126° no American. Continua sendo build de validação: o multiplayer não entra em sala. Veja a nota do download. |
| 0.24.7 · build 76 | O carro dá mais tempo para você reagir. O pneu perdia força demais ao deslizar. Quando a traseira escorrega, a aderência dela cai — e caía até quatro quintos, o que deixava o eixo sem nada com que resistir à rotação. Subindo para nove décimos, o tempo que você tem para agir com o carro já de lado quase dobrou, e o American, que rodava sempre na entrada comprometida, parou de rodar. Parece contraintuitivo que menos queda dê mais estabilidade, e não é: a queda tira força do pneu, e tirar demais tira também o que segurava o carro. O volante voltava tarde quando você corrigia. O limite de esterço só saía da frente depois que o carro já estava visivelmente torto. Numa gravação real, no instante em que o jogador começou a corrigir, os quatro pneus já estavam no limite e puxando dois g — e o limite ainda estava segurando: ele pediu 88 % de volante e recebeu 21 %. Agora o limite sai da frente também quando os pneus estão saturados, não só quando o corpo está de lado. Continua sendo build de validação: o multiplayer não entra em sala. Veja a nota do download. |
| 0.24.6 · build 75 | O carro deixou de exigir cirurgia. O eixo largava de uma vez. Cada roda carregava um quarto do carro o tempo todo — curva nenhuma movia peso para o lado de fora. Com carga igual, as duas rodas de um eixo chegam ao limite no mesmo instante e o eixo larga inteiro: não é derrapagem, é interruptor. Não havia aviso nenhum entre "colado" e "rodando", e era daí que vinha a sensação de que corrigir o traçado era punido. Agora a carga atravessa o carro numa curva — a 0,95 g a roda de fora carrega quatro vezes o que a de dentro carrega — e o pneu passou a dar menos força por newton conforme os newtons se acumulam. A roda de dentro acaba antes da de fora, o eixo cede aos poucos e existe uma faixa para reagir. Fim da chicotada. Três assistentes soltavam de uma vez um valor que vinham segurando: o contra-esterço represado quando o carro começava a escorregar, o teto de esterço ao abrir, e o acelerador ao sair da derrapagem. Nos três casos o carro se mexia sozinho com a sua mão parada. Nenhum se mexe mais em degrau. O arco de curva encurtou. Girar o volante até o fim abria a curva: 25,2 m no batente contra 20,5 m com um quarto de esterço. O carro agora entrega o ângulo que os pneus conseguem usar — 17 % de raio a menos a 50 e a 80 km/h, sem tocar em aderência. Cada carro é do próprio tamanho. Um único modelo representava os três: a Fureca, de 3,45 m, era desenhada como um cupê de 4,20 m com outra pintura. Altura, entre-eixos e bitola agora valem, e o carro escolhido é o que aparece no treino — pintado com a cor dele, que antes nunca era aplicada. Controle de tração, desligado por padrão, nos controles. Ele devolve aderência lateral em curva com o pé embaixo e custa quase metade da sustentação de um drift — está disponível para quem quiser trocar uma coisa pela outra. Continua sendo build de validação: o multiplayer não entra em sala. Veja a nota do download. |
| 0.24.5 · build 74 | Dois defeitos que só apareciam no celular. A roda que fugia do carro. A tela de preparação redesenha o carro a cada movimento de controle, e o afastamento da bitola estava sendo somado à posição em que a roda já estava em vez de à de fábrica. Arrastar o controle caminhava as rodas dianteiras para fora até elas encostarem na lente — o vulto preto atravessando a imagem. Quarenta redesenhos moviam a roda 1,2 metro; uma sessão de ajustes, muito mais. Nunca apareceu no computador porque uma captura abre a página uma vez e não arrasta nada. Os controles por cima dos menus. Direção, acelerador, freio e freio de mão eram desenhados sobre a tela inicial, sobre a preparação e sobre todos os menus, junto com a barra de placar. A única coisa que decidia se eles apareciam era o aparelho ter tela de toque — nenhuma tela jamais os escondeu. Agora somem em qualquer menu, e pausa conta como menu: um polegar indo para "Continuar" não pode achar o freio de mão embaixo. Continua sendo build de validação: o multiplayer não entra em sala. Veja a nota do download. |
| 0.24.4 · build 73 | Dá para ver o que a preparação faz. A tela de preparar o carro mostrava um
carro sem rodas — elas estavam lá, pretas sobre um fundo preto, porque borracha é a única
parte de um carro que não tem cor para devolver. Agora o carro aparece contra um fundo
claro, inteiro no quadro, e as rodas mostram o ajuste: viradas no ângulo que aquele
setup realmente alcança, inclinadas na cambagem que você escolheu e afastadas pela bitola
que você comprou. Arrastar o controle move a roda. E cada carro tem a sua cor, para dizer de longe qual está carregado: a Fureca é laranja, o Japan é branco e o American é azul. Continua sendo build de validação: o multiplayer não entra em sala. Veja a nota do download. |
| 0.24.3 · build 72 | A direção passou a ser assistida como nos jogos que já fizeram isso. Em
Controles agora existe assistência de contra-esterço em desligada, fraca ou
forte. Ligada, quando o carro sai de lado o volante vai sozinho para onde a dianteira está
de fato indo — e o seu polegar acrescenta o resto por cima. Numa derrapagem o ângulo certo
não é opinião: é a direção em que o carro está viajando, e pedir para um botão acertar
sessenta graus disso nunca foi razoável. E cinco ajustes finos atrás de Avançado, com os nomes dos jogos de onde vieram: curva do controle (gamma), velocidade do esterço, sensibilidade à velocidade, alvo de deriva e resposta do contra-esterço. Os padrões são os que essas comunidades recomendam, não chutes nossos. Uma diferença de propósito: a sensibilidade à velocidade solta quando o carro está de lado. Ela existe para o tranco em linha reta em alta; num drift o ângulo grande é o ponto, e tirar batente ali tornaria toda entrada impossível. Nenhum dos jogos de onde copiamos isso é jogo de drift. A tela de Controles foi refeita em linhas, no mesmo formato da de preparação. Continua sendo build de validação: o multiplayer não entra em sala. Veja a nota do download. |
| 0.24.2 · build 71 | Direção que dá para segurar num ângulo, e uma dianteira que dá para preparar.
O esterço deixou de ser o botão: agora ele constrói o ângulo em vez de ser o ângulo. Em
Controles, na tela inicial, dá para escolher entre uma área analógica sob o
polegar — o ângulo é o quanto o dedo andou desde onde encostou — e o modo digital,
em que cada toque acrescenta um pedaço de esterço e ele fica; segurar leva ao batente. Kit de ângulo, e o que vem junto com ele num carro de verdade. Instalar o kit quase dobra o que a cremalheira pede — mas a roda encontra a cava antes disso, e é a bitola dianteira que compra a folga. Kit sem alargar não usa o que comprou, e a tela diz isso em amarelo. Cambagem e caster entraram como ajustes: esterçar não deita as duas rodas do mesmo jeito — o caster deita a de fora para dentro, que é a que carrega o carro, e joga a de dentro fora. Ele também transfere carga para a roda externa quando o volante vira, que é o que faz a dianteira morder no batente. A tela de preparação virou a porta de entrada. Ela mostra o carro em três quartos, e o carro escolhido ali é o que vai para a pista — antes ela escolhia a regulagem e nada escolhia o carro. Esta é uma build de validação: o multiplayer não entra em sala. Veja a nota do download. |
| 0.24.1 · build 70 | Zebras e placas de frenagem nas três pistas de drift. As curvas agora se
anunciam: faixa listrada na borda de dentro de cada uma, e placas a 100 e a 50 metros
antes — nos dois lados da pista, porque de que lado fica o vértice depende da curva. Não é só enfeite. A zebra tem 10% menos aderência que o asfalto e é um pouco mais dura de rolar, então pisar nela custa. E tinta não gruda em zebra: o chão que dá para reclamar em cada percurso encolheu pelo tanto de zebra que ele ganhou. Onde elas ficam não foi desenhado à mão, foi derivado da própria estrada: toda curva com menos de trinta metros de raio ganha uma. No Aspar, que é o mais sinuoso dos três, isso dá seis zebras; no Jarama, que é quase todo reto, duas. Atualize os dois aparelhos. As pistas mudaram de conteúdo, e uma partida entre um aparelho novo e um antigo é recusada ao entrar — os dois estariam pisando em pistas diferentes. |
| 0.24.0 · build 69 | Três pistas novas e uma arena quatro vezes maior de lado. As pistas são trechos de prova do Drift Spain Series — Jarama, Ricardo Tormo e Aspar — e não são voltas: são pedaços de circuito, dirigidos de uma ponta à outra. Por isso as salas delas são de dois jogadores, que é o formato de uma batalha. Medem 592, 673 e 770 metros. A arena passou de 51 para 205 metros de lado: dezesseis vezes o chão, com o quadrado que pontua indo de 40 para 160 m. A tinta continua sendo contada em quadradinhos de dez centímetros, então o que mudou foi o tamanho do lugar e não a precisão dele. O Campo de provas, a Bacia e o Circuito saíram da lista. Esta versão não conversa com nenhuma anterior — atualize os dois aparelhos. A tinta da arena passou a ser guardada de um jeito que uma versão antiga leria em lugares errados. É uma versão para olhar, de novo. Nenhuma partida foi jogada nas três pistas novas nem na arena grande antes de publicar: os testes conferem a conta, não a imagem. Se algo aparecer torto, é aí. |
| 0.23.6 · build 68 | Na 0.23.5 a tinta da pista não aparecia. Ela estava sendo contada e chegando ao
aparelho — o placar subia — e simplesmente não era desenhada. Três defeitos ao mesmo tempo,
cada um bastando sozinho para apagar tudo. O primeiro: a pintura continuava sendo recortada contra um quadrado de quarenta metros no meio do mapa, que é a forma da arena. O RBC fica a mais de cem metros dali, então não sobrava nada. O segundo: a superfície nova estava virada para baixo, o que a deixa correta, texturizada e invisível de qualquer câmera acima da pista. O terceiro só acontecia no aparelho — o pedaço do shader que desenha a fita não era incluído no APK, embora funcionasse no computador. Os dois primeiros passaram a ter teste. O terceiro é invisível a qualquer teste, por construção, e fica registrado no código para não voltar. Continua sendo uma versão para olhar. O que ainda não dá para garantir sem ver: se a tinta sai do lado certo da pista e se as emendas — a volta é guardada em três pedaços — aparecem como linhas atravessando o asfalto. Rede e servidor compatíveis com a 0.23.5, e com nenhuma anterior. |
| 0.23.5 · build 67 | A tinta na pista deixou de sair em degraus. No RBC ela era desenhada em quadrados
de um metro — mais largos que meio carro — porque o tabuleiro onde a tinta é contada tinha
que cobrir o mapa inteiro, e o mapa é quase todo grama. Agora ele acompanha a estrada, e
cada quadradinho voltou a ter dez centímetros, que é o que a arena sempre teve. O carro
passou de dois quadradinhos de largura para dezenove. O metro quadrado do placar melhorou junto: contra uma medição exata da mesma passagem, o erro caiu de 0,45 % para 0,03 %. Uma diferença de regra: o que conta agora é o traçado. As ligações do RBC — o acesso e os três atalhos, que somam cerca de um sexto do asfalto do lugar — não pontuam mais. Pintar lá não vale nada. Esta é uma versão para olhar. A pintura de pista é desenhada de um jeito novo e ninguém a viu ainda numa partida de verdade — os testes conferem a conta, não a imagem. Se algo aparecer espelhado, deslocado, ou com uma emenda atravessando a pista, é isso. Rede e servidor não são compatíveis com as versões anteriores. |
| 0.23.4 · build 66 | Nada mudou na tela, e isso é de propósito. Se você está na 0.23.3, esta versão
joga exatamente igual — atualize só para os dois aparelhos ficarem na mesma, ou fique onde
está. O que mudou está embaixo do jogo. O território — o tabuleiro invisível onde a tinta é contada — deixou de ser obrigatoriamente um quadrado e passou a poder ter a forma da estrada. É o que permite a próxima versão pintar a pista com o traço fino que a arena sempre teve, em vez do degrau de um metro que ela tem hoje. Como é uma troca de fundação e não de comportamento, a garantia é que o resultado não se moveu: o território é remontado peça por peça e conferido contra o original, e essa conferência é o que autoriza a mudança a existir. Rede e servidor continuam compatíveis com toda a linha 0.23. |
| 0.23.3 · build 65 | O metro quadrado do placar estava cem vezes menor do que o chão pintado, e o rastro
saía quebrado. Os dois defeitos eram o mesmo: a célula do território deixou de ter
10 cm quando as pistas chegaram — no RBC ela tem 1 m — e as coisas escritas para 10 cm não
foram avisadas. O aparelho desenhava a pintura no tabuleiro da pista e a media no da arena, e como as células chegam por número e caem nos lugares certos, o desenho ficava certo enquanto todo número tirado dali saía errado. Uma volta que cobriu 1.320 m² de asfalto aparecia como 13,2 m². Pelo mesmo motivo o rastro do seu próprio carro só aparecia quando o servidor respondia, em vez de sair debaixo do carro na hora. O risco quebrado era o desgaste da borda: ele desloca a beirada da tinta em uma fração da célula, o que na arena são dois centímetros e na pista eram vinte — e onde o rastro tinha a largura de uma célula só, apagava. Agora o desgaste acompanha o tamanho da célula, e em pista grossa quase não aparece: um risco sólido vale mais que um quebrado e enfeitado. A pintura na pista continua grossa, com a beirada em degraus de um metro. Isso é a resolução do território, e a correção dela é a próxima. Rede e servidor continuam compatíveis com a 0.23.0, a 0.23.1 e a 0.23.2. |
| 0.23.2 · build 64 | Criar sala funciona. Escolher a pista devolvia o jogador ao lobby sem sala e sem
aviso — e o servidor estava certo o tempo todo. Criar uma sala passava pelo lobby antes de
pedi-la, mas chegar no lobby já pergunta ao servidor quais salas estão abertas, então o
pedido da sala chegava enquanto o primeiro ainda estava no ar e era recusado. O aviso da
recusa ia para a linha de status do lobby e era apagado um instante depois pela resposta da
própria lista de salas, o que não deixava nem mensagem para trás. Agora escolher a pista leva direto para a tela de espera — que é onde a coisa acontece, já que há um servidor para preparar — e, se algo der errado, o motivo fica na tela com o Cancelar como saída. Conversa normalmente com a 0.23.0 e a 0.23.1, mas só esta consegue abrir uma sala. |
| 0.23.1 · build 63 | A tela de escolha de pista estava quebrada, e a correção é esta versão inteira.
Com a quinta pista o conteúdo passou a ser mais alto do que a tela, e como a lista era
centralizada ela transbordava pelas duas pontas: o título saía por cima, o primeiro botão
vinha cortado e o Voltar ficava metade fora embaixo. O RBC Racing ficava
abaixo da dobra. Agora as cinco pistas cabem inteiras, com o resumo dentro do próprio
botão, e a lista rola sozinha quando houver mais. A escolha de pista também voltou a ser desenhada sobre a arte do jogo — ela era o único menu que não era, então seus botões flutuavam sobre a arena com o placar da partida contando zero metro quadrado por trás. E o título agora diz para que serve a escolha: “Escolha a pista da sala” ao criar uma sala, contra “do treino” no treino — antes os dois caminhos diziam a mesma coisa. Dois defeitos na criação de salas também foram consertados: sair da lista de pistas pelo Voltar deixava o treino seguinte tentando abrir uma sala; e apertar Atualizar e em seguida Criar sala não fazia nada, porque o segundo toque era descartado em silêncio enquanto o primeiro ainda estava no ar. Conversa normalmente com a 0.23.0: nada mudou no protocolo. |
| 0.23.0 · build 62 | O kartódromo RBC Racing entrou no jogo, e agora dá para escolher a pista ao criar
uma sala. Em Multiplayer ▸ Criar sala aparece a lista de pistas antes de a sala
existir — a escolha vale para a partida inteira, porque o servidor é ligado já com ela.
A pintura de território passou a funcionar fora da arena: antes ela só existia lá,
por um limite de tamanho da grade, e agora acompanha a pista escolhida. Também: a câmera passou a olhar à frente do carro em vez de segui-lo, então acelerar deixou de esconder a curva que vem; e apareceram placas de frenagem pintadas na borda, amarelas a cem metros e laranjas a cinquenta antes de cada curva que as comporta. Esta versão não conversa com as anteriores. Atualize os dois aparelhos. |
| 0.22.0 · build 61 | O treino ganhou um circuito — a primeira pista com traçado, e não só um pátio.
Em Treino ▸ Escolha a pista agora existe Circuito: quatro
centenas de metros de quadra com uma pista fechada desenhada dentro, zebras vermelhas nas
curvas, mato dos dois lados e contenção em volta de tudo. O chão passou a importar para o
carro: no asfalto ele anda como sempre andou, na zebra chacoalha um pouco, e no mato perde
aderência e ganha arrasto — sair da pista agora custa a volta, em vez de só render um
deslize bonito. Bater na contenção devolve o carro para dentro. A arena da partida não mudou em nada: mesmos limites, mesma pintura, mesma pontuação. |
| 0.21.5 · build 58 | Os três números que fazem o carro perder velocidade viraram campos editáveis. Na tela de pausa do treino, o quadro "RESISTENCIA (TREINO)" deixa digitar o atrito de rolamento, o arrasto do ar e o downforce direto no carro que você está guiando — sem precisar recompilar nada, o efeito aparece no próprio treino. É só um instrumento de ajuste: os valores de fábrica continuam os mesmos, e não aparece dentro de uma partida. |
| 0.21.4 · build 57 | O carro parou de andar para sempre depois de acelerar. Sem nada opondo o movimento em linha reta, ele atingia uma velocidade e ficava nela indefinidamente ao soltar o acelerador. Agora existe atrito de rolamento e resistência do ar: soltar o acelerador reduz a velocidade aos poucos, como um carro real perdendo embalo. Em alta velocidade o ar também empurra o carro contra o chão, dando mais aderência aos pneus. |
| 0.21.3 · build 56 | O carro passou a andar reto quando você não pede outra coisa. Com o acelerador no fundo e sem tocar na direção, ele saía de rumo sozinho e acabava rodando. Eram quatro coisas empilhadas, cada uma escondendo a seguinte: um carro parado lia poeira numérica como se estivesse derrapando de lado e balançava sobre as próprias molas; a suspensão, único pedaço do carro que se mexia para cima e para baixo, transformava esse balanço em peso desigual sobre as rodas; o pneu, depois de perder aderência, premiava a roda que girasse mais rápido que a outra; e as pistas de teste estavam inteiras cobertas pela grama-escapatória da arena, de modo que o carro andava o tempo todo com um terço da aderência. As rodas ainda patinam, o motor ainda bate no limitador, e com direção e potência a traseira ainda sai. |
| 0.21.2 · build 55 | As três pistas passaram a ser três lugares. Elas carregavam o mesmo mapa: a escolha do jogador não chegava ao outro lado — todo botão pedia uma pista sem nome — e, mesmo quando chegasse, só o chão invisível mudava de tamanho. O que se via continuava sendo a arena, com o meio-fio e a parede de pneus no mesmo lugar, e o carro atravessava a parede. Agora a pista de teste é um pátio de asfalto do tamanho que promete, sem a marcação da arena, que não tem o que marcar ali. A fumaça também parou de nascer no meio do carro: ela era acesa antes de ser levada até o pneu. |
| 0.21.1 · build 54 | O treino passou a mostrar o carro, a pista e só a pista. O painel era exibido durante o treino e nunca perguntava nada ao carro, então ficava parado na primeira marcha a viagem inteira — o câmbio estava funcionando o tempo todo, faltava alguém perguntar. A lista de pistas existia e era inalcançável no celular, porque tinha sido construída no painel de desenvolvedor, que só aparece no computador; agora ela é a escolha que aparece ao entrar no treino. E a tinta parou de aparecer na grama fora da área que pontua: lá nunca contou nada, e enquanto o entorno era asfalto isso não incomodava ninguém. |
| 0.21.0 · build 53 | O dinamômetro virou uma bancada de verdade. Ele encerrava a medição quando a velocidade parava de subir, que é a pergunta certa para uma estrada e a errada para um banco de rolos: sem resistência do ar nenhum carro para de acelerar sozinho — ele fica sem giro. Agora a medição termina onde a transmissão termina, com a última marcha no limitador, e a tela mostra também a velocidade que aquela relação alcança na teoria. A diferença entre as duas é o pneu escorregando, e é a única coisa que pode separá-las. |
| 0.20.7 · build 52 | A parede de pneus ganhou o tamanho certo. Os pneus passaram a ter a medida da roda do carro com um quinto a mais, em vez de espremidos para caber no vão que o muro reservava — o chão continua para além da plataforma agora, então a parede pode ser do tamanho que deve e apoiar na grama. E cada pneu está torto do seu próprio jeito dentro da pilha, que é como uma pilha de pneus soltos realmente se comporta. |
| 0.20.6 · build 51 | O mundo não termina mais na barreira, e o muro virou parede de pneus. O chão continua para além da plataforma, então a arena deixou de parecer uma bandeja. O muro de concreto deu lugar a pilhas de pneu — cada uma torta, deslocada e suja do seu próprio jeito — e as quatro pilhas decorativas dos cantos saíram. A parede também passou a amortecer: ela devolve menos do impacto e arrasta o carro que raspa nela, como pneu faz e concreto não. |
| 0.20.5 · build 50 | O asfalto virou polígonos. O grão era um campo contínuo, e um campo contínuo tem resolução: de perto não sobra nada além de borrão, que é o que fazia a pista parecer uma imagem ampliada. Agora cada triângulo de uma malha calculada recebe um tom chapado próprio, no mesmo idioma facetado do resto do jogo — e sem imagem nenhuma por baixo, então não há distância em que ele perca a forma. |
| 0.20.4 · build 49 | A arena inteira foi redesenhada por cálculo, sem textura repetida. A área de escape virou grama com folhas espalhadas uma a uma; a zebra virou um anel contínuo de quinas arredondadas cujas listras são desenhadas por aritmética, e por isso ficam nítidas em vez de desbotarem — a textura anterior nunca chegou a aparecer, porque a malha não tinha coordenada onde pousá-la. O asfalto passou a ser uma cor só com grão fino e marcas de borracha em arco. A fronteira que pontua também foi arredondada junto, para que o desenho e a regra continuem sendo a mesma coisa. |
| 0.20.2 · build 47 | A área de escape virou grama e a zebra passou a desenhar listra. O escape era o asfalto da pista clareado em 5%, o que fazia pista e escape lerem como um campo cinza só. A zebra nunca desenhou listra nenhuma: a malha não tem coordenada de textura, então a imagem vermelho-e-branca não tinha onde pousar e saía um borrão cinza. Agora as duas superfícies são calculadas a partir da posição no mundo, sem imagem repetida. O APK ficou menor. |
| 0.19.0 · build 46 | Preparar o carro virou uma opção da tela inicial. Publicado a partir de uma linha de trabalho separada, que não está nesta versão. |
| 0.18.0 · build 45 | O carro ganhou marchas. Publicado a partir da mesma linha de trabalho separada, e também ausente daqui. |
| 0.17.19 · build 44 | A fumaça agora dura 2 segundos e foi reduzida em baixa velocidade e nas pequenas
correções de direção. O efeito permanece forte no ápice do drift, mas deixa de formar
nuvens durante manobras lentas ou quando o carro segue praticamente alinhado. No multiplayer, a tonalidade azul ou vermelha da equipe ficou um pouco mais intensa para ser reconhecida com maior facilidade sem perder a aparência clara da fumaça. |
| 0.17.18 · build 43 | A calibração padrão da fumaça agora usa tamanho Base, duração de 3 segundos e
quantidade +50%. Rodas alinhadas deixam de soltar fumaça durante a aceleração normal;
o efeito responde ao deslizamento lateral do drift e ao pneu travado ou arrastado. A fumaça também chegou ao multiplayer, estimada a partir do movimento já replicado, sem aumentar o tráfego da partida. Cada nuvem recebe uma tonalidade leve da cor da equipe, azul ou vermelha, preservando o acabamento low-poly sólido e opaco. |
| 0.17.17 · build 42 | A fumaça virou um volume low-poly sólido, opaco e maior. As nuvens permanecem por
mais tempo e agora reconhecem a derrapagem real dos pneus, inclusive power drifts sem freio
ou freio de mão pressionado. No menu de pausa, FUMACA QTD controla a quantidade e FUMACA TAM controla o tamanho de forma independente. Os dois alternam entre -50%, Base, +50%, +100% e +200%; TUDO PADRAO restaura ambos. A telemetria F1 também mostra a intensidade de fumaça e a potência dissipada em cada roda. |
| 0.17.16 · build 41 | A quantidade de fumaça agora pode ser comparada pelo menu de pausa. O botão FUMACA alterna entre a densidade Base e os níveis +50%, +100% e +200%. A escolha muda somente o número de partículas: o contato dos pneus, a derrapagem, a física do carro, a tinta e a rede continuam iguais. TUDO PADRAO devolve o efeito à densidade Base. |
| 0.17.15 · build 40 | O Japan ganhou o acabamento low-poly definitivo. A carroceria agora mostra os
planos da própria malha, com materiais foscos e sem o brilho contínuo de um render
automotivo. Rodas, vidro, luzes e acabamentos escuros continuam separados para preservar
a leitura do modelo; as rodas ficaram 8% maiores para ocupar melhor os para-lamas. Os pneus agora soltam fumaça durante derrapagens. O efeito nasce do contato e do deslizamento que a física já calcula, recebe um toque da cor da equipe e desaparece sem interferir no carro, na tinta ou no placar. Esta atualização é visual: física, regras, rede e servidor continuam compatíveis com a versão anterior. |
| 0.17.14 · build 39 | Os carros da partida também são o modelo agora, e cada time tem a sua cor: azul
e vermelho. Na versão anterior só o carro do Treino tinha trocado — quem aprendia no carro
modelado entrava numa partida cheia de retângulos. Correção: o jogo estava calculando a partida com o carro errado. O celular previa o movimento e carimbava a tinta usando as medidas da Fureca, enquanto o servidor — que é quem decide o território — sempre rodou o Japan. A faixa pintada que o seu aparelho desenhava era menor que a que o servidor te creditava, e a diferença voltava corrigida uma fração de segundo depois. O placar nunca esteve errado; o desenho estava. Como efeito visível, as faixas de tinta no multiplayer ficaram mais largas — esse é o tamanho certo. |
| 0.17.13 · build 38 | O carro deixou de ser um retângulo. O Japan agora é o modelo 3D, e é só isso
que mudou: a física, a pintura, o placar e a conversa com o servidor são exatamente os
mesmos da versão anterior. A carroceria foi ajustada ao entre-eixos e à bitola que a
simulação já usava, em vez de o contrário — as quatro rodas são conduzidas pelas mesmas
poses de suspensão, esterço e giro que o jogo calcula, então o que aparece na tela é a
posição que o carro realmente ocupa. A caixa de largada não tem mais dois carros. Uma cópia solta do modelo tinha ficado para trás na cena, parada a 24 cm da largada, e aparecia ao lado do carro dirigido. O APK cresceu de 37 para 40 MB por causa da malha do carro. |
| 0.17.12 · build 37 | O rastro não some mais atrás do carro. A pintura do jogador e a confirmação do
servidor estavam sendo tratadas como duas camadas separadas, e a confirmação é sempre uma
fotografia de um instante já passado — não contém o chão que o carro cobriu desde então.
Ao chegar, ela apagava justamente a tinta debaixo e atrás do carro, que reaparecia uma
fração de segundo depois. Agora cada pedaço de tinta sabe de quando é: o que você acabou
de pintar tem precedência até o servidor efetivamente responder por aquele chão, e nunca
além disso — quem decide o território continua sendo o servidor. A física é 60 passos por segundo, ponto. O teste que comparava 60 com 100 acabou e foi conclusivo: 100 deixava o Redmi Note 11 Pro injogável e 60 crava a taxa de quadros nos dois aparelhos. O interruptor que alternava entre os dois saiu do painel de diagnóstico — depois que o padrão virou 60, ele passou a oferecer uma opção que não existia mais. |
| 0.17.11 · build 36 | Correção: manchas vermelhas apareciam no rastro azul. Na versão anterior o time
azul desenhava a própria tinta na cor errada enquanto ela ainda não tinha sido confirmada
pelo servidor. Quase sempre isso ficava invisível, porque a confirmação chegava logo em
seguida e pintava por cima — mas onde o carro passava por cima do próprio rastro não há
nada a confirmar, e a mancha errada ficava lá para o resto da partida. Era mais visível
justamente nos cruzamentos, e numa sala solo, onde não existe adversário para justificar
a cor. O placar nunca esteve errado: quem decide o território é o servidor, e isso era só o desenho. |
| 0.17.10 · build 35 | A tinta do oponente não aparece mais antes do carro que a produziu. O carro
remoto é desenhado deliberadamente atrás do servidor — é o único jeito de interpolar entre
dois pacotes que já chegaram —, mas a pintura estava sendo mostrada sem atraso nenhum. O
chão acendia cerca de 100 ms antes de o oponente chegar nele, e tinta não pode preceder um
carro. Agora cada coisa é apresentada no relógio de quem a produziu: o carro remoto e a tinta remota juntos, e a sua própria tinta continua imediata, prevista a partir da mesma posição em que o seu carro é desenhado. Ela é apenas visual — quem decide o território continua sendo o servidor, e quando a resposta oficial chega a previsão dá lugar a ela. Os snapshots dobraram de 20 para 40 por segundo, o que corta o atraso de apresentação dos carros remotos de 100 para 50 ms. A taxa agora é informada pelo servidor no handshake em vez de assumida pelo aparelho. Esta versão exige atualizar os dois lados. O formato da conversa com o servidor mudou, e versões anteriores são recusadas ao entrar na partida. No menu de pausa, o painel de diagnóstico agora mostra o modelo temporal: simulação e snapshots em Hz, o atraso de interpolação, o tick do servidor ao lado do tick de apresentação, e a fila de pintura remota. |
| 0.17.9 · build 34 | O jogo ficou mais leve onde a medição no aparelho mostrou que ele era pesado.
Dez leituras em dois telefones apontaram para uma coisa só: no Redmi, 94 % do tempo de cada
quadro era trabalho proporcional à quantidade de pixels — nem processador, nem quantidade
de objetos. Custo de pintura, por pixel, e alto demais para o aparelho: cerca de trinta
vezes o que aquele chip deveria gastar. A causa eram as texturas de ruído que dão textura à tinta. Elas eram lidas seis vezes por pixel, sem versões reduzidas e sem compressão, repetidas até seis vezes por metro de chão — um padrão de leitura que nenhuma memória de vídeo consegue acelerar. Agora têm as duas coisas. Além disso, chão que ninguém pintou deixou de pagar o cálculo inteiro da tinta: antes, asfalto limpo custava o mesmo que asfalto pintado, e no começo de uma partida isso é a tela toda. A física também estava errada: rodava a 100 passos por segundo enquanto a simulação é definida em 60. Ninguém escolheu 100 — era uma divergência entre dois ajustes — e no Redmi essa diferença sozinha era a fronteira entre jogável e não. Se você ainda estiver usando a escala de renderização reduzida, vale voltar para 1.0 e comparar: o objetivo destas mudanças é que ela não seja mais necessária. |
| 0.17.8 · build 33 | Os números de desempenho e os interruptores de teste passaram para dentro da tela
de pausa. Toque em II no canto superior esquerdo: à esquerda aparecem o custo do
quadro, a divisão entre processador e chip gráfico, e oito botões que desligam partes do
jogo uma a uma. Verde é como o jogo sai de fábrica, vermelho é o que você mexeu. O leitor congela enquanto a pausa está aberta, de propósito — os números que ele mostra são os do último meio segundo dirigindo, não os de um carro parado sob um menu. Por que mudou de lugar: o botão dedicado que existia para isso nunca funcionou em build nenhum. Ele era montado por uma ferramenta que só roda no editor, e a ligação do clique não era gravada no arquivo da cena — no jogo instalado ele desenhava, reagia ao toque e não chamava nada. A tela de pausa é montada pelo próprio jogo, então os botões dela sempre funcionaram. |
| 0.17.7 · build 32 | O botão que abre as ferramentas agora se chama DEV e dá para vê-lo. Ele existia
desde a versão anterior, no canto superior esquerdo abaixo do pause, mas era desenhado com
um ícone de engrenagem que a fonte do jogo não possui — sobrava um quadrado quase
transparente sobre asfalto escuro. Não era um controle difícil de acertar: não havia o que
enxergar. Toque em DEV e depois em EFICIÊNCIA para chegar aos números do quadro e aos interruptores de diagnóstico. |
| 0.17.6 · build 31 | A engrenagem mudou de lugar: agora fica logo abaixo do botão de pause, no canto
superior esquerdo, e no mesmo tamanho dele. Estava com 64 px encostada na quina
superior direita — abaixo do mínimo que o próprio jogo define para um alvo de toque, e
dentro da faixa que o Android reserva para os gestos do sistema. Não dava para abrir no
celular, que é exatamente onde ela tinha acabado de ser liberada. Os painéis que escrevem números também passaram a ter camada própria. Antes, atualizar o contador de quadros obrigava a barra de placar e os controles de toque a se reconstruírem junto, duas vezes por segundo — o medidor cobrava pelo que media. |
| 0.17.5 · build 30 | A engrenagem de desenvolvedor abre no celular, com uma aba nova que mede o
quadro. Toque na engrenagem no canto superior direito e escolha EFICIÊNCIA:
ela diz quanto custa um quadro, como isso se divide entre processador e chip gráfico, e
traz sete interruptores que desligam partes do jogo uma a uma — pintura, decoração da
arena, chão de run-off, HUD do placar, taxa da física e escala de renderização. A ideia é
subtrair: desliga um pedaço, lê o número, liga de volta. Verde é como o jogo sai de
fábrica, vermelho é o que você mexeu. Serve para descobrir por que dois aparelhos entregam desempenhos tão diferentes: seis quadros por segundo num Redmi Note 11 Pro contra vinte e oito num Poco X6 Pro, com o pior quadro de cada meio segundo colado na média nos dois. Isso não é engasgo, é lentidão constante — e é medida de dentro porque de fora não dá: o aparelho não abre depuração por USB sem SIM. Correção junto: as listas de painéis da engrenagem nunca foram salvas na cena, então num jogo instalado ela abria e não mostrava nada. Esteve assim em todas as versões anteriores. |
| 0.17.4 · build 29 | O jogo mostra quadros por segundo e ping no canto da tela. Fica logo abaixo da
engrenagem, e agora aparece também no celular, que é onde o desempenho estava em
dúvida e onde nenhum depurador conseguia chegar. Ao lado da taxa vem o pico: o
quadro mais demorado do último meio segundo, em milissegundos. São dois números e não um
porque a média esconde justamente o que se sente — um jogo pode marcar 60 e engasgar
quatro vezes por segundo sem que a média mude. Em treino o ping aparece como
—, porque não há partida para medir. E o jogo ficou mais leve. O build de Android usava a configuração de renderização do computador: copiava a tela colorida e a profundidade a cada quadro para texturas que nenhum shader deste jogo lê, calculava oclusão de ambiente com um passe extra de cena inteira, e mantinha quatro cascatas de sombra em 2048² com filtro suave — para uma sombra que não existia. A câmera fica a 57 m do carro e o alcance das sombras terminava em 50: o único objeto da arena que projeta sombra caía fora, todo quadro, desde sempre. Medido em desktop, o quadro típico ficou 35 % mais barato (4,5 ms → 2,9 ms). O aparelho também passou a pedir 60 quadros por segundo em vez de aceitar o padrão do Android, que é 30, e a usar o compassamento de quadros do sistema para que eles cheguem em intervalos regulares — irregular incomoda mais que lento. Os downloads encolheram entre 1,5 e 1,7 MB. |
| 0.17.3 · build 28 | A espera no lobby não adianta mais o relógio privado do carro. O controlador
local já existia antes da largada e criava ticks enquanto o servidor continuava no zero.
Ao começar a partida, o servidor guardava aquele número muito alto; depois da primeira
correção, passava a rejeitar todos os comandos reais como antigos. Apertar o acelerador
repetidamente deixava evidente qual estado havia ficado preso. Agora a previsão só começa junto com a simulação oficial. O servidor também só confirma um comando no snapshot quando um passo real da física o consumiu. |
| 0.17.2 · build 27 | Toques rápidos no acelerador não colocam mais o carro local em fast-forward.
Quando um telefone perdia um frame mais longo, a previsão limitava o trabalho daquele
frame, mas guardava o restante para depois. Nos frames seguintes ela executava até oito
passos para cada passo do servidor — uma aceleração brusca que mantinha os dois lados
divergentes. O excedente agora é descartado e medido, igual ao relógio autoritativo. A previsão local também para no instante em que o resultado final chega. O carro fica congelado atrás do placar, mesmo se o acelerador ainda estiver pressionado. |
| 0.17.1 · build 26 | O relógio agora começa no “Já!”, não durante a contagem regressiva. Os cinco
segundos antes da largada voltaram a ser preparação e a partida entrega os dois minutos
completos. O resultado final também não depende mais da sala continuar aberta: o servidor consolida e envia o placar antes de liberar seus recursos, e o aparelho guarda os dados localmente. Assim a tela fica aberta pelo tempo que você quiser e só sai quando você tocar em Voltar ao menu. Além dos metros quadrados, o placar final agora mostra o percentual da arena coberto por cada equipe. |
| 0.17.0 · build 25 | A partida acaba, e alguém ganha. Ela agora dura dois minutos em vez de
cinco — numa arena de 40 × 40 m o chão parava de trocar de dono muito antes do relógio
acabar, e os últimos três minutos eram dois carros passando por cima do que já era
deles. No fim aparece uma tela de resultado: o time que venceu, quanto cada lado cobriu, e quanto cada jogador cobriu, com quem cobriu mais destacado. Vale reparar que esse jogador pode estar no time que perdeu — dá para cobrir mais chão que todo mundo e ainda assim perder, e a tela mostra isso em vez de esconder. A área por jogador conta o chão que você cobriu por último e que o seu time ainda segura no apito final: terreno retomado pelo adversário deixa de ser seu, e um companheiro que passa por cima leva o crédito. Por isso as somas por jogador fecham exatamente com o placar do time. E os carros largam nas caixas listradas. Eles nasciam em cantos opostos da arena — chão pelado, com as duas marcações paradas nas laterais sem uso — e largavam apontados um para o outro pela diagonal, o que fazia toda partida abrir com a mesma batida no meio. Agora cada time larga na sua própria marcação, lado a lado, olhando para o centro. |
| 0.16.0 · build 24 | A tinta virou tinta. O que aparecia no chão era a própria grade que decide o
placar, desenhada direto: quadrados de 10 cm, borda em escada, e o asfalto sumia debaixo da
cor. Agora a pintura tem uma camada só dela, quatro vezes mais fina que a grade, aplicada
com pincel ao longo do caminho que o carro fez — o rastro é contínuo em qualquer
velocidade, a borda é irregular como tinta de verdade, e a textura do asfalto continua
aparecendo por baixo. Quando o rosa passa por cima do azul, o meio da pincelada fica
claramente rosa, sem faixa roxa no meio do caminho. O placar não mudou. Quem é dono de cada pedaço de chão continua sendo decidido pela mesma grade de sempre; o que mudou é só o que você vê, e ele não vale um metro quadrado a mais nem a menos. E a arena estava magenta. No treino, uma superfície da partida em rede era criada sem material, e uma superfície sem material é desenhada com o rosa de erro do motor — 51,2 metros dele, dois centímetros acima do chão, cobrindo a arena inteira. Estava assim desde a 0.15.4. Passou despercebido porque as fotos que o projeto tira de si mesmo para conferir o visual pararam de chegar ao jogo quando o menu entrou na frente dele: vinham fotografando o menu, iguais, desde então. |
| 0.15.6 · build 23 | Ré. Segure o freio depois que o carro parar e ele anda para trás. O acelerador sempre puxa para frente, então é ele que tira da ré — e o freio de mão puxado impede a ré, para dar para simplesmente parar. A ré é mais lenta que a frente, como uma marcha à ré de verdade: ela vai até uns 30 km/h e não passa disso. |
| 0.15.5 · build 22 | A sala só libera quando todo mundo está pronto, e a largada acontece na pista.
A sala agora espera cada jogador avisar que terminou de carregar antes de deixar a partida
começar — ninguém mais chega numa partida que começou sem ele. Quem ainda está carregando
aparece na lista, então dá para ver por que o botão de começar não liberou. A contagem de 5 segundos passou a rodar sobre a arena, com os carros na tela: antes ela ficava atrás da tela de espera, e você perdia justamente o momento de achar o seu carro e o do outro time. Ela também segura os controles, para ninguém sair da linha antes da largada. E o número parou de travar e pular — ele corre no relógio do próprio aparelho, e o servidor só corrige. Os times largam cada um do seu canto da arena, virados para o meio. E as rodas da frente agora esterçam de verdade, no seu carro e no dos outros. |
| 0.15.4 · build 21 | A tinta aparece no chão, e o placar conta o que ela cobre. O território da
partida em rede nunca chegou a ser desenhado: a superfície onde ele deveria aparecer nunca
foi ligada, então cada pedaço de chão que o servidor mandava era guardado e nunca
exibido. Ficou escondido enquanto o treino pintava a mesma arena por baixo, e virou
"sumiu a pintura" quando isso parou, na build 18. E o placar mostrava a porcentagem errada. O número que ele usava responde quem está na frente — com um rastro só, esse jogador tem 100% do que foi pintado. Como porcentagem da arena, isso é outra coisa: agora ele conta o chão de verdade, contra os 1.600 m² que valem ponto. |
| 0.15.3 · build 20 | A arena só aparece quando ela responde. Entrar numa partida são cinco coisas e
quatro são invisíveis: o servidor da partida precisa subir, a conexão precisa fechar, a
sala precisa ser descrita, o chão precisa ser transmitido, e o seu carro precisa receber a
primeira posição oficial. Só depois dessa última o acelerador move alguma coisa — e a
arena aparecia bem antes disso, no instante em que a contagem começava. Quem estava
jogando via o jogo na tela e os controles sem efeito por alguns segundos. Agora a tela de espera fica até tudo isso estar pronto, e diz o que está faltando: criando a sala, carregando a arena, sincronizando o seu carro. Uma entrada lenta e uma entrada travada deixam de parecer a mesma coisa. |
| 0.15.2 · build 19 | Os times largam cada um do seu lado, e os carros têm rodas. As duas equipes
largavam na mesma fileira, a seis metros uma da outra e de frente uma para a outra —
ninguém começava perto do chão que ia defender. Agora azul larga de um lado, vermelho do
outro, os dois virados para o meio. O carro dos outros jogadores aparecia como um bloco de cor sem rodas: a pintura da equipe cobria os pneus junto com a lataria, e as rodas ficavam paradas no ponto onde o carro foi criado enquanto a carroceria seguia viagem. E entrar numa sala agora mostra uma tela de espera até ela existir de verdade. Antes a sala aparecia assim que o servidor de salas respondia — antes da conexão, do assento e da lista de jogadores — então por alguns segundos ela ficava sem código, sem ninguém dentro e com o botão de começar recusando. Dá para cancelar a espera. |
| 0.15.1 · build 18 | Correção: a partida em rede mostrava o jogo errado. Na build 17 o treino começava sozinho ao abrir o app, escondido atrás do menu. Quem entrava numa partida continuava dirigindo o carro do treino, pintando com as cores do treino e lendo o placar do treino — enquanto os carros da partida de verdade ficavam ao lado, como blocos coloridos, recebendo posições do servidor. Agora a partida é a partida: a câmera segue o seu carro, o chão mostra o território que o servidor conta, e o placar mostra o placar dela, com o tempo restante. |
| 0.15.0 · build 17 | Sala de espera, e o carro do outro jogador aparece. Entrar numa sala levava
direto para a arena: não havia onde ler o código para convidar alguém, nem como escolher
o time, nem botão para começar — a partida começava sozinha, três minutos depois, se as
duas pessoas ainda estivessem segurando o telefone. E quem abria a sala nunca via quem
entrava: o jogo guardava a primeira foto da arena, tirada enquanto ainda estava sozinho,
e descartava todas as seguintes. Cada aparelho dirigia normalmente num mundo vazio, o que
parecia rede quebrada e não era. Agora entrar leva a uma sala: o código grande para passar para alguém, a lista de quem já está dentro e de que lado, os botões de Azul e Vermelho, e Iniciar partida para quem abriu. O time só muda antes de começar — o chão já pintado pertence a uma equipe. Atualize os dois aparelhos. Esta build mudou o jeito de conversar com o servidor; uma anterior é recusada ao entrar, com o motivo na tela. |
| 0.14.0 · build 16 | Correção: o multiplayer volta a funcionar. A build 15 abria a lista de salas e dizia "sem conexão com o diretório" mesmo com o servidor no ar — o app nem chegava a perguntar. Junto com essa, a partida em rede não teria desenhado carro nenhum: as ligações que a cena faz entre o menu, o servidor e o carro se perdiam ao empacotar o jogo. Elas agora sobrevivem. E o Treino, que disparava dezesseis vezes a cada toque, dispara uma. |
| 0.13.0 · build 15 | Correção: os textos do menu. A build 14 chegou ao celular com a tela inicial muda — os botões apareciam como retângulos vazios, sem uma palavra em lugar nenhum, porque cada rótulo foi criado sem o texto dentro. Nada mais mudou; é a build 14 com as palavras no lugar. |
| 0.12.0 · build 14 | Um menu antes do jogo. Abrindo o app agora existe uma tela inicial com dois caminhos: Multiplayer, que leva à lista de salas abertas — dá para entrar numa delas, criar a sua ou digitar um código — e Treino, que é a arena sozinho, sem cronômetro e sem ninguém contando pontos. Antes o jogo abria direto no treino e o multiplayer era um botão no canto de uma partida já rolando; quem não sabia que ele existia não o encontrava. A lista de salas agora rola, então ela não para mais na sexta sala, e sala cheia aparece marcada em vez de sumir. Um botão de pausa no canto superior esquerdo devolve ao menu de qualquer um dos dois modos — no celular era impossível sair sem fechar o app. |
| 0.11.0 · build 13 | A arena virou um lugar. Até aqui o chão era um plano cinza sem nada em cima: dava para dirigir, não dava para se localizar. Agora existe asfalto, meio-fio vermelho e branco marcando a linha que conta pontos, barreira de concreto na parede e pilha de pneu nos cantos — com isso dá para julgar distância e velocidade sem adivinhar. A área que pontua ficou visivelmente mais clara que a faixa de escape em volta, então o limite se lê de relance, no meio de um drift, e não só parado. A câmera recuou para enquadrar a arena inteira. E o carro passou a bater com o corpo: antes ele seguia até o meio dele alcançar a parede, e o capô já estava dentro do concreto quando alguma coisa enfim segurava — agora um carro comprido para antes de um curto, e um carro atravessado para antes de um reto, porque é a carroceria que encosta. |
| 0.10.0 · build 12 | Arena fechada, e interface fora do caminho. A pista agora tem parede: ninguém mais sai voando para fora do mundo. Em volta da área que conta pontos existe uma faixa de escape onde o carro perde aderência e a tinta não gruda — dá para se recuperar de um drift largo sem bater. No celular, os botões saíram de perto da borda, onde disparavam gestos do sistema, e os painéis técnicos sumiram: sobra o placar e os controles. No computador eles continuam, atrás da engrenagem. Primeira versão para Windows, macOS e Linux. |
| 0.9.1 · build 11 | Correção: entrar em partida. A build 10 sabia o endereço do servidor mas não conseguia traduzi-lo em um endereço de rede, então Entrar falhava sempre, em qualquer sala. Junto vai uma correção no envio do território: com muitos carros pintando ao mesmo tempo, parte do chão deixava de ser entregue e o jogo precisava recarregar a arena inteira para se corrigir. |
| 0.9.0 · build 10 | Partida completa. Dá para jogar sozinho ou com um amigo pelo código da sala. Os carros agora se batem de verdade, quem cai volta para o mesmo lugar com a pintura e o placar intactos, e o botão NET mostra ping, perda e erro de previsão para quando algo parecer estranho. |
| 0.8.0 · build 9 | Vocês se veem. Dois jogadores na mesma sala dirigem carros diferentes, cada um vê o outro se mover, e a tinta dos dois aparece na pista para os dois. O território vem do servidor célula por célula — o que você vê no chão é o que conta no placar. |
| 0.7.0 · build 8 | Partida disputada. O servidor agora pinta território e conta o placar: cada equipe vê quanto do chão é seu, atualizado ao vivo. O carro local responde na hora mesmo com 150 ms de latência — o cliente prevê o movimento e o servidor corrige o que precisar, sem travar o controle. |
| 0.6.0 · build 7 | Multiplayer. Lobby com salas abertas, código de 6 caracteres para convidar amigos, e o primeiro jogador pode iniciar a partida sem esperar oito. O servidor é autoritativo e roda em container próprio por partida. Toque em Multiplayer no topo da tela. |
| 0.5.0 · build 6 | Splash screen com a key art, enquadrada em paisagem para não cortar o título. |
| 0.3.0 · build 4 | Renderiza. Os dois quality levels do projeto usavam pipelines URP diferentes: o Editor rodava PC_RPAsset e o Android Mobile_RPAsset, que ficou numa versão de asset anterior ao upgrade do URP. Agora ambos usam o mesmo pipeline. Verificado em emulador. |
| 0.2.0 · build 3 | Materiais como asset real e OpenGLES3. Ainda preto, não use. |
| 0.1.0 · build 2 | Shaders URP incluídos no pacote. Ainda preto, não use. |
| 0.1.0 · build 1 | Primeiro pacote Android. Tela preta, não use. |
O aviso de fonte desconhecida é esperado: este APK é assinado com a chave de desenvolvimento, não veio da Play Store. É um protótipo de teste, sem anúncios, sem rede e sem coleta de dados.
| Acelerar / frear | GAS e BRAKE, canto inferior direito |
|---|---|
| Esterçar | < e >, canto inferior esquerdo |
| Freio de mão | HAND, acima do acelerador |
| Trocar de carro | Painel VEHICLE, canto superior esquerdo |
| Trocar de time | Painel ACTIVE TEAM |
| Limpar a pista | Botão Clear canvas |
Pinte uma área com o Team A, troque para o Team B e passe por cima: a área sai de um placar e entra no outro na mesma medida. Passar de novo sobre território próprio não muda nada. O placar vem da geometria vetorial, não dos pixels da textura.
| Física | Quatro contatos de roda próprios: suspensão mola/amortecedor, slip ratio, slip angle e círculo de atrito por roda. Sem WheelCollider e sem rotação artificial — a curva nasce da força lateral dos pneus dianteiros. |
|---|---|
| Pintura | Cobertura vetorial em coordenadas inteiras de 1 mm, segmentada em tiles de 10 m. A textura é só cache visual: mudar a cor de um time não move um metro quadrado do placar. |
| Engine | Unity 6.3 LTS · URP mínimo · IL2CPP/ARM64 |
| Testes | 140 EditMode + 70 PlayMode, todos aprovados |