A downloadable game

1. Introducción

El objetivo principal del proyecto fue desarrollar una experiencia de realidad virtual multijugador con alta calidad gráfica y un rendimiento óptimo en dispositivos XR (Meta/Pico). Para ello se utilizaron diversas herramientas y tecnologías como Unity 6, Universal Render Pipeline (URP), XR Interaction Toolkit, Mirror Networking, Addressables y GPU Instancing. Además, se implementaron prácticas de desarrollo modular, pruebas unitarias y documentación del código para facilitar el mantenimiento y la escalabilidad del sistema.


2. Decisiones Arquitectónicas y Técnicas

2.1. Uso de Unity y Configuración de URP

Se inició el proyecto en Unity 6 configurando URP para aprovechar mejoras gráficas y optimizaciones específicas para entornos XR. Esto permitió ajustar parámetros como render scale, sombras y efectos post-procesamiento, logrando un equilibrio entre calidad visual y rendimiento.

2.2. Integración de XR Interaction Toolkit y XR Plugin Management

Se integraron XR Interaction Toolkit y XR Plugin Management para asegurar la compatibilidad con dispositivos Meta y Pico, garantizando que los controles y la interacción en entornos VR sean fluidos y adaptados a cada dispositivo.

2.3. Networking con Mirror

Se eligió Mirror Networking para gestionar la comunicación en red y la sincronización de jugadores y objetos. Se desarrollaron scripts dedicados como VRNetworkManager, VRNetworkPlayerScript y AutoLAN que permiten la detección automática de servidores, la asignación de autoridad en red y la sincronización en tiempo real de posiciones, rotaciones y gestos de los jugadores.

2.4. Carga Dinámica de Assets y Optimización de Draw Calls

Para mejorar la eficiencia gráfica se implementó el sistema Addressables para la carga asíncrona de assets y se aprovechó GPU Instancing para renderizar múltiples instancias de un mismo objeto en una única llamada, lo que redujo significativamente el número de draw calls.

2.5. Organización y Modularidad del Código

Se refactorizó y estructuró el código aplicando buenas prácticas de modularidad y documentación:

  • Regiones (#region): Se organizaron variables, métodos de inicialización, lógica de interacción, comandos de red, etc.
  • Comentarios XML: Cada método y propiedad cuenta con documentación técnica.
  • Patrones de diseño: Separación clara entre scripts de UI, interacción, networking y físicas.


3. Optimización de Rendimiento

3.1. Configuración del URP

Se optimizó el URP ajustando el render scale y reduciendo la resolución de sombras y efectos post-procesamiento, lo que minimizó las caídas de FPS en dispositivos XR.

3.2. Uso de GPU Instancing y Addressables

La combinación de GPU Instancing y Addressables permitió una carga fluida de assets y redujo la cantidad de draw calls, optimizando el rendimiento gráfico del proyecto.

3.3. Sincronización en Red y Asignación de Autoridad

La utilización de Mirror Networking y la correcta gestión de comandos y RPCs aseguraron que las acciones de los jugadores (por ejemplo, recoger y soltar objetos) se sincronizaran de forma eficiente entre todos los clientes.


4. Mecánica Creativa: Búsqueda y Colección de Esferas

(Tarea 5.1)

Descripción de la Mecánica

Se desarrolló una mecánica innovadora en la que los jugadores deben explorar el mapa en búsqueda de esferas repartidas por diferentes áreas. Cada esfera, con comportamiento físico realista (gravedad, colisiones y respuesta a fuerzas), debe ser recogida y depositada en una pared designada para ser "coleccionada". Para activar la colección masiva y desbloquear nuevas áreas o recompensas, todas las esferas deben colocarse en la pared simultáneamente.

Aspectos Técnicos y Sincronización en Red

  • Integración Física: Se utilizan Rigidbody y Colliders para garantizar interacciones naturales.
  • Sincronización Multijugador: Se usan comandos al servidor y RPCs para propagar el estado de cada esfera en tiempo real.
  • Interfaz y Feedback: Una UI muestra el progreso de esferas recolectadas. La información se sincroniza usando SyncVars y hooks.
  • Integración en el Flujo del Juego: La mecánica se integra sin interrumpir la jugabilidad y promueve la cooperación entre jugadores.

Beneficios y Criterios de Aceptación

  • Funcionalidad: Permite a los jugadores interactuar y colaborar activamente.
  • Interactividad: Física realista y sincronización de red garantizan inmersión.
  • Integración General: Compatible con el flujo natural del juego sin interrupciones.

5. Conclusiones

La implementación de esta experiencia de realidad virtual multijugador se apoyó en decisiones arquitectónicas sólidas, la integración de tecnologías modernas y la adopción de buenas prácticas de desarrollo. Las optimizaciones en el renderizado, la carga dinámica de assets y la sincronización en red contribuyeron a una experiencia fluida y estable en dispositivos XR.

Además, la inclusión de una mecánica creativa, como la búsqueda y colección de esferas, no solo enriquece la jugabilidad, sino que también fomenta la colaboración entre jugadores, demostrando la capacidad del sistema para integrar de manera efectiva elementos innovadores en el flujo del juego.

Este documento técnico proporciona una visión integral del proceso de desarrollo y sirve como base para futuras mejoras y mantenimiento, asegurando que todos los aspectos críticos del proyecto hayan sido considerados y optimizados.

Download

Download
BuildAPK.zip 60 MB

Leave a comment

Log in with itch.io to leave a comment.