2 puntos por GN⁺ 2025-07-27 | 2 comentarios | Compartir por WhatsApp
  • Implementar vehículos en los videojuegos prioriza la experiencia de juego por encima de un motor físico realista
  • Cada juego de carreras y simulador difiere en la forma de controlar el vehículo y el nivel de inmersión
  • La simulación vehicular se compone de tres elementos: motor/caja de cambios, neumáticos y chasis
  • El modelado de neumáticos y el concepto de slip son la clave para lograr una sensación de manejo realista
  • El desarrollador debe definir por su cuenta el nivel de simplificación y abstracción adecuado para el concepto del juego

Por qué los vehículos son especiales en los videojuegos

Los vehículos dentro de los juegos se usan como un elemento experiencial importante en múltiples géneros
Tanto los controles irreales como las simulaciones de manejo realistas transmiten la “sensación de conducir”
Por ejemplo, Mario Kart y Assetto Corsa apuntan a experiencias fundamentalmente distintas, pero la esencia de la programación de vehículos es la misma
Más que implementar con exactitud las leyes de la física del mundo real, lo importante es cómo transmitir la sensación de conducción que el usuario espera
El objetivo del desarrollador no es tanto una “simulación precisa”, sino diseñar la experiencia deseada

Primeros intentos y lecciones: AV Racer

En las primeras etapas del desarrollo de AV Racer, el vehículo se movía con un modelo simple de mecánica newtoniana, pero no lograba transmitir la sensación de un auto real
Se repitieron ajustes de parámetros y hardcoding de giro, derrape, velocidad angular y otros comportamientos
Aunque se logró una sensación empírica de “deslizamiento”, no alcanzaba en situaciones extremas ni cumplía con las expectativas de un conductor real
Si falta comprensión de la física real del vehículo y de la experiencia del conductor, se llega a un límite fundamental
Al final, para implementarlo correctamente, fue necesario estudiar los principios de la dinámica vehicular del mundo real

Estructura de la simulación de vehículos para juegos

Un vehículo dentro de un juego puede dividirse en tres elementos conceptuales: motor (y caja de cambios), ruedas/neumáticos y chasis

Motor (incluida la caja de cambios)

  • Recibe entradas como acelerador y cambios de marcha
  • Calcula torque y RPM, y los transforma según la relación de cambios
  • Interactúa con retroalimentación mutua con las ruedas (es decir, sincronización bidireccional entre motor y ruedas)

Neumáticos (incluidas las ruedas)

  • Reciben distintas entradas como torque del motor, frenos, dirección, peso y fricción del suelo
  • Todas las fuerzas se generan en el punto de contacto entre el neumático y la superficie
  • El modelado de neumáticos (por ejemplo, Pacejka Magic Formula) permite implementar fuerzas realistas

Chasis

  • Cumple el papel de cuerpo rígido en el motor físico
  • Responde a influencias externas como fuerzas de los neumáticos, resistencia del aire, gravedad y colisiones
  • Determina el movimiento total del vehículo e influye en la variación de carga sobre los neumáticos
Componente Entradas principales Salidas principales
Motor/caja de cambios Acelerador, entrada de transmisión, velocidad de las ruedas Torque de rotación, RPM
Neumáticos Torque del motor, frenos, dirección, carga, fricción Fuerza sobre el chasis, sincronización motor-rueda
Chasis Fuerzas de los neumáticos, resultados aerodinámicos Carga en las ruedas, movimiento total

Implementar con 100% de precisión todos los detalles físicos como en un vehículo real es poco realista
A menos que se trate de un laboratorio de investigación de una automotriz real, la mayoría de los juegos y simulaciones usan modelos de caja negra, fórmulas y enfoques simplificados
Por lo tanto, lo esencial es que el diseñador decida qué omitir y qué enfatizar

Diseño del motor y del tren motriz

Motor (núcleo del cálculo de torque)

  • En la realidad es muy complejo, pero en código puede componerse como un modelo simple de caja negra de entrada (RPM, acelerador) → salida de torque
  • Las curvas de torque/potencia pueden parametrizarse con valores o gráficos para simular motores con características distintas
  • Ejemplo: se puede diseñar directamente la curva con Desmos, entre otros, y ajustar así la “personalidad del motor”

Caja de cambios

  • Puede implementarse de forma simple usando una tabla de relaciones de cambio
  • Los cambios determinan características del vehículo como la aceleración y la velocidad máxima
  • Aunque es simple, tiene un gran impacto en la experiencia de juego
Marcha Relación
R -2.92
N 0
1 2.50
2 1.61
3 1.10
4 0.81
5 0.68

Sincronización de RPM entre motor y ruedas

  • Las RPM del motor y la velocidad angular de las ruedas motrices están interconectadas
  • Se calculan numéricamente con ecuaciones diferenciales a partir de la diferencia entre ambas variables de estado
  • En cada frame se implementa una convergencia gradual, como si “persiguieran un valor objetivo”

Esto permite extender el sistema tanto a estilos arcade como de simulador
Cuando el jugador ajusta distintos parámetros del motor (por ejemplo, perfil de leva, turbo, etc.), eso puede vincularse con cambios en el sonido o en la curva de potencia
Aunque no se imite exactamente el movimiento real del motor, se transmite con claridad la relación causa-efecto y se refuerza la experiencia interactiva

Modelo de neumáticos

Rol de los neumáticos

  • Son la única parte del vehículo que entra en contacto real con la carretera
  • Todas las fuerzas de aceleración, frenado y giro se generan en la zona de contacto del neumático
  • Las fuerzas se generan principalmente a partir de la deformación elástica y las propiedades de fricción

Fuerza longitudinal (aceleración/frenado) y slip ratio

  • El neumático ofrece el máximo agarre en estado de fricción estática; al superar el límite, pasa a fricción dinámica (slip)
  • El slip ratio se calcula a partir de la diferencia entre la velocidad de rotación de la rueda (tracción/frenado) y la velocidad de desplazamiento sobre el suelo
    • slip ratio = (velocidad angular de la rueda - velocidad angular de giro libre) / velocidad angular de giro libre
  • En general, el slip ocurre cuando al acelerar la rueda gira más rápido que el suelo, y al frenar gira más lento
  • El cambio de agarre según el slip ratio puede representarse con una curva
  • El agarre aumenta hasta cierto punto, pero cae bruscamente después del pico máximo

Fórmulas para calcular la fuerza considerando el slip ratio (como Pacejka Magic Formula)

  • Se usan fórmulas que toman el slip ratio como entrada para producir curvas complejas (seno/arctangente parametrizados)
  • Es necesario calcularlo de manera individual para cada neumático

Fuerza lateral (giro) y slip angle

  • Durante el giro, la zona de contacto se deforma y aparece el slip angle
    • slip angle = diferencia angular entre la dirección real de avance del neumático y la dirección hacia la que apunta la rueda
  • A medida que el slip angle aumenta, se genera gradualmente más agarre, pero al superar el límite comienza el deslizamiento
  • La relación entre slip angle y agarre también dibuja una curva característica
  • Muchos parámetros influyen en ello, como carga, fricción y cambios dinámicos

Fenómenos como subviraje y sobreviraje

  • Subviraje: cuando el slip angle del eje delantero es mayor que el del eje trasero, el auto gira menos de lo deseado
  • Sobreviraje: cuando el slip angle del eje trasero aumenta más, la parte trasera del auto se desliza hacia afuera
  • Si se cuenta con un modelo de neumáticos correcto, estas características de manejo surgen de manera natural

Restricción mutua entre fuerzas longitudinales y laterales (friction circle)

  • Cuando un neumático usa fuerza al mismo tiempo para acelerar/frenar y para girar, el máximo disponible en cada dirección afecta al otro
  • Círculo de fricción (circle/ellipse): la suma de ambos vectores de fuerza no puede superar cierto límite
    • (F_{x}^2 + F_{y}^2 \le (\mu F_{z})^2)
  • Ejemplo: al frenar muy fuerte y girar bruscamente al mismo tiempo, es fácil perder el control
  • Como los neumáticos reales son curvos/no lineales en su comportamiento, hace falta ajustar parámetros según datos reales

Implementación en código

  • En cada neumático se calculan por separado las fuerzas longitudinales y laterales
  • Ambos vectores se combinan y se normalizan (scaling) dentro de un círculo de fricción virtual
  • Si se ajustan dinámicamente los parámetros, también se pueden experimentar con facilidad cambios avanzados de manejo

Integración con el motor físico completo del vehículo

  • Las fuerzas de los neumáticos + la salida de la suspensión + las influencias externas (gravedad, drag, etc.) se agregan al chasis
  • En cada frame se actualizan aceleración y velocidad según las leyes del movimiento de Newton

Elementos adicionales escalables

  • Geometría de suspensión: camber, caster, etc.
  • Dinámica avanzada de neumáticos: temperatura, desgaste, expansión, cambios de carga, etc.
  • Aerodinámica: downforce, drag, alerón ajustable automático
  • Tren motriz/diferencial, ABS, ESP, límite de dirección y otros
  • Si hace falta, se pueden consultar varios libros: Race Car Vehicle Dynamics (Milliken), Mechanics of Pneumatic Tires (S.K. Clark)

Conclusión

Con estos modelos ya es posible implementar la base de un vehículo para videojuegos que se comporta de forma similar a uno real
Los detalles adicionales pueden ampliarse según los objetivos y necesidades del desarrollo
La clave está en la simplificación/abstracción de principios básicos obtenidos del mundo real y en una filosofía de diseño centrada en la experiencia de juego
Si hay dudas, opiniones o sugerencias de corrección, se agradece el contacto

2 comentarios

 
dogtree 2025-07-27

Lo leí por error como "programar vehículos dentro de vehículos" y pensé: ¿esto no es un poco peligroso?

 
GN⁺ 2025-07-27
Comentarios de Hacker News
  • Algo interesante que quiero señalar es que, aunque en la vida real el motor tiene la mayor cantidad de piezas móviles, en el código termina siendo, más bien, la parte más simple de toda la simulación del automóvil. Eso se debe a que la función principal del motor es ser una calculadora de torque. Recibe varias entradas y solo produce una salida: el torque de rotación. Se siente como una caja negra. Recomiendo mucho la serie de videos del simulador de motores de AngeTheGreat. Sorprende ver lo optimizado que está para funcionar en tiempo real y que incluso logre generar sonidos de motor realistas. Ver video del simulador de motores de AngeTheGreat

    • El juego Automation tiene un constructor/simulador de motores implementado con muchísimo detalle. Es realmente divertido hacer todo tipo de experimentos con motores, y la parte de simulación de sonido también toma prestados algunos conceptos que se tratan en el video de AngeTheGreat

    • Me recuerda al ejemplo clásico de animar un cubo en Houdini. Hay algo muy entretenido en las cosas inesperadas que pasan en una simulación de motor de combustión interna en tiempo real. Ejemplo de animación de cubo en Houdini

    • La razón por la que empecé a programar fue ver a mi padre escribir un simulador de motores en BASIC. Era ingeniero mecánico y quería comparar las curvas de torque de distintos diseños de motor. Cuando dibujaba con los comandos CIRCLE y LINE un wireframe de pistones, el conjunto del cigüeñal y el cigüeñal moviéndose en cuadros de menos de un segundo, me impactó darme cuenta de que se podía usar una computadora para dibujar cosas y hacerlas moverse. Me impresiona mucho saber que esta persona hizo algo parecido para crear mejores sonidos de autos de carreras

    • ¿No son en realidad bastante simples los motores de EV? Los motores de combustión son caros y complejos porque usan pequeñas explosiones para generar torque. Por eso me pregunto si la mayoría de los autos en los juegos no se mueven como si fueran EV, a menos que se esté simulando un ICE con más precisión

  • Yo me encargué de toda la simulación de vehículos en Army of Two. Este artículo es una muy buena introducción. Me ayudó mucho aplicar el modelo de neumáticos de Pacejka y el diferencial de transmisión. Además, algo que sorprende es lo importantes que son la simulación física de la barra estabilizadora y la suspensión para que la conducción se sienta “divertida”. Si eso falta, manejar se siente resbaloso y cuesta meterse en la experiencia. En el video de demostración también se nota esa sensación. Si no implementas la barra estabilizadora y la suspensión, el auto vuelca con facilidad, y entonces uno termina ajustando una y otra vez el deslizamiento de las llantas o la fricción de la superficie, pero en realidad la experiencia de manejo empeora

    • ¡De verdad gracias por esta información! No sabía que la barra estabilizadora fuera tan importante en un modelo básico. Voy a estudiar más sobre eso y, si logro implementarlo bien, pienso actualizar también el artículo

    • Hace poco tuve problemas con la suspensión de mi auto, así que pude experimentar en carne propia eso de una “conducción no divertida”. Ahora conecto mucho más con ese comentario

  • Esto se parece muchísimo a algo que yo mismo descubrí al hacer el juego Flightle. Hice un simulador de vuelo lateral para móviles y el movimiento del avión se sentía tan raro que, lleno de frustración, pensé: “¿qué tan difícil puede ser esto?”, y empecé a hacerlo yo mismo. Al estudiar los principios del vuelo me di cuenta de que el nivel correcto de abstracción es importante. Si es demasiado irreal, no es divertido; si es demasiado realista, se vuelve difícil balancear el juego. Enlace a Flightle

    • Ya es tarde para editar mi comentario, pero reuní mi experiencia detallada en un texto aparte. Ojalá lo vean: cómo hice un simulador de vuelo de desplazamiento lateral. Como referencia, después probé cambiar el avión de un punto a una estructura de dos alas conectadas por una barra, y me costó muchísimo ajustarlo para que fuera divertido. Alguien con más habilidad probablemente lo habría hecho mejor

    • Me divertí mucho con el juego. Si hay usuarios de escritorio, me gustaría sugerir que los sliders se puedan manejar con la rueda del mouse

  • Hace tiempo hice un juego para iOS que simulaba autos y derrapes. Estaba hecho con SpriteKit, pero se puede implementar fácilmente en cualquier motor de juego 2D. La idea básica es conectar dos ruedas delanteras a una carrocería rectangular con pin joints y aplicar fuerza a las ruedas. El ángulo de la fuerza se calcula así: x = force * cos(bodyRotation + wheelRotation) y = force * sin(bodyRotation + wheelRotation) Además le agregué partículas de skid. El derrape lo implementé ajustando los valores de damping de las ruedas y de la carrocería. App Drift Mania Infinite Car Racer

    • ¡El juego sí transmite mucha sensación! Me gustó que empieza de inmediato. Las partículas de skid son prácticas. Los visuales también están buenos. Pero para mí era demasiado difícil. Si agregaras algo como un “modo zen” donde no te reinicie al chocar contra las paredes, creo que podría jugarlo mucho más

    • El juego está muy bueno. El mercado de apps es tan competitivo que impresiona que haya conseguido 22 reseñas. Me da curiosidad saber cómo lo promocionaste

    • “Este juego ofrece gráficos increíbles...” Ese humor autocrítico está realmente tierno. Ya lo estoy descargando

  • Este artículo me pareció sinceramente fascinante. Solo la parte del modelo de neumáticos ya merece varias lecturas. Si no importan la simulación ni el realismo y solo se busca diversión, no hay nada como el arcade Super Sprint de los años 80. Información del juego Super Sprint

  • Copio y pego aquí parte de unas charlas relacionadas que tenía guardadas en mis notas: Hamish Young, física de vehículos y dinámica de neumáticos en ‘Just Cause 4’ Vehicle Physics and Tire Dynamics in 'Just Cause 4' Jan Erik Steel & Patrick Donnelly, física de vehículos supercargados en ‘Skylanders’ Supercharged! Vehicle Physics in 'Skylanders' Edward Pereira, charla sobre la ciencia del off-road The Science of Off-Roading Jared Cone, la física de ‘Rocket League’ It IS Rocket Science! The Physics of 'Rocket League' Detailed

  • El artículo en sí está bueno, pero la introducción me resultó un poco confusa. Dice que los autos ofrecen en los juegos una variedad de experiencias irreales, pero que las armas no. Eso me hace ruido, porque en realidad los juegos están llenos de armas irreales. Además, afirma que nuestras expectativas sobre conducir provienen no de experiencia directa sino de experiencia indirecta a través de los medios o la cultura, pero ¿no aplica eso todavía más a las armas? Incluso algo como saltar se maneja de maneras muy distintas en los juegos, y mis expectativas sobre un salto vienen mucho más de la experiencia real de haber saltado

    • Parece que no tiene mucha experiencia haciendo FPS. Las armas reales son distintas de cómo se sienten en los juegos. Si un juego hiciera que las armas fueran exactamente como en la realidad, sería mucho menos divertido y bastante más frustrante. Con los juegos de carreras pasa lo mismo: hay que torcer la realidad un poco para que sea divertido

    • Creo que este tema no va de “realismo”, sino de “verosimilitud”. Lo importante es construir una experiencia que el jugador pueda “creer”. Las armas en los juegos son distintas de las reales, pero priorizan la fantasía de verse poderosas y amenazantes. Lo mismo con los saltos: no tienen una base realista, pero se diseñan de la forma que mejor encaja con el objetivo del juego. En cambio, en áreas como los autos, donde la fidelidad física y la sistematización son posibles, se tiende a buscar representaciones más realistas, hasta el punto de poder compararlas con simulaciones de la industria. Pero cosas como el movimiento humano, los sistemas económicos o el flujo del combate son mucho más difíciles de abordar con ese mismo nivel de realismo, por lo que abundan representaciones mucho más caricaturescas. El diseñador de juegos tiene que encontrar un punto de equilibrio adecuado que encaje con las expectativas del jugador y con el objetivo general del juego. Perseguir un realismo demasiado detallado y arruinar la estructura completa es una trampa muy común

    • El ejemplo de los FPS fue algo que improvisé rápidamente en el escenario, pero después de pensarlo bien me di cuenta de que no era un buen ejemplo. Gracias por señalarlo

  • Siento que faltan cosas como colinas, rampas y suspensión. Unreal Engine tiene incluso un demo de vehículos muy simple, y también existen demos con modelos de suspensión reales

    • Al final de la presentación y del artículo hay un video corto que muestra el estado real del motor, y en ese video sí aparecen colinas, rampas y distintos tipos de terreno. En la presentación se usa una cuadrícula plana simple. La suspensión también está implementada, pero como no es tanto un problema especial de los autos sino una función general para soportar el peso, no se profundizó mucho por cuestiones de tiempo y de ritmo de la charla

    • Como mencionó Wassim en la sección de preguntas y respuestas, la suspensión la resuelve el motor de física, y su efecto se refleja en la carga del neumático, lo que naturalmente también influye en las fuerzas del neumático

  • Hay una buena charla de GDC sobre la física de vehículos en Rocket League. Ver charla sobre la física de Rocket League. Aclaro que yo era miembro del equipo, aunque no trabajaba en el cliente del juego sino en otra parte

  • Mientras leía este artículo me acordé de una buena charla sobre física de carreras. Ver Andre Marziali - Physics of Racing