RyujinX - mã nguồn mở của trình giả lập Nintendo Switch
(ryujinx.org)- Là trình giả lập Nintendo Switch mã nguồn mở được viết bằng C#, hướng tới độ chính xác và hiệu năng cao cùng giao diện thân thiện với người dùng
- Bắt đầu vào năm 2017 từ một nhà phát triển duy nhất, hiện nay là dự án được viết lại hoàn toàn từ đầu với đội ngũ nòng cốt và hàng chục người đóng góp tham gia
- Hỗ trợ đa nền tảng, hoạt động trên các hệ thống Windows 10/11, macOS, Linux
- Đã được thử nghiệm trên hơn 4.050 tựa game, trong đó khoảng 3.400 tựa được đánh giá ở mức có thể chơi được
- Mã nguồn được công khai trên GitHub, nên bất kỳ ai cũng có thể truy cập và đóng góp
Tổng quan dự án
- Trình giả lập Nintendo Switch mã nguồn mở được viết bằng C#, do nhà phát triển gdkchan tạo ra
- Mục tiêu là mang lại độ chính xác và hiệu năng vượt trội, giao diện thân thiện với người dùng và các bản build nhất quán
- Bắt đầu năm 2017 với một nhà phát triển duy nhất, hiện được phát triển bởi một đội ngũ nòng cốt giàu năng lực cùng hàng chục người đóng góp trong một dự án được viết lại hoàn toàn từ đầu (Written from scratch)
Tính năng chính
-
Mã nguồn mở
- Mã nguồn của trình giả lập được công khai trên GitHub
-
Đa nền tảng
- Hiện có thể sử dụng trên các hệ thống Windows 10/11, macOS, Linux
-
Tương thích
- Đã được thử nghiệm trên hơn 4.050 tựa game, trong đó khoảng 3.400 tựa được đánh giá ở mức có thể chơi được (playable)
-
Hỗ trợ
- Có thể nhận hỗ trợ và giao lưu với người dùng giả lập Switch cũng như các nhà phát triển trong nhóm thông qua máy chủ Discord của Ryujinx
Nguồn gốc tên gọi
- Cách phát âm là Ree-You-Jinx, bắt nguồn từ "Ryujin", vị thần biển và rồng trong thần thoại
- Phần NX trong tên được lấy từ codename của máy Switch
1 bình luận
Các ý kiến trên Hacker News
Tôi tò mò không biết phải đi theo lộ trình sự nghiệp nào để làm được thứ như thế này
Chẳng lẽ chỉ là hack vào ban đêm và cuối tuần suốt 2 năm sao? Tôi không nghĩ có ai được trả tiền để làm việc này, mà đây có vẻ là lĩnh vực cần kiến thức cực kỳ sâu, có lẽ cũng không được ghi chép tài liệu đầy đủ vì các vấn đề pháp lý
Tôi bỏ đại học vì vấn đề sức khỏe và có “cơ hội” nhận trợ cấp khuyết tật suốt đời; tôi chấp nhận điều đó và tiếp tục lập trình như một sở thích. Trong thời gian đó, tôi gặp nhiều lập trình viên sở thích trên mạng, những người không có việc làm hoặc tạm nghỉ học và dự định đi làm sau này
Ngoài đời tôi không quen ai quan tâm đến lập trình nên thấy cô đơn, bèn tìm các trang meetup và bắt đầu tham gia sự kiện. Những người bạn tôi gặp ở đó khuyên tôi thử làm lập trình viên chuyên nghiệp, tôi đã thử, và giờ đã làm trong lĩnh vực này được 5 năm và rất thích
Nhìn lại thì tôi biết có các lĩnh vực chuyên môn, nhưng tôi nghĩ đó là nơi chỉ dành cho những lập trình viên được đào tạo và giàu kinh nghiệm, nên chưa từng nghĩ mình có thể trở thành một phần trong đó
Khó khăn khi bước vào là tôi đã quá chuyên biệt vào một lĩnh vực cụ thể, trong khi ngành lại đòi hỏi năng lực tổng quát hơn và các kiểu chuyên môn hóa khác. May mắn là ngay từ đầu tôi đã gặp những người có mối quan tâm tương tự như phát triển game engine, dựng hình đồ họa, và họ giúp tôi hiểu bức tranh của ngành chuyên nghiệp
Đến giờ tôi vẫn thấy thỏa mãn khi làm các dự án sở thích trong thời gian rảnh; vì công việc và gia đình nên không còn nhiều thời gian như trước, nhưng thỉnh thoảng tôi vẫn dành được chút thời gian
Tôi đã làm khá nhiều về kỹ nghệ đảo ngược console và phát triển phần mềm cho thiết bị console, chủ yếu là phát triển trên GBA và NDS, cùng một chút kỹ nghệ đảo ngược SMS và Genesis; đó thực sự là một trong những việc thú vị nhất tôi từng làm với tư cách lập trình viên. Tuy nhiên, để vượt qua những trở ngại không thể tránh khỏi thì cần sự bền bỉ rất lớn
Nghe khó tin nhưng tác giả chính của engine chuyển đổi ARM dùng trong một trình giả lập Switch lớn khác là một bác sĩ. Đôi khi người đó tự mô tả mình là “bạch pháp sư ngoài đời thực”
Nó cần kỹ năng từ nhiều lĩnh vực, và các kỹ sư phần cứng, chuyên gia kỹ nghệ đảo ngược, người viết tài liệu tỉ mỉ, kỹ sư phần mềm chuyên biệt, v.v. sẽ xây dựng tiếp trên thành quả của nhau
Cũng có các dự án một người, nhưng thường chỉ giới hạn ở phần cứng cũ, và ngay cả vậy cũng dựa vào tài liệu từ nhiều nguồn. Ngay cả wiki nesdev cũng được xây dựng trên các nghiên cứu về 6502, kỹ nghệ đảo ngược từ các nhà sản xuất bản sao ở Đài Loan, công việc decap, các trình giả lập NES cũ và cả đống tài liệu sẵn có
Khi ấy tôi còn là thiếu niên, chỉ biết một chút C và mã ARM, hoàn toàn không có kiến thức về phần cứng hay x86. PC vốn được tài liệu hóa khá tốt và cũng có các trình giả lập khác để so sánh, nhưng khi không hiểu gì và vài cuốn sách tôi có cũng không giúp được, thì chỉ còn cách thử nghiệm. Viết một ít mã rồi xem phản ứng; thường là crash, thỉnh thoảng thì cả máy tính treo cứng
Phần lớn công việc là xây dựng mô hình tinh thần của đối thủ. Với tôi đó là giai đoạn khởi động ban đầu của Windows NT và khởi tạo DirectDraw, rồi viết mã để từng bước khiến nó chuyển sang bước tiếp theo. Công việc luôn chậm, nhưng khi tìm ra manh mối thì cảm giác cũng như được trị liệu
Khi làm đúng, phần thưởng đến rất đột ngột. Một thế giới xa lạ vận hành ở nơi đáng lẽ không thể tồn tại, giống như nhìn thấy cá bơi trên cây. Tôi muốn làm thêm những việc như thế
Các trình giả lập thời đầu phải giả lập phần cứng rất đặc thù của những console đời đầu
Console ngày nay trông khá giống máy tính tiêu dùng, và tôi từng nghĩ Switch về cơ bản giống như một Nvidia Jetson
Việc giả lập hiện nay có gần với kiểu cung cấp API cần thiết như Wine rồi chạy trong máy ảo không, hay vẫn cần giả lập phần cứng thực sự?
API đồ họa mà game dùng thường để lộ nhiều chi tiết phần cứng khác nhau, cho phép game được tinh chỉnh để khai thác tối đa hiệu năng trên phần cứng đó. Việc dịch các lệnh gọi API đặc thù phần cứng như vậy sang OpenGL/Direct3D/Vulkan/Metal đòi hỏi rất nhiều công sức
Nhưng trên hệ thống ARM native, gần như có thể chạy nguyên mã CPU; Skyline, vốn từng được phát triển cho Android rồi ngừng, đã làm như vậy, và có vẻ Yuzu cũng dự định triển khai tính năng này trong tương lai
Vấn đề lớn hơn là GPU. Đó là GPU Nvidia Maxwell, nhưng vì dùng API tùy biến dành riêng cho Switch với tên nội bộ là NVN, nên vẫn cần một lớp chuyển đổi đầy đủ, bao gồm cả biên dịch lại shader
Tôi đang dùng cái này trên Macbook Pro M1 để chơi Breath of the Wild và Mario Kart bằng tay cầm Xbox
Tôi và bọn trẻ rất thích
Với tôi, nó đặc biệt xuất sắc ở hai trường hợp sử dụng. Thứ nhất là khi cả gia đình chơi game Nintendo. Mọi game Nintendo đều được thiết kế rất cẩn thận để 4 người, mỗi người cầm một tay cầm nhỏ, có thể đi qua các bước như chọn nhân vật và thiết lập tùy chọn trước khi bắt đầu chơi
Thứ hai là khi chơi ở chế độ cầm tay/tháo rời. Có niềm vui riêng khi cầm trên tay, và khác với máy tính bảng, nó có điều khiển vật lý. Phần lớn game hay hơn nhiều so với game iPad trung bình; nói chính xác hơn, các game match-3 hay clicker vô nghĩa không dễ leo lên top như trên iPad
Tôi không ngờ C# lại phù hợp với mục đích như thế này, trông hay đấy
Tôi xem đây là một cách tiếp cận khá đổi mới đối với mô phỏng
Và trên Apple Silicon, nó dùng hypervisor để chạy native các lệnh Arm64v8 của Switch
https://blog.ryujinx.org/the-impossible-port-macos/
Các công cụ cho phép quản lý và thao tác bộ nhớ ở mức rất thấp liên tục được bổ sung, và vì nó có thể chạy trên nhiều nền tảng hoặc tạo mã native nên khá hấp dẫn. Viết bằng nó cũng thú vị
C# đã đổi mới thế giới UO khoảng 20 năm trước, với sự cân bằng tốt giữa tính đơn giản, rõ ràng và hiệu năng
https://www.runuo.net/
https://github.com/ClassicUO/ClassicUO
Chết tiệt, lẽ ra đừng nghĩ tới UO. Giờ thấy buồn và già đi
Đại khái C/C++ đứng đầu, và trong trường hợp này thật sự khó tách bạch hai thứ đó. Hiếm có codebase nào chỉ thuần dùng một bên. Tiếp theo là Rust, khoảng hạng 3–4 trong các emulator làm theo sở thích, còn trong các dự án nghiêm túc thì có thể đứng cao hơn. Sau đó là C# và Java
JavaScript và Python rất phổ biến trong các dự án sở thích, nhưng trong các codebase nghiêm túc thì thường là lựa chọn ngoại lệ. WASM có thể xem là một ngoại lệ
https://github.com/TASEmulators/BizHawk
Khá khó chịu khi Irdeto, công ty làm ra Denuvo DRM khét tiếng, lại tạo một sản phẩm nhắm riêng vào emulator Switch
Mặc dù bản thân emulator là hợp pháp
Không có nhiều người tự dump game của mình
Tôi đã dùng cả hai, nhưng khi chơi Tears of the Kingdom thì tôi thích Yuzu hơn: https://yuzu-emu.org/
Dù vậy cả hai đều rất tuyệt, và tốc độ phát triển của cả hai dự án đều nhanh nên ấn tượng tôi hình thành hồi đầu năm có thể đã lỗi thời rồi
Có một hướng dẫn hữu ích về cách sử dụng ở đây: https://github.com/Abd-007/Switch-Emulators-Guide/blob/main/...
https://yuzu-emu.org/entry/yuzu-android/
Ít nhất trên desktop thì có chương trình early access thông qua Patreon. Tuy nhiên cũng có thể tải ở đây: https://pineappleea.github.io/
Skyline chạy trên Android nhưng tôi chưa từng chạy được nó ổn thỏa trên bất kỳ thiết bị nào. Nó không còn được phát triển nữa
https://skyline-emu.one/
Tôi thì ngược lại, tôi nhớ là nếu có máy khá mới thì thiết lập Ryujinx nhanh hơn nhiều
Ryujinx là một trong những dự án C# ấn tượng nhất mà tôi từng thấy
Một dự án khác là Roslyn
Nếu không có bản dump trực tiếp từ Switch của mình thì có cách nào chơi game hợp pháp bằng cái này không?
Có thể mua game Switch bằng trình duyệt web không?
Switch mua mới gần như chắc chắn là bản V2 đã được vá, còn Switch Lite và OLED cũng không thể jailbreak nếu không hàn modchip
Nhưng nếu bạn sở hữu game, việc bạn lấy ROM bằng cách nào có quan trọng không?
https://www.nintendo.com/store/games/nintendo-switch-games/#...
Tuy nhiên nếu không có Switch thì bạn không thể tải xuống hoặc dump được
Tôi thích cả Yuzu lẫn Ryujinx
Thật đáng kinh ngạc là chúng có thể mang lại trải nghiệm tốt hơn console native. Tuy nhiên nhờ Denuvo, có vẻ bữa tiệc này sắp kết thúc
Cho đến nay, việc Denuvo nói sẽ chặn mô phỏng mới chỉ là tuyên bố. Ngay cả nếu họ thực sự chặn được, mọi người vẫn có thời gian không giới hạn để nghiên cứu cách vượt qua
Tại sao Nintendo không phát hành game của họ trên các nền tảng khác?
Tôi muốn chơi Zelda, nhưng sẽ không mua cả một máy console chỉ vì một game
Tôi không hẳn muốn bênh vực họ, nhưng nếu muốn hiểu thái độ hiện tại này thì nên nhìn lại cuộc sụp đổ của thị trường video game Bắc Mỹ năm 1983. Khi đủ thứ rác rưởi cũng được phát hành dưới dạng game, toàn bộ thị trường video game sụp đổ, và người tiêu dùng mất niềm tin vào nền tảng là các máy chơi game cụ thể. Thay vào đó, nếu mua máy tính gia đình thì vừa có game vừa dùng được cho việc khác.
NES thì ngược lại. Nintendo có hệ sinh thái khép kín và phát triển rất nhiều game first-party; cách tiếp cận này đã thành công, giúp công ty trở nên giàu có và trở thành một tay chơi lớn trên thị trường video game. Gần 40 năm sau, tại sao họ lại bỏ một mô hình vẫn còn hiệu quả?
Nếu có thể chơi trên laptop với màn hình và loa tốt hơn, tôi đã chỉ trả 60 USD. Hơn nữa, giờ tôi cũng có khả năng sẽ mua thêm các game Nintendo khác để tận dụng thiết bị mới. Nếu là doanh nghiệp, tôi nghĩ họ sẽ chọn phương án đem lại doanh thu gấp 7 lần.
Nintendo Switch có hiệu năng rất thấp so với PS4/5 và Xbox Series X cùng thế hệ, nhưng có lợi thế lớn là một máy console cầm tay/du lịch tối ưu. Console của Sony và Microsoft thường có thể cho FPS cao hơn hoặc đồ họa tốt hơn, và nhìn chung thiên về đồ họa, còn Switch thì bị giới hạn rất nhiều vì phải cân bằng giữa form factor và thời lượng pin. Là máy cầm tay mà chỉ chơi được 30 phút thì chẳng còn ý nghĩa gì.
Một phần lớn người dùng, bao gồm cả những người muốn dùng các trình giả lập như thế này một cách hợp pháp, có khả năng sẽ thích console khác hoặc PC/Mac hơn nếu xét thuần về hiệu năng.
Ngoài ra, nếu bán trên nền tảng khác, đặc biệt với game từ studio nội bộ, lợi nhuận trên mỗi bản bán ra có lẽ sẽ thấp hơn so với bán trên nền tảng của chính họ.
Xét những điểm này, việc phát hành trên nền tảng khác sẽ làm xói mòn dòng doanh thu khá đáng kể.
Nếu không, họ đã không vá một lỗi nhân bản vật phẩm mà gần như không thể tình cờ gặp phải, và từ lâu đã cho phép đổi cách điều khiển, vốn là một tính năng cơ bản. Thay vào đó, trong game Nintendo, bạn chỉ có thể điều khiển theo cách đã được họ dự định và playtest. Họ cũng từng khá phiền phức trong thời gian dài với các nội dung có streaming, review, video gameplay, và ở một mức độ nào đó hiện vẫn vậy.
Tuy nhiên, với nhiều người, vấn đề không chỉ là một game. Nintendo có khá nhiều game độc quyền thành công như Zelda, Mario Kart, Smash, nhiều game hành động nhảy Mario có thể chia thành các bản 3D chính và các bản 2D bổ trợ, Splatoon, Mario Party, Fire Emblem, Xenoblade, Kirby, v.v.
Trên thực tế, bạn thường sẽ có ít nhất khoảng 10 game độc quyền chất lượng cao, đáng chơi nhưng đắt tiền. Điều này vẫn đúng ngay cả khi bỏ qua việc Wii U thất bại đã dẫn đến những kết quả kỳ lạ như Mario Kart 8 được phát hành lại kèm DLC, rồi sau đó có thêm gói mở rộng lớn.
Nếu muốn chơi Zelda, bạn phải trả cho Nintendo ít nhất 260 USD. Nếu muốn chơi trên thứ tốt hơn Switch Lite, bạn sẽ tốn thêm 100 USD nữa.
Khác với Sony hay Microsoft, Nintendo thực sự kiếm lời không chỉ từ việc bán game mà cả từ việc bán phần cứng.