Microsoft Flight Simulator 2024 Đối Mặt Với Các Vấn Đề Hiệu Suất Nghiêm Trọng Bất Chấp Sự Đổi Mới Với Module WebAssembly

Nhóm Cộng đồng BigGo
Microsoft Flight Simulator 2024 Đối Mặt Với Các Vấn Đề Hiệu Suất Nghiêm Trọng Bất Chấp Sự Đổi Mới Với Module WebAssembly

Microsoft Flight Simulator 2024 đã giới thiệu một thay đổi kiến trúc đáng kể bằng cách chuyển từ các add-on dựa trên DLL truyền thống sang các module WebAssembly (WASM), nhưng việc triển khai này đã gây ra sự chỉ trích rộng rãi từ cộng đồng game thủ do các vấn đề crash và hiệu suất dai dẳng.

Sự chuyển đổi này thể hiện nỗ lực của Microsoft nhằm cải thiện bảo mật và khả năng tương thích đa nền tảng cho các add-on của bên thứ ba. Thay vì cho phép các nhà phát triển phân phối các file DLL có thể không an toàn, hệ thống mới biên dịch mã C++ thành các module WebAssembly sau đó được chuyển đổi trở lại thành mã native tại thời điểm chạy. Cách tiếp cận này tạo ra một sandbox bảo mật trong khi duy trì hiệu suất thông qua việc biên dịch ahead-of-time.

Các loại Module WebAssembly trong MSFS 2024:

  • Module độc lập: Tự động được tải khi gói được gắn kết
  • Module đồng hồ: Chứa các callback của thiết bị đo trong buồng lái
  • Module sân bay: Liên kết với cảnh quan, được tải/gỡ tải cùng với spawn/despawn
  • Module hệ thống: Chứa các callback cấp hệ thống

Cộng Đồng Báo Cáo Các Vấn Đề Ổn Định Rộng Rãi

Người chơi và streamer đã báo cáo tình trạng crash thường xuyên và suy giảm hiệu suất kể từ khi game ra mắt. Các vấn đề này đã trở nên phổ biến đến mức các bình luận liên quan đến crash chiếm ưu thế trong chat của các live stream, với nhiều người dùng bày tỏ sự thất vọng về tính ổn định của game. Một số người chơi có kinh nghiệm với hàng nghìn giờ chơi trong phiên bản trước đây mô tả việc triển khai hiện tại là có phản hồi KHÔNG tích cực từ game thủ.

Các vấn đề dường như bắt nguồn từ nhiều yếu tố ngoài việc triển khai WebAssembly. Việc game chuyển sang DirectX 12 và cải thiện độ trung thực hình ảnh đã tạo ra những hạn chế VRAM đáng kể, đặc biệt ảnh hưởng đến những người dùng có card đồ họa cao cấp từng chạy phiên bản 2020 một cách mượt mà.

Kiến Trúc Kỹ Thuật Tiết Lộ Việc Triển Khai Phức Tạp

Giải pháp WebAssembly của Microsoft bao gồm một bộ công cụ Visual Studio toàn diện cho phép biên dịch trực tiếp các dự án C++ hiện có thành các module WASM. Hệ thống hỗ trợ các thư viện C tiêu chuẩn, khả năng debug, và bao gồm một wrapper GDI+ dựa trên NanoVG API để giúp việc chuyển đổi dễ dàng hơn cho các nhà phát triển add-on hiện có.

Kiến trúc chạy mỗi module WebAssembly trên các thread riêng biệt, không giống như phiên bản 2020 nơi tất cả các module chia sẻ thread chính. Thay đổi này về mặt lý thuyết sẽ cải thiện hiệu suất bằng cách cho phép các module sử dụng toàn bộ frame để cập nhật, nhưng việc triển khai thực tế đã đối mặt với những thách thức đáng kể.

WebAssembly: Một định dạng lệnh nhị phân cho phép mã được viết bằng các ngôn ngữ như C++ chạy trong môi trường sandbox với hiệu suất gần như native.

Các tệp API chính cho phát triển WASM:

  • MSFS.hMSFS_Core.h: Các tệp cơ sở cho tất cả dự án gauge WASM
  • MSFS_GaugeContext.h: Bắt buộc cho các callback gauge MSFS 2024
  • MSFS_Render.h: API NanoVG để render
  • MSFS_Vars.h: Thay thế cho Legacy Gauge API đã lỗi thời
  • Legacy/gauges.h: Hiện được coi là legacy API, không khuyến nghị cho các dự án mới

Các Vấn Đề Về Đồ Họa Và Quản Lý Bộ Nhớ Làm Tăng Thêm Vấn Đề

Ngoài việc triển khai WebAssembly, người dùng báo cáo rằng engine đồ họa được nâng cấp của game tạo ra áp lực bộ nhớ đáng kể. Người chơi có hệ thống cao cấp bao gồm card RTX 3080 Ti với 12GB VRAM gặp phải suy giảm hiệu suất khi chạy ở độ phân giải VR hoặc 4K. Hệ thống quản lý texture dường như gặp khó khăn với việc phân bổ bộ nhớ, gây ra tình trạng giảm frame rate khiến gameplay VR trở nên đặc biệt khó khăn.

Khi họ chuyển sang MSFS 2024, họ đã viết lại cho DX12 và trong khi làm điều đó đã nâng cấp một số thứ để trông đẹp hơn. Việc quản lý texture vẫn có vẻ cần một số công việc.

Tình hình này đã khiến nhiều người chơi hoãn việc chuyển đổi từ phiên bản 2020, chờ đợi các bản cập nhật trong tương lai để giải quyết những vấn đề hiệu suất cơ bản này.

Lợi Ích Bảo Mật Đi Kèm Với Sự Phức Tạp Trong Phát Triển

Mặc dù cách tiếp cận WebAssembly giải quyết các mối quan tâm bảo mật hợp lý về các add-on của bên thứ ba, nó giới thiệu sự phức tạp mới cho các nhà phát triển. Hệ thống yêu cầu liên kết một thư viện cụ thể (MSFS_WasmVersions.a) để đảm bảo các module được nhận dạng là tương thích với 2024, và nhiều API cũ đã bị deprecated để ưu tiên cho các phương án thay thế tương thích với threading mới.

Việc triển khai cũng bao gồm các hạn chế truy cập file và hệ thống mã hóa cho nội dung marketplace, điều này giới hạn cách các nhà phát triển add-on có thể truy cập các file cấu hình nhất định trong package của họ. Điều này tạo ra những rào cản bổ sung cho các nhà phát triển đang cố gắng chuyển các add-on hiện có sang nền tảng mới.

Bất chấp những thách thức hiện tại, cách tiếp cận WebAssembly đại diện cho một thí nghiệm thú vị trong việc cân bằng bảo mật, hiệu suất và khả năng tương thích đa nền tảng cho các modification của game. Tuy nhiên, trải nghiệm người dùng tức thì cho thấy rằng việc triển khai cần được tinh chỉnh đáng kể trước khi có thể mang lại những lợi thế lý thuyết của nó.

Tham khảo: WEBASSEMBLY (WASM)