Unity

Del Concepto al Desarrollo: Construcción de un Videojuego Runner 3D con Enfoque Ambiental en Unity

Cómo diseñamos una experiencia interactiva que combina entretenimiento, arquitectura de software y conciencia ecológica

La industria del desarrollo de videojuegos se ha convertido en uno de los campos tecnológicos más exigentes y multidisciplinarios de la actualidad. Construir una experiencia digital funcional ya no depende únicamente de crear gráficos atractivos o mecánicas entretenidas; implica integrar principios de ingeniería de software, diseño visual, experiencia de usuario, programación orientada a objetos, optimización de recursos y arquitectura de sistemas.

Bajo esta visión nació nuestro proyecto académico: un videojuego Runner 3D desarrollado en Unity Engine 6, diseñado no solo como una experiencia de entretenimiento, sino también como una herramienta interactiva con enfoque ambiental. El objetivo principal fue construir un entorno dinámico donde los jugadores pudieran desplazarse continuamente, recolectar elementos ecológicos, evitar obstáculos y enfrentarse a una dificultad progresiva, mientras interactúan con una propuesta visual diseñada alrededor de la sostenibilidad y la responsabilidad ambiental.

El desarrollo fue realizado por Keren Saray Guzmán Yepes, Angélica María Camacho Monsalve y Julián David Garzón Fuquen, estudiantes de Ingeniería de Sistemas de la Universidad Central, dentro del espacio académico de Modelado 3D y Videojuegos.

Más allá del resultado final, este proyecto representó una oportunidad para aplicar conocimientos técnicos reales en un entorno práctico de desarrollo de videojuegos modernos.


La idea inicial: transformar un Endless Runner tradicional

Los videojuegos tipo Endless Runner poseen una característica principal: el jugador nunca deja de avanzar.

Títulos de este género suelen basarse en:

  • Movimiento automático continuo
  • Recolección de objetos
  • Evasión de obstáculos
  • Incremento progresivo de dificultad
  • Sistemas de puntuación acumulativa

Sin embargo, la intención del proyecto no era replicar una experiencia tradicional, sino reinterpretarla mediante una propuesta con propósito educativo.

La idea central consistió en construir un videojuego donde el usuario interactuara con elementos relacionados con la conservación ambiental mientras avanza dentro de escenarios tridimensionales dinámicos.

En lugar de únicamente acumular puntos, el jugador debe desarrollar capacidad de reacción, toma rápida de decisiones y reconocimiento de elementos beneficiosos dentro del entorno.

La propuesta también incorporó un componente de identidad bastante particular: los personajes principales fueron diseñados tomando como referencia directa a los integrantes del equipo desarrollador.

Esta decisión permitió fortalecer apropiación conceptual, diferenciación visual y construcción narrativa dentro de la experiencia digital.


Arquitectura técnica: construir primero la estructura antes del videojuego

Uno de los principios fundamentales aplicados durante el desarrollo fue diseñar una arquitectura organizada desde etapas tempranas.

En proyectos de videojuegos pequeños suele cometerse un error frecuente: comenzar programando mecánicas sin una estructura clara.

A medida que el proyecto crece aparecen problemas como:

  • Código difícil de mantener
  • Dependencias innecesarias
  • Errores de escalabilidad
  • Bajo rendimiento
  • Dificultad para agregar nuevas funcionalidades

Para evitar este escenario, se implementó una arquitectura modular basada en componentes utilizando Unity Engine 6 y programación orientada a objetos mediante C#.

El sistema fue dividido en subsistemas independientes responsables de funciones específicas:

Sistema de movimiento

Controla:

  • Desplazamiento continuo
  • Movimiento lateral
  • Salto
  • Actualización de animaciones
  • Validación de estados del personaje

Sistema de puntuación

Administra:

  • Tiempo de supervivencia
  • Recolección de elementos
  • Bonificaciones
  • Progresión de niveles

Sistema de colisiones

Gestiona:

  • Interacción con obstáculos
  • Recolección de objetos
  • Activación de potenciadores
  • Eventos físicos

Sistema de dificultad dinámica

Permite incrementar progresivamente la exigencia del videojuego mediante ajustes automáticos sobre velocidad y complejidad.

Sistema de escenarios dinámicos

Construye nuevas secciones del entorno conforme avanza la partida.

Este enfoque permitió mantener una estructura organizada y facilitar futuras expansiones.


Unity Engine 6 como motor principal de desarrollo

La construcción técnica del proyecto se realizó utilizando Unity Engine 6, una de las plataformas más utilizadas actualmente para desarrollo de videojuegos.

Su arquitectura basada en componentes facilitó la implementación modular del sistema.

Entre las tecnologías integradas durante el proyecto se utilizaron:

  • C#
  • Rigidbody
  • Collider
  • Animator
  • TextMeshPro
  • SceneManager
  • Universal Render Pipeline (URP)
  • AudioSource
  • Input System

La decisión de trabajar sobre Unity permitió aprovechar múltiples herramientas internas relacionadas con física, animación, administración de escenas y optimización.

Uno de los elementos más importantes fue la implementación del sistema físico mediante:

  • Rigidbody
  • Triggers
  • Collider

Esta combinación permitió administrar gravedad, movimiento, detección de impactos y respuesta automática ante interacciones.

Construcción del personaje: modelos 3D, Avatar y sistema de animación

Uno de los desafíos más importantes apareció durante la integración de personajes personalizados dentro del motor.

Los modelos tridimensionales fueron importados y configurados mediante el sistema Humanoid Avatar de Unity, permitiendo conectar correctamente las estructuras óseas del personaje con el sistema interno de animaciones.

Durante el proceso fue necesario configurar correctamente:

  • Avatar Definition
  • Rig Humanoid
  • Animator Controller
  • Root Motion
  • Estados de animación

El sistema Animator permitió construir una máquina de estados responsable de controlar comportamientos visuales del personaje.

Se diseñaron estados principales asociados a:

  • Movimiento principal
  • Salto
  • Muerte

Las transiciones internas permiten cambiar dinámicamente entre animaciones dependiendo del comportamiento actual del jugador.

Por ejemplo:

Si el personaje salta:

Run → Jump

Si ocurre una colisión crítica:

Run → Death

Este enfoque mejora considerablemente la percepción visual y fortalece sensación de respuesta inmediata dentro de la experiencia interactiva.

Adicionalmente, la integración de Avatars personalizados permitió reutilizar sistemas de animación sin necesidad de construir configuraciones independientes para cada personaje.


Mecánica principal: movimiento continuo y control simplificado

Uno de los principios UX más importantes dentro de videojuegos Runner consiste en reducir complejidad operativa.

Por esa razón el sistema implementó únicamente tres controles principales:

A → Movimiento izquierda

D → Movimiento derecha

SPACE → Salto

La intención fue construir una curva de aprendizaje accesible.

El desplazamiento frontal ocurre automáticamente.

Esto significa que el jugador no debe preocuparse por avanzar; únicamente debe reaccionar ante el entorno.

La lógica interna utiliza movimiento basado sobre Rigidbody:

rb.MovePosition(
transform.position +
transform.forward *
speed *
Time.deltaTime
);

El uso de Time.deltaTime garantiza consistencia entre equipos con diferentes tasas de cuadros por segundo.

De esta manera el videojuego mantiene estabilidad operativa incluso bajo condiciones de hardware distintas.

El desplazamiento lateral se encuentra limitado mediante un sistema de carriles.

Se establecieron restricciones para impedir que el personaje abandone el área válida de interacción:

  • Límite izquierdo: -2
  • Límite derecho: 2

Esta decisión reduce errores operativos y fortalece precisión de control.


Sistema de salto e integración física

El salto representa una de las mecánicas más importantes dentro del flujo de juego.

La implementación se realizó utilizando impulso físico real mediante Rigidbody.

El comportamiento principal funciona a través de:

AddForce(
Vector3.up *
jumpForce,
ForceMode.Impulse
);

Este enfoque permite obtener movimientos más naturales respecto a desplazamientos manuales por transformación directa.

Adicionalmente se implementaron validaciones internas para evitar:

  • Doble salto accidental
  • Salto infinito
  • Explotación de mecánicas

La condición principal valida velocidad vertical antes de permitir una nueva acción.

Esto mejora equilibrio y estabilidad dentro del sistema.


Sistema de puntuación: supervivencia y estrategia

La puntuación no se limita únicamente a permanecer vivo.

El sistema integra múltiples variables:

Tiempo de supervivencia

Mientras el jugador continúa activo, la puntuación aumenta automáticamente.

La lógica conceptual puede resumirse así:

Puntaje =
Tiempo Sobrevivido
+
Bonificaciones

Esto incentiva permanencia dentro de la experiencia.

Recolección de elementos

El videojuego incorpora objetos ecológicos distribuidos estratégicamente.

Cuando el jugador entra en contacto con ellos:

  • Se incrementa la puntuación
  • Se reproduce sonido
  • Aparece retroalimentación visual
  • El objeto desaparece

Cada elemento recolectado aporta bonificaciones adicionales.

Esto genera una combinación interesante entre:

  • Exploración
  • Supervivencia
  • Precisión operativa

Sistema de colisiones: el núcleo mecánico del videojuego

Las colisiones representan uno de los componentes técnicos más críticos.

El sistema implementado combina:

  • Collider
  • Rigidbody
  • Trigger

Cada objeto posee una etiqueta específica (Tag) que permite identificar comportamiento esperado.

Por ejemplo:

Obstáculos

Si ocurre impacto contra un obstáculo:

  • Se activa Game Over
  • Se reproduce animación de muerte
  • Se detiene música
  • Se bloquea desplazamiento

La respuesta inmediata fortalece percepción de consecuencias dentro de la experiencia.

Objetos recolectables

Cuando el personaje entra en contacto:

  • Incrementa puntuación
  • Ejecuta sonido
  • Aparece efecto visual
  • El objeto desaparece

Potenciadores

Algunos objetos especiales modifican temporalmente capacidades internas del jugador.

Aquí aparece uno de los componentes más interesantes del proyecto.


Sistema de potenciadores: introducir estrategia dentro del desafío

El videojuego incorpora un potenciador principal:

Escudo Protector

Su función consiste en proporcionar inmunidad temporal frente a obstáculos.

Cuando el jugador lo obtiene:

  • Se activa protección interna
  • Los impactos dejan de finalizar la partida
  • Los obstáculos se destruyen automáticamente
  • Aparecen efectos visuales específicos

La duración establecida fue:

5 segundos

Aunque parece una mecánica sencilla, introduce un componente estratégico importante.

El usuario debe decidir cómo aprovechar temporalmente esa ventaja.

Además, desde perspectiva de diseño, estos sistemas ayudan a mantener ritmo dinámico y reducir sensación de monotonía.


Escenarios dinámicos y generación procedural

Uno de los componentes más importantes desde perspectiva técnica fue la construcción de escenarios dinámicos.

Crear un escenario infinito completo desde el inicio genera múltiples problemas:

  • Consumo excesivo de memoria
  • Baja estabilidad
  • Sobrecarga gráfica
  • Procesamiento innecesario

La solución implementada fue utilizar generación procedural.

El sistema administra automáticamente:

  • Creación de nuevos segmentos
  • Eliminación de elementos fuera del área útil
  • Administración progresiva de memoria

Variables internas como:

levelLength
count

permiten determinar cuándo generar nuevas secciones.

El resultado es un entorno potencialmente infinito que mantiene estabilidad operativa.

Este enfoque constituye una práctica ampliamente utilizada dentro de videojuegos Runner modernos.


Diseño visual y experiencia de usuario

La propuesta visual fue diseñada bajo principios de:

  • Claridad gráfica
  • Simplicidad visual
  • Consistencia estética
  • Retroalimentación inmediata

En videojuegos donde velocidad aumenta progresivamente, la saturación visual puede convertirse en un problema serio.

Por esa razón se priorizó:

  • Contraste entre objetos
  • Distribución estratégica
  • Espacios visuales limpios
  • Identificación rápida de elementos interactivos

La interfaz gráfica fue construida utilizando:

  • Canvas
  • TextMeshPro
  • Buttons
  • Panels

Los principales componentes UI incluyen:

Menú principal

Permite:

  • Iniciar partida
  • Visualizar instrucciones
  • Salir del juego

Pantalla de instrucciones

Explica:

  • Controles
  • Objetivos
  • Mecánicas principales

HUD

Muestra información en tiempo real:

  • Puntaje
  • Progreso

Pantalla Game Over

Facilita:

  • Reinicio rápido
  • Regreso al menú principal

Todas estas decisiones fueron orientadas a construir una experiencia intuitiva y accesible.


Optimización: una parte invisible pero fundamental

Uno de los mayores retos dentro del desarrollo de videojuegos modernos consiste en optimizar recursos.

Un videojuego puede verse visualmente atractivo y aun así presentar problemas graves:

  • Caídas de FPS
  • Alto consumo RAM
  • Baja estabilidad
  • Procesamiento excesivo

Para evitarlo se implementaron múltiples estrategias.

Eliminación automática de objetos

Los elementos fuera del área útil son destruidos automáticamente.

Esto reduce:

  • Consumo memoria
  • Carga física
  • Procesamiento innecesario

Uso de Universal Render Pipeline

URP permitió mejorar rendimiento gráfico manteniendo calidad visual.

Procesamiento distribuido

Los elementos aparecen únicamente cuando resultan necesarios.

Esto evita cargas iniciales excesivas.

Arquitectura escalable

La organización modular permite agregar:

  • Nuevos personajes
  • Obstáculos adicionales
  • Más potenciadores
  • Nuevos escenarios
  • Logros
  • Clasificaciones

sin necesidad de reconstruir toda la arquitectura.


Más que un videojuego: una aplicación práctica de ingeniería de software

El proyecto permitió demostrar cómo principios clásicos de ingeniería de software pueden integrarse directamente dentro del desarrollo de videojuegos.

Durante la construcción fue necesario aplicar conceptos relacionados con:

  • Modularidad
  • Encapsulamiento
  • Reutilización
  • Escalabilidad
  • Optimización
  • Arquitectura de sistemas
  • Diseño orientado a objetos

Además, incorporar una temática ambiental permitió añadir una dimensión educativa al producto.

El videojuego deja de ser únicamente una experiencia recreativa y se convierte en una herramienta digital capaz de transmitir conceptos asociados con sostenibilidad y responsabilidad ecológica.

Finalmente, el proyecto permitió consolidar conocimientos técnicos reales dentro de un entorno de desarrollo moderno, integrando programación, modelado tridimensional, experiencia de usuario y arquitectura de software dentro de una única experiencia interactiva.

El resultado no solo fue un Runner 3D funcional desarrollado en Unity, sino también una demostración práctica de cómo la tecnología puede convertirse en un medio para construir experiencias digitales con propósito.

Arquitectura general 

Diagrama de flujo general 
 

Desarrollo del Videojuego 

1. Conceptualización del Videojuego 

1.1 Contexto General 

El videojuego desarrollado corresponde a una experiencia interactiva tridimensional perteneciente al género Runner de desplazamiento continuo, diseñada bajo un enfoque educativo–ambiental orientado a generar conciencia sobre la importancia de la conservación del entorno mediante dinámicas lúdicas. 

La propuesta busca transformar una mecánica tradicional de videojuegos arcade en una herramienta interactiva capaz de transmitir conceptos asociados a sostenibilidad y responsabilidad ambiental mediante procesos implícitos de aprendizaje. 

A diferencia de experiencias tradicionales centradas exclusivamente en competencia o acumulación de puntuación, el proyecto incorpora una narrativa conceptual donde los jugadores representan agentes activos dentro de un entorno ecológico afectado por elementos contaminantes y obstáculos asociados al deterioro ambiental. 

Los personajes principales corresponden a representaciones digitales de los integrantes del equipo desarrollador, fortaleciendo componentes de identidad y apropiación dentro del diseño narrativo. 

La dinámica principal se fundamenta en tres pilares funcionales: 

Recolección 

El jugador debe identificar elementos beneficiosos presentes dentro del entorno. Estos objetos permiten incrementar puntuación y favorecer progresión dentro del sistema. 

Supervivencia 

El jugador debe evitar colisiones con obstáculos que comprometan continuidad de la partida. La supervivencia constituye la variable principal que determina duración y rendimiento dentro del juego. 

Progresión Dinámica 

La dificultad incrementa progresivamente mediante mecanismos automáticos relacionados con velocidad y complejidad del entorno. Este enfoque busca mantener equilibrio entre accesibilidad inicial y desafío progresivo. 

1.2 Género y Clasificación 

Clasificación principal: 

Característica Clasificación 
Género principal Endless Runner 
Subgénero Arcade 3D 
Plataforma objetivo PC 
Motor gráfico Unity 6 
Lenguaje C# 
Estilo visual 3D estilizado 
Perspectiva Tercera persona 
Modalidad Individual 

1.3 Público Objetivo 

El producto está orientado hacia usuarios jóvenes y adultos interesados en experiencias digitales casuales con componentes educativos implícitos. 

Se establece como público objetivo: 

Edad objetivo: 10 – 30 años 

Perfil jugador: 

  • Jugadores casuales  
  • Usuarios interesados en sostenibilidad  
  • Comunidad académica  
  • Público universitario  

Duración estimada de sesión: 5 – 15 minutos 

Curva aprendizaje: Baja complejidad inicial + Incremento progresivo dificultad 

2. Arquitectura del Sistema 

La arquitectura del videojuego fue diseñada bajo un modelo modular orientado a componentes, aprovechando la estructura nativa del motor Unity para separar responsabilidades funcionales y facilitar procesos futuros de mantenimiento, escalabilidad y optimización. 

El desarrollo utiliza un enfoque basado en programación orientada a objetos (POO), permitiendo encapsular comportamientos específicos dentro de componentes independientes asociados a cada entidad del sistema. 

La arquitectura implementada se encuentra dividida en múltiples subsistemas funcionales encargados de gestionar aspectos específicos del entorno interactivo. 

Los principales componentes identificados son: 

La separación funcional permite reducir acoplamiento entre componentes, mejorando mantenibilidad y favoreciendo reutilización de código. 

2.1 Motor de Desarrollo 

El videojuego fue desarrollado utilizando Unity Engine 6 LTS, una plataforma multiplataforma especializada en construcción de experiencias interactivas bidimensionales y tridimensionales. 

Unity proporciona una arquitectura basada en componentes que permite asociar funcionalidades específicas a entidades independientes mediante scripts desarrollados en lenguaje C#. 

Dentro del proyecto se utilizaron funcionalidades propias del motor relacionadas con: 

Motor físico 

Implementado mediante: 

  • Rigidbody 
  • Collider 
  • Triggers 
  • Fuerzas físicas 

El sistema físico permite administrar: 

  • gravedad  
  • detección de colisiones  
  • desplazamiento controlado  
  • interacción con obstáculos 

Sistema de Animación 

Se implementó mediante: 

  • Animator Controller 
  • Animation States 
  • Transitions 

Dentro del personaje principal se identificó integración con Animator para controlar estados asociados al movimiento y eventos de juego. 

Variables utilizadas: 

  • Jump 
  • Death 

Estas variables permiten modificar dinámicamente comportamientos visuales del personaje dependiendo del estado actual. 

Sistema de Escenas 

El proyecto implementa múltiples escenas independientes: 

  1. MenuInicial 
  1. SampleScene 

Cada escena cumple responsabilidades específicas. 

MenuInicial 

Responsabilidades: 

  • menú principal  
  • navegación inicial  
  • transición gameplay  

SampleScene 

Responsabilidades: 

  • entorno principal  
  • lógica gameplay  
  • sistema puntuación  
  • obstáculos  
  • progresión  

La separación entre escenas permite modularizar experiencia del usuario. 

Sistema de Prefabs 

El proyecto utiliza prefabricados (Prefabs) para optimizar reutilización de recursos. 

Elementos reutilizables identificados: 

  1. Player 
  1. Floor 
  1. Shield 
  1. Obstacles 

Beneficios técnicos: 

  • reducción duplicación  
  • facilidad mantenimiento  
  • actualización centralizada  
  • optimización desarrollo 

2.2 Lenguaje de Programación 

La implementación funcional fue desarrollada utilizando C#, lenguaje orientado a objetos integrado dentro del ecosistema Unity. 

El paradigma orientado a objetos permite modelar entidades independientes encapsulando datos y comportamientos específicos. 

Principios aplicados: 

Encapsulamiento 

Cada componente administra internamente sus propias variables y lógica. 

Ejemplo identificado: 

CharacterScript: 

float roundScore; 
bool isGameOver; 
bool isShield; 

Las variables permanecen controladas internamente reduciendo dependencias externas. 

Modularidad 

Cada script posee responsabilidades específicas. 

Arquitectura observada: 

Esta estructura reduce acoplamiento funcional. 

Reutilización 

El uso de componentes independientes facilita expansión futura. 

Ejemplo: 

El sistema de movimiento puede reutilizarse sobre múltiples personajes sin necesidad de rediseñar lógica principal. 

2.3 Arquitectura Funcional del Sistema 

El videojuego implementa un modelo centralizado de control utilizando un componente administrador principal denominado: 

GameManager 

Este componente actúa como núcleo operativo del videojuego. 

Responsabilidades identificadas: 

Gestión dinámica escenarios 

El sistema administra generación procedural de segmentos. 

Variables identificadas: 

levelLength = 106.3f; 
count = 10; 

El escenario incrementa progresivamente conforme avanza el jugador. 

Proceso identificado: 

Esto permite construir un entorno potencialmente infinito. 

Gestión progresión dificultad 

La velocidad global incrementa automáticamente: 

Time.timeScale 

Restricción: 

Máximo = 3x 

Objetivo: 

  • mantener desafío  
  • evitar monotonía  
  • incrementar exigencia progresiva 

Gestión transición niveles 

Se identificaron cuatro etapas dinámicas: 

Nivel 1: 

0 – 199 puntos 

Nivel 2: 

200 puntos 

Nivel 3: 

1000 puntos 

Nivel 4: 

2000 puntos 

El cambio ocurre automáticamente mediante validación continua del puntaje. 

Proceso: 

2.4 Organización del Proyecto 

La estructura organizacional identificada sigue lineamientos modulares.2 

Descripción funcional: 

Scripts 

Contiene lógica principal. 

Ejemplos: 

  • GameManager.cs 
  • CharacterScript.cs 
  • MenuInicial.cs 
  • ObstacleDestroy.cs 

Prefabs 

Almacena entidades reutilizables. 

Ejemplos: 

  • Player 
  • Obstacle 
  • Shield 
  • Floor 

Scenes 

Administra flujo navegación. 

Ejemplos: 

  • MenuInicial 
  • Gameplay 

2.5 Dependencias Tecnológicas 

Tecnologías identificadas: 

Tecnología Función 
Unity 6 LTS Motor desarrollo 
C# Programación 
TextMeshPro Interfaz texto 
Input System Entrada usuario 
Rigidbody Física 
Animator Animaciones 
URP Renderizado 
AudioSource Sonido 
SceneManager Gestión escenas 

3. Diseño Técnico del Videojuego 

El diseño técnico constituye la representación estructural de los componentes funcionales que conforman la lógica operativa del videojuego. Esta fase permite describir detalladamente la implementación de las mecánicas principales, la interacción entre módulos y las decisiones de ingeniería adoptadas durante el desarrollo. 

La arquitectura funcional implementada se fundamenta en un modelo modular orientado a componentes, donde cada entidad del sistema posee responsabilidades específicas dentro del flujo operativo general. 

Los componentes identificados corresponden a: 

  • Sistema de Movimiento 
  • Sistema de Puntuación 
  • Sistema de Colisiones 
  • Sistema de Escudo 
  • Sistema de Escenarios 
  • Sistema de Dificultad 
  • Sistema de Audio 
  • Sistema de Interfaz 

Cada subsistema interactúa de forma coordinada para construir la experiencia completa de juego. 

3.1 Sistema de Movimiento del Jugador 

El sistema de movimiento constituye uno de los componentes principales dentro del videojuego, ya que permite la interacción directa entre usuario y entorno tridimensional. 

La implementación se realizó mediante un componente denominado: CharacterScript.cs 

Este módulo administra: 

  • desplazamiento lateral  
  • movimiento automático frontal  
  • salto  
  • actualización de animaciones  
  • validación de estado del jugador  

El desplazamiento frontal ocurre continuamente sin intervención directa del usuario. 

Implementación conceptual: Posición Actual+Velocidad+Tiempo=Nueva Posición 

Implementación observada: 

rb.MovePosition( 
transform.position + 
transform.forward * 
speed * 
Time.deltaTime 
); 

El uso de Time.deltaTime permite garantizar independencia respecto a la tasa de cuadros por segundo (FPS), asegurando comportamiento consistente entre distintos equipos. 

Movimiento Horizontal 

El videojuego implementa desplazamiento lateral mediante sistema de carriles. 

Entrada identificada: 

  • A → Izquierda 
  • D → Derecha 

Proceso funcional: 

Entrada usuario → Validación límites → Movimiento lateral → Actualización posición 

Restricciones observadas: 

  • Límite izquierdo = -2 
  • Límite derecho = 2 

Estas restricciones impiden que el jugador abandone el área válida de interacción. 

Modelo conceptual: 

Carril Izquierdo → Carril Central → Carril Derecho 

Esta arquitectura resulta común en videojuegos tipo runner, ya que facilita control intuitivo y reduce complejidad cognitiva durante la interacción. 

Sistema de Salto 

El salto se implementa utilizando el motor físico integrado de Unity. 

Evento identificado: SPACE 

Proceso operativo: 

Implementación conceptual: 

AddForce( 
Vector3.up * 
jumpForce, 
ForceMode.Impulse 
); 

El uso de impulso físico permite obtener movimientos más naturales respecto a desplazamientos manuales por transformación directa. 

Adicionalmente, el sistema valida velocidad vertical antes de permitir un nuevo salto. 

Condición identificada: 

Velocidad Y ≈ 0 

Esto evita: 

  • salto infinito  
  • doble salto accidental  
  • explotación mecánica 

3.2 Sistema de Puntuación 

El sistema de puntuación constituye uno de los mecanismos principales de retroalimentación para el usuario. 

Su propósito consiste en cuantificar desempeño durante la partida. 

La puntuación se construye mediante dos fuentes principales: 

Tiempo de supervivencia 

El puntaje incrementa continuamente mientras el jugador permanece activo. 

Modelo identificado: Score = Tiempo acumulado + Bonificaciones 

Proceso: 

Implementación conceptual: 

roundScore += 
Time.deltaTime; 

Este enfoque incentiva supervivencia prolongada. 

Recolección de elementos 

El videojuego incorpora elementos recolectables distribuidos dentro del escenario. 

Proceso: 

Etiqueta identificada: Money 

Incremento observado: +5 puntos 

Modelo matemático: Puntaje Total = Tiempo Sobrevivido + Objetos Recolectados 

Este enfoque combina: 

  • desempeño técnico  
  • exploración  
  • supervivencia 

3.3 Sistema de Colisiones 

El sistema de colisiones constituye uno de los componentes fundamentales dentro de la arquitectura funcional del videojuego, ya que permite administrar las interacciones físicas entre el jugador y los distintos elementos presentes dentro del entorno tridimensional. Su implementación resulta crítica para garantizar consistencia mecánica, retroalimentación inmediata al usuario y correcta ejecución de eventos asociados al progreso de la partida. 

La solución desarrollada utiliza el motor físico integrado de Unity mediante la combinación de componentes ColliderRigidbody y mecanismos de detección por Triggers, permitiendo construir un modelo híbrido de interacción capaz de responder dinámicamente ante distintos tipos de objetos presentes en el escenario. 

El componente Rigidbody se encuentra asociado al personaje principal y permite que los movimientos se integren correctamente con el sistema físico del motor, incorporando gravedad, fuerzas y validación automática de colisiones. Por otra parte, los componentes Collider delimitan las áreas de interacción física de cada objeto, estableciendo superficies de contacto capaces de generar eventos cuando se produce una superposición o impacto. 

Adicionalmente, se emplean Triggers para detectar eventos específicos que no requieren respuesta física directa, permitiendo activar acciones relacionadas con puntuación, potenciadores y elementos recolectables sin afectar el desplazamiento natural del jugador. 

El sistema implementado permite identificar interacciones con múltiples categorías de objetos: 

  • Obstáculos  
  • Elementos recolectables  
  • Potenciadores  
  • Elementos del entorno  

Cada objeto posee una etiqueta (Tag) específica que facilita su identificación lógica durante la ejecución del juego. 

Interacción con obstáculos 

Los obstáculos representan el principal mecanismo de desafío dentro de la experiencia interactiva. Estos elementos se encuentran distribuidos estratégicamente a lo largo del escenario con el propósito de exigir capacidad de reacción y toma de decisiones por parte del jugador. 

Cuando el personaje establece una colisión con un objeto etiquetado como: Obstacle, el sistema ejecuta una validación interna relacionada con el estado actual del jugador. 

Si el personaje no posee protección activa mediante potenciadores, la partida finaliza automáticamente, ejecutando una serie de acciones orientadas a proporcionar retroalimentación inmediata al usuario. 

Entre las acciones implementadas se encuentran: 

  • activación del menú de derrota  
  • reproducción de efectos sonoros  
  • activación de animación de muerte  
  • detención de música de fondo  
  • bloqueo de continuidad del desplazamiento  

Este comportamiento busca generar una transición clara entre el estado de juego activo y el estado de finalización de partida, reforzando la comprensión del usuario respecto a las consecuencias derivadas de errores durante la ejecución. 

Interacción con elementos recolectables 

El videojuego incorpora objetos de recolección cuya finalidad principal consiste en incentivar exploración y favorecer progresión de puntuación. 

Estos elementos utilizan la etiqueta: Money 

Cuando el jugador establece contacto con uno de estos objetos, el sistema ejecuta automáticamente una secuencia de eventos internos orientados a reforzar la experiencia interactiva. 

Entre las operaciones realizadas se encuentran: 

  • incremento de puntuación  
  • reproducción de efectos visuales  
  • reproducción de sonido asociado  
  • eliminación controlada del objeto recolectado  

La puntuación obtenida permite fortalecer el componente competitivo y funciona además como variable de progresión utilizada para activar cambios de nivel y escalamiento de dificultad. 

Interacción con potenciadores 

Adicionalmente, el sistema de colisiones administra interacción con elementos especiales asociados a potenciadores temporales. 

Estos componentes no generan una respuesta física tradicional, sino que modifican dinámicamente ciertas propiedades funcionales del jugador durante intervalos específicos. 

La implementación mediante detección Trigger permite realizar estas modificaciones sin alterar estabilidad física del entorno ni comprometer consistencia del sistema de movimiento. 

En conjunto, el sistema de colisiones constituye una pieza crítica dentro de la arquitectura funcional del videojuego, permitiendo integrar mecánicas de desafío, progresión y recompensa mediante una estructura organizada, modular y consistente. 

Créditos

AutorAngelica Maria Camacho MonsalveKeren Saray Guzmán YepesJulián David Garzón Fuquen

Editor: Magister Ingeniero Carlos Iván Pinzón Romero

CódigoUCMVG1-10

Universidad: Universidad Central

Referencias

Unity Technologies. (2025). Unity User Manual. Unity Technologies. 

Unity Technologies. (2025). Scripting API Documentation. Unity Technologies.

Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.

Schell, J. (2019). The Art of Game Design: A Book of Lenses (3rd ed.). CRC Press.

Fullerton, T. (2018). Game Design Workshop: A Playcentric Approach to Creating Innovative Games (4th ed.). CRC Press.

Pressman, R. S., & Maxim, B. R. (2020). Ingeniería de Software: Un enfoque práctico. McGraw-Hill.

Unity Technologies. (2025). Universal Render Pipeline Documentation.