- Emulador de Nintendo Switch de código abierto escrito en C#, con el objetivo de ofrecer alta precisión, buen rendimiento y una interfaz fácil de usar
- Comenzó en 2017 con un solo desarrollador y hoy es un proyecto escrito desde cero en el que participan un equipo central y decenas de colaboradores
- Soporte multiplataforma para sistemas basados en Windows 10/11, macOS y Linux
- Se ha probado con más de 4,050 títulos, de los cuales alrededor de 3,400 fueron evaluados como jugables
- El código fuente está publicado en GitHub, por lo que cualquiera puede acceder y contribuir
Descripción general del proyecto
- Emulador de Nintendo Switch de código abierto escrito en C#, creado por el desarrollador gdkchan
- Su objetivo es ofrecer excelente precisión y rendimiento, una interfaz amigable para el usuario y compilaciones consistentes
- Comenzó en 2017 con un solo desarrollador y actualmente es un proyecto escrito desde cero (Written from scratch) desarrollado por un sólido equipo central junto con decenas de colaboradores
Características principales
-
Código abierto
- El código fuente del emulador está publicado en GitHub
-
Multiplataforma
- Actualmente está disponible en sistemas basados en Windows 10/11, macOS y Linux
-
Compatibilidad
- Se ha probado con más de 4,050 títulos, de los cuales alrededor de 3,400 fueron evaluados como jugables (playable)
-
Soporte
- A través del servidor de Discord de Ryujinx es posible recibir soporte e interactuar con usuarios de emulación de Switch y desarrolladores del equipo
Origen del nombre
- Se pronuncia Ree-You-Jinx y proviene de "Ryujin", el dios del mar y dragón de la mitología
- La parte NX del nombre proviene del nombre clave de la consola Switch
1 comentarios
Opiniones de Hacker News
Me pregunto qué trayectoria profesional hay que seguir para poder crear algo así.
¿Es simplemente hackear durante noches y fines de semana por 2 años enteros? No parece que haya gente a la que le paguen por hacer este tipo de cosas, y parece un campo que requiere conocimientos increíblemente profundos, probablemente mal documentados por cuestiones legales.
Dejé la universidad por problemas médicos y se me presentó la “oportunidad” de recibir prestaciones por discapacidad de por vida; la acepté y seguí programando como hobby. Durante ese tiempo conocí en línea a muchos programadores aficionados que no tenían empleo o que se habían tomado una pausa de los estudios y planeaban conseguir trabajo más adelante.
Como no conocía a nadie en la vida real interesado en la programación, me sentí solo y empecé a buscar eventos en sitios de meetup. Los amigos que conocí ahí me sugirieron intentar trabajar como programador profesional; lo probé, y ya llevo 5 años trabajando en este campo y disfrutándolo.
Mirando hacia atrás, sabía que existían áreas profesionales, pero pensaba que eran para programadores con formación y mucha experiencia, así que nunca se me ocurrió que yo pudiera formar parte de eso.
Lo difícil al entrar fue que yo estaba demasiado especializado en un área concreta, mientras que la industria exigía capacidades más generales y otras especializaciones. Por suerte, desde el principio conocí a personas con intereses parecidos, como desarrollo de motores de juego y renderizado gráfico, que me ayudaron a entender el panorama de la industria profesional.
Todavía me resulta satisfactorio trabajar en proyectos personales en mi tiempo libre; por el trabajo y la familia ya no tengo tanto tiempo como antes, pero de vez en cuando me hago un espacio.
He hecho bastante ingeniería inversa de consolas y desarrollo de software para dispositivos de consola, sobre todo desarrollo para GBA y NDS, y algo de ingeniería inversa de SMS y Genesis; ha sido de lo más divertido que he hecho como desarrollador. Eso sí, hace falta muchísima perseverancia para atravesar los obstáculos inevitables.
Aunque cueste creerlo, el autor principal del motor de traducción ARM usado en el otro emulador importante de Switch es médico. A veces se describe a sí mismo como un “mago blanco de la vida real”.
Requiere habilidades de varias áreas, y hardware engineers, especialistas en ingeniería inversa, redactores meticulosos de documentación e ingenieros de software especializados van construyendo unos sobre el trabajo de otros.
Se ven proyectos de una sola persona, pero normalmente se limitan a hardware antiguo, e incluso así aprovechan documentación de varias fuentes. Hasta la wiki de nesdev está construida sobre investigadores del 6502, ingeniería inversa de fabricantes taiwaneses de clones, trabajos de decapping, emuladores antiguos de NES y montones de documentación existente.
En ese entonces era adolescente y solo sabía algo de C y código ARM; no sabía nada de hardware ni de x86. La PC original estaba bastante bien documentada y había otros emuladores con los que comparar, pero cuando no entendía algo y los pocos libros que tenía no ayudaban, simplemente tenía que experimentar. Escribía un poco de código y observaba la reacción; por lo general crasheaba, y a veces se congelaba toda la computadora.
Gran parte del trabajo consistía en construir un modelo mental del adversario. En mi caso eran el arranque inicial de Windows NT y la inicialización de DirectDraw, e iba escribiendo código para hacer que avanzara paso a paso. Siempre era un proceso lento, pero cuando encontraba una pista también se sentía terapéutico.
Cuando lo logras, la recompensa llega de golpe. Un mundo extraño funciona donde no debería, como ver peces nadando en un árbol. Me gustaría hacer más cosas de este tipo.
Los primeros emuladores tenían que emular el hardware muy peculiar de las primeras consolas.
Las consolas de hoy parecen bastante similares a computadoras de consumo, y yo pensaba que la Switch era básicamente algo como una Nvidia Jetson.
¿La emulación actual se parece más a Wine, es decir, proveer las API necesarias y ejecutar en una máquina virtual, o sigue siendo necesaria la emulación real del hardware?
Las API gráficas que usan los juegos suelen exponer muchos detalles del hardware para que el juego pueda ajustarse finamente y extraer el máximo rendimiento de ese hardware. Traducir esas llamadas de API específicas del hardware a OpenGL/Direct3D/Vulkan/Metal requiere mucho trabajo.
Pero en sistemas ARM nativos se puede ejecutar el código de CPU casi tal cual; Skyline, que se desarrollaba para Android y luego se discontinuó, ya lo hacía, y parece que Yuzu también planea implementar esta función en el futuro.
El problema más grande es la GPU. Es una GPU Nvidia Maxwell, pero usa una API personalizada exclusiva de Switch, cuyo nombre interno es NVN, así que sigue haciendo falta una capa completa de traducción, incluida la recompilación de shaders.
En una Macbook Pro M1 estoy jugando Breath of the Wild y Mario Kart con esto usando un control de Xbox.
A mis hijos y a mí nos encanta.
Para mí destaca especialmente en dos usos. Primero, cuando toda la familia juega juegos de Nintendo. Todos los juegos de Nintendo están diseñados con muchísimo cuidado para que 4 personas, cada una con un control pequeño, pasen por el flujo de elegir personajes, configurar opciones y demás antes de empezar.
Segundo, cuando se juega en modo portátil/separado. Tiene el placer de jugar en la mano y, a diferencia de una tablet, cuenta con controles físicos. La mayoría de los juegos son mucho mejores que el juego promedio de iPad; más precisamente, los juegos match-3 o clickers sin sentido no llegan tan fácilmente a la cima como en iPad.
No pensé que C# fuera a encajar bien para este tipo de uso, pero se ve bien
Me parece un enfoque bastante innovador para la emulación
Y en Apple Silicon usa el hipervisor para ejecutar de forma nativa las instrucciones Arm64v8 de la Switch
https://blog.ryujinx.org/the-impossible-port-macos/
Siguen agregándole herramientas que permiten una gestión y manipulación de memoria de muy bajo nivel, y resulta atractivo porque puede ejecutarse en varias plataformas o generar código nativo. También es divertido escribir en él
C# revolucionó el mundo de UO hace unos 20 años, y tenía un buen equilibrio entre simplicidad, claridad y rendimiento
https://www.runuo.net/
https://github.com/ClassicUO/ClassicUO
Demonios, no debería haber pensado en UO. Ahora me siento triste y viejo
Aproximadamente primero están C/C++, y en este caso es realmente difícil distinguirlos. Son raras las bases de código que usen puramente uno solo. Después viene Rust, que en emuladores de hobby estaría por el 3.º o 4.º lugar, aunque en proyectos serios puede estar más arriba. Luego vendrían C# y Java
JavaScript y Python son muy comunes en proyectos de hobby, pero en bases de código serias suelen ser una elección excepcional. WASM puede considerarse una excepción
https://github.com/TASEmulators/BizHawk
Me molesta un poco que Irdeto, la empresa que creó el infame DRM Denuvo, haya hecho un producto dirigido específicamente a los emuladores de Switch
Incluso aunque los emuladores en sí sean legales
No hay mucha gente que dumpee sus propios juegos
Probé ambos, pero para jugar Tears of the Kingdom prefiero Yuzu: https://yuzu-emu.org/
Aun así, los dos son excelentes, y como ambos proyectos avanzan rápido, es posible que la impresión que me formé a principios de este año ya esté desactualizada
Hay una guía útil sobre cómo usarlo aquí: https://github.com/Abd-007/Switch-Emulators-Guide/blob/main/...
https://yuzu-emu.org/entry/yuzu-android/
Al menos en escritorio hay un programa de acceso anticipado vía Patreon. Aunque también puede descargarse desde aquí: https://pineappleea.github.io/
Skyline funciona en Android, pero nunca logré que corriera bien en ningún dispositivo. Ya no se desarrolla
https://skyline-emu.one/
Yo estoy del lado contrario; recuerdo que, si tienes una máquina bastante reciente, configurar Ryujinx es mucho más rápido
Ryujinx es uno de los proyectos en C# más impresionantes que he visto
El otro es Roslyn
¿Hay alguna forma de jugar juegos legalmente con esto si no los dumpeaste directamente desde una Switch?
¿Se pueden comprar juegos de Switch desde un navegador web?
Una Switch comprada nueva casi seguro será una V2 parcheada, y ni la Switch Lite ni la OLED pueden tener jailbreak sin soldarles un modchip
Pero si eres dueño del juego, ¿importa de qué manera conseguiste la ROM?
https://www.nintendo.com/store/games/nintendo-switch-games/#...
Pero si no tienes una Switch, no puedes descargarlos ni dumpearlos
Me gustan tanto Yuzu como Ryujinx
Es sorprendente que puedan ofrecer una experiencia mejor que la consola nativa. Aunque con Denuvo siento que esta fiesta podría terminar pronto
Hasta ahora, que Denuvo pueda impedir la emulación es solo una afirmación. Incluso si realmente la impidiera, la gente tiene tiempo ilimitado para investigar formas de eludirlo
¿Por qué Nintendo no lanza sus juegos en otras plataformas?
Quiero jugar Zelda, pero no voy a comprar una consola solo por un juego.
No es que quiera defenderla, pero para entender su actitud actual hay que mirar el colapso del mercado de videojuegos en Norteamérica en 1983. Al lanzarse cualquier basura como juego, todo el mercado de videojuegos se vino abajo y los consumidores perdieron la confianza en la plataforma de una consola de videojuegos específica. En cambio, si compraban una computadora doméstica, tenían juegos y también otros usos.
La NES fue lo contrario. Nintendo tenía un ecosistema cerrado y desarrollaba muchos juegos first-party; ese enfoque tuvo éxito, hizo rica a la empresa y la convirtió en un actor importante del mercado de videojuegos. Casi 40 años después, ¿por qué abandonaría algo que todavía funciona?
Si hubiera podido jugarlo en una laptop con mejor pantalla y parlantes, habría pagado solo 60 dólares. Además, ahora aumenta la probabilidad de que compre otros juegos de Nintendo para aprovechar más el nuevo dispositivo. Si fuera la empresa, creo que elegiría la opción que genera 7 veces más ingresos.
La Nintendo Switch tiene un rendimiento muy bajo comparada con las PS4/5 y Xbox Series X de la misma generación, pero tiene la gran ventaja de ser la consola portátil/de viaje definitiva. Las consolas de Sony y Microsoft normalmente pueden ofrecer más cuadros por segundo o mejores gráficos, y por lo general se inclinan hacia lo gráfico, pero la Switch está muy limitada porque debe equilibrar el factor de forma y la duración de la batería. Al fin y al cabo, si es portátil pero solo permite jugar 30 minutos, no tiene sentido.
Una gran parte de la base de usuarios, incluidas las personas que quieren usar este tipo de emuladores de forma legal, probablemente preferiría otras consolas o una PC/Mac desde una perspectiva de rendimiento puro.
Además, si vendieran en otra plataforma, especialmente en el caso de juegos de estudios internos, parece probable que ganaran menos por copia vendida que vendiéndolos en su propia plataforma.
Teniendo esto en cuenta, lanzar en otras plataformas recortaría bastante sus flujos de ingresos.
Si no fuera así, no habría parcheado un bug de duplicación de ítems que era casi imposible encontrar por casualidad, y desde hace mucho habría permitido algo tan básico como cambiar los controles. En cambio, en los juegos de Nintendo solo se puede controlar de la forma prevista y probada en playtests. Durante mucho tiempo también fue bastante molesta con el contenido que incluía streaming, reseñas y videos de gameplay, y hasta cierto punto todavía lo es.
Dicho eso, para mucha gente no se trata de un solo juego. Nintendo tiene bastantes exclusivas exitosas, como Zelda, Mario Kart, Smash, varios juegos de plataformas de Mario que pueden dividirse en títulos principales 3D y títulos complementarios 2D, Splatoon, Mario Party, Fire Emblem, Xenoblade, Kirby, etc.
En la práctica, uno termina teniendo al menos unos 10 juegos exclusivos de alta calidad y disfrutables, aunque caros. Y eso incluso dejando de lado que el fracaso de Wii U produjo resultados extraños, como que Mario Kart 8 se relanzara en una versión con DLC incluido y más tarde recibiera un gran pase de expansión.
Si quieres jugar Zelda, tienes que pagarle a Nintendo al menos 260 dólares. Si quieres jugarlo en algo mejor que una Switch Lite, son 100 dólares más.
A diferencia de Sony o Microsoft, Nintendo realmente obtiene ganancias no solo con la venta de juegos, sino también con la venta de hardware.