Registrarse

[Wii] [Unity Engine] Cómo hacer un juego en Unity Engine para Nintendo Wii en Windows SIN el SDK

Manurocker95

Doctorando en Ingeniería Biomédica & Game Dev
Miembro insignia
¡Buenas! Hace unos días os traje cómo se pueden desarrollar videojuegos en Unity Engine para la familia Nintendo 3DS y Nintendo Wii U con Unity Engine siguiendo el ciclo de desarrollo real. Sin embargo, ¿Qué os parece si os digo que antes de esas dos, Unity ya podía usarse para crear videojuegos de la familia de Nintendo? Pues sí, desde Unity 2.3 a Unity 4.2 (2008-2012) se podía compilar para Nintendo Wii. Es por esto que hoy os traigo cómo podemos hacer videojuegos para Nintendo Wii y encima con un bonus: Prescindiendo del SDK de Revolution (la Wii).

¡Comenzamos!

U2Wii.png

Vale, lo primero vamos a poner un poco de contexto (sin que te la comas sin pretexto, así que si esto te sobra puedes mirar más abajo el setup en los pasos): Hay que mencionar que si siguiéramos el workflow habitual sería exactamente como hicimos en Wii U y Nintendo 3DS aunque con matices. El Nintendo Developer Interface (NDI) no existía por la época de 2007-2008. Es por esto que el RVL SDK (Revolution SDK, aka, el SDK de Wii) se obtenía directamente de Nintendo a través de WarioWorld, la antigua web de desarrolladores. Era OBLIGATORIO contar con el Developer Kit (el kit de desarrollo), es decir, la máquina física donde probar el software, para obtener el SDK. Y este tenía un precio de 15.000USD. Nada barato para lo que tenemos hoy en día (El de Switch, por ejemplo, costaba 450USD)... Bien, una vez teníamos instalado el SDK en nuestro PC y teníamos un DevKit, podíamos pedir a Unity que nos enviara la versión del editor a utilizar con el Addon de Wii ya instalado. Y ya podríamos hacer lo de siempre: desarrollamos el juego > compilamos el WAD (en el caso de WiiWare) o ISO (en el caso de retail) y con las librerías de Unity conectadas al SDK, todo iría fácil y sencillo. Por desgracia, nunca se ha filtrado el addon en ninguna de sus posibles versiones y hasta este 2025 (con lo que os traigo) jamás ha habido NADA de información sobre cómo hacer que un juego hecho en Unity, corra en una consola o emulador de Wii.

¿Qué podemos hacer ahora si Nintendo ni Unity nos van a dar el addon y éste jamás fue filtrado? Bueno, navegando por la red contacté con el usuario the_digi_law que mencionaba que la Wii tiene arquitectura PowerPC (PPC) y que por eso usaba "CodeWarrior" como compilador. ¿Que qué tiene que ver? Pues que Unity 2.6.0 y 2.6.1 todavía exportaban a MacOS X, que por 2008 TAMBIÉN era PPC. Y entonces charlando del tema por privado nos dijimos... "Y si ponemos los archivos de MacOS PPC en los de un juego ya compilado de Wii...¿funcionará?" ¡Veámoslo!


Hay que aclarar que este tutorial es para exportar una escena básica que acaba compilando una ROM funcional de forma nativa en una consola tanto retail como en emulador (Dolphin Emulator). Sin embargo, hacer un juego complejo requerirá que tengáis conocimientos del motor y de programación ya que hacer un juego en un motor grande tiene una pequeña curva de aprendizaje y más en una versión TAN antigua del motor.

Paso 1. Prepara Unity 2.6.0f7:

En otros tutoriales preparamos el SDK para desarrollar pero como no lo tenemos ni necesitamos, vamos a prescindir de ello. Haremos lo siguiente:

  • Directamente descargamos Unity 2.6.0f7 de la página oficial de Unity, ya que la 2.6.1f1 tiene algunos bugs. ¿Por qué esta y no una más moderna que también compila para Wii? Porque es la última versión funcional para MacOS PPC. Unity 3.x ya solo compilaba para Macs con procesadores Intel.
  • Hacemos doble click en el .exe y lo instalamos como es habitual.
  • Al ejecutar Unity 2.6.0f7 nos pedirá un registro de licencia. Le decimos que queremos activarla online y nos llevará a la página oficial de licencias de Unity que usaba por aquel entonces y que aún mantienen: https://license.unity3d.com/
  • Si no tenemos una cuenta de Unity tendremos que crearla ya que sí, es necesaria. Si la tenemos ya, saltamos al siguiente pasito.
  • Volviendo ya con nuestra cuenta creada, si tenemos una licencia plus o pro, podemos vincularla aquí. Si no, podemos darle a Personal License y nos dará una licencia gratuita (la ventaja de la 2.6.0 es que fue la primera versión con licencia personal gratuita, ¡Genial!).
  • Tras aceptar, nos volvemos a Unity y veremos que nos ha completado el registro completamente.
  • Cerramos el instalador y podemos abrir Unity para un par de pasos más tarde.

Paso 2 Prepara el juego de Wii donde "Inyectar": De RVL a ISO

Vale, llegados a este paso seguro que intuyes lo que vamos a hacer: Vamos a sustituir esos archivos que compila Unity en los de una ROM ya existente. Para ello, hay que saber de algún juego que usara Unity 2.x y que corra en una Wii. Algunos de estos son:

  • Jumpstart Pet Rescue (ISO)
  • Lead the merkaats (WiiWare->WAD)
  • Tiger Woods PGA Tour Online (ISO)
  • El Chavo (ISO)

Para nuestro ejemplo usaremos Jumpstart Pet Rescue. Como no viene al caso asumiremos que todos hemos obtenido nuestro juego legalmente y lo hemos rippeado a modo de backup personal; en vez de haberlo descargado de los 7 mares. El caso es que si tenemos ya el juego en formato ISO, podemos continuar. Los siguientes pasos son si tenemos el juego en formato RVL (de Revolution, muy listos ¿eh?), que es el que viene en los CDs.

  • Descargamos el emulador de Wii y GameCube "Dolphin" de su página oficial.
  • Lo instalamos o descomprimimos en donde queramos dependiendo de si usamos su versión "archive". Lo abrimos con doble click en el .exe.
  • Establecemos en Opciones > Configuración > Rutas la carpeta donde está nuestro RVL actualmente. Nos aparecerá listado en la lista de juegos disponibles para ejecutar.
  • Hacemos click derecho sobre él y damos a "Convertir archivo". Nos aseguramos que esté como tipo ISO y aceptamos. Se nos añadirá a la misma carpeta un archivo con formato .iso que será mucho más grande que el original (ya que no está encriptado ni comprimido).
  • Ya tenemos el juego que podemos descomprimir para extraer sus archivos.
Paso 3 Prepara el juego de Wii donde "Inyectar": Descomprimir la ISO en archivos

Para descomprimir una ISO y sacar todos sus archivos vamos a utilizar la mejor herramienta de RomHacking de Wii: WIT Wimms Tools.

  • Vamos a la página oficial de WIT y descargamos la versión de Windows. En este caso la 3.05, que es la última: https://wit.wiimm.de/download.html#vers-v3.05a
  • Lo descomprimimos en alguna carpeta que nos acordemos. En mi caso va a ser C:\Wit para que el ejecutable que vamos a usar esté en C:\Wit\bin\wit.exe.
  • Realmente no nos hace falta añadirlo a Variables de entorno pues en este tutorial vamos a lanzar todo por consola de comandos (CMD) usando rutas globales, pero ahí a vuestro gusto. En cualquier caso, abrimos la consola de comandos con click derecho > abrir terminal aquí, desde Cortana > Consola de comandos o Windows + R > cmd.
  • Usamos WIT para descompilar la ROM usando (sustituid mi ruta por la vuestra) "C:\Wit\bin\wit.exe" extract "ruta a la ISO" "Ruta donde se extrae"
  • Al pulsar enter, nos pondrá donde le hemos definido toda la rom descompilada. Ese será nuestro "sitio de compilación". Recordad donde es pues a futuro recompilaremos el .ISO.
Paso 4 Prepara el juego a Inyectar

Con Unity abierto desde el Paso 1 vamos a hacer una versión sencilla:

  • Creamos una escena con File > New Scene.
  • Añadimos un objeto con el menú de arriba GameObject > Create Empty (o pulsamos Control + Shift + N).
1759131219565.png
  • Dejandolo seleccionado > Components > Rendering > GUITexture.
1759131368850.png
  • Arrastramos una imagen que tengamos en el PC a la tab de "Project".
  • Seleccionando el objeto con el GUITexture > arrastramos la imagen recién importada al inspector donde pone Texture. Se nos verá en la tab de Game.
1759131481562.png

  • Damos a File > Save Scene y guardamos nuestra escena como haríamos en cualquier proyecto de Unity.
  • Abrimos File > Build Settings y pulsamos "Add Current" para que se nos añada a la lista de escenas. Importante en este paso, seleccionamos MacOS PPC (OS X) como plataforma destino.
1759131588689.png
  • Damos a Build y compilamos el juego para MacOS X PPC. Se nos abrirá la carpeta al final.

Paso 5. Copiar los archivos a la ISO de Wii

Vale, de la carpeta donde tuvieramos la ISO vamos a DATA/files/unity/Data. Podemos borrar TODO lo que hay ahí porque no nos hace falta. La única excepción sería " unity default resources" porque ya tiene los shaders preparados para Wii. En cualquier caso, aquí es donde vamos a copiar nuestros archivos, así que dejad esta carpeta abierta en una ventana a parte. ¿Qué archivos ponemos? Solo los de nuestro juego:

  • Volvemos a donde se nos ha compilado el juego de Mac y vamos dentro del .app/Contents y agarramos los archivos de:
    • Data: mainData y sharedassets0.assets. Si tuvieramos varias escenas y demás, tomamos TODO lo de aquí.
    • Frameworks/Mono.framework: Boo.Lang.dll, mscorlib.dll y UnityDomainLoad.exe.
    • Resources: UnityEngine.dll y unity default resources (éste no hace falta si mantenemos el que ya había en el juego de Wii).

  • Volvemos donde teníamos ya la ISO descomprimida en archivos y con todos los archivos, los copiamos en RutaAlIso/DATA/files/unity/Data.
  • Nos quedará algo como:
1759141090782.png
  • Ya tenemos nuestro juego listo para probar.

Paso 6. Encriptar la ROM de vuelta a una ISO

  • Vamos a volver a usar Wit pero ahora con "C:\Wit\bin\wit.exe" copy "ruta donde extrajimos la rom" "ruta donde queremos que se nos ponga la iso".
  • Una vez hecho esto, se nos habrá creado una rom con formato .iso. Esto fallará si previamente había un archivo .ISO con el mismo nombre, asegurados de borrarlo previamente.
  • Abrimos Dolphin y veremos que la tenemos listada aunque tenga el nombre del Jumpstart Pet rescue (eso lo podréis modificar cambiando el opening.bnr de los archivos).
  • Ejecutamos el juego y ¡voilá! ¡Tenemos nuestro juego de Unity en Nintendo Wii!
1759132335633.png

Este juego es TOTALMENTE funcional en retail y en emulador así que ya se podría usar para Fangaming. Sin embargo os podéis preguntar: Qué ocurre con la API para las cosas específicas de Wii como Inputs, Guardado, Idioma... esas cosas vienen en el SDK. ¡Tenéis razón! Si usamos DNSpy o ILSpy para comprobar las DLL de C# del juego original, veremos que Unity centralizaba toda su API en un solo .cs. Os lo dejo por aquí y con ese, incluyendolo en el proyecto ya podéis tener inputs de Wii Motion, guardar archivos, comprobar el idioma...

Aquí tenéis un vídeo de los Inputs funcionando en una Wii real hackeada:


De esta manera, el workflow se mantendría en hacer el juego en unity 2.6 > Compilar para mac > copiar los archivos > encriptar la ISO > probar.

Simplemente decir que este es el primer y único tutorial que existe de esto mismo así que no hay otra comunidad que esté haciendo esto y por supuesto, nadie que tenga el SDK oficial + Addon lo va a publicar (creo). Así que, ¡buen fangaming!

¡Y eso sería todo!
 

Adjuntos

Última edición:

Micael_Alighieri

Emperador Kaktiácero
Redactor/a
Miembro de honor
A modo de recap general, este enfoque se basa en una técnica de ingeniería inversa que aprovecha una versión antigua del motor Unity que aún exportaba para MacOS PPC, compatible con la arquitectura PowerPC de la Wii.

Al modificar los archivos de un proyecto de Unity para MacOS PPC y reemplazarlos en una compilación de Wii, es posible generar una ROM funcional que puede ejecutarse en una Wii real o en el emulador Dolphin.

Entiendo que esto abre la puerta a poder utilizar juegos ya existentes, con las ventajas que esto conlleva, y también sirve como modelo de aprendizaje.

Sí, esto huele a ROM Hacking a la legua, menuda pericia la que demostraste, enhorabuena por este grandioso tutorial.
 

Manurocker95

Doctorando en Ingeniería Biomédica & Game Dev
Miembro insignia
Sí, esto huele a ROM Hacking a la legua, menuda pericia la que demostraste, enhorabuena por este grandioso tutorial.
Es una mezcla del romhacking con desarrollo normal ya que hay que hackear la rom pero al final el juego lo hacemos de forma normal. Si en algún momento se llegar a a filtrar sea por Unity o por Nintendo la versión con el playback engine de Wii podremos prescindir de todos esto. De momento esta es la única forma de tener fangames sin editar roms puramente en Nintendo Wii.

También hay que decir que esto tiene varias limitaciones que no he conseguido aún solventar:

  • La Wii solo admite audio en PCM o DSP. Ninguno de estos formatos son admitidos en PC, por lo que el SDK convierte automáticamente los archivos a los que sí puede procesar la Wii. De momento esto significa que no tenemos audios.

  • AssetBundles para cargar recursos solo funcionan si se tiene la versión pro. Es decir, debemos contar con una licencia legal y usarla para poder cargar recursos en tiempo real. No es obligatorio pero sí recomendable, sobretodo ante los 88MB de RAM de la Wii.

  • No podemos tener shaders custom porque hay que compilarlos para la GPU de la Wii y sin el addon de Unity necesitaríamos crear una herramienta que lo haga...

  • Las animaciones se buggean. No sé por qué, activando las animaciones de un FBX (que debe ser del formato máximo de 2010 o Unity no lo aceptará), hacen que el modelo desaparezca. No sé por qué pero ocurre xD

  • La iluminación va rara. No sé si es cosa de la Wii o de Unity, pero se ve rara. Ejemplo, este gyarados:

1759141530953.png
 
Arriba