¿Cómo sería una mejor manera? Entonces, la manera perfecta sería no tener un navegador, seguir teniendo código de React Native o código similar a React que luego se alimenta a algún tipo de tiempo de ejecución nativo, al igual que en móvil, que tiene una integración nativa con todos los constructos nativos del motor de juego y renderizaría un marco que tiene la UI encima. Antes de mostrar mi integración, quiero decir que probablemente ya has interactuado con algo como esto. Esta no es una idea completamente nueva. Esta es una idea que ha sido explorada, y creo que algunos de ustedes se sorprenderán al escuchar esto, pero si tienes una PlayStation, estás jugando con una UI de React Native en la PlayStation. Así que, toda la UI de la PlayStation, toda la experiencia principal de la PlayStation con todas las aplicaciones es en realidad una colección de docenas y docenas de aplicaciones de React Native que se están renderizando en 3D. Así que, para recapitular, hasta ahora, cuando queríamos usar tecnologías web en juegos, lo hacíamos de una manera que se asemeja a las aplicaciones antes de 2015. Tomábamos componentes HTML, los renderizábamos dentro de una vista web, y mi esperanza es que después de esta conferencia, podamos pensar en ello de manera similar a cómo la conferencia en 2015 abrió nuevas formas de construir cosas. Podríamos pensar en términos de componentes nativos de pizarra en Unreal Engine que son renderizados nativamente por la plataforma, pero mientras hacemos eso, también podemos seguir escribiendo código JavaScript y TypeScript.
Entonces, ¿cómo funciona eso? ¿Cómo funcionaría un sistema como este? React Native tiene algo llamado plataformas. Plataformas en el árbol y plataformas fuera del árbol. Así que, si has estado construyendo cualquier código de React Native para iOS y Android, estás familiarizado con el hecho de que hay un núcleo C++ que se compila en un objeto compartido y luego se distribuye con enlaces a las plataformas nativas. Lo que quizás no estés tan familiarizado es que hay plataformas fuera del árbol como Mac OS y Windows que están siendo desarrolladas por Microsoft y Vision OS, que creo que está siendo hecho por Callstack actualmente. Estas también están en una sorprendente cantidad de lugares. He escuchado que si actualmente haces clic en el menú de inicio en Windows, estás interactuando con la mini aplicación de React Native que impulsa el menú de inicio. Así que, mi propuesta es una plataforma fuera del árbol de Unreal Engine. Esa plataforma se empaqueta como un plugin estándar de Unreal Engine. Este plugin tiene enlaces para todos los diferentes sistemas de React. Así que, React tiene componentes centrales nativos como un programador, administrador de superficies. Tiene una clase host de React que ayuda a iniciar todo. Tiene interfaces para HTTP, WebSocket, temporizador, todo tipo de funcionalidad de API nativa. Todo eso es satisfecho por este plugin nativo de React de Unreal Engine. Todo eso habla con el juego. Con este tipo de arquitectura, podemos entonces tomar las vistas familiares de React, los componentes de texto familiares de React, componentes de imagen, y luego traducirlos directamente a componentes de pizarra, como vistas de React, párrafos de React, imágenes de React, que son solo componentes hijos, clases hijas de componentes de pizarra nativos regulares. Eso suena genial. He estado trabajando en esto por bastante tiempo, y hasta ahora, todo es fácil, pero la realidad no es tan rápida, no tan fácil. El primer desafío para hacer que todo esto funcione fue que React Native actualmente asume que vas a trabajar con iOS y Android, a pesar de la existencia de muchas plataformas fuera del árbol. Si estás tratando de construir una base de código de React Native para C++, va a asumir una de dos cosas. O estás construyendo para Android o estás construyendo para algo llamado Phantom, que es un probador sin cabeza privado de meta que usan para confirmar que el código central está funcionando como debería. La solución a esto fue una gran cantidad de listas de CMake feas, y voy a usar esta plataforma para decir que sería bueno si meta hiciera el sistema de construcción más modular, porque creo que las plataformas fuera del árbol son una gran parte del futuro. Hay muchas más plataformas que son maduras y se beneficiarían de una integración con React Native.
Comments