POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Investigando juegos VR de Unity de código abierto: Parte 2 NorthStar

Investigando NorthStar en Unity VR: Parte 2 de juegos de código abierto

Publicado el 29/08/2025

Exploración del juego NorthStar y análisis de su código con PVS-Studio. NorthStar es una demo compacta y visualmente impresionante en la que el jugador asume el papel de un superviviente de un naufragio rescatado por la tripulación del barco Polaris. El mundo destaca por unos gráficos marinos excepcionales y por mecánicas interactivas detalladas que incluyen cuerdas para envolver, balancearse y empujar objetos, un catalejo para observar a distancia, un arpón manual que se carga y apunta girando, y manivelas para izar objetos capturados. Además incorpora ciclos día noche, cambios meteorológicos, balanceo realista de la embarcación y NPC con comportamiento vivo, características que motivaron no solo a jugar NorthStar sino a inspeccionar su código fuente con el analizador PVS-Studio.

Acerca de PVS-Studio. PVS-Studio es una herramienta automática que detecta problemas potenciales en proyectos escritos en C#, C++, C y Java. Identifica desde erratas simples hasta errores complejos y vulnerabilidades que requieren seguimiento de flujo de datos y análisis semántico. Para proyectos Unity el analizador incorpora consideraciones específicas como anotaciones de API de UnityEngine, reglas diagnósticas especializadas, recomendaciones de microoptimización para bloques de ejecución frecuente y un tratamiento especial de las comprobaciones de nulos en objetos UnityEngine para reducir falsos positivos.

Flujo básico de uso de PVS-Studio: analizar archivos, proyectos o soluciones completas; esperar las primeras advertencias o la finalización del análisis; revisar y filtrar las advertencias aplicando supresiones masivas cuando convenga y dividir la corrección en iteraciones. La integración con IDEs como Visual Studio, Rider o Visual Studio Code facilita revisar los hallazgos y priorizarlos en la pestaña Best warnings donde aparecen las advertencias más relevantes.

Hallazgos más interesantes del análisis del código de NorthStar. Aunque muchas advertencias se originaron en scripts de terceros, PVS-Studio también señaló problemas en el propio código del juego. A continuación se resumen los casos más llamativos y las recomendaciones generales.

Acceso potencial a índice negativo. Se detectó un patrón donde el índice obtenido por FindIndex se compara solo contra cero, por ejemplo currTaskIndex != 0, y luego se usa currTaskIndex - 1 como índice. Cuando FindIndex devuelve -1, la expresión currTaskIndex - 1 puede ser -2, provocando acceso fuera de rango. Recomendación: comprobar explícitamente que currTaskIndex es mayor o igual a 0 antes de restar, o usar currTaskIndex > 0 si se pretende acceder al elemento anterior solo cuando exista.

Excepción inesperada en TryGet. Un método TryGet documentado para devolver un booleano siempre retorna true o lanza una excepción si falla la obtención del componente. En el código cliente se usa if not TryGet then return, lo que es ineficaz porque TryGet nunca devuelve false. Recomendación: ajustar la implementación para que TryGet devuelva false en caso de fallo en lugar de lanzar, o adaptar los llamadores para manejar la excepción de forma controlada.

Posible desreferencia nula. Se encontró una condición que consulta Count de una colección antes de comprobar si la colección es nula. Esto puede provocar una excepción si la colección es null. Recomendación: invertir las comprobaciones o usar el operador seguro ?. para evaluar m_texturesWithoutMipmaps?.Count > 0 y así evitar la desreferencia cuando la referencia es nula.

Comprobación de nulo poco fiable en Unity. En Unity algunos campos de tipo UnityEngine.Object reciben una inicialización implícita que hace que comprobaciones con is null no funcionen como se espera en el Editor. Esto puede causar falsos negativos en Play mode. Recomendación: usar operadores == y != para null o las comprobaciones convencionales if not m_audioSource para aprovechar las sobrecargas de Unity y evitar comportamientos engañosos en el Inspector.

Bucle con return incondicional. Se detectó un foreach que contiene un return fuera de cualquier condición, por lo que el bucle itera como máximo una vez. Probablemente el return debía estar dentro de un if para devolver solo cuando se cumple cierta condición. Recomendación: mover el return dentro del bloque condicional para respetar la intención de iterar sobre los miembros hasta encontrar la coincidencia adecuada.

Tipografías y asignaciones equivocadas. El analizador localizó varios casos de asignaciones erróneas que parecen typos: asignar BoatMovementStrength en lugar de BoatReactionStrength, usar m_previousFrame.Time dos veces en lugar de asignar m_currentFrame.Time, y pasar por error las texturas de profundidad y normales en orden inverso a los parámetros out del método Render. Estas equivocaciones pueden producir comportamientos visuales incorrectos o comportamientos físicos inesperados. Recomendación: revisar y corregir las asignaciones para usar la propiedad adecuada en cada caso y garantizar el orden correcto de los parámetros out.

Precedencia errónea del operador ??. Se encontró una expresión donde la intención era usar un valor por defecto si un quaternion nullable era null, pero la ausencia de paréntesis provocaba que la multiplicación se evaluara antes del operador ??, con el efecto no deseado de restablecer la rotación a identity cuando correctionQuaternion es null. Recomendación: encerrar la parte con ?? entre paréntesis para que la sustitución por default ocurra antes de la multiplicación, por ejemplo pose.rotation * (correctionQuaternion ?? Quaternion.identity).

Conclusión técnica. El análisis con PVS-Studio puso de manifiesto errores típicos en proyectos grandes: comprobaciones de nulos mal colocadas, supuestos erróneos sobre valores de retorno, typos en asignaciones y problemas de precedencia de operadores. Herramientas de análisis estático combinadas con revisiones manuales permiten mejorar la calidad, el rendimiento y la seguridad del código, especialmente en proyectos Unity que mezclan C# con peculiaridades del motor.

Sobre Q2BSTUDIO. En Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida especializada en soluciones tecnológicas integrales. Ofrecemos desarrollo de software a medida, aplicaciones a medida y consultoría en inteligencia artificial para empresas. Nuestros servicios abarcan ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio y soluciones power bi para visualización y análisis. Desarrollamos agentes IA personalizados, integraciones de ia para empresas y plataformas que aprovechan modelos avanzados de aprendizaje automático para optimizar procesos y mejorar la toma de decisiones. Si buscas software a medida o aplicaciones a medida con enfoque en seguridad y rendimiento, nuestro equipo de expertos en inteligencia artificial, ciberseguridad y cloud está listo para diseñar la solución adecuada.

Por qué elegirnos. Q2BSTUDIO combina experiencia en ingeniería de software, conocimiento en servicios cloud aws y azure, capacidades en servicios inteligencia de negocio y dominio en tecnologías de inteligencia artificial y agentes IA. Implementamos soluciones con foco en escalabilidad, cumplimiento de buenas prácticas de seguridad y optimización de costes cloud. Además ofrecemos soporte continuo y asesoría para proyectos que requieren integración con Power BI y pipelines de datos para obtener valor accionable a partir de la información.

¿Quieres mejorar la calidad del código de tu proyecto Unity o incorporar IA y servicios cloud en tu producto. Contacta con Q2BSTUDIO para evaluar tu caso, diseñar software a medida y desplegar soluciones robustas en la nube con enfoque en ciberseguridad y analítica. Podemos ayudarte a implementar agentes IA, pipelines de datos para inteligencia de negocio y paneles Power BI que conviertan datos en decisiones estratégicas.

Si te interesa que analicemos tu proyecto con herramientas como PVS-Studio o necesitas una solución de software a medida que incorpore inteligencia artificial, ciberseguridad y servicios cloud aws y azure, en Q2BSTUDIO tenemos la experiencia y el compromiso para acompañarte en todo el ciclo de desarrollo.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio