Capcom ra mắt RE:Dox — engine tuần tự hóa mã nguồn mở cho game engine thế hệ mới

Công nghệ02 tháng 10, 2026·7 phút đọc

Capcom vừa phát hành RE:Dox, một engine dữ liệu có cấu trúc dựa trên token dành cho .NET, được phát triển như thành phần cốt lõi của công nghệ 'REX' cho game engine thế hệ mới. Thư viện này nhanh hơn System.Text.Json tới 1,8 lần khi giải tuần tự tuần tự và 2,8 lần khi chạy song song, đồng thời hỗ trợ đa dạng định dạng từ JSON, CBOR đến MessagePack và được cấp phép Apache-2.0.

Capcom ra mắt RE:Dox — engine tuần tự hóa mã nguồn mở cho game engine thế hệ mới

Capcom vừa gây bất ngờ cho cộng đồng lập trình khi công bố RE:Dox, một engine xử lý dữ liệu có cấu trúc hiệu năng cao dành cho nền tảng .NET, được phát triển như một trong những thành phần cốt lõi của công nghệ "REX" phục vụ game engine thế hệ tiếp theo của hãng. Đáng chú ý hơn, dự án này được phát hành dưới giấy phép mã nguồn mở Apache-2.0.

Đây không đơn thuần là một thư viện tuần tự hóa JSON thông thường. RE:Dox được thiết kế để phân tích dữ liệu có cấu trúc thành một DOM/IR dạng token kích thước cố định, sau đó dùng chỉ mục cấu trúc đó cho việc đọc, chỉnh sửa, chuyển đổi định dạng, tuần tự hóa, giải tuần tự hóa và cả giải tuần tự hóa song song tự động.

Vì sao lập trình viên nên quan tâm?

Theo mô tả của nhóm phát triển, RE:Dox kết hợp ba mục tiêu thường xung đột với nhau: tốc độ phân tích của tape DOM (kiểu System.Text.Json.JsonDocument), khả năng chỉnh sửa của node DOM (kiểu System.Text.Json.Nodes.JsonNode), và tính linh hoạt của Newtonsoft.Json (hỗ trợ $type, $id/$ref độc lập vị trí, và ràng buộc constructor không theo thứ tự).

Kết quả là thư viện này đạt được những con số ấn tượng: nhanh hơn tới ~1,8 lần khi giải tuần tự hóa tuần tự, ~2,8 lần khi giải tuần tự hóa song song tự động, và ~1,6 lần khi tuần tự hóa so với System.Text.Json. Đặc biệt, mức cấp phát bộ nhớ cũng thấp hơn rõ rệt — ví dụ với tập dữ liệu canada.json, RE:Dox chỉ cấp phát khoảng 2,56 MB so với 8,53 MB của System.Text.Json.

Biểu đồ tóm tắt tốc độ cải thiện so với System.Text.JsonBiểu đồ tóm tắt tốc độ cải thiện so với System.Text.Json

Một số điểm đáng chú ý khác:

  • JSON, JSON5, CBOR, MessagePack, INI và DOX đã được tích hợp vào mô hình lõi; TOML, XML, HTML và CSV hiện đang ở dạng thành phần xem trước (preview).
  • Mô hình converter thống nhất xuyên định dạng — DataConverter nhắm vào các abstraction DataReader/DataWriter thay vì một định dạng cụ thể.
  • Token DOM có thể chỉnh sửa — thao tác trực tiếp trên object và array mà không cần thay thế tài liệu bằng cả một cây đối tượng managed cồng kềnh.
  • Giữ nguyên trivia khi chỉnh sửa JSON5 — comment và khoảng trắng được bảo tồn qua các lần chỉnh sửa và mã hóa lại.
  • Lớp tương thích với System.Text.Json, Newtonsoft.Json và DataContractJsonSerializer.

Hiệu năng trên các tập dữ liệu chuẩn

Môi trường đánh giá được nhóm phát triển công bố gồm BenchmarkDotNet, .NET 10 (X64 RyuJIT x86-64-v3), CPU AMD Ryzen Threadripper PRO 5975WX, chạy trên Windows 11.

Tập dữ liệuGiải tuần tựGiải tuần tự (song song)Tuần tự hóa
canada.json1,68x2,84x1,06x
citm_catalog.json1,77x2,25x1,62x
twitter.json1,36x2,34x1,42x

Hiệu năng giải tuần tự hóa trên tập dữ liệu canada.jsonHiệu năng giải tuần tự hóa trên tập dữ liệu canada.json

Cần lưu ý rằng đây là các tỷ lệ đo được trên tập dữ liệu benchmark cụ thể, không phải cam kết hiệu năng phổ quát. Kết quả thực tế phụ thuộc vào hình dạng dữ liệu, kiểu đích, runtime, CPU và các tùy chọn serializer — vì vậy lập trình viên nên tự đo đạc với workload của mình.

Kiến trúc: token 64-bit hai chế độ

Điểm độc đáo trong thiết kế của RE:Dox nằm ở token 64-bit hai chế độ. Mỗi giá trị được mô tả bằng một token kích thước cố định, trong đó một bit mở rộng (extension bit) quyết định cách diễn giải payload:

  • Bit mở rộng = 0: cách diễn giải payload được giao cho tầng tài liệu/định dạng (kiểu source-backed, dành riêng cho định dạng cụ thể).
  • Bit mở rộng = 1: cách diễn giải payload do chính RE:Dox quy định, và các control token cho phép chỉnh sửa độc lập định dạng (chèn/xóa/thay thế).

Cách tiếp cận này cho phép một cấu trúc token duy nhất vừa biểu diễn góc nhìn source-backed của dữ liệu định dạng, vừa đóng vai trò DOM có thể chỉnh sửa do RE:Dox sở hữu. Nhờ đó, các giá trị không thay đổi có thể tiếp tục tái sử dụng các slice nguồn thay vì phải materialize ngay lập tức.

Đáng chú ý, RE:Dox sử dụng thiết kế đọc/ghi bất đối xứng. Trên đường ghi, giá trị đã biết nên thư viện ghi thẳng vào buffer đích bằng các helper bulk và fused-property — không dựng cây đối tượng trung gian. Trên đường đọc, cấu trúc chưa biết nên RE:Dox trước tiên xây dựng một token DOM gọn nhẹ, rồi nhờ cấu trúc đã hoàn toàn định địa chỉ được, nó có thể pre-size array, giải quyết $type bất kể vị trí, thu thập tham số constructor không theo thứ tự, xử lý vòng lặp $id/$ref, và tự động chọn chế độ giải tuần tự song song.

Hiệu năng giải tuần tự hóa trên tập dữ liệu twitter.jsonHiệu năng giải tuần tự hóa trên tập dữ liệu twitter.json

Hệ sinh thái package và khả năng chuyển đổi chéo định dạng

Các package NuGet của RE:Dox dùng tiền tố CAPCOM.REDox.*, với namespace C# là REDox.*. Trong đó, các package công khai ổn định gồm CAPCOM.REDox (lõi + JSON + JSON5 + DOX), CAPCOM.REDox.Cbor, CAPCOM.REDox.MessagePack, CAPCOM.REDox.Dynamic, CAPCOM.REDox.Serialization.DataContractJson và CAPCOM.REDox.Ini. Các thành phần TOML, XML, HTML, CSV cùng lớp tương thích System.Text.Json/Newtonsoft.Json hiện ở dạng preview.

Một điểm mạnh đáng chú ý là khả năng chuyển đổi chéo định dạng qua mô hình tài liệu dùng chung token IR: JSON5 → token IR → JSON, JSON → CBOR, CBOR → MessagePack, TOML → JSON, hay XML → biểu diễn cấu trúc kiểu JSON. Các định dạng có mô hình dữ liệu gốc khác nhau có thể dùng phép chiếu cấu trúc thay vì round-trip ngữ nghĩa không mất mát.

Tính năng nâng cao

Thư viện cũng hỗ trợ nhiều tính năng chuyên sâu cho các tình huống game engine thực tế:

  • Giải tuần tự hóa song song tự động: bộ giải tuần tự kiểm tra số lượng phần tử và dải token của từng array trước khi materialize. Khi array đủ lớn, các token id phần tử được thu thập và giải tuần tự song song vào đúng chỉ mục — mảng nhỏ vẫn chạy tuần tự để tránh overhead lập lịch.
  • JSON5 giữ nguyên comment và trivia, cho phép chỉnh sửa file cấu hình mà không mất ghi chú.
  • Streaming bất đồng bộ NDJSON/JSON sequence: JsonSequence đọc luồng giá trị JSON theo từng giá trị một, không cần nạp toàn bộ input vào bộ nhớ — rất hữu ích cho log và dữ liệu lớn.
  • Định dạng DOX và deep clone: DOX là bố cục nhị phân mô phỏng gần sát mảng token trong bộ nhớ, phù hợp cho việc nhân bản sâu dựa trên tuần tự hóa, tạo ra bản sao độc lập có thể chỉnh sửa.

RE:Dox yêu cầu .NET 10 trở lên và đang trong quá trình phát triển tích cực. Nhóm phát triển lưu ý rằng API, ranh giới package và hỗ trợ định dạng preview có thể thay đổi trước bản phát hành ổn định đầu tiên.

Với việc mở mã nguồn một thành phần cốt lõi của game engine thế hệ mới, Capcom đang gửi đi tín hiệu rõ ràng về việc muốn đóng góp cho cộng đồng .NET nói chung, đồng thời tạo cơ hội để các nhà phát triển game Việt Nam tiếp cận và học hỏi từ một kiến trúc xử lý dữ liệu hiệu năng cao được thiết kế cho môi trường production thực tế.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗