¡Buenas! Dado que más gente ha empezado a mirar cositas para BDSP gracias a @Blup, os traigo hoy un tutorial sencillo de cómo poder exportar desde Unity Engine a Nintendo 3DS tal y como se hacía "antaño" entre 2015 y 2017. Os dejaré otro tutorial a parte con trucos y cositas a tener en cuenta que he ido descubierto a base de desarrollar fangames para la consola.
Bien, para comenzar 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 (sea Citra, Azahar...). 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. Además, vamos a usar el SDK oficial de Nintendo filtrado por la comunidad una vez deprecaron la consola. Si tenéis una licencia oficial de desarrollador, podéis descargar el mismo desde el portal de desarrollador de Nintendo y usar vuestros propios archivos. Si no y seguís esta guía, tendréis que "crackear" Unity para que se pueda usar sin licencia. Bien, ¡empezamos!
Paso 1. Prepara el SDK de Nintendo 3DS:
Lo primero es saber qué es un "SDK". Bien, Un SDK, o Software Development Kit, es un conjunto de herramientas, programas y recursos que permiten a los desarrolladores crear aplicaciones para una plataforma. En este caso, la familia Nintendo 3DS. Debéis saber que existen 2 SDK de Nintendo 3DS (CTR SDK) para Unity, 1.3.0 y 2.1.0. La primera sirve para Unity 4 y 5, mientras que el segundo sirve para Unity 2017. Vamos a usar el CTR SDK 1.3.0 porque es MUCHO más estable que el otro, a costa de no poder usar funcionalidades que existen en Unity 2017. Además, hay que tener en cuenta que el SDK está SOLO disponible para Windows por lo que cualquier otro sistema operativo queda descartado para desarrollo.
Bueno, para conseguir el oficial de forma "legal" tendríamos que habernos dado de alta en la plataforma de Nintendo como desarrolladores entre 2015 y 2019, haber aceptado los términos y condiciones y obtener el instalador y licencia desde el Nintendo Developer Interface o NDI. Si ya tenéis ésto podéis saltaros TODO este paso pues lo tendréis todo configurado de forma automática. En nuestro caso, ya que este tutorial va por otro camino, os dejo por aquí los pasos para instalarlo de forma extraoficial(muchas gracias a ElExtintorEnLlamas por hostear los archivos en su Google Drive):
Paso 2. Prepara Unity Engine 5.6.6f2:
Ya tenemos nuestro software de desarrollo, ahora falta el motor. Como he mencionado hay 2 versiones del SDK y tenemos ambas instaladas, solo falta ver qué versión de Unity vamos a usar ya que dependiendo de ella usaremos una u otra. La última versión de Unity que soporta SDK 2.1.0 (no recomendable) es Unity 2017.2.5f1 y la última que soporta 1.3.0 es Unity 5.6.6f2. Usaremos Unity 5.6 porque es mucho más estable y reciente, por lo que nos dará menos problemas que la otra:
Paso 3. Exportar nuestro juego de Unity Engine 5.6.6f2 a Nintendo 3DS:
Ya temos unity listo y abierto con nuestro nuevo proyecto. Vamos a hacer un export simple. Bien, debéis saber que Unity permite usar 2 cámaras, teniendo una para cada pantalla y así renderizar por separado.
Paso 4. Probar nuestro CCI en una consola real (retail hardware):
Ya tenemos nuestro juego funcionando en un emulador pero, ¿qué hay de una consola real? Bueno, para comenzar y como no tenemos un kit de desarrollo, necesitamos que la consola esté hackeada con custom firmware (CFW). A ser posible Luma3DS y que tenga ya FBI para instalar CIAs. Pero dirás, Unity ha creado un CCI, no un CIA, ¿son lo mismo? Pues... no, pero casi. CCI se asemeja a .3DS, el formato que hay dentro de los cartuchos pero con claves de desarrollador. Por ello, vamos a generar un .cia de nuestro CCI. Para ello:
Bien, para ahorrarnos el proceso de usar 3DS Simple CIA Converter gente de la comunidad como es CooingMaxito y xToxicLynx crearon herramientas como RidTools y CiaForgeX que podéis descargar desde este enlace. Es un plugin de Unity que mediante Tools > CiaForgeX os permite seleccionar si queréis crear el CIA directamente. Hace uso de los archivos de makerom de devkitpro para funcionar y os permite compilar un CIA funcional al hacer Build desde unity sin tocar nada más. Además, permite aumentar la RAM usada por el dispositivo al máximo (como hacen juegos como Smash Bros) para tener más espacio para recursos y procesamiento. Ya es cosa vuestra.
Con todo esto aquí podéis hacer fangames como los míos y tenerlos en vuestra consola real de Nintendo e incluso llegar a implementar funciones multijugador:

¡Espero que os haya gustado y que más gente se anime a hacer cositas para la consola!
Créditos una vez más a ElExtintorEnLlamas por hostear los archivos en su Google Drive y dar inicio a la comunidad de Unity para Nintendo 3DS.
Bien, para comenzar 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 (sea Citra, Azahar...). 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. Además, vamos a usar el SDK oficial de Nintendo filtrado por la comunidad una vez deprecaron la consola. Si tenéis una licencia oficial de desarrollador, podéis descargar el mismo desde el portal de desarrollador de Nintendo y usar vuestros propios archivos. Si no y seguís esta guía, tendréis que "crackear" Unity para que se pueda usar sin licencia. Bien, ¡empezamos!
Paso 1. Prepara el SDK de Nintendo 3DS:
Lo primero es saber qué es un "SDK". Bien, Un SDK, o Software Development Kit, es un conjunto de herramientas, programas y recursos que permiten a los desarrolladores crear aplicaciones para una plataforma. En este caso, la familia Nintendo 3DS. Debéis saber que existen 2 SDK de Nintendo 3DS (CTR SDK) para Unity, 1.3.0 y 2.1.0. La primera sirve para Unity 4 y 5, mientras que el segundo sirve para Unity 2017. Vamos a usar el CTR SDK 1.3.0 porque es MUCHO más estable que el otro, a costa de no poder usar funcionalidades que existen en Unity 2017. Además, hay que tener en cuenta que el SDK está SOLO disponible para Windows por lo que cualquier otro sistema operativo queda descartado para desarrollo.
Bueno, para conseguir el oficial de forma "legal" tendríamos que habernos dado de alta en la plataforma de Nintendo como desarrolladores entre 2015 y 2019, haber aceptado los términos y condiciones y obtener el instalador y licencia desde el Nintendo Developer Interface o NDI. Si ya tenéis ésto podéis saltaros TODO este paso pues lo tendréis todo configurado de forma automática. En nuestro caso, ya que este tutorial va por otro camino, os dejo por aquí los pasos para instalarlo de forma extraoficial(muchas gracias a ElExtintorEnLlamas por hostear los archivos en su Google Drive):
- Primero descargaremos las dependencias que requiere el SDK. Si lo instalamos desde el la página de desarrolladores de Nintendo este paso es automático pero en este caso, lo tendremos que hacer a mano. Por un lado instalamos el Microsoft .NET SDK 6.0 o superior desde la página oficial (https://dotnet.microsoft.com/es-es/download) y Microsoft .NET Framework 3.5 SP1 desde la página de microsoft o desde las opciones de Windows (https://dotnet.microsoft.com/es-es/download/dotnet-framework/net35-sp1). Simplemente descargamos, instalamos como cualquier otro programa y reiniciamos el PC.
- Una vez hecho esto, vamos a instalar todo. Vamos a usar la versión del NDI de 2018, que podéis descargar desde este enlace. Una vez descargamos, lo instalamos haciendo doble click en el ejecutable y una vez finalizado debería abrirse. Veréis algo como esto:
- Como no tenemos licencia oficial en este punto, no podremos descargar los archivos directamente de los servidores de Nintendo. Sin embargo, ya lo prepararon para imprevistos y se puede instalar de forma offline si tenemos el Megazarf (es un formato de compresión similar a ZIP propietario de Nintendo). Por tanto, lo descargaremos desde este enlace y NO lo descomprimimos todavía, simplemente lo dejamos donde nos acordemos de donde está.
- Volvemos al NDI y seleccionamos "Dev Environments" para crear nuestro entorno de desarrollo. Veremos 3 opciones, Create my own (si tenemos licencia oficial), Create from archive (el que vamos usar) y link to existing (si ya tenemos previamente uno instalado). Seleccionamos Create from archive y donde pone Megazarf file, seleccionamos en Browse y seleccionamos el megazarf que descargamos justo antes. Se nos debería configurar el entorno de desarrollo por defecto en C:\Nintendo\SDK, aunque podemos cambiar la ruta si no nos gusta. Yo recomiendo que se quede ahí porque TODOS los SDK de Nintendo se centralizan ahí.
- Damos a Install y dejamos que instale todo lo necesario. En este caso será el CTR-ARM Compiler (toolchain y la licencia que habrá que modificar si usamos el SDK que se obtiene de los servidores de Nintendo, ya que ha expirado), el CTR SDK, la toolchain para Unity y algunos plugins extra como son PIA y NEX para multijugador y soporte de video nativo.
- Cuando nos pida instalar algo como el ARMCC 5 for Nintendo Setup daremos que esté en inglés (y no japonés) y lo dejamos todo en la carpeta por defecto. Respecto al IS-CTR Software, es el soporte para SNAKE de Intelligent Systems. Lo recomendable es instalarlo pero en File Association, desmarcar TODO y que así no se abra el programa con cualquiera de esos formatos, de igual forma que los Visual Studio 2008-2013 ya que vamos a usar la versión más moderna: 2022. Además, quitaría el ISUpdate para comprobar actualizaciones automáticas y que así no consuma recursos. Deberemos instalar el driver de IS-CTR Software, eso sí.
- Y listo, ya tenemos el SDK instalado. Para asegurarnos de que esté todo debemos comprobar que en variables de entorno del sistema (podemos buscarlo en Cortana de Windows si no sabemos llegar ahí) están las referencias necesarias bien colocadas. Si es así, tenemos todo listo y podéis reiniciar Windows para que todo quede "limpio" de archivos temporales.
Paso 2. Prepara Unity Engine 5.6.6f2:
Ya tenemos nuestro software de desarrollo, ahora falta el motor. Como he mencionado hay 2 versiones del SDK y tenemos ambas instaladas, solo falta ver qué versión de Unity vamos a usar ya que dependiendo de ella usaremos una u otra. La última versión de Unity que soporta SDK 2.1.0 (no recomendable) es Unity 2017.2.5f1 y la última que soporta 1.3.0 es Unity 5.6.6f2. Usaremos Unity 5.6 porque es mucho más estable y reciente, por lo que nos dará menos problemas que la otra:
- Instalar el motor en sí y el addon para N3DS. Podemos descargar el motor desde el unity Hub oficial o desde el enlace que os dejo aquí. En cualquier caso, tenéis que descargar lo mismo porque no tenéis forma de descargar el addon. Descargamos UnityforN3DS-1_3_10-20200304.zip, lo descomprimimos en cualquier sitio. Ejecutamos UnityforN3DS-1_3_10-20200304.exe e instalamos el motor donde nos acordemos. Una vez terminado, ejecutamos UnityforN3DS-1_3_10-N3DSSupport-20200304.exe y veremos que se nos instala donde hayamos instalado el motor justo antes. ¡Perfecto!
- Aquí tenemos dos opciones: Si tenéis vuestra propia licencia de N3DS, podéis abrir ya Unity y establecerla cuando os la pida. Si no, vamos a "crackear" Unity para que no requiera licencia. Para ello, descargamos UniHacker de Internet Archive en este enlace. Lo descomprimimos donde nos acordemos y ejecutamos. Tenemos que seleccionar el Unity.exe que se encuentra donde hayamos instalado Unity 5.6.6. Pondrá que se ha parcheado correctamente y podremos usarlo sin meter licencia ninguna.
- Abrimos Unity 5.6.6 haciendo uso del acceso directo del escritorio, desde cortana o yendo a la carpeta de instalación. Nos permitirá crear un proyecto sin poner licencia ninguna (si hemos seguido el paso anterior con unihacker) o poner nuestra licencia de N3DS vinculada a nuestra cuenta de Unity. Una vez hecho, creamos un proyecto nuevo y ya podemos usar Unity con normalidad. Vamos a cambiar la plataforma a N3DS mediante File > Build Settings y en la ventanita seleccionamos Nintendo 3DS y damos a Switch Platform:
Paso 3. Exportar nuestro juego de Unity Engine 5.6.6f2 a Nintendo 3DS:
Ya temos unity listo y abierto con nuestro nuevo proyecto. Vamos a hacer un export simple. Bien, debéis saber que Unity permite usar 2 cámaras, teniendo una para cada pantalla y así renderizar por separado.
- Vamos a crear una nueva cámara en la escena por defecto con click derecho en la jerarquía > Camera y seleccionando en el inspector en vez de Upper LCD, Lower LCD para que se renderice en la pantalla de abajo. Importante: 3DS no puede renderizar el Skybox de Unity debido a la limitación en GPU, por lo que hay que dejarlo en Solid Color. En mi caso, pondré una en rojo y otra en azul.
- Además, voy a crear un Cubo que se vea en ambas pantallas mediante click derecho en la jerarquía > create 3d > Cube y lo coloco en medio.
- Guardamos la escena con control+ S o haciendo File > Save scene donde queramos en el proyecto.
- De nuevo en Build Settings la añadimos haciendo click en Add Open Scenes o arrastrando el archivo de escena ahí.
- Es importante destacar que tenemos que poner el nombre a nuestra aplicación. Así que vamos a Edit > Project Settings > Player y bajamos hasta donde pone Publishing Settings. Tenemos que poner Long name L1, Long name L2 y Short name. El corto no puede llevar espacios y los nombres no pueden llevar caracteres especiales (cosas de Unity). Además, tenemos que seleccionar Agree EULA.
- Una vez hecho todo, volvemos a File > Build Settings, damos a Build y establecemos un nombre a nuestro CCI. (IMPORTANTE NO TENER MARCADO EL GENERATE CIA IMAGE YA QUE ESTE SERIA UN CIA DE DESARROLLADOR QUE NO SE PODRIA INSTALAR)
- Se nos compilará y ese archivo ya es una ROM de unity que funciona en emuladores como Citra.
Paso 4. Probar nuestro CCI en una consola real (retail hardware):
Ya tenemos nuestro juego funcionando en un emulador pero, ¿qué hay de una consola real? Bueno, para comenzar y como no tenemos un kit de desarrollo, necesitamos que la consola esté hackeada con custom firmware (CFW). A ser posible Luma3DS y que tenga ya FBI para instalar CIAs. Pero dirás, Unity ha creado un CCI, no un CIA, ¿son lo mismo? Pues... no, pero casi. CCI se asemeja a .3DS, el formato que hay dentro de los cartuchos pero con claves de desarrollador. Por ello, vamos a generar un .cia de nuestro CCI. Para ello:
- Descargamos el conversor de este enlace.
- Lo descomprimimos donde queramos y ejecutamos el .exe.
- Se nos generarán junto al exe varias carpetas. Debemos colocar nuestro CCI en la carpeta "roms" y cambiarle el formato de cci a 3ds. O sea, si nuestro archivo es test.cci, deberá ser ahora test.3ds.
- En 3DS Simple CIA Converter damos a Convert 3DS ROM to CIA y voilà, ¡ya tenemos un CIA que funciona en emulador y en consola!
- Ahora lo copiamos a la SD de nuestra consola y podemos instalarlo sin problemas en FBI.
Bien, para ahorrarnos el proceso de usar 3DS Simple CIA Converter gente de la comunidad como es CooingMaxito y xToxicLynx crearon herramientas como RidTools y CiaForgeX que podéis descargar desde este enlace. Es un plugin de Unity que mediante Tools > CiaForgeX os permite seleccionar si queréis crear el CIA directamente. Hace uso de los archivos de makerom de devkitpro para funcionar y os permite compilar un CIA funcional al hacer Build desde unity sin tocar nada más. Además, permite aumentar la RAM usada por el dispositivo al máximo (como hacen juegos como Smash Bros) para tener más espacio para recursos y procesamiento. Ya es cosa vuestra.
Con todo esto aquí podéis hacer fangames como los míos y tenerlos en vuestra consola real de Nintendo e incluso llegar a implementar funciones multijugador:

¡Espero que os haya gustado y que más gente se anime a hacer cositas para la consola!
Créditos una vez más a ElExtintorEnLlamas por hostear los archivos en su Google Drive y dar inicio a la comunidad de Unity para Nintendo 3DS.
Última edición: