VietTechiesHIỂU CÔNG NGHỆ. MỞ GÓC NHÌN.
☰ Chuyên mục

Lập trình viên giải mã dữ liệu Nuxt payload để trích xuất tập dữ liệu loài và ma trận sống chung trong Planet Zoo 2

11/10/2026 · VietTechies · Biên tập

Bức minh họa biên tập tả một lưới ma trận màu xanh lam phát sáng ở trung tâm với các giao điểm nút, nằm cạnh một kính lúp kim loại màu vàng trên bề mặt màu xanh navy.
Ảnh minh họa do AI tạo.

Trước thời điểm phát hành toàn cầu của tựa game Planet Zoo 2 vào ngày 13 tháng 10 năm 2026, lập trình viên phần mềm asrocky010 đã xây dựng một tập dữ liệu tham chiếu mã nguồn mở cùng ma trận sống chung bằng cách trích xuất dữ liệu có cấu trúc trực tiếp từ các trang web do máy chủ của nhà phát hành dựng sẵn. Dự án đã chuyển đổi các khối dữ liệu trạng thái hydration thô trên web thành kho lưu trữ máy có thể đọc được, bao gồm 130 loài động vật và 1.221 cặp ghép chuồng tiềm năng. Được phát hành theo giấy phép Creative Commons Attribution 4.0, tập dữ liệu này có thể truy cập thông qua một trang web chuyên dụng, kho lưu trữ GitHub và bản lưu trữ chính thức trên Zenodo.

Giải mã trạng thái Hydration từ phía máy chủ

Thay vì áp dụng phương pháp trích xuất dữ liệu web HTML truyền thống từ các thành phần giao diện không có cấu trúc, lập trình viên này đã phân tích các trang Zoopedia chính thức được xây dựng trên bộ khung Nuxt. Nuxt nhúng các mảng trạng thái đã mã hóa vào tài liệu HTML nhằm khôi phục lại trạng thái ứng dụng phía máy khách (client) trong quá trình hydration khi tải trang. Các cấu trúc đã mã hóa này sử dụng các tham chiếu dựa trên chỉ số mảng, tương tự như định dạng mã hóa devalue, để thể hiện các đồ thị đối tượng tuần hoàn phức tạp dưới dạng mảng phẳng.

Để phân tích cấu trúc trên, lập trình viên đã viết một thuật toán giải mã đệ quy nhẹ bằng ngôn ngữ Python. Hàm này truy duyệt qua các chỉ số mảng nhằm khôi phục lại các đối tượng lồng nhau ban đầu, đồng thời xử lý hai trường hợp kỹ thuật đặc thù. Do Python coi kiểu dữ liệu boolean là một lớp con của số nguyên, việc kiểm tra kiểu dữ liệu nghiêm ngặt là cần thiết để tránh tình trạng các cờ boolean bị giải tham chiếu nhầm thành chỉ số mảng. Ngoài ra, việc theo dõi các nút đã truy cập trong một tập hợp (set) đã giúp ngăn chặn lỗi đệ quy vô hạn khi xử lý các tham chiếu đối tượng cha-con có tính chất tuần hoàn.

Trích xuất thông số loài và logic sống chung

Quá trình trích xuất đã tạo ra các bản ghi chuẩn hóa cho toàn bộ 130 loài ra mắt cùng game, bao gồm 124 động vật ở bản tiêu chuẩn và 6 loài đặc quyền trong phiên bản Deluxe, như kỳ dông Axolotl, đại bàng vàng và cá mập đầu búa vĩ đại. Tập dữ liệu ghi nhận thông tin phân loại học, khoảng khối lượng, yêu cầu chiều cao rào chắn tối thiểu, loại chuồng nuôi và các nhóm bảo tồn—từ 63 loài thuộc nhóm ít quan tâm cho đến 12 loài đang ở mức cực kỳ nguy cấp. Các thuộc tính đa giá trị như sinh cảnh được định dạng cố ý dưới dạng danh sách phân tách bằng dấu chấm phẩy trong các tệp CSV tiêu chuẩn, giúp các công cụ phân tích dữ liệu như pandas xử lý ngay lập tức.

Để giải quyết câu hỏi liệu các loài riêng biệt có thể sống chung trong cùng một chuồng hay không, lập trình viên đã đánh giá các kết hợp cặp loài trên lý thuyết. Từ tổng số 8.385 cặp kết hợp toán học, việc lọc theo các sinh cảnh và loại chuồng trùng lặp đã thu hẹp danh sách xuống còn 1.221 cặp ứng viên. Bằng cách xử lý các mô tả định tính về hành vi xã hội, động cơ phân loại đã xác định được 376 cặp có khả năng tương thích cao, 739 cặp không tương thích và 106 cặp chưa xác minh. Thay vì ép buộc các trường hợp chưa rõ ràng vào một kết quả nhị phân, trạng thái chưa xác minh làm nổi bật những điểm mà tài liệu chính thức chưa ghi nhận rõ, qua đó hướng dẫn người chơi tự kiểm tra tương tác trực tiếp ngay trong giao diện game.

Tầm ảnh hưởng của việc giải mã Hydration đối với trích xuất dữ liệu hiện đại

Việc trích xuất dữ liệu payload từ Nuxt cho thấy một bước chuyển dịch kỹ thuật hiện đại trong quy trình trích xuất dữ liệu web. Các ứng dụng đơn trang và các bộ khung dựng trang từ máy chủ hiện đại thường gửi toàn bộ đồ thị trạng thái dạng JSON tới trình duyệt trước khi quá trình DOM hydration diễn ra. Đối với các kỹ sư dữ liệu và nhà phát triển công cụ, việc nhắm vào các payload hydration nội bộ này giúp loại bỏ sự kém ổn định do phải phân tích các thành phần HTML, bộ chọn CSS hoặc các thành phần giao diện động dễ thay đổi. Nhờ bỏ qua bước thu thập dữ liệu giao diện màn hình, các lập trình viên có thể xây dựng các quy trình trích xuất có thể dự đoán được ngay cả khi nhà phát hành không cung cấp API REST hoặc GraphQL chính thức.

Bên cạnh đó, dự án thiết lập một phương pháp luận chặt chẽ cho việc phân phối và minh bạch dữ liệu mở. Bằng cách gán một mã định danh đối tượng số cố định (DOI 10.5281/zenodo.23263613) qua Zenodo cùng với việc lưu trữ trên GitHub, tập dữ liệu đảm bảo nguồn gốc có thể xác minh mà không bị ảnh hưởng nếu địa chỉ web thay đổi. Việc tách biệt rõ ràng giữa dữ liệu gốc từ bên thứ ba và logic suy luận—chẳng hạn như duy trì trạng thái chưa xác minh một cách minh bạch—đã ngăn chặn việc lan truyền các cơ chế game chưa kiểm chứng. Phương pháp này mang lại một khuôn mẫu có thể tái lập cho cộng đồng lập trình viên khi chuyển đổi dữ liệu web phức tạp thành định dạng máy có thể đọc được, đồng thời vẫn tôn trọng ranh giới sở hữu trí tuệ.

Ảnh minh họa do AI tạo, không phải ảnh tư liệu.

Nguồn: I turned a game's official Nuxt payload into a 130-species dataset and a 1,221-pair co-habitation matrix · GitHub – odebo/planet-zoo-2-dataset: Machine-readable Planet Zoo 2 launch dataset: 130 species + 1,221-pair co-habitation matrix, CC BY 4.0. Rendered at pz2tools.wiki · GitHub