Microsoft Flight Simulator 2024 memperkenalkan perubahan arsitektur yang signifikan dengan beralih dari add-on berbasis DLL tradisional ke modul WebAssembly (WASM), namun implementasinya telah memicu kritik luas dari komunitas gaming karena masalah crash yang persisten dan masalah performa.
Transisi ini merepresentasikan upaya Microsoft untuk meningkatkan keamanan dan kompatibilitas lintas platform untuk add-on pihak ketiga. Alih-alih mengizinkan developer untuk mendistribusikan file DLL yang berpotensi tidak aman, sistem baru mengkompilasi kode C++ menjadi modul WebAssembly yang kemudian dikonversi kembali ke kode native saat runtime. Pendekatan ini menciptakan sandbox keamanan sambil mempertahankan performa melalui kompilasi ahead-of-time.
Jenis-jenis Modul WebAssembly di MSFS 2024:
- Modul mandiri: Dimuat secara otomatis ketika paket dipasang
- Modul gauge: Berisi callback instrumen kokpit
- Modul bandara: Terhubung dengan scenery, dimuat/dibongkar saat spawn/despawn
- Modul sistem: Berisi callback tingkat sistem
Komunitas Laporkan Masalah Stabilitas yang Meluas
Para pemain dan streamer melaporkan crash yang sering terjadi dan degradasi performa sejak peluncuran game. Masalah-masalah ini menjadi sangat umum sehingga komentar terkait crash mendominasi chat live streaming, dengan banyak pengguna mengekspresikan frustrasi atas stabilitas game. Beberapa pemain berpengalaman dengan ribuan jam di versi sebelumnya menggambarkan implementasi saat ini sebagai memiliki penerimaan yang TIDAK positif di antara para gamer.
Masalah-masalah tersebut tampaknya berasal dari berbagai faktor di luar implementasi WebAssembly saja. Transisi game ke DirectX 12 dan peningkatan fidelitas visual telah menciptakan keterbatasan VRAM yang signifikan, terutama mempengaruhi pengguna dengan kartu grafis high-end yang sebelumnya menjalankan versi 2020 dengan lancar.
Arsitektur Teknis Ungkap Implementasi yang Kompleks
Solusi WebAssembly Microsoft mencakup toolset Visual Studio yang komprehensif yang memungkinkan kompilasi langsung proyek C++ yang sudah ada menjadi modul WASM. Sistem ini mendukung library C standar, kemampuan debugging, dan mencakup wrapper GDI+ berdasarkan NanoVG API untuk memudahkan transisi bagi developer add-on yang sudah ada.
Arsitektur menjalankan setiap modul WebAssembly pada thread terpisah, tidak seperti versi 2020 di mana semua modul berbagi thread utama. Perubahan ini secara teoritis seharusnya meningkatkan performa dengan memungkinkan modul menggunakan seluruh frame untuk update, namun implementasi praktisnya menghadapi tantangan yang signifikan.
WebAssembly: Format instruksi biner yang memungkinkan kode yang ditulis dalam bahasa seperti C++ berjalan dalam lingkungan sandbox dengan performa mendekati native.
File API Utama untuk Pengembangan WASM:
MSFS.h
danMSFS_Core.h
: File dasar untuk semua proyek gauge WASMMSFS_GaugeContext.h
: Diperlukan untuk callback gauge MSFS 2024MSFS_Render.h
: API NanoVG untuk renderingMSFS_Vars.h
: Pengganti untuk Legacy Gauge API yang sudah tidak digunakanLegacy/gauges.h
: Sekarang dianggap sebagai API lama, tidak direkomendasikan untuk proyek baru
Masalah Grafis dan Manajemen Memori Memperparah Masalah
Di luar implementasi WebAssembly, pengguna melaporkan bahwa engine grafis yang diupgrade menciptakan tekanan memori yang substansial. Pemain dengan sistem high-end termasuk kartu RTX 3080 Ti dengan VRAM 12GB mengalami degradasi performa saat menjalankan dalam resolusi VR atau 4K. Sistem manajemen tekstur tampaknya kesulitan dengan alokasi memori, menyebabkan penurunan frame rate yang membuat gameplay VR menjadi sangat menantang.
Ketika mereka beralih ke MSFS 2024 mereka menulis ulang untuk DX12 dan sambil melakukan itu mengupgrade beberapa hal agar terlihat lebih bagus. Manajemen tekstur masih tampaknya memerlukan beberapa perbaikan.
Situasi ini telah membuat banyak pemain menunda transisi mereka dari versi 2020, menunggu update masa depan untuk mengatasi masalah performa fundamental ini.
Manfaat Keamanan Datang dengan Kompleksitas Pengembangan
Meskipun pendekatan WebAssembly mengatasi kekhawatiran keamanan yang sah tentang add-on pihak ketiga, ini memperkenalkan kompleksitas baru bagi developer. Sistem memerlukan linking library spesifik (MSFS_WasmVersions.a) untuk memastikan modul dikenali sebagai kompatibel dengan 2024, dan banyak API lama telah deprecated demi alternatif baru yang kompatibel dengan threading.
Implementasi juga mencakup pembatasan akses file dan sistem enkripsi untuk konten marketplace, yang membatasi bagaimana developer add-on dapat mengakses file konfigurasi tertentu dalam paket mereka. Ini menciptakan rintangan tambahan bagi developer yang mencoba mem-port add-on yang sudah ada ke platform baru.
Meskipun menghadapi tantangan saat ini, pendekatan WebAssembly merepresentasikan eksperimen yang menarik dalam menyeimbangkan keamanan, performa, dan kompatibilitas lintas platform untuk modifikasi game. Namun, pengalaman pengguna langsung menunjukkan bahwa implementasi memerlukan penyempurnaan yang signifikan sebelum dapat memberikan keunggulan teoretisnya.
Referensi: WEBASSEMBLY (WASM)