11 पॉइंट द्वारा GN⁺ 2025-11-19 | 4 टिप्पणियां | WhatsApp पर शेयर करें
  • 1996 में जारी Quake एक ऐसा गेम था जिसने एक साथ तीन तकनीकी बदलावों का सामना किया: 3D accelerator, इंटरनेट, और MS-DOS से Windows 95 में संक्रमण
  • id Software ने djgpp compiler और DPMI-compatible structure का उपयोग करके ऐसी single executable file बनाई जो DOS और Windows 95 दोनों पर चल सके
  • Mpath के ‘Chunnel’ system के ज़रिए DOS के लिए बने Quake को Windows 95 के Winsock TCP/IP stack तक पहुंचने योग्य बनाया गया
  • यह संरचना quakeudp.dll, genvxd.dll, mgenvxd.vxd जैसे components से बनी थी, जो DOS executable को Win32 network API से संवाद करने के लिए मध्यस्थता करते थे
  • बाद में जब id Software Win32-only executable (WinQuake, GLQuake) पर चला गया, तो यह जटिल संरचना समाप्त हो गई

Quake और operating system संक्रमण काल

  • 1996~1997 के बीच MS-DOS का market share आधा रह गया, और Microsoft ने Windows 95 और NT की ओर संक्रमण को आगे बढ़ाया
  • कुछ developers, जैसे Blizzard North, ने Windows 95-only games बनाए, लेकिन id Software ने एक ही executable (quake.exe) से DOS और Windows दोनों को support किया
  • quake.exe को DJGPP के DPMI client का उपयोग करते हुए इस तरह डिज़ाइन किया गया था कि वह DOS के cwsdpmi.exe या Windows 95 के DPMI server दोनों के साथ compatible रहे
  • Microsoft engineer Raymond Chen ने इसे “ऐसा हैरान कर देने वाला उदाहरण जिसमें program अलग-अलग extenders पर भी सही चलता है” बताया

DOS environment में Quake चलाना

  • DOS में Quake चलाने के लिए केवल quake.exe, config.cfg, pak0.pak, और cwsdpmi.exe — ये चार files चाहिए थीं
  • multiplayer में modem, NullModem, IPX, TCP/IP — चार तरीके support थे
    • IPX LAN के लिए था, और TCP/IP इंटरनेट के लिए, लेकिन DOS में TCP/IP stack built-in नहीं था
  • DOS के लिए उपलब्ध एकमात्र TCP/IP TSR Beame & Whiteside का BWNFS था, जिसकी कीमत 395 डॉलर (1996 के हिसाब से) थी, यानी बहुत महंगा

Windows 95 environment में चलना

  • Windows 95 के virtual DOS box (dos-box) में quake.exe चलाने पर यह उसी तरह काम करता था
  • क्योंकि यह Windows 95 के DPMI server का उपयोग करता था, इसलिए cwsdpmi.exe की जरूरत नहीं पड़ती थी
  • चलना सुचारु था, लेकिन 16MB या उससे अधिक RAM चाहिए थी, और DOS की तुलना में memory overhead ज़्यादा था
  • VGA access सीधे अनुमति होने से full-screen में भी performance गिरावट के बिना चलना संभव था

q95.bat और Mpath का Chunnel

  • q95.bat सिर्फ Quake चलाने वाली script नहीं थी, बल्कि Mpath के Winsock tunneling system (Chunnel) के ज़रिए TCP/IP connection को सक्रिय करती थी
  • Mpath Interactive online gaming service (Mplayer) चलाती थी और Quake व Unreal सहित कई games के internet play को support करती थी
  • उस समय Mpath engineer Larry Hastings ने एक घटना साझा की थी, जिसमें उन्होंने Quake के शुरुआती build पर id Software team के साथ internet deathmatch खेला
  • Mpath ने Quake का source code लेकर उसे Mplayer network stack से संवाद करने लायक बदला, और Chunnel technology को id को license किया

Chunnel की तकनीकी संरचना

  • q95.bat qlaunch.exe चलाता था, जो quakeudp.dll को load करता था
    • quakeudp.dll Winsock (wsock32.dll) के साथ bridge का काम करता था
    • यह genvxd.dll के माध्यम से virtual device driver mgenvxd.vxd को load करता था, और interrupt 0x48 के ज़रिए Win32 से संवाद करता था
  • Quake का BSD socket implementation (mpplc.c) Mpath द्वारा दिया गया code था, जो software interrupt के माध्यम से network calls भेजता था
  • genvxd.dll इन calls को unmarshalling करके Winsock तक पहुंचाता था
  • mgenvxd.vxd के symbols में John Cash का नाम शामिल है
  • यह तकनीक Mpath की proprietary patented technology थी, इसलिए source code सार्वजनिक नहीं है
  • दिसंबर 1996 के बाद, जब id Software Win32-only executable (WinQuake, GLQuake, QuakeWorld) पर गया, तो Chunnel संरचना को हटा दिया गया

निष्कर्ष

  • Quake का TCP/IP support ऐसी अनोखी संरचना से लागू किया गया था जिसमें DOS executable, Windows 95 के network stack को अप्रत्यक्ष रूप से call करता था
  • यह DOS और Windows की सीमा पर काम करने वाली hybrid technology थी, जो 1990 के दशक के मध्य के game networking संक्रमण काल का उदाहरण दिखाती है
  • बाद में Win32-only होने से चीजें सरल हो गईं, लेकिन उस समय यह operating system संक्रमण काल की तकनीकी चुनौती और innovation का प्रतीक थी

4 टिप्पणियां

 
bungker 2025-11-21

उस दौर में John Carmack को डेवलपरों में भी जीनियस का जीनियस माना जाता था।

 
thinkpad 2025-11-20

अच्छा लेख पढ़कर मुझे सच में बहुत मज़ा आया।

 
ipuris 2025-11-20

हाहा, मज़ेदार है।

 
GN⁺ 2025-11-19
Hacker News टिप्पणियाँ
  • पुराने DJGPP और DPMI के साथ सीधे प्रयोग करने वाले दिन याद आ गए
    उस समय यह सचमुच भविष्य की तकनीक जैसा लगता था
    खासकर Star Wars: Dark Forces खेलते समय लोडिंग बहुत धीमी थी, तो मैंने DOS/4GW को किसी दूसरे DOS extender से बदलकर देखा, और हैरानी की बात है कि वह 3~5 गुना तेज़ हो गया
    शायद इसलिए कि नया extender real mode में स्विच किए बिना protected mode में सीधे disk hardware को call कर रहा था

  • Linux के शुरुआती दिनों में, जब networking नहीं थी, तब KA9Q TCP/IP stack का इस्तेमाल किया जाता था
    KA9Q code link
    यह DOS पर चलता था, लेकिन Linux पर आसानी से port किया जा सकता था
    हाल ही में मैंने CWSDPMI client भी आज़माया, जो 32-bit programs को DOS और Windows दोनों पर चलने देता है
    CWSDPMI wiki

  • बचपन में soldering सीखने की वजह null modem cable खुद बनाना था
    बाद में resistors के बारे में पता चला, और parallel port के लिए sound card Covox Speech Thing भी खुद बनाकर देखा
    वह सचमुच बहुत मज़ेदार समय था

    • कुछ समय तक वह parallel port sound card मेरा मुख्य sound card था
      Maplin से ढेर सारे बड़े resistors खरीदे, बहुत ही ढीले-ढाले तरीके से soldering की, लेकिन वह शुरू से ही पूरी तरह काम कर गया
    • मुझे soldering iron इस्तेमाल करने की अनुमति नहीं थी, इसलिए मैंने एक सामान्य serial cable को काटकर उसे null modem में modify किया
      यह दोस्तों के साथ OMF2097 खेलने के लिए बनाया था, और अच्छा यह था कि एक ही keyboard के लिए लड़ना नहीं पड़ता था
    • मैंने भी उसी दौर में soldering सीखी थी
      अपने हाथ से बनाए डिवाइस पर Mod files चलाकर portable speaker से सुनना बहुत शानदार लगता था
      बाद में flux के बारे में जानने के बाद soldering बहुत आसान हो गई
  • “DJGPP engineers” वाला वाक्य देखकर याद आया कि असल में यह लगभग एक ही व्यक्ति, DJ Delorie, था
    पूरे GCC toolchain को DOS/Windows पर port करना सचमुच बहुत बड़ी उपलब्धि थी
    पता नहीं उसने id Software के अनुरोध पर features जोड़े थे, या सिर्फ मज़े के लिए, लेकिन यह बेहद प्रशंसनीय है

    • उस समय DJGPP का community काफ़ी बड़ा था, और Quake optimization का श्रेय Charles Sandmann को भी बहुत जाता है
      वह CWSDPMI के लेखक थे, और id के साथ सीधे काम कर रहे थे
    • मुझे भी याद है कि उन दोनों के बीच सचमुच CWSDPMI को लेकर communication हुआ था
      open source project के लिए यह अभिव्यक्ति थोड़ी अजीब लगती है, लेकिन सच होने की पूरी संभावना है
      और जो लोग यह देखकर चकित होते हैं कि Quake VM में चल रहा था, शायद वे VM86 mode के बारे में नहीं जानते
    • मैं DJ Delorie का interview ज़रूर देखना चाहूँगा
    • मैंने उनकी website देखी, वहाँ college के समय shooting class लेने का रिकॉर्ड था
      सोचता हूँ, क्या अमेरिका में ऐसे physical education courses आम हैं
    • मैंने programming की शुरुआत ही DJGPP की वजह से की थी
  • “Chunnel” नाम शायद Channel Tunnel से लिया गया होगा

    • या फिर 1995 में प्रसारित Seinfeld के “The Pool Guy” episode में आने वाली काल्पनिक फ़िल्म ‘Chunnel’ से प्रेरित रहा होगा
  • मुझे याद है कि पहले Quake के TCP/IP multiplayer को सेट करने के लिए TECHINFO.TXT पढ़ा था
    उसमें लिखा था कि यह Beame & Whiteside TCP/IP stack का इस्तेमाल करता है
    मैंने ftp.cdrom.com से software लाकर install किया, लेकिन उस समय networking knowledge की कमी के कारण configuration बहुत मुश्किल थी
    आखिरकार latency बहुत ज़्यादा थी और performance भी खराब, इसलिए WinQuake पर NetQuake खेलना कहीं बेहतर था

  • लगता है Fabian ने Quake-related research शुरू कर दी है

    • उसने वास्तव में chocolate-quake project में योगदान दिया है, और bug report भी छोड़ी है
      मैं भी अपने chocolate Doom 3 BFG fork में OpenGL समस्याएँ सुलझाने में उसकी मदद पाना चाहूँगा
    • लगता है वह शायद उसी दिशा में जा रहा है
      लेकिन Quake, Doom की तुलना में कहीं ज़्यादा जटिल दुनिया है, इसलिए उसे सिर्फ एक किताब में समेटना मुश्किल है
  • 90 के दशक में सिर्फ दोस्त का फ़ोन नंबर लेकर modem connection कर दो, और Quake या Doom आसानी से multiplayer में खेल सकते थे,
    आज यह विडंबना है कि server के बिना यह लगभग असंभव हो गया है

    • DOOM ने 1993 के दिसंबर से serial multiplayer को support किया था, और 1994 में IPX networking भी संभव हो गई थी
      शुरुआत में TCP/IP नहीं था, लेकिन बाद में iDOOM TCP driver से यह संभव हुआ
      जब इसे university dorm में test किया था, तब यह सचमुच क्रांतिकारी लगा
    • आजकल STUN server या Steam का Steam Datagram Relay NAT की समस्या हल करने के लिए इस्तेमाल होता है
      यह किसी तरह के engine के अंदर Hamachi जैसा कॉन्सेप्ट है
    • सोचता हूँ, क्या Tailscale से यह काम पहले की तरह आसानी से किया जा सकता है
    • असल में router पर port forwarding कर दो, तो यह अभी भी संभव है
      बस आजकल कई game companies skin sales revenue के लिए personal servers को रोकती हैं
      Valve ने अपवाद के रूप में TF2 custom servers की अनुमति दी, और Minecraft में भी अभी authentication बंद करके दोस्तों के साथ खेला जा सकता है
  • Windows 95 में TCP/IP built-in आने के बाद वह दौर खत्म हो गया जब TCP अलग से install करना पड़ता था

    • उस समय networks मुख्यतः enterprise उपयोग के लिए थे, इसलिए घर पर इसे install करना लगभग एक nerdy hobby जैसा था
      network cards जब consumer स्तर पर आने लगे, तब दुनिया बदल गई
      लेकिन Windows network card के बिना TCP/IP install नहीं करता था, और ping command भी नहीं होती थी
      सोचता हूँ, आज के Windows 11 में अगर network के बिना install करें तो क्या होगा
    • Windows 3.1 के दौर में Trumpet Winsock इस्तेमाल किया जाता था
    • यह बात भी कही जाती थी कि Windows 95 का TCP/IP stack FreeBSD से लिया गया था
  • 25 साल पहले मैंने जो DJGPP/NASM tutorial लिखा था, वह आज भी Google search में दिख जाता है