5 pontos por GN⁺ 2023-09-01 | 1 comentários | Compartilhar no WhatsApp
  • Emulador open source do Nintendo Switch escrito em C#, com foco em alta precisão e desempenho, além de uma interface amigável
  • Começou em 2017 com um único desenvolvedor e hoje é um projeto escrito do zero com uma equipe principal e dezenas de contribuidores
  • Suporte multiplataforma, funcionando em sistemas baseados em Windows 10/11, macOS e Linux
  • Testado em mais de 4.050 títulos, dos quais cerca de 3.400 foram avaliados como em nível jogável
  • O código-fonte está disponível no GitHub, permitindo que qualquer pessoa acesse e contribua

Visão geral do projeto

  • Emulador open source do Nintendo Switch escrito em C#, criado pelo desenvolvedor gdkchan
  • O objetivo é oferecer excelente precisão e desempenho, uma interface amigável e builds consistentes
  • Começou em 2017 com um único desenvolvedor e hoje é um projeto escrito do zero (Written from scratch), desenvolvido por uma equipe principal competente e dezenas de contribuidores

Principais características

  • Open source

    • O código-fonte do emulador está disponível no GitHub
  • Multiplataforma

    • Atualmente disponível em sistemas baseados em Windows 10/11, macOS e Linux
  • Compatibilidade

    • Foi testado em mais de 4.050 títulos, dos quais cerca de 3.400 foram avaliados como em nível jogável (playable)
  • Suporte

    • É possível obter suporte e interagir com usuários de emulação do Switch e desenvolvedores da equipe pelo servidor Discord do Ryujinx

Origem do nome

  • A pronúncia é Ree-You-Jinx, e vem de "Ryujin", o deus mítico do mar e dragão
  • A parte NX do nome vem do codinome do console Switch

1 comentários

 
GN⁺ 2023-09-01
Opiniões no Hacker News
  • Fico curioso sobre qual trajetória de carreira alguém precisa seguir para criar algo assim
    É só passar noites e fins de semana hackeando por 2 anos seguidos? Não imagino que haja gente sendo paga para fazer esse tipo de coisa, e parece uma área que exige um nível enorme de conhecimento profundo que provavelmente nem é bem documentado por causa de questões legais

    • Antes de trabalhar nessa área, passei quase 10 anos em grandes projetos, talvez não tão complexos quanto um emulador
      Larguei a universidade por problemas de saúde e surgiu a “oportunidade” de receber benefício por invalidez pelo resto da vida; aceitei isso e continuei programando como hobby. Nesse período, conheci muita gente on-line que era programadora por hobby, sem emprego ou dando uma pausa nos estudos, com a intenção de trabalhar depois
      Como eu não conhecia ninguém no mundo real que se interessasse por programação e me sentia sozinho, procurei sites de meetup e comecei a ir a eventos; os amigos que conheci lá me disseram para tentar trabalhar como programador profissional, eu tentei, e agora já estou há 5 anos nessa área, gostando bastante
      Olhando para trás, eu sabia que existia uma área profissional, mas achava que era um lugar só para programadores com formação e muita experiência, então nunca me ocorreu que eu pudesse fazer parte dela
      A dificuldade para entrar foi que eu era especializado demais em uma área muito específica, enquanto a indústria exigia competências mais gerais e outras especializações. Felizmente, desde o começo encontrei pessoas com interesses parecidos, como desenvolvimento de engines de jogos e renderização gráfica, que me ajudaram a entender o panorama do setor profissional
      Ainda hoje acho satisfatório fazer projetos de hobby no tempo livre; por causa do trabalho e da família, não tenho tanto tempo quanto antes, mas às vezes consigo reservar um pouco
    • Isso mesmo, é só hackear à noite e nos fins de semana
      Já fiz bastante engenharia reversa de consoles e desenvolvimento de software para dispositivos de console, principalmente desenvolvimento para GBA e NDS, e também um pouco de engenharia reversa de SMS e Genesis; está entre as coisas mais divertidas que já fiz como desenvolvedor. Mas é preciso uma persistência enorme para atravessar os obstáculos inevitáveis
    • “Hackear à noite e nos fins de semana por 2 anos seguidos” está correto
      Pode parecer difícil de acreditar, mas o principal autor do mecanismo de tradução ARM usado no outro grande emulador de Switch é médico. Ele às vezes se descreve como um “mago branco da vida real”
    • O desenvolvimento de emuladores, em geral, está mais para uma área de hobby
      Ele exige habilidades de várias áreas, e engenheiros de hardware, especialistas em engenharia reversa, redatores de documentação meticulosos, engenheiros de software especializados etc. vão construindo em cima do trabalho uns dos outros
      Projetos de uma pessoa só também aparecem, mas normalmente ficam restritos a hardwares antigos e, mesmo assim, usam documentação de várias fontes. Até a wiki nesdev foi construída sobre pesquisadores do 6502, engenharia reversa de fabricantes taiwaneses de clones, trabalhos de decapagem, emuladores antigos de NES e pilhas de documentação existente
    • Meu primeiro trabalho remunerado, em 1997, foi expandir um produto de emulador de PC para computadores desktop ARM, e aquela máquina tinha um coprocessador 486
      Eu era adolescente na época e só sabia um pouco de C e código ARM, sem nenhum conhecimento de hardware ou x86. O PC em si era relativamente bem documentado e havia outros emuladores para comparar, mas, quando eu não entendia algo e os poucos livros que tinha não ajudavam, era preciso simplesmente experimentar. Escrevia um pouco de código e observava a reação; normalmente travava, e às vezes o computador inteiro congelava
      Grande parte do trabalho era construir um modelo mental do inimigo. No meu caso, eram o boot inicial do Windows NT e a inicialização do DirectDraw, e eu escrevia código para conseguir passar, passo a passo, para a próxima etapa. Era sempre um trabalho lento, mas, quando encontrava uma pista, tinha uma sensação terapêutica
      Quando você acerta, a recompensa vem de repente. Um mundo estranho roda onde não deveria existir, como se peixes estivessem nadando numa árvore. Quero fazer mais esse tipo de coisa
  • Os emuladores antigos precisavam emular o hardware muito peculiar dos consoles antigos
    Os consoles atuais parecem bem parecidos com computadores de consumo, e eu achava que o Switch era basicamente algo como um Nvidia Jetson
    A emulação de hoje está mais próxima de oferecer as APIs necessárias, como o Wine, e rodar em uma máquina virtual, ou ainda é preciso emular o hardware real?

    • É mais alto nível do que antes, mas o principal problema é a GPU
      As APIs gráficas usadas pelos jogos geralmente expõem vários detalhes de hardware, permitindo que os jogos sejam ajustados finamente para extrair o máximo desempenho daquele hardware. Traduzir essas chamadas de API específicas de hardware para OpenGL/Direct3D/Vulkan/Metal dá muito trabalho
    • Considerando apenas o Switch, como ele usa uma CPU ARM, em sistemas x86 ainda é necessário um emulador ARM
      Mas em sistemas ARM nativos, o código da CPU pode rodar praticamente sem alterações; o Skyline, que estava sendo desenvolvido para Android e foi descontinuado, fazia isso, e parece que o Yuzu também pretende implementar esse recurso no futuro
      O problema maior é a GPU. Ela é uma GPU Nvidia Maxwell, mas usa uma API customizada própria do Switch, chamada internamente de NVN, então ainda é necessária uma camada completa de tradução, incluindo recompilação de shaders
  • Estou usando isto em um MacBook Pro M1 para jogar Breath of the Wild e Mario Kart com um controle de Xbox
    Meus filhos e eu adoramos

    • Que bom que vocês estão se divertindo. Vale considerar comprar um Switch de verdade também
      Para mim, ele se destaca especialmente em dois usos. Primeiro, quando a família inteira joga jogos da Nintendo. Todos os jogos da Nintendo são projetados com muito cuidado para que 4 pessoas, cada uma com seu pequeno controle, passem pelo fluxo de escolher personagens, configurar opções etc. antes de começar a jogar
      Segundo, quando se joga no modo portátil/destacado. Há um prazer em jogar segurando nas mãos e, diferente de um tablet, há controles físicos. A maioria dos jogos é muito melhor que um jogo médio de iPad; mais precisamente, jogos de combinar 3 ou clickers sem sentido não chegam ao topo com tanta facilidade quanto no iPad
    • Qual é a média de quadros por segundo?
  • Eu não imaginava que C# se encaixaria bem para esse tipo de uso, mas é legal de ver

    • Pelo que sei, o Ryujinx de fato converte código ARM para .NET IL, e depois o .NET compila via JIT para código de máquina
      Vejo isso como uma abordagem bastante inovadora para emulação
      E, no Apple Silicon, ele usa o hipervisor para executar nativamente as instruções Arm64v8 do Switch
      https://blog.ryujinx.org/the-impossible-port-macos/
    • C#, especialmente nas versões mais recentes, vem se transformando em certa medida numa linguagem de programação de sistemas
      Continuam sendo adicionadas ferramentas que permitem gerenciamento e manipulação de memória em nível bem baixo, e o fato de poder rodar em várias plataformas ou gerar código nativo o torna atraente. Também é divertido de escrever
    • Se é para falar de emulador escrito em C#, nunca ouviu falar do RunUO?
      C# revolucionou o mundo de UO uns 20 anos atrás, com um bom equilíbrio entre simplicidade, clareza e desempenho
      https://www.runuo.net/
      https://github.com/ClassicUO/ClassicUO
      Droga, eu não devia ter pensado em UO. Agora fiquei triste e me sentindo velho
    • Na verdade, C# é uma escolha bem comum em emuladores
      Grosso modo, C/C++ vêm primeiro, e nesse caso é realmente difícil separar os dois. Codebases que usam puramente só um deles são raras. Depois vem Rust, talvez em 3º ou 4º lugar em emuladores de hobby, e possivelmente mais à frente em projetos sérios. Em seguida vêm C# e Java
      JavaScript e Python são muito comuns em projetos de hobby, mas em codebases sérias normalmente são escolhas excepcionais. WASM pode ser considerado uma exceção
    • BizHawk é um emulador de referência para criação de speedruns assistidas por ferramentas e é escrito em C#
      https://github.com/TASEmulators/BizHawk
  • É meio irritante que a Irdeto, criadora do infame DRM Denuvo, tenha feito um produto voltado especificamente a emuladores de Switch
    Mesmo que os emuladores em si sejam legais

    • É porque a maioria dos usuários de emuladores são usuários de cópias piratas
      Não há muita gente que faça dump dos próprios jogos
  • Usei os dois, mas para jogar Tears of the Kingdom prefiro o Yuzu: https://yuzu-emu.org/
    Ainda assim, ambos são excelentes, e os dois projetos avançam tão rápido que a impressão que formei no começo deste ano provavelmente já está ultrapassada

  • Ryujinx é um dos projetos em C# mais impressionantes que já vi
    O outro é o Roslyn

  • Existe alguma forma de jogar com isso de maneira legal sem ter feito dump diretamente de um Switch?
    Dá para comprar jogos de Switch pelo navegador?

    • O único jeito é ter um Switch com jailbreak
      Um Switch comprado novo quase certamente será um V2 corrigido, e o Switch Lite e o OLED também não podem receber jailbreak sem soldar um modchip
    • Isso deve depender da jurisdição
      Mas, se você possui o jogo, importa de que forma obteve a ROM?
    • É possível comprar jogos de Switch pelo navegador
      https://www.nintendo.com/store/games/nintendo-switch-games/#...
      Mas, se você não tiver um Switch, não conseguirá baixar nem fazer dump
  • Gosto tanto do Yuzu quanto do Ryujinx
    É incrível que eles possam oferecer uma experiência melhor do que o console nativo. Mas, graças ao Denuvo, parece que essa festa pode acabar em breve

    • Acho que isso não vai acontecer
      Até agora, o que a Denuvo disse sobre bloquear emulação é apenas uma alegação. Mesmo que realmente bloqueie, as pessoas terão tempo ilimitado para pesquisar formas de contornar
  • Por que a Nintendo não lança seus jogos em outras plataformas?
    Eu gostaria de jogar Zelda, mas não vou comprar um console por causa de um único jogo

    • A Nintendo é simplesmente a Nintendo, e há gente suficiente que comprou um console por causa de um jogo, ou de vários, para que ela continue tendo dinheiro para agir como Nintendo
      Não quero necessariamente defendê-la, mas, para entender a postura atual, é preciso olhar para o colapso do mercado de videogames na América do Norte em 1983. Qualquer porcaria era lançada como jogo, o mercado inteiro de videogames desabou, e os consumidores perderam a confiança na plataforma que era um console de jogos específico. Em vez disso, se comprassem um computador doméstico, tinham jogos e também outros usos
      O NES foi o oposto disso. Havia o ecossistema fechado da Nintendo e muito desenvolvimento de jogos first-party, e essa abordagem deu certo, enriqueceu a empresa e a tornou uma das principais participantes do mercado de videogames. Por que abandonar uma forma de atuar que ainda funciona quase 40 anos depois?
    • Comprei um Switch OLED e o jogo para jogar Tears of the Kingdom, e tudo saiu por 420 dólares
      Se eu pudesse jogar em um notebook com tela e alto-falantes melhores, teria pago só 60 dólares. Além disso, agora é mais provável que eu compre outros jogos da Nintendo para aproveitar melhor o aparelho novo. Se eu fosse a empresa, acho que escolheria a opção com 7 vezes mais receita
    • Além do que outros comentários disseram, a Nintendo escolheu uma estratégia de console diferente da Microsoft e da Sony, então há um lado em que ela não tem muita escolha além de manter seus títulos first-party presos à plataforma
      O Nintendo Switch tem desempenho muito baixo em comparação com o PS4/5 e o Xbox Series X da mesma geração, mas tem a grande vantagem de ser o console portátil/de viagem definitivo. Os consoles da Sony e da Microsoft normalmente conseguem entregar mais quadros por segundo ou gráficos melhores, e em geral pendem para o lado gráfico, enquanto o Switch precisa equilibrar o formato físico e a duração da bateria, então é bastante limitado. Afinal, se é um portátil e você só consegue jogar por 30 minutos, não faz sentido
      Uma grande parte da base de usuários, incluindo pessoas que gostariam de usar legalmente emuladores como este, provavelmente preferiria outros consoles ou PC/Mac do ponto de vista de desempenho puro
      Além disso, ao vender em outra plataforma, especialmente no caso de jogos dos estúdios internos, a receita por cópia provavelmente seria menor do que vendendo na própria plataforma
      Considerando esses pontos, lançar em outras plataformas reduziria de forma bem significativa o fluxo de receita
    • A Nintendo é obcecada em fazer com que seus produtos sejam usados, em geral, apenas da maneira pretendida
      Se não fosse assim, ela não teria corrigido com patch um bug de duplicação de itens que era quase impossível de encontrar por acaso, e já teria permitido há muito tempo algo básico como remapear controles. Em vez disso, nos jogos da Nintendo você só pode controlar do jeito planejado e testado. Ela também foi bastante incômoda por muito tempo com conteúdo que incluía streaming, análises e vídeos de gameplay, e até certo ponto ainda é
      Para muita gente, porém, não é questão de um único jogo. A Nintendo tem muitos exclusivos bem-sucedidos, como Zelda, Mario Kart, Smash, vários jogos de plataforma do Mario que podem ser divididos entre títulos principais 3D e complementares 2D, Splatoon, Mario Party, Fire Emblem, Xenoblade, Kirby etc.
      Na prática, você acaba tendo pelo menos uns 10 jogos exclusivos de alta qualidade e divertidos, embora caros. Isso mesmo deixando de lado o fato de que o Wii U fracassou e gerou resultados estranhos, como Mario Kart 8 ser relançado em uma edição com DLC incluído e depois receber um grande passe de expansão
    • Você meio que respondeu à própria pergunta
      Se quiser jogar Zelda, precisa pagar pelo menos 260 dólares à Nintendo. Se quiser jogar em algo melhor que um Switch Lite, são mais 100 dólares
      Diferentemente da Sony ou da Microsoft, a Nintendo realmente lucra não só com a venda de jogos, mas também com a venda de hardware