El Unreal Engine y el iPhone

Tecnología revolucionaria en la GDC.

Josh Adams, programador senior para consolas de Epic Games, introdujo oficialmente a los desarrolladores de videojuegos la nueva versión para iPhone del Unreal Engine 3 durante la pasada Game Developers Conference.

Aunque buena parte de la presentación trató sobre los entresijos de cómo las herramientas para Windows de Epic se enlazaban con el flujo de trabajo del XCode del kit de desarrollo del iPhone, Adams también mostró un modelo funcional de un nivel de Unreal Tournament ejecutado en un dispositivo de Apple, con su desarrollador confirmando que la demo tenía un frame-rate de entre 25 y 30 frames por segundos.

Adams describió el proceso de portar el UE3 al iPhone como uno de esos divertidos proyectos en los que te preguntas si eres capaz de hacer algo, teniendo en cuenta que al estar basado en Open GL ES 2.0 sólo funcionaría en los modelos de Apple más modernos, como el iPhone 3GS, el iPad y el iPod Touch de tercera generación. El UE3 no funcionará en los iPod Touch o los iPhone más antiguos, ya que éstos no dan soporte para los pixel shaders que el motor gráfico necesita, pero a medida que aparezcan nuevos dispositivos más rápidos en la familia Apple el motor de Epic obviamente se escalará para ellos.

Durante la presentación, Adams también reveló toda una gama de plataformas no soportadas en las que Epic tiene versiones del Unreal Engine 3 funcionando: Linux, Mac y el nVidia Tegra 2 (potencialmente muy interesante si los rumores sobre la Nintendo DS 2 acaban siendo ciertos).

Portar el middleware de Epic al iPhone no era una tarea fácil. El motor tiene casi dos millones de líneas de código en 16MB de ejecutable, siendo un 90% de ese código independiente de la plataforma y el otro 10% específico del hardware en el que se ejecuta.

Casi todo el núcleo de la funcionalidad del motor se mantiene en la iteración para iPhone de la tecnología. Las mismas rutinas jugables, de colisión y matemáticas, incluso se usan los mismos formatos de ficheros. Los creadores de juegos acostumbrados al editor del Unreal Engine pueden usar el mismo set de herramientas para Windows para desarrollar para el iPhone. Donde Epic ha hecho cambios es principalmente en la interfaz de render por hardware (RHI) - la "fina capa" entre el hilo de render del motor y la API de la plataforma.

Josh Adams también describió cómo el Unreal Engine ilumina los escenarios. El código recopila luces estáticas y dinámicas definidas por los artistas y las convierte en solo una o dos luces, soportando iluminación direccional, ambiental o esférica. Esto es genial para el iPhone, ya que las muchas luces definidas por los artistas o generadas dinámicamente durante el juego tienen un coste de renderizado muy bajo.

Se creó nuevo código para adaptarse a los peculiares controles del iPhone. Se montan buffers que guardan las entradas en la pantalla táctil, las cuales se procesan al tiempo que se renderiza cada frame. El control de inclinación se trata de forma similar, aunque sin el buffer. Adams también habló de cómo estudiaron la posibilidad de usar el magnetómetro del iPhone 3GS para mejorar la información sobre giros, pero finalmente lo descartaron porque no era demasiado fiable y además la función para acceder a él tenía un coste de CPU prohibitivo.

Los principales cambios al núcleo del renderizador del Unreal Engine implicaban dos cosas. En primer lugar se tuvo que dar soporte a Open GL ES 2.0 (expandiendo el driver Open GL existente), y en segundo lugar se tuvo en cuenta el hecho de que los chipsets móviles son muchísimo menos potentes que las plataformas habituales en las que corre el UE3.

El soporte para shaders se rehizo por completo. El motor funciona con miles de shaders, con entre cinco y veinte de ellos usados para un único material. La solución de Epic fue "auto-reducir" estos shaders a una única textura, añadiendo soporte de previsualización al editor para que los artistas pudiesen ver el resultado final en la pantalla.

Aunque se pierde precisión (y soporte para mapas especulares y normales), el efecto final parece similar y como el resultado se verá en una pantalla muy pequeña, la pérdida de calidad no resulta tan aparente. La metodología de arte de Epic todavía puede usarse, hay menos texturas a cargar y, obviamente, funciona más rápido en la plataforma móvil.

Otro punto débil identificado por Josh Adams era Open GL ES 2.0 en si mismo. Los juegos optimizan su rendimiento con occlusion culling - una técnica consistente en eliminar polígonos que son invisibles para el usuario. Esto todavía no está soportado por ES en este momento, lo cual significa que los niveles creados con el Unreal Engine deben ser más pequeños.

De cara al futuro, Epic espera que el iPhone, el iPad y el iPod Touch sean progresivamente más potentes a medida que nuevas revisiones del hardware se lancen al mercado. Hardware más nuevo significa más potencia, y los creadores del motor esperan que algún día haya soporte para mapping especular y normal, y que para el artwork del "héroe" (por ejemplo, el protagonista) se consiga soporte completo de materiales.

Epic también espera que el problema de la oclusión se solucione con una versión más nueva del driver Open GL ES 2.0, lo cual permitiría escenarios más grandes y complejos. La integración del UE3 con otro middleware - por ejemplo, GameSpy o PhysX - también se podría añadir al motor para iPhone cuando éstos sean portados al formato móvil.

Cuando se anunció por primera vez la versión para iPhone del UE3, Epic reveló que también daría soporte a "otra plataforma", la cual es obviamente el iPad. Josh Adams explicó a los asistentes a la GDC que Epic todavía no tiene acceso a la tecnología del iPad y que la empresa no tiene ninguna idea real sobre cuánta potencia del nuevo hardware serán capaces de extraer.

Teóricamente el iPad funciona con una CPU ARM A8 Cortex a 1GHz, combinada con una versión a mayor velocidad de reloj del PowerVR SGX535 que monta el iPhone 3GS. Según Epic, los cuellos de botella de rendimiento del UE3 en la plataforma móvil se deben sobretodo a la CPU, y en consecuencia el chip gráfico no se fuerza demasiado.

Así que aunque la corta demo que vimos de Unreal Tournamente en el iPhone 3GS era impresionante, la arquitectura del iPad podría potencialmente mostrar mejoras radicales de rendimiento - incluso teniendo en cuenta la enorme mejora de resolución de la pantalla del iPad.

A Epic le costó cuatro meses de trabajo con un equipo de dos personas portar el Unreal Engine 3 al iPhone, y teniendo en cuenta la sorprendente declaración sobre su trabajo con el Tegra 2 parece claro que la compañía está muy interesada en portar su middleware a una amplia gama de plataformas móviles. Pero al preguntarle sobre si el UE3 llegaría a Android, Josh Adams declinó educadamente hacer cualquier comentario...

Comentarios (3)

Ya no se pueden publicar más comentarios. ¡Gracias por tu aportación!