11 poin oleh GN⁺ 2025-11-19 | 4 komentar | Bagikan ke WhatsApp
  • Quake yang dirilis pada 1996 menghadapi tiga perubahan teknologi sekaligus: akselerator 3D, internet, dan transisi dari MS-DOS ke Windows 95
  • id Software memanfaatkan kompiler djgpp dan struktur kompatibel DPMI untuk membuat satu file executable yang dapat berjalan baik di DOS maupun Windows 95
  • Melalui sistem ‘Chunnel’ dari Mpath, Quake versi DOS dibuat agar bisa mengakses stack Winsock TCP/IP milik Windows 95
  • Struktur ini terdiri dari komponen seperti quakeudp.dll, genvxd.dll, dan mgenvxd.vxd, yang bertindak sebagai perantara agar executable DOS dapat berkomunikasi dengan API jaringan Win32
  • Setelah itu, id Software beralih ke executable khusus Win32 (WinQuake, GLQuake) sehingga struktur rumit ini pun menghilang

Quake dan masa transisi sistem operasi

  • Antara 1996 hingga 1997, pangsa pasar MS-DOS turun setengahnya, dan Microsoft mendorong transisi ke Windows 95 dan NT
  • Sebagian pengembang (misalnya Blizzard North) membuat game khusus Windows 95, tetapi id Software mendukung DOS dan Windows sekaligus lewat satu executable (quake.exe)
  • quake.exe dirancang agar kompatibel dengan cwsdpmi.exe untuk DOS atau server DPMI bawaan Windows 95, dengan menggunakan klien DPMI dari DJGPP
  • Insinyur Microsoft Raymond Chen menyebutnya sebagai “contoh menakjubkan dari program yang tetap berjalan normal di extender yang sangat berbeda

Menjalankan Quake di lingkungan DOS

  • Untuk menjalankan Quake di DOS, hanya diperlukan empat file: quake.exe, config.cfg, pak0.pak, dan cwsdpmi.exe
  • Mode multipemain mendukung empat cara: modem, NullModem, IPX, dan TCP/IP
    • IPX digunakan untuk LAN, sedangkan TCP/IP untuk internet, tetapi DOS tidak menyediakan stack TCP/IP secara bawaan
  • Satu-satunya TSR TCP/IP untuk DOS adalah BWNFS dari Beame & Whiteside, dengan harga 395 dolar AS (pada 1996), sehingga sangat mahal

Menjalankan di lingkungan Windows 95

  • Saat quake.exe dijalankan di virtual DOS box (dos-box) milik Windows 95, ia bekerja dengan cara yang sama
  • Karena menggunakan server DPMI Windows 95, cwsdpmi.exe tidak lagi diperlukan
  • Eksekusinya berjalan lancar, tetapi membutuhkan RAM minimal 16MB, dengan overhead memori yang lebih besar dibanding DOS
  • Akses VGA diizinkan secara langsung, sehingga dapat berjalan di layar penuh tanpa penurunan performa
Iklan

q95.bat dan Chunnel dari Mpath

  • q95.bat bukan sekadar skrip untuk menjalankan Quake, tetapi juga mengaktifkan koneksi TCP/IP melalui sistem tunneling Winsock (Chunnel) milik Mpath
  • Mpath Interactive mengoperasikan layanan game online (Mplayer) dan mendukung permainan internet untuk berbagai game termasuk Quake dan Unreal
  • Pada masa itu, insinyur Mpath Larry Hastings menceritakan pengalaman bermain internet deathmatch melawan tim id Software pada build awal Quake
  • Mpath menerima source code Quake, lalu memodifikasinya agar dapat berkomunikasi dengan stack jaringan Mplayer, dan melisensikan teknologi Chunnel kepada id

Struktur teknis Chunnel

  • q95.bat menjalankan qlaunch.exe, yang kemudian memuat quakeudp.dll
    • quakeudp.dll berfungsi sebagai jembatan ke Winsock (wsock32.dll)
    • Melalui genvxd.dll, ia memuat driver perangkat virtual mgenvxd.vxd dan berkomunikasi dengan Win32 lewat interupsi 0x48
  • Implementasi soket BSD di Quake (mpplc.c) adalah kode dari Mpath, yang meneruskan panggilan jaringan melalui interupsi perangkat lunak
  • genvxd.dll kemudian melakukan unmarshalling atas panggilan tersebut dan meneruskannya ke Winsock
  • Simbol di mgenvxd.vxd memuat nama John Cash
  • Teknologi ini merupakan teknologi berpaten milik Mpath, dan source code-nya tidak dibuka
  • Setelah Desember 1996, id Software beralih ke executable khusus Win32 (WinQuake, GLQuake, QuakeWorld) sehingga struktur Chunnel ditinggalkan

Kesimpulan

  • Dukungan TCP/IP di Quake diwujudkan lewat struktur kreatif yang membuat executable DOS secara tidak langsung memanggil stack jaringan Windows 95
  • Ini adalah teknologi hibrida yang bekerja di batas antara DOS dan Windows, sekaligus contoh masa transisi jaringan game pada pertengahan 1990-an
  • Setelah peralihan penuh ke Win32, semuanya menjadi lebih sederhana, tetapi pada masanya struktur ini melambangkan tantangan teknis dan inovasi di era transisi sistem operasi

4 komentar

 
bungker 2025-11-21

Pada masa itu, jika bicara soal John Carmack, dia benar-benar pengembang jenius di atas para jenius.

 
thinkpad 2025-11-20

Saya sangat menikmati membaca tulisan yang bagus ini.

 
ipuris 2025-11-20

Haha, lucu ya.

 
GN⁺ 2025-11-19
Komentar Hacker News
  • Mengingatkan pada masa dulu bereksperimen langsung dengan DJGPP dan DPMI
    Waktu itu rasanya benar-benar seperti teknologi masa depan
    Terutama saat memainkan Star Wars: Dark Forces, loading-nya terlalu lambat jadi aku mencoba mengganti DOS/4GW dengan DOS extender lain, dan ternyata 3–5 kali lebih cepat
    Mungkin karena extender yang baru bisa memanggil perangkat keras disk langsung dari protected mode tanpa berpindah ke real mode

  • Pada awal-awal Linux, saat belum ada networking, kami memakai KA9Q TCP/IP stack
    Tautan kode KA9Q
    Ini berjalan di DOS, tetapi mudah di-port ke Linux
    Belakangan ini aku juga mencoba klien CWSDPMI, yang memungkinkan program 32-bit berjalan di DOS dan Windows
    Wiki CWSDPMI

  • Alasan aku belajar menyolder waktu kecil adalah untuk membuat kabel null-modem sendiri
    Setelah itu aku jadi tahu keberadaan resistor, lalu membuat sendiri kartu suara untuk port paralel, Covox Speech Thing
    Masa-masa itu benar-benar menyenangkan

    • Kartu suara port paralel itu sempat menjadi kartu suara utama milikku untuk beberapa waktu
      Aku membeli banyak resistor besar di Maplin dan menyoldernya dengan agak asal, tapi tetap langsung berfungsi sempurna
    • Karena tidak diizinkan punya solder, aku memotong kabel serial biasa lalu memodifikasinya menjadi null-modem
      Aku membuatnya supaya bisa main OMF2097 bareng teman-teman, dan enak karena tidak perlu berebut satu keyboard
    • Aku juga belajar menyolder pada masa itu
      Bisa memutar file Mod dengan perangkat rakitan sendiri lalu mendengarkannya lewat speaker portabel terasa sangat keren
      Setelah mengenal flux, menyolder jadi jauh lebih mudah
  • Melihat ungkapan “para engineer DJGPP” membuatku teringat bahwa pada dasarnya itu adalah satu orang, DJ Delorie
    Mem-port seluruh toolchain GCC ke DOS/Windows benar-benar pencapaian yang luar biasa
    Aku tidak tahu apakah dia menambahkan fitur atas permintaan id Software atau hanya untuk bersenang-senang, tetapi tetap sangat mengagumkan

    • Saat itu DJGPP punya komunitas yang cukup besar, dan banyak kredit untuk optimasi Quake juga layak diberikan kepada Charles Sandmann
      Dia adalah penulis CWSDPMI dan memang bekerja langsung dengan id
    • Aku juga ingat pernah ada komunikasi terkait CWSDPMI di antara mereka berdua
      Ungkapannya memang agak aneh untuk proyek open source, tapi kemungkinan besar memang benar
      Dan kalau ada yang heran Quake bisa berjalan di VM, mungkin itu karena mereka tidak tahu mode VM86
    • Aku sangat ingin melihat wawancara dengan DJ Delorie
    • Aku sempat melihat situs webnya, dan ternyata ada catatan bahwa saat kuliah dia mengambil mata kuliah menembak
      Aku jadi penasaran apakah kelas olahraga seperti itu umum di Amerika Serikat
    • Aku pertama kali belajar pemrograman berkat DJGPP
  • Nama “Chunnel” tampaknya diambil dari Channel Tunnel

    • Atau mungkin terinspirasi dari film fiksi ‘Chunnel’ yang muncul dalam episode “The Pool Guy” dari Seinfeld pada 1995
  • Aku ingat dulu membaca TECHINFO.TXT saat mencoba menyiapkan multiplayer TCP/IP untuk Quake
    Di sana tertulis bahwa game itu memakai Beame & Whiteside TCP/IP stack
    Aku mengambil perangkat lunaknya dari ftp.cdrom.com dan memasangnya, tetapi waktu itu pengetahuanku soal jaringan masih kurang jadi konfigurasinya sangat sulit
    Pada akhirnya latensinya tinggi dan performanya buruk, jadi bermain NetQuake lewat WinQuake jauh lebih baik

  • Rasanya Fabian mulai melakukan riset terkait Quake

    • Dia memang sudah berkontribusi ke proyek chocolate-quake dan juga mengirim laporan bug
      Aku juga ingin mendapatkan bantuannya untuk menyelesaikan masalah OpenGL di fork chocolate Doom 3 BFG milikku
    • Sepertinya memang mengarah ke sana
      Tetapi Quake adalah dunia yang jauh lebih kompleks daripada Doom, jadi sulit membahas semuanya hanya dalam satu buku
  • Ironisnya, pada era 90-an kita bisa dengan mudah bermain multiplayer Quake atau Doom hanya dengan menghubungi nomor telepon teman lewat modem,
    sedangkan sekarang hampir mustahil tanpa server

    • DOOM sudah mendukung multiplayer serial sejak Desember 1993, dan pada 1994 bahkan sudah bisa networking lewat IPX
      Awalnya belum ada TCP/IP, tetapi kemudian bisa diatasi dengan driver iDOOM TCP
      Saat diuji di asrama kampus, itu terasa benar-benar revolusioner
    • Sekarang masalah NAT diatasi dengan server STUN atau Steam Datagram Relay milik Steam
      Konsepnya semacam Hamachi di dalam engine
    • Aku penasaran apakah ada cara memakai Tailscale supaya semudah dulu
    • Sebenarnya cukup dengan port forwarding di router juga bisa
      Hanya saja sekarang banyak perusahaan game memblokir server pribadi demi pendapatan dari penjualan skin
      Valve cukup jadi pengecualian karena masih mengizinkan server kustom TF2, dan Minecraft juga masih bisa dimainkan bareng teman dengan autentikasi dimatikan
  • Ketika Windows 95 mulai menyertakan TCP/IP secara bawaan, berakhirlah masa ketika kita harus menginstal TCP secara terpisah

    • Waktu itu jaringan masih berpusat pada penggunaan perusahaan, jadi memasangnya di rumah hampir merupakan hobi yang sangat niche
      Dunia berubah ketika kartu jaringan mulai tersebar ke konsumen
      Namun Windows tidak akan memasang TCP/IP kalau tidak ada kartu jaringan, dan bahkan perintah ping pun tidak ada
      Aku penasaran bagaimana perilaku Windows 11 sekarang jika dipasang tanpa jaringan
    • Pada era Windows 3.1, orang memakai Trumpet Winsock
    • Ada juga cerita bahwa TCP/IP stack Windows 95 diambil dari FreeBSD
  • Sampai sekarang tutorial DJGPP/NASM yang kutulis 25 tahun lalu masih muncul di hasil pencarian Google