Teknologi

Wing Commander DOS Kini Bisa Main Kooperatif di Browser

Wing Commander DOS Kini Bisa Main Kooperatif di Browser
Daftar Isi
  1. Proses Pelacakan Memori dan Struktur Game
  2. Pengembangan Protokol dan Rekayasa Fungsi Borland
  3. Modernisasi Multiplayer Berbasis WebRTC

Seorang pengembang bernama Daniel bersama saudaranya, Patrick, berhasil mewujudkan impian masa kecil mereka untuk memainkan game DOS klasik Wing Commander secara kooperatif. Melalui proses rekayasa balik (reverse engineering) yang berlangsung selama bertahun-tahun, game simulasi pertempuran ruang angkasa yang dirilis pada era 1990-an tersebut kini dapat dimainkan oleh dua pemain sebagai rekan sayap (wingmates) langsung melalui peramban web.

Proses Pelacakan Memori dan Struktur Game

Seperti dilaporkan pengembang berakun danielrh di platform Hacker News, proyek ini dimulai pada 4 Oktober 2015 saat ia memainkan Wing Commander di emulator DOSBox. Mengingat seluruh memori game DOS berada dalam batas 640 kilobita, ia berencana melakukan pemindaian memori (memory dump) untuk mengidentifikasi koordinat X, Y, dan Z dari pesawat pemain serta rekan sayapnya.

Untuk mempermudah pelacakan, Daniel mengosongkan area permainan dari objek lain dengan membiarkan karakter non-pemain tewas dalam misi, lalu terbang ke ruang angkasa yang sepi. Menggunakan perintah MEMDUMPBIN pada DOSBox, ia mengambil beberapa jepretan memori saat pesawat diam dan bergerak. Dari 35 kluster data yang berubah, ia berhasil mempersempit lokasi koordinat pesawat ke alamat memori 13D3:A9C2.

Pada akhir 2016, Daniel mengembangkan perkakas otomatis untuk membandingkan jepretan memori dan menemukan bahwa vektor rotasi game menggunakan skalar 4 bita. Pengembang asli game tersebut memesan 64 slot untuk properti entitas, dengan kamera ditempatkan pada slot 0x3D. Penemuan ini membantu Daniel melacak fungsi penambahan vektor dan fungsi fisika per-pesawat menggunakan pemantau memori DOSBox dan perangkat lunak IDA.

Pengembangan Protokol dan Rekayasa Fungsi Borland

Pada Desember 2016, tim menyadari bahwa memanipulasi alamat memori global saja tidak cukup untuk memicu tembakan laser atau rudal. Mereka harus memanggil fungsi internal game secara langsung. Untuk mengatasi arsitektur overlay kompilator Borland yang memuat kode secara dinamis, Daniel dan Patrick membuat sistem trampoline dengan memanfaatkan string teks bawaan game pada alamat 13D3:0187 dan 13D3:0395.

Pada Maret 2017, mereka berhasil memasang kait (hook) pada perulangan utama game di alamat 0560:20E3. Selanjutnya pada Juli 2017, fungsi kerusakan (do_damage) dinonaktifkan untuk pemain kedua guna mencegah konflik data.

Protokol jaringan berbasis TCP dan protobuf diimplementasikan pada Agustus 2017. Setiap bingkai (frame), posisi seluruh pesawat, status tembakan, dan kerusakan dikirim dari komputer pengampu (host) ke klien. Masalah ketidakstabilan akibat penelusuran stack frame pada pemuat overlay Borland diselesaikan dengan merancang struktur trampoline agar menyerupai fungsi standar Borland.

Memasuki tahun 2018 hingga 2020, pengembang memfokuskan pekerjaan pada animasi ledakan, rudal, mode kemudi otomatis (autopilot), serta fitur obrolan teks yang ditampilkan pada layar VDU rekan sayap. Pencarian pencarian biner pada Juni 2019 juga berhasil menemukan 80 bita data pohon misi di alamat 13D3:D248 dan penghitung poin kemenangan di alamat 13D3:C280.

Modernisasi Multiplayer Berbasis WebRTC

Meskipun game sudah dapat dimainkan, proyek ini sempat terhenti karena rumitnya konfigurasi yang membutuhkan berkas game asli, DOSBox khusus, serta pengaturan alamat IP dan tembok pengaman (firewall).

Pada tahun 2026, proyek ini dihidupkan kembali dengan memanfaatkan teknologi WebRTC, Emscripten, dan bantuan model bahasa besar (LLM). Daniel membangun sistem lobi bernama lobbylink berbasis bahasa Go yang mengoordinasikan koneksi peer-to-peer antar-pemain menggunakan kode ruangan bersama dan server TURN untuk pengguna di balik jaringan ketat.

Dengan skrip kompilasi Emscripten, pengguna kini cukup mengunggah paket pemasang Wing Commander dari GOG ke penyimpanan peramban lokal untuk langsung bermain. Selain itu, fitur obrolan suara berbasis WebRTC juga ditambahkan ke dalam sistem.

Proyek permainan ini saat ini dapat diakses secara publik melalui platform GitHub Pages di peramban, sementara seluruh kode sumber emulator telah dibuka untuk umum.

Mungkin Anda Suka

Tinggalkan Komentar

Alamat email tidak akan dipublikasikan. Kolom wajib ditandai *