miércoles, 20 de agosto de 2014

Holiday Island en GoldenEye

¡Piérdete en Holiday Island en una loca noche de verano!

Descarga el parche aquí
Cuando enseñé a la comunidad de hacks de GoldenEye alojada en los foros de Shootersforever mi primera toma de contacto con Blue Resort, el usuario radorn me avisó que eso era algo que él mismo pensaba hacer en algún momento. Me enseñó su lista de mapas que quería hacer, en la que se encontraban otro niveles que yo también tenía en mente (como el Castillo de Peach de Super Mario 64). Pero lo que más me llamó de su lista estaban anotadas las dos primeras islas de Pilotwings 64.
Me descolocó bastante, porque son mapas muy grandes y abiertos. Justo las cosas que quieres evitar en un mapa multijugador en Nintendo 64.
Pero según fue pasando el tiempo y fui ganando experiencia la idea empezó a seducirme. Para entonces radorn había abandonado la comunidad.

Empecé con el mapa poco a poco durante las Navidades que daban paso a 2014. Si Blue Resort era un projecto en segundo plano respecto a Goldfinger 64, Holiday Island era todavía más secundario. Lo extraje en varias tandas separadas por el tiempo, ya que es un nivel muy grande y que abusa del LOD y el popping para funcionar a una buena velocidad en Nintendo 64 y conseguir era gran variedad de detalles.
Junté suficientes partes para tener el nivel completo (aunque había modelos en baja resolución o que directamente no estaban) para tener una idea de la cantidad de polígonos que el nivel podía alcanzar. La cifra superaba los 9000 polígonos y me empecé a asustar. Por suerte el escenario por sí mismo eran unos 5100 polígonos; y con el resto de elementos modelados como objetos a parte estaba seguro de poder hacerlo funcionar en consola (en emulador es todo mucho más fácil).

La forma final del mapa con todos sus elementos en máximo nivel de detalle superaba los 12000 polígonos. Funcionaba en consola como mapa de misión, pero lo complicado iba a ser que funcionase en multijugador. Y mi intención siempre es buscar que sea posible jugarlo a 4 jugadores.

Tuve un fallo en las primeras pruebas que consistía en que algunas texturas se veían completamente blancas. Esto es debido a que hay en el nivel algunos polígonos sin texturizar. Por suerte hay una opción en el Editor que te permite aplicar una textura a todos los polígonos sin textura.
No lo recordaba, pero lo mismo me pasó en el Castillo de Peach hace un año. Aunque aquella vez todo el nivel en una zona se volvió blanco.

Aprovechando los árboles, farolas y similares formaban parte del escenario, los utilicé como referencia para colocar los objetos en el mismo lugar. Luego podría copiar esos mismo objetos en la versión del mapa dividida.

Esta vez corté yo mismo el nivel en 36 trozos distintos con las nuevas herramientas que SubDrag introdujo en el Editor. Al ser un nivel tan grande llevó bastante tiempo. Y también bastante tiempo costó hacer el clipping. Por suerte el mapa no necesitaba ningún añadido para agilizar las partidas en multijugador ¡Salvo que es casi obligatorio usar el truco del modo Turbo porque el nivel es gigantesco!

Algunos objetos dieron problemas a la hora de jugar. Por ejemplo, las sombrillas sólo se veían si se superponían con el cielo, y los botes de la playa no se veían en absoluto ni se podía interactuar con ellos. Con la ayuda de SubDrag arreglé las sombrillas, pero al final tuve que quitar los botes para la versión de consola (en la versión de emulador forman parte de la geometría del escenario).
Otro aspecto curioso de los objetos es que utilicé la caja de colisiones del tronco de las palmeras para los árboles en cruz. Intenté hacer los mismo para los árboles más grandes, pero al estar el tronco descentrado no conseguí hacerlos coincidir. Las farolas también tienen su propia caja de colisiones usando sólo la base y el poste.
Los aviones amarillos del aereopuerto también son objetos (el grande naranja forma parte del escenario), pero no tienen las colisiones activadas. El motivo de esto es que la caja de colisiones usa las dimensiones máximas del avión y no permitía acercarse a determinados puntos. Al final modelé la planta del avión en el clipping y quité las conexiones para simular la caja de colisiones. El mismo truco también lo hice con el avión más grande.

También tuve que hacer algunas texturas a mano, ya que no se extrajeron junto con el mapa. Estas texturas son la que forma la estructura de la noria y las de las fuentes del gran lago central.

Con todo preparado lo único que podía salir mal era que no hubiese memoria suficiente para hacer funcionar el mapa a cuatro jugadores. En Blue Resort ya tuve que hacer malabarismos para encajarlo todo, pero Holiday Island tenía más polígonos en total (13600 contando los objetos), necesitaba mayor distancia de dibujado al tener vistas más largas, tenía más texturas y además el archivo de setup también era más grande.
Pero por algún motivo las primeras pruebas en consola fueron mejor en Holiday Island que en Blue Resort, así que tenía la sensación de que al final todo saldría bien.

Costó bastante acertar en como dividir la memoria, pero fue todo mucho más sencillo que con Blue Resort. La distancia de dibujado por defecto era suficiente ya demás la velocidad era aceptable. Sólo hubo que ajustarla un poco para 4 jugadores para evitar que algunos trozos del mapa no se cargaran.

El cielo en multijugador es negro porque el mapa es tan alto que ocasiona problemas con el cielo. La forma de solucionar esto es desactivando las nubes, pero hacerlo en un mapa multijugador cambia el color de cielo a negro.

Luego tocó centrarse en la versión del mapa para emulador (al contrario que en Blue Resort, ahora había ido directo a asegurarme que la versión de consola funcionaba). Preparé dos mapas, uno con todo el nivel como parte de la geometría del escenario y otro con todos los objetos pero con el escenario sin partir. Ya me imaginaba que tenerlo todo junto funcionaría mejor en emulador, pero lo que no imaginaba es que la otra alternativa resultaría en menos de 2 imágenes por segundo a 4 jugadores, jeje.

Hubo algo inesperado durante las pruebas con la memoria para el mapa en amulador: si la memoria llega a un valor mínimo carga la geometría primaría pero no la secundaria (la que se usa para texturas con transparencia o que atraviesen las balas), pero si sube un poco entonces el nivel deja de cargar. Y si se sube algo más entonces carga tanto la geomtría primaria como la secundaria.
Al final hubo que ajustar de nuevo la memoria hasta el último punto para no tener problemas con las texturas.

Y de este modo la gigantesca Isla de las Vacaciones se convirtió en un mapa de GoldenEye. Y puedo asegurar que no volveré a hacer un mapa de estas características nunca más, jeje. Esta vez salió bien y no tuve demasiados problemas comparado con otro mapas que he hecho. Pero los trucos se me están acabando y hacer otro mapa más grande y tan abierto supone demasiado esfuerzo para que sólo puedan jugar 4 jugadores. Algún día habrá una versión para Perfect Dark.


Los programas que utilicé fueron:
-Emulador '1964 v1.1' y plugin gráfico 'Nemu 64 graphics (combine debug)' para extraer la geometría del mapa a formato VRML y las texturas en BMP
-'3D Studio MAX R6' para convertir el archivo VRML a FBX, unir y encajar todas las partes.
-Autodesk FBX converter 2012 para convertir el mapa a OBJ (para Deled ) y DXF (AutoCAD).
-'AutoCAD 2004' para crear las colisiones y arreglar algunas partes de la geometría.
-'DeleD CE' para trocear el mapa y exportarlo todo a formato OBJ.
-'Irfan View' para editar algunas texturas.
-'GE Setup Editor' para editar la rom de GoldenEye: añadir texturas a la rom, añadir el mapa, corregir texturas, añadir efectos de sombreado e iluminación, configurar el sistema de colisiones y portales, colocar armas y personajes, modificar los parámetros de visibilidad del mapa, cambiar la imagen y nombre del nivel... y crear el parche.

No hay comentarios:

Publicar un comentario