Dự Án Giải Mã Minecraft Legacy Console Edition Tiết Lộ Lịch Sử Viết Lại C++ Của 4J Studios

BigGo Editorial Team
Dự Án Giải Mã Minecraft Legacy Console Edition Tiết Lộ Lịch Sử Viết Lại C++ Của 4J Studios

Cộng đồng game đang thảo luận về một dự án thú vị nhằm giải mã Minecraft: Nintendo Switch Edition, làm sáng tỏ lịch sử kỹ thuật của các phiên bản console Minecraft. Dự án tập trung cụ thể vào phiên bản 1.0.17 của Nintendo Switch Edition, một phần của cái được gọi là Legacy Console Edition (LCE) được phát triển bởi 4J Studios.

Chi tiết kỹ thuật của dự án dịch ngược mã nguồn

  • Mục tiêu: Minecraft: Nintendo Switch Edition phiên bản 1.0.17
  • Tham chiếu: Minecraft: Wii U Edition bản vá 35 (v560)
  • Sự khác biệt về trình biên dịch:
    • Wii U Edition: Trình biên dịch GHS (khó khăn trong việc đối chiếu)
    • Switch Edition: Trình biên dịch Clang (dễ dàng đối chiếu hơn với phiên bản chính xác)
  • Ưu điểm của Switch Edition cho việc dịch ngược mã nguồn:
    • Chứa thông tin kiểu dữ liệu (giúp xác định bảng vtable)
    • Có thể chuyển các ký hiệu từ Wii U Edition
  • Công cụ cần thiết:
    • Python 3.6+
    • Ninja
    • CMake 3.13+
    • Bộ công cụ Rust
    • Nhiều phụ thuộc khác

Hành Trình Từ Java Sang C++ Của Minecraft

Một trong những tiết lộ thú vị nhất từ cuộc thảo luận cộng đồng là cách Minecraft đã phát triển qua các nền tảng khác nhau. Trong khi nhiều game thủ biết rằng Minecraft bắt đầu như một ứng dụng Java, ít người hiểu được lịch sử phát triển phức tạp sau đó. Khi các phiên bản console trở nên cần thiết, Mojang đã thuê 4J Studios để tạo ra các bản chuyển đổi cho các nền tảng như Xbox 360, PS3, và cuối cùng là Nintendo Switch.

Như một người bình luận đã giải thích, Java trên các console là một sự kết hợp tồi, vì vậy họ bắt đầu viết lại các bản chuyển đổi hoàn toàn bằng C++, nhưng dựa nhiều vào mã nguồn Java gốc như một điểm tham chiếu. Điều này giải thích tại sao dự án giải mã tiết lộ mã C++ với tên lớp gợi nhớ đến các thư viện tiêu chuẩn Java như BufferedOutputStream - 4J Studios về cơ bản đã tạo ra các thành phần C++ tương đương với Java để duy trì chức năng tương tự trong khi đạt được lợi ích hiệu suất của C++.

Ba Nhánh Của Minecraft

Dự án giải mã làm nổi bật cách Minecraft cuối cùng đã chia thành ba cơ sở mã riêng biệt: phiên bản Java Edition gốc, phiên bản C++ cho console của 4J Studios (Legacy Console Edition), và bản viết lại C++ nội bộ của Mojang cho thiết bị di động (Pocket Edition, sau này trở thành Bedrock).

Sự phân mảnh này tạo ra một động lực cạnh tranh thú vị. Trong khi các phiên bản console của 4J được tối ưu hóa đặc biệt cho các máy chơi game, Pocket Edition của Mojang dần dần mở rộng từ điện thoại sang Windows 10 và cuối cùng thay thế các phiên bản 4J trên console vào khoảng thời gian phát hành Update Aquatic. Cộng đồng dường như chia rẽ về việc triển khai nào cung cấp trải nghiệm console tốt hơn, với một số người bình luận lưu ý rằng 4J đã làm tốt hơn trên console so với trò chơi di động được tôn vinh của Microsoft.

Lịch sử phiên bản Minecraft

  • Original Java Edition: Phiên bản đầu tiên, vẫn được duy trì đến ngày nay
  • Legacy Console Edition (4J Studios):
    • Nền tảng: Xbox 360, PS3, PS Vita, Wii U, Xbox One, PS4, Nintendo Switch
    • Viết bằng: C++ (với cấu trúc lấy cảm hứng từ Java)
    • Nintendo Switch Edition v1.0.17 tương ứng với Wii U Edition Patch 35 (v560)
    • Ngừng phát triển sau Update Aquatic
  • Pocket Edition/Bedrock (Mojang):
    • Bắt đầu như phiên bản di động
    • Mở rộng sang Windows 10
    • Cuối cùng thay thế Legacy Console Edition trên các console thế hệ hiện tại
    • Viết bằng: C++

Hoài Niệm Của Cộng Đồng Modding

Cuộc thảo luận xung quanh dự án giải mã này đã làm dấy lên sự hoài niệm đáng kể về hệ sinh thái modding mạnh mẽ của phiên bản Java. Nhiều người bình luận nhớ lại một cách trìu mến các mod kỹ thuật như IndustrialCraft 2, ComputerCraft và Buildcraft đã thêm các tính năng như vi điều khiển có thể lập trình, điện, và hệ thống tự động hóa.

Tôi nhớ việc modding từ phiên bản Java gốc - đặc biệt là các gói công nghệ. Vi điều khiển bạn có thể lập trình để tạo robot nông nghiệp, điện, công cụ điện, năng lượng mặt trời, dầu, đó là những ngày tuyệt vời!

Mặc dù Bedrock Edition cung cấp hiệu suất vượt trội và các tính năng như hỗ trợ VR, khả năng modding vẫn còn hạn chế hơn so với Java Edition. Tuy nhiên, như một số người bình luận đã chỉ ra, Java Edition và cộng đồng modding của nó vẫn hoạt động tích cực ngày nay thông qua các nền tảng như Fabric và Forge.

Thách Thức Kỹ Thuật Của Việc Giải Mã

Bản thân dự án giải mã phải đối mặt với những trở ngại kỹ thuật đáng kể. Các nhà phát triển đã chọn làm việc với Nintendo Switch Edition vì, mặc dù nó thiếu các ký hiệu hàm, nó chứa typeinfo giúp xác định vtables. Họ đang sử dụng Wii U Edition (có các ký hiệu hàm) làm tham chiếu để chuyển các ký hiệu sang phiên bản Switch.

Tài liệu dự án tiết lộ những khác biệt thú vị về trình biên dịch giữa các phiên bản - Wii U Edition sử dụng trình biên dịch GHS (Green Hills Software) mà việc khớp chính xác gần như không thể, trong khi Switch Edition sử dụng Clang, giúp dễ dàng đạt được sự khớp assembly 1:1 với phiên bản trình biên dịch phù hợp.

Dự án dường như đang ở giai đoạn đầu, với một số người bình luận lưu ý rằng hoạt động đã chậm lại trong những tháng gần đây. Giống như nhiều nỗ lực giải mã, nó cung cấp những hiểu biết giá trị về cách các trò chơi thương mại được cấu trúc trong khi đi trên ranh giới pháp lý cẩn thận bằng cách yêu cầu người dùng cung cấp các tệp trò chơi gốc của riêng họ.

Đối với những người quan tâm đến lịch sử phát triển trò chơi, dự án này cung cấp cái nhìn thú vị về cách Minecraft đã phát triển trên các nền tảng và các quyết định kỹ thuật đã định hình các phiên bản khác nhau của nó.

Tham khảo: Minecraft: LCE Decompilation Project