Entrar em um carro, tirar o motorista e sair dirigindo é uma das mecânicas mais marcantes da série GTA. Por trás desse gesto simples existe uma sequência de decisões de programação, e um projeto de estudo do Neriverso na Unreal Engine 5 ajuda a entender como ela é montada, quais atalhos são possíveis e por que estúdios grandes também optam por soluções simples.
O projeto combina kits prontos com muito código próprio. Só a lógica de entrar e sair do veículo ocupa uma área extensa do Blueprint: a parte de cima trata da entrada, e a de baixo, da saída. A quantidade de blocos lógicos dá uma boa medida do trabalho necessário para que a ação pareça natural.
Controle, personagem e possessão

Na Unreal, o carro também é um personagem, assim como o protagonista. Cada personagem é comandado por um controlador: o jogador tem o seu, e a inteligência artificial tem outro. Quando ninguém está dirigindo, é a IA que controla o veículo.
Ao apertar a tecla de interação, o essencial é transferir o controle do jogador para o carro. Essa troca de possessão é a base de tudo: o protagonista deixa de ser controlado, o carro passa a responder aos comandos e o personagem original é escondido.
Muitos jogos param aí. O PUBG Mobile, por exemplo, nem roda animação de entrada: apenas troca o controle e esconde o personagem. A solução é eficiente, e mostra por que mesmo estúdios grandes escolhem o caminho simples. Em desenvolvimento de jogos, cada mecânica precisa ser especificada em detalhe, e qualquer refinamento multiplica o trabalho.
A ilusão por trás da animação
Para ter animação, o projeto recorre a um jogo de esconder. O jogador é removido da cena, depois de salvar tudo o que está relacionado a ele. O carro é um Actor que já carrega uma malha de personagem invisível, usada tanto pela IA quanto pelo próprio jogador.

Antes de qualquer coisa, o código verifica se o carro está ocupado pela inteligência artificial. Se estiver vazio, a malha invisível se torna visível e é ela que executa a animação de entrar. Se houver alguém dentro, outra sequência retira o motorista antes da entrada.
Um detalhe decisivo é o posicionamento. O personagem é colocado exatamente no ponto e na rotação de abrir a porta, e só então a animação começa. A mesma técnica aparece em ataques furtivos de vários jogos: o personagem é encaixado no lugar certo antes da ação. Na saída, o caminho se inverte, e um personagem controlável reaparece no mesmo lugar.
Saída segura e troca de câmera

Sair do carro exige cuidados extras. Em jogos AAA como GTA, quando o veículo capota, a rotação não é simplesmente corrigida. A Rockstar Games usa traces, linhas invisíveis que verificam a orientação do carro e se algo bloqueia a porta. Se o lado estiver obstruído, a saída acontece pelo outro.
No projeto, uma checagem semelhante impede a saída quando há colisão no ponto de desembarque, para que o personagem não seja liberado dentro de um obstáculo. Com o carro encostado em algo, o comando de sair simplesmente não funciona.
Também há duas câmeras, uma do carro e outra do personagem, e o controle do jogador precisa alternar entre elas na entrada e na saída. Rotação, localização, visibilidade dos personagens e câmera precisam estar sincronizadas para que tudo funcione.
Começar pelo simples
Nem sempre esse nível de detalhe é necessário. Um desenvolvedor indie pode apenas possuir o carro e fazer o personagem reaparecer ao lado, como muitos jogos fazem. Não existe uma única forma de programar uma mecânica: o personagem poderia, por exemplo, ficar preso ao carro sem ser escondido nem trocado.
A estratégia mais segura é começar pela base. Primeiro, garantir a possessão do carro. Depois, acrescentar animação, posicionamento, checagens e câmeras. Cada camada eleva a complexidade, e isso ajuda a entender o peso de um projeto como GTA 6 e por que poucos estúdios conseguem entregar um jogo nesse estilo que funcione tão bem.
Fonte: Neriverso
