Game Dev / Unity

Grinchmas Kart

Lideré un kart 3D en equipo de 4 y le enseñé al rival a conducir solo

Unity
C#
Blender
ML-Agents

Métricas clave

Métricas y topología del sistema

IA rival con reinforcement learning en un nivel de carrera
RL
IA rival con reinforcement learning en un nivel de carrera
niveles encadenados en la misma partida hasta los créditos
0
niveles encadenados en la misma partida hasta los créditos
del proyecto liderado en equipo de 4: código, IA, flujo y 3D
~0%
del proyecto liderado en equipo de 4: código, IA, flujo y 3D
modelos 3D propios en blender: kart, pista, personajes y escenarios
0
modelos 3D propios en blender: kart, pista, personajes y escenarios
Gameplay de Grinchmas Kart: kart 3D en pista navideña con IA rival

Resumen

Grinchmas Kart (3D, sep – dic 2023) es un kart racing end-to-end de ABMODEL Games, equipo universitario de 4 integrantes. Lideré ~80% del proyecto: código, gameplay, IA, flujo de niveles, dirección y modelos 3D propios en Blender. El objetivo fue superar el juego de muestra oficial (Karting Microgame 5.0.1) con físicas arcade creíbles y un rival que aprende a conducir con Reinforcement Learning.

Problema

Un kart racing creíble exige físicas arcade bien parametrizadas, una IA rival que compita de verdad y un loop de partida completo, no un demo técnico. Partimos de la base oficial de Unity y la convertimos en juego propio: integramos la IA rival con Reinforcement Learning y la hicimos funcionar en un nivel de carrera; en el resto, los rivales replican los movimientos del jugador principal, con 5 niveles encadenados hasta los créditos.

Mi rol

  • Lideré el proyecto (~80%): código, gameplay, integración de ML-Agents, flujo de niveles, dirección e integración.
  • Integré la IA rival con Reinforcement Learning y la hice funcionar en un nivel de carrera: comparte la entrada del jugador, observa con sensores de distancia, velocidad y dirección al punto de control, con recompensas por progreso y penalizaciones por choque, en modos entrenamiento e inferencia. En el resto de niveles, los rivales replican los movimientos del jugador principal.
  • Modelé en Blender los assets propios: personajes (Grinch, Santa, Mono de Nieve y Pingüino), sus vehículos, pista y escenarios; HUD navideño, trailer y créditos en video y audio propios.
  • Diseñé el flujo de partida encadenando 5 niveles hasta los créditos (modifiqué `GameFlowManager`).

Solución

  • Arquitectura en capas con `asmdefs` bien definidos (KartGame, KartGame.Editor, KartGame.AI, KartGame.AI.Editor).
  • IA rival que aprende a conducir: integramos el módulo de Reinforcement Learning en nuestro proyecto y lo hicimos funcionar en un nivel de carrera. Usa la misma entrada que el jugador, así el kart no distingue quién lo maneja. Detecta la pista con sensores de distancia, mide su velocidad y apunta al siguiente punto de control; gana puntos por avanzar rápido y los pierde por chocar. En el resto de niveles, los rivales replican los movimientos del jugador principal.
  • Física arcade: Rigidbody + 4 WheelColliders, suspensión parametrizada (tunable sin código), derrape con VFX, power-ups extensibles (`struct Stats`), `KartBounce` y reorientación aérea al caer.
  • Flujo de partida: 5 niveles encadenados dentro de una misma partida, victoria/derrota y pantalla de créditos con video.
  • Modelos 3D y dirección: assets originales en Blender, arte navideño y trailer/créditos en video y audio propios.

¿Quieres ver cómo se entrena una IA para jugar con Reinforcement Learning dentro de un juego Unity? Hablemos.

Volver a proyectos