[HN Gopher] How Quake.exe got its TCP/IP stack
       ___________________________________________________________________
        
       How Quake.exe got its TCP/IP stack
        
       Author : billiob
       Score  : 443 points
       Date   : 2025-11-18 08:18 UTC (14 hours ago)
        
 (HTM) web link (fabiensanglard.net)
 (TXT) w3m dump (fabiensanglard.net)
        
       | afandian wrote:
       | > I didn't work on the Chunnel. That was mainly a British guy
       | named Henry
       | 
       | The British guy named Henry might have named it after another
       | feat of engineering completed around the same time.
       | 
       | https://en.wikipedia.org/wiki/Channel_Tunnel
        
         | torh wrote:
         | Or from the Seinfeld episode "The Pool Guy" (Aired November
         | 1995) which had a fictional movie called "Chunnel" -- probably
         | based on the very same channel tunnel.
        
           | ralferoo wrote:
           | From Google (AI slop at top of search results): "Chunnel" is
           | not a real movie but a fictional film from the TV show
           | Seinfeld. It is depicted as a disaster movie about an
           | explosion in the Channel Tunnel...
           | 
           | Weird hearing that name now though. Around that time,
           | everybody referred to it as the "Chunnel", but I don't think
           | I've heard it as anything but the "Channel Tunnel" since
           | maybe 2000. I suspect even that usage is now limited to only
           | taking cars on the train from Folkestone. Every time I've
           | travelled on it as a regular passenger from London, it's just
           | been referred to as the Eurostar without any mention of the
           | tunnel at all.
        
             | afandian wrote:
             | Yes, it's definitely a word from a 1990s geography
             | textbook.
        
       | sroussey wrote:
       | I was half expecting something about how to get tcp into windows,
       | but this is win95 where they shipped it inside the os and put
       | some company out of business that used to sell that.
        
         | jahnu wrote:
         | I used to use Trumpet Winsock with Windows 3.1
         | 
         | https://en.wikipedia.org/wiki/Trumpet_Winsock
        
         | hypercube33 wrote:
         | Didn't Win95 get tcp from FreeBSD?
        
           | LeoPanthera wrote:
           | That was Windows 2000.
        
             | hypercube33 wrote:
             | No I'm fairly certain that berkley sockets were used as a
             | foundation to integrate a full network stack under
             | winsockets so people wouldn't have to go buy things like
             | Trumpet (Windows 3.1) and you could coax out messages
             | saying as much from the commandline but Google is failing
             | me (I'm sure most of this stuff is on usenet which no one
             | seems to care about these days)
        
               | zweifuss wrote:
               | The history of the Windows TCP/IP stack went most likely
               | like this:
               | 
               | IBM (NetBEUI, no TCP/IP) -> Spider TCP/IP Stack + SysV
               | STREAMS environment -> MS rewrite 1 (early NT, Winsock
               | instead of STREAMS) -> MS rewrite 2 (make win2000
               | faster):
               | 
               | https://web.archive.org/web/20151229084950/http://www.kur
               | o5h...
        
               | kalleboo wrote:
               | It's interesting how STREAMS pervaded everything for a
               | short while (Apple's Open Transport networking stack for
               | System 7.5 and up was also based on STREAMS) but everyone
               | almost immediately wanted to get rid of it and just use
               | Berkley sockets interfaces.
        
               | xbar wrote:
               | Berkeley, for disambiguation.
        
               | kalleboo wrote:
               | Oops, too late to edit my comment!
        
               | justsomehnguy wrote:
               | I still don't quite get how you should had communicate
               | with the other systems over the network with STREAMS.
               | 
               | With IP you have an address and the means to route the
               | data to that address and back, with TCP/UDP sockets you
               | have the address:port endpoint so the recipient doesn't
               | need to pass a received packet to the all processes on
               | the system, asking "is that yours".
               | 
               | So if there is already some network stack providing both
               | the addressing and the messaging...
        
             | EvanAnderson wrote:
             | The story with the Windows NT IP stack is nuanced, but it
             | wasn't just lifted from BSD: https://web.archive.org/web/20
             | 051114154320/http://www.kuro5h...
        
           | pak9rabid wrote:
           | Win95 had its own stack, codenamed Wolverine
        
         | ogurechny wrote:
         | The turbulent times and the breakneck speed of computer
         | development need to be taken into account. Not long before that
         | computer networks were strictly corporate things installed by
         | contractors choosing hardware, driver and software suppliers
         | suitable for tasks performed by employees or students, and
         | someone who installed it at home was the same kind of nerd who
         | would drag an engine from the work into his room to tinker.
         | Non-business-oriented software rarely cared about third party
         | network functions. Then network card became a consumer device,
         | and a bit later it became integrated and expected.
         | 
         | Also, Windows did not install TCP/IP components on computers
         | without a network card (most of them until the Millennium era),
         | it was an optional component. You could not "ping" anything, as
         | there was no ping utility, nor libraries it could call. In that
         | aspect, those network-less Windows systems were not much
         | different from network-less DOS systems. The installer probably
         | still works that way (or can be made to, by excluding some
         | dependencies), but it's hard to find hardware without any
         | network connectivity today. I wonder what Windows 11 installer
         | does when there is no network card to phone home...
        
           | franga2000 wrote:
           | > I wonder what Windows 11 installer does when there is no
           | network card to phone home...
           | 
           | One of "works fine", "needs a command line trick to continue"
           | or "refuses to work completely" depending on which specific
           | edition of win11 your computer has been afflicted with.
        
       | ggambetta wrote:
       | I learned to solder as a pre-teen so I could make a nullmodem :)
       | Then I learned that resistors were a thing when I made a parallel
       | port sound card (this thing
       | https://en.wikipedia.org/wiki/Covox_Speech_Thing). Fun times!
        
         | d3Xt3r wrote:
         | I wasn't allowed a soldering iron as a kid, so I ended up just
         | chopping and splicing a regular serial cable and turned it into
         | a null modem, all so that I could play OMF2097 with my friends
         | without having to share the same keyboard (we would always
         | fight over right side, which defaulted to using the arrow keys
         | for movement - and so the person who got the right side
         | generally had the advantage, as back then arrow keys were the
         | default movement keys, unlike these days where WASD is
         | default.)
        
           | jacquesm wrote:
           | I wasn't allowed one either so I soldered with a screwdriver
           | heated up on the gas stove when my parents weren't home...
        
             | ggambetta wrote:
             | That's pretty hardcore, respect :)
        
             | giantrobot wrote:
             | Your parents: A soldering iron is dangerous!
             | 
             | You: I'll show you!
        
               | pixl97 wrote:
               | I am not in danger.
               | 
               | I am the danger.
               | 
               | [Sticks glowing hot screw driver in molten lead]
        
             | orthecreedence wrote:
             | "We need laws to keep children away from soldering irons"
             | 
             | Later that day...
        
           | khafra wrote:
           | Shared-keyboard OMF 2097 also had an overwhelming advantage
           | for the first mover, since most keyboards had 2-3 key
           | rollover--if you hit wd to jump forward, your opponent had to
           | be fast to do anything before you hit your attack key.
        
             | ukuina wrote:
             | I wonder if OpenOMF has the same limits.
        
               | c-hendricks wrote:
               | It's a keyboard thing and less of a software thing.
        
         | lll-o-lll wrote:
         | Really fun times. I "learned" to solder around that time and
         | age also. Playing Mod files through a DIY version of that
         | "thing" piped into a portable stereo speaker was awesome.
         | 
         | Years later I learned what flux was, and soldering became quite
         | a bit better and easier.
        
       | nikanj wrote:
       | " It is impressive to see Quake run at full speed knowing that
       | Windows 95 runs DOS executable in a virtual machine. My guess is
       | that, in full screen, memory writes and reads to the VGA are
       | given direct access to the hardware to preserve performances"
       | 
       | Virtual x86 mode had little to do with what we nowadays think of
       | when someone says "virtual machine"
        
         | skywal_l wrote:
         | Not entirely related but Quake had a VM though, executing
         | scripts written in QuakeC[0] which would drive the AI, game
         | events, etc.
         | 
         | [0]: https://en.wikipedia.org/wiki/QuakeC
        
           | acchow wrote:
           | But your link says that QuakeC was a compiled language
        
             | vkazanov wrote:
             | QuakeC was compiled into QuakeVM bytecode, which made all
             | modes and logic portable between platforms without having
             | to recompile things everytime, unlike what had to be done
             | for Quake 2 (which was 100% native code).
             | 
             | This hurt performance a bit but in the longer term
             | benefited the modding scene massively.
        
             | Luc wrote:
             | Compiled to bytecode.
        
             | FartyMcFarter wrote:
             | It's compiled into bytecode, so it still requires a VM /
             | bytecode interpreter (whatever you want to call it).
        
         | hapless wrote:
         | Arguably it had a great deal to do with what we think of as a
         | "virtual machine."
         | 
         | Virtual 8086 remapped all opcodes and memory accesses to let a
         | program pretend to be on a single, real-mode 8086 when in
         | reality it was one of many programs running in protected mode
         | on a newer chip
         | 
         | AMD-V and whatever the Intel counterpart is do the almost
         | exactly the same thing: re-map all ia32 and amd64 instructions
         | and memory accesses to let a program pretend to be doing ring 0
         | stuff on an x86 box, when in reality it is one of many programs
         | running with fewer privileges on a newer chip
         | 
         | There are a few more wrinkles in the latter case -- nested page
         | tables, TLB, etc -- but it is the same idea from the viewpoint
         | of the guest.
        
       | skrebbel wrote:
       | Random drive-by nitpick:
       | 
       | > _From the beginning of the development, id had requested from
       | djgpp engineers that their DPMI client would be able to run on
       | djgpp 's DPMI server but also Windows 95 DPMI server._
       | 
       | I'm pretty sure that "DJGPP engineers" is just one guy, DJ
       | Delorie. DJGPP was always open source so I bet he got some
       | contributors, but if the rest of this sentence is true that "id
       | has requested from djgpp engineers", it just means they asked the
       | maker of an open source tool they used to please add a feature. I
       | wonder whether they paid him for it or whether DJ just hacked it
       | all in at id's request for kicks. His "about me" page suggests he
       | does contracting so might be the latter.
       | 
       | DJGPP was spectacularly good back in the day. I didn't appreciate
       | at the time what a monumental effort it must have been to port
       | the entire GCC toolchain and runtime to DOS/Windows. Hats off to
       | DJ Delorie!
        
         | maybewhenthesun wrote:
         | Amen to that!
         | 
         | I think I remember there was some communication between ID and
         | Charles Sandmann about CWSDPMI, so even though it's worded a
         | bit strange for an open source project there's probably some
         | thruth in it?
         | 
         | Also a bit strange how the author is surprised about Quake
         | running in a 'VM', apparently they don't really know about VM86
         | mode in x86 processors...
        
           | trollbridge wrote:
           | DPMI clients don't run in a VM, though. They're just a normal
           | task like any other task / process in Windows.
        
             | toast0 wrote:
             | So... Win32 runs in virtual mode. In 2025, we don't think
             | of that as a Virtual Machine, but it totally is. Hardware
             | access is trapped by the CPU and processed by the OS/DPMI
             | server.
        
               | fredoralive wrote:
               | No, in 386 mode 3.x and 9x the System VM and other DPMI
               | clients runs in protected mode.
               | 
               | Virtual 8086 mode, as its name somewhat suggests, only
               | runs real mode code.
        
           | zoeysmithe wrote:
           | I think if you're relatively young is hard to know computing
           | history. Its oddly older than one thinks, even concepts that
           | are seen as new. Its sometimes interesting to see people
           | learn about BBS's which flourished 40 years ago.
        
           | bombcar wrote:
           | It's a bit surprising because this is the author of the DooM
           | Black Book and they know the underpinnings pretty well.
           | 
           | However, the difference between a DOS VM under Windows 9x and
           | a Windows command prompt and a w32 program started from DOS
           | is all very esoteric and complicated (even Raymond Chen has
           | been confused about implementation details at times).
        
         | eknkc wrote:
         | Completely off topic;
         | 
         | So I just took a look at DJ's website and he has a college
         | transcript there. Something looked interesting.
         | 
         | Apparently he passed a marksmanship PE course at the first
         | year. Is that a thing in US? I don't know, maybe its common and
         | I have no idea. I'd love to have a marksmanship course while
         | studying computer science though.
        
           | Cthulhu_ wrote:
           | I wouldn't be surprised if it's a pretty normal thing in a
           | few countries or regions in the world. Marksmanship and
           | archery are also olympic sports.
        
             | le-mark wrote:
             | It would be an easy "A" for a lot of people in the US!
        
             | 0x457 wrote:
             | Yeah, in Russia even thought everything is decided for you
             | once you've selected your major, PE classes still for you
             | to choose. Competition to get in was crazy too, none of
             | that "first come, first served" - swimming only accepted
             | top N students, table tennis held a tournament style
             | competition (I went there with two friends and I had to
             | play against both of them).
             | 
             | US colleges still have far more options, though.
        
           | simiones wrote:
           | US colleges have a very open curriculum, where you have wide
           | leeway in what classes you actually take, especially in the
           | early years of study. If you're coming from more European-
           | style universities, this is vastly different to the
           | relatively rigid course set you'd take (with a few electives
           | here and there).
        
           | mortehu wrote:
           | US colleges last one year longer, and the first year is more
           | academically similar to the last year of high school in
           | Europe.
        
           | kbolino wrote:
           | It's definitely not common. My US university required 2
           | physical education classes, but only if you were under 30 and
           | hadn't served in the military. They may have offered
           | marksmanship, but I just took running and soccer (aka
           | football). The classes were graded pass-fail and didn't even
           | count for academic credit.
        
           | stronglikedan wrote:
           | We have myriad available "electives" that contribute towards
           | our degrees. I have college credit for "bowling and
           | billiards" and "canoeing and kayaking".
        
           | expressadmin wrote:
           | MIT offers a Pirate Certificate:
           | https://physicaleducationandwellness.mit.edu/about/pirate-
           | ce...
        
           | marpstar wrote:
           | I took an 8-week, 1-credit badminton course to fulfill my PE
           | requirements. I wouldn't be surprised to find a marksmanship
           | course.
        
           | cardiffspaceman wrote:
           | My college required its graduates to pass a minimal swimming
           | test. Just enough swimming ability to give a potential
           | rescuer some extra time to effect the rescue, rather than
           | have us go straight to the bottom of the sea. We all took a
           | test in the first week or so. Those who failed had to take a
           | course and retake the test.
        
           | toast0 wrote:
           | I needed one PE credit to get a degree from my community
           | college. My school didn't offer marksmanship, but I would
           | imagine it would fit into PE, archery certainly would and
           | there's synergy. I took Table Tennis to graduate. I don't
           | think my engineering school where I got my BS required
           | Physical Education though.
        
           | kevin_thibedeau wrote:
           | My high school had some marksmanship trophy's in their case
           | dating back to the 70s. Responsible gun ownership was a real
           | thing when a sizable portion of the male population were
           | veterans.
        
         | gpderetta wrote:
         | It was great indeed. DJGPP is how I learned to to program.
        
         | bluedino wrote:
         | Would love to see some interviews etc with DJ if he's up for it
        
           | ddtaylor wrote:
           | Same. I only have experience from M.U.G.E.N fighting engine
           | with respect to DJGPP.
        
             | EGreg wrote:
             | I remember back in the day using DJGPP (DJ Delorie) with
             | the Allegro library (Shawn Hargreaves), building little
             | games that compiled and ran on Windows and other OSes, and
             | being part of the community.
             | 
             | You can still play the little game I made in under 10K for
             | the Allegro SizeHack competition in 2000: https://web.archi
             | ve.org/web/20250118231553/https://www.oocit...
             | 
             | Back then I was also writing a bunch of articles on game
             | development:
             | https://www.flipcode.com/archives/Theory_Practice-
             | Issue_00_I...
             | 
             | Anyone on HN was active around that time? :) Fun time to be
             | hacking!
        
               | jasomill wrote:
               | I was, but my application was less fun: porting Perl code
               | from Windows NT to MS-DOS to integrate with software that
               | required direct hardware access to a particular model of
               | SCSI card.
               | 
               | Worked great, and saved a bunch of time vs writing a VDD
               | to enable direct hardware access from NTVDM or a miniport
               | driver from scratch.
               | 
               | IIRC, the underlying problem was that none of the NT
               | drivers for any of the cards we'd tested were able to
               | reliably allocate enough sufficiently contiguous memory
               | to read tapes with unusually large (multi-megabyte) block
               | sizes.
        
               | olau wrote:
               | Yes. DJGPP and Allegro was a great help, and a big step
               | up from the old Borland Turbo Pascal I started out with.
               | I remember trying to rotate an image pixel by pixel in
               | Pascal. Allegro simply had a function to do it. And yes,
               | the mailing list was great - Shawn Hargreaves and the
               | couple of people in the inner circle (I seem to remember
               | someone called George) were simply awesome, helpful
               | people.
               | 
               | I eventually installed Red Hat, started at university and
               | lost most of my free time to study projects.
        
               | EGreg wrote:
               | George Foot :)
        
         | djdelorie wrote:
         | Back then, DJGPP was a much bigger group, and most of the Quake
         | kudos go to Charles Sandmann, author of cwsdpmi, who worked
         | directly with Id to help them optimize their code for our
         | environment.
        
           | skrebbel wrote:
           | Omg I'm totally starstruck now!
           | 
           | Purely out of curiosity, was that all a volunteer open source
           | effort or was the entire DJGPP group acting as a consulting
           | organization?
        
             | djdelorie wrote:
             | The DJGPP project and its contributors were 100% volunteer.
             | I'm sure some of the contributors took advantage of their
             | involvement to obtain consulting gigs on the side (I did ;)
             | but DJGPP itself didn't involve any. The Quake work was a
             | swap; we helped them with optimizing, and they helped us
             | with near pointers. Win-win!
        
           | thatjoeoverthr wrote:
           | Thank you for this work. It was my first C compiler in 1998.
           | Y'all helped me on the mailing list and you even replied to
           | my e-mails! I was 11 and this was insane to me.
        
             | djdelorie wrote:
             | You're welcome!
        
               | jhgb wrote:
               | I too need to thank you for the very first C compiler I
               | ever had access to in 1999, after 10 years of having a
               | book on C in my possession that I couldn't use until
               | then.
        
       | ec109685 wrote:
       | This article makes it seems like 1996 was ancient times. There
       | was the internet then, browsers, Mac's had a tcp stack for a
       | while by then, quake was an extremely advanced game.
       | 
       | Yeah, the dos to windows transitions was a big deal, but it was a
       | pretty ripe time for innovation then.
        
         | hylaride wrote:
         | Yeah, but dial-up was slow, laggy, and what 95% of people used
         | to access the internet in those days. Real-time gaming was not
         | fun with anything that used it. I grew up in a rural area in
         | the 1990s and was no match for people that started to get cable
         | modems as time went on.
        
           | 1718627440 wrote:
           | Dial-up, has better latency, since their is no packet-
           | switching. So it is slow, but not laggy.
        
             | ipython wrote:
             | Dialup has a ton of latency (100+ms), but little jitter.
        
               | toast0 wrote:
               | If you're dialed up directly, you should be able to get a
               | little bit better latency as you won't need IP, UDP, and
               | PPP/SLIP headers; at modem bandwidth, header bytes add
               | meaningful latency. But data transmission is still pretty
               | slow, even with small packets.
        
               | pak9rabid wrote:
               | Dialing-up a friend to play Quake, there essentially was
               | no lag.
               | 
               | Dialing-up to the Internet to play Quake via
               | TCP/IP...shit tons of lag (150+ ms).
        
             | giantrobot wrote:
             | You're using confusing terminology so you look very wrong.
             | What you _mean_ to say is direct modem-to-modem connections
             | were not laggy because there was no packet switching. This
             | is a true statement.
             | 
             | What the GP comment was talking about was dial-up
             | _Internet_ being most people 's exposure to TCP/IP gaming
             | in the 90s. _That_ was most assuredly laggy. Even the best
             | dial-up Internet connections had at least 100ms of latency
             | just from buffering in the modems.
             | 
             | The QuakeWorld network stack was built to handle the high
             | latency and jitter of dial-up Internet connections. The
             | original Quake's network was fine on a LAN or fast Internet
             | connection (e.g. a dorm ResNet) but was sub-par on dial-up.
        
               | kleiba wrote:
               | And then there was also this:
               | https://superuser.com/questions/419070/transatlantic-
               | ping-fa...
        
             | hylaride wrote:
             | > Dial-up, has better latency, since their is no packet-
             | switching. So it is slow, but not laggy.
             | 
             | It was laggy as there was buffering and some compression
             | (at least for later revisions of dial-up) that most
             | definitely added latency.
        
           | bombcar wrote:
           | Even when people had dial-up, a huge majority were using
           | portal-dialers like AOL or Compuserve, and it took extra
           | steps to use those to "get" the Internet directly as opposed
           | to within the walled garden.
           | 
           | And even then they'd often just use the bundled browser.
           | 
           | I remember the first friend who got a cable modem, that shit
           | was _insane_ compared to dial-up.
        
       | cubefox wrote:
       | In an interview with Lex Fridman, John Carmack said that in
       | retrospect, Quake was too ambitious in terms of development time,
       | as it both introduced network play and a fully polygonal 3D
       | engine written in assembly. So it would have been better to split
       | the work in two and publish a "Network Doom" first and then build
       | on that with a polygonal Quake.
       | 
       | Which seems to imply that the network stack was about as
       | difficult to implement as the new 3D engine.
        
         | bitwize wrote:
         | And then you had Romero saying that Quake wasn't ambitious
         | _enough_...
        
           | pak9rabid wrote:
           | That's the difference between an engine and game developer.
        
       | PeterHolzwarth wrote:
       | Is this the sign that Fabian is beginning his look and research
       | at Quake (ie, in slow preparation for another Game Engine Black
       | Book)?
        
         | bombcar wrote:
         | I feel he's stepping his way to that, but Quake is an entire
         | other _world_ of complexity from DooM (which is simple enough
         | that a 400+ page book can  "explain" it and the OS and the
         | computers it ran on).
        
           | klaussilveira wrote:
           | Andre Lamothe's "Tricks of the 3d Game Programming Gurus:
           | Advanced 3d Graphics and Rasterization" is a great book for
           | anyone interested in graphics programming from those days.
        
             | skywal_l wrote:
             | Also "The Black Book"[0] of Michael Abrash who worked on
             | Quake with Carmack.
             | 
             | [0]: https://www.amazon.fr/Michael-Abrashs-Graphics-
             | Programming-S...
        
               | bombcar wrote:
               | Which itself is the inspiration for the DooM/Wolf3d Black
               | Books.
        
         | klaussilveira wrote:
         | He most definitely is cooking something. Seen contributions
         | from him to chocolate-quake:
         | https://github.com/Henrique194/chocolate-quake/pull/60
         | 
         | As well as bug reports:
         | https://github.com/Henrique194/chocolate-quake/issues/57
         | 
         | I personally would love to get some help with my chocolate Doom
         | 3 BFG fork, specially with pesky OpenGL issues:
         | https://github.com/klaussilveira/chocolate-doom3-bfg
        
           | skywal_l wrote:
           | He said he was working on something in a comment a couple of
           | months ago on a thread about typst:
           | https://news.ycombinator.com/item?id=44356883
        
       | fallingfrog wrote:
       | Ah I remember running a serial cable from my bedroom to the
       | hallway so we could play 1v1 quake via direct connect. Good
       | times! I think we used to play age of empires that way too.
        
       | sempron64 wrote:
       | It's amusing to me that in the 90s you could easily play Quake or
       | Doom with your friends by calling their phone number over the
       | modem whereas now setting up any sort of multiplayer essentially
       | requires a server unless you use some very user-unfriendly NAT
       | busting.
        
         | kamranjon wrote:
         | I wonder if there is a way to use tailscale to make it easy
         | again?
        
           | blackcatsec wrote:
           | Quite literally folks have done this for decades using
           | Hamachi.
        
             | sempron64 wrote:
             | Hamachi and STUN were what I was thinking of when I
             | referred to user-unfriendly NAT busting. It's true that
             | these are not much harder to get working than a modem, but
             | they don't match up with modern consumer expectations of
             | ease-of-use and reliability on firewalled networks. It
             | would be nice if Internet standards could keep up with
             | industry so that these expectations could be met. It's
             | totally understandable where we've landed due to modern
             | security requirements, but I still feel something has been
             | lost.
        
               | klaussilveira wrote:
               | But how are you going to circumvent the user firewall? He
               | still has to open ports there, even using STUN or Steam
               | Relay or Hamachi.
        
         | ryandrake wrote:
         | Glad you mentioned DOOM! Sometimes people forget that DOOM
         | supported multiplayer as early as December 1993, via a serial
         | line and February 1994 for IPX networking. 4 player games on a
         | LAN in 1994! On release, TCP/IP wasn't supported at all, but as
         | the Internet took off, that was solved as well. I remember
         | testing an early-ish version of the 3rd party iDOOM TCP setup
         | driver from my dorm room (10 base T connection) when I was
         | supposed to be in class, and it was a true game changer.
        
           | jandrese wrote:
           | What was even more amazing is you could daisy chain serial
           | ports on computers to get multiplayer Doom running. One or
           | more of those links could even be a phone modem.
           | 
           | Downside is that your framerate was capped to the person with
           | the slowest computer, and there was always that guy with the
           | 486sx25 who got invited to play.
        
             | bombcar wrote:
             | Or slave two copies to yours and get "side view" which was
             | only supported for a few releases IIRC -
             | https://doomwiki.org/wiki/Three_screen_mode
        
               | badocr wrote:
               | Yes, Doom with multi-monitors! There's (at least) one
               | video on Youtube showing it in action with 3 monitors
               | plus a fourth one with the map:
               | https://www.youtube.com/watch?v=q3NQQ7bPf6U#t=1798.333333
        
         | mrguyorama wrote:
         | You usually just need to forward a port or two on your router.
         | That gets through the NAT because you specify which destination
         | IP to forward it to. You also need to open that port in your
         | Windows firewall in most cases.
         | 
         | Some configuration, but you don't have to update the port
         | forwarding as often as you would expect.
         | 
         | The reason you can't just play games with your friends anymore
         | is that game companies make way too much money from skins and
         | do not want you to be able to run a version of the server that
         | does not check whether you paid your real money for those
         | skins. Weirdly, despite literally inventing loot boxes, Valve
         | does not suffer from this sometimes. TF2 had a robust custom
         | server community that had dummied out checks so you could wear
         | and use whatever you want. Similar to how Minecraft still
         | allows you to turn off authentication so you can play with
         | friends who have a pirate copy.
        
           | bitwize wrote:
           | Starcraft could only do internet play through battle.net,
           | which required a legit copy. Pirated copies could still do
           | LAN IPX play though, and with IPX over IP software you could
           | theoretically do remote play with your internet buddies.
           | 
           | By the way, this is why bnetd is illegal to distribute and
           | was ruled such in a court of law: authenticating with
           | battle.net counts as an "effective" copy protection measure
           | under the DMCA, and providing an alternate implementation
           | that skips that therefore counts as "circumvention
           | technology".
        
         | klaussilveira wrote:
         | You can kinda solve that problem with STUN servers. Most games
         | on Steam use Steam Datagram Relay, which also solves this:
         | https://partner.steamgames.com/doc/features/multiplayer/stea...
         | 
         | It's like in-engine Hamachi. Works really well with P2P games.
        
       | mmastrac wrote:
       | I still get Google hits on my 25 year old DJGPP/NASM tutorial...
        
       | anthk wrote:
       | On DOS runnning fast under W95, how no one created a SVGALIB
       | wrapper trapping i386 code and redirecting the calls to an SDL
       | window?
        
       | badocr wrote:
       | I recall reading about TCP/IP-powered Internet multiplayer DOS
       | Quake in TECHINFO.TXT that shipped with the retail version of the
       | game, and I quote:                 Beame & Whiteside TCP/IP
       | ------------------------              This is the only DOS TCP/IP
       | stack supported in the test release.       It is not
       | shareware...it's what we use on our network (in case you
       | were wondering why this particular stack).  This has been
       | "tested"       extensively over ethernet and you should encounter
       | no problems       with it.  Their SLIP and PPP have not been
       | tested.  When connecting       to a server using TCP/IP (UDP
       | actually), you specifiy it's "dot notation"       address (like
       | 123.45.67.89).  You only need to specify the unique portion
       | of the adress.  For example, if your IP address is 123.45.12.34
       | and the server's is 123.45.56.78, you could use "connect 56.78".
       | 
       | I looked around a little and sure enough, a copy of the software
       | was avaiable in a subdirectory of idgames(2?) at ftp.cdrom.com. I
       | knew nothing about TCP/IP networking at the time, so it was a
       | struggle to get it all working, and in the end, the latency and
       | overall performance was miserable and totally not worth it.
       | Playing NetQuake with WinQuake was a much more appropriate
       | scenario.
        
       | pragma_x wrote:
       | From that first graph: Who was using WinNT in 2005?!
        
         | bombcar wrote:
         | Businesses. And I knew a few diehards who swore Windows 2000
         | was shit and Windows NT 4.0 was where it was at, even as a
         | workstation.
         | 
         | Windows 95 and MS-DOS in 2004 worry me a bit more.
        
           | pak9rabid wrote:
           | I'm guessing none of these diehards were running domain
           | controllers.
        
       | toast0 wrote:
       | > And in 1995 there were only two: us, and Total Entertainment
       | Network. You might think game creators would come to us and say
       | "please put my game on your service!", but... nope! Not only did
       | we have a licensing team that went out and got contracts to
       | license games for our service, but we had to pay the vendor for
       | the right to license their game, which was often an exclusive.
       | So, we had Quake and Unreal; TEN got Duke Nukem 3D and NASCAR.
       | 
       | FWIW, the Total Entertainment Network (TEN) got Quake later,
       | here's a press release from September 30 1996 [1]. Wikipedia says
       | QTest was released Feb 24, 1996, and I can't find when MPath
       | support launched, so I don't know how long the exclusive period
       | was, but not very long. Disclosure: I was a volunteer support
       | person (TENGuide) so I could get internet access as a teen; I was
       | GuideToast and/or GuideName.
       | 
       | [1]
       | https://web.archive.org/web/20110520114948/http://www.thefre...
        
       | nu11ptr wrote:
       | What a blast from the past. I recall my own experimenting with
       | DJGPP and DPMI in my own software. It felt futuristic at the
       | time. I was blown away.
       | 
       | Another fond memory: I was playing Star Wars: Dark Forces (I
       | think that was the one) and was frustrated with the speed of
       | level loading. I think it used DOS/4GW and I recall renaming it,
       | copying in a new dos extender (was it CWSDPMI? not sure), and
       | renaming it to the one Star Wars used. I was shocked when it not
       | only worked, but the level loading was MUCH faster (like 3-5x
       | faster I recall). My guess is whatever one I had swapped in
       | wasn't calling the interrupt in DOS (by swapping back to real
       | mode), but perhaps was calling the IDE disk hw directly from
       | protected mode. Not sure, but it was a ton faster, and I was a
       | very happy kid. The rest of the game had the same performance
       | (which makes sense I think) with the new extender.
        
       | jhallenworld wrote:
       | In the early years of Linux, before it had networking, we used
       | KA9Q for the TCP/IP stack:
       | 
       | https://www.ka9q.net/code/ka9qnos/
       | 
       | This worked in DOS, but was easily ported to Linux.
       | 
       | As far as DPMI: I used the CWSDPMI client fairly recently because
       | it allows a 32-bit program to work in both DOS and Windows (it
       | auto-disables its own DPMI functions when Windows detected).
       | 
       | https://en.wikipedia.org/wiki/CWSDPMI
        
       | Rodeoclash wrote:
       | > If you wanted to play a multiplayer game on the internet,
       | either you needed to have explicit host & port information, or
       | you needed to use an online multiplayer gaming service.
       | 
       | Technically true, although tools like Kali existed which could
       | simulate IPX style networks over the internet. I know this
       | because I played a substantial amount of Mechwarrior 2 online
       | when it designed only for local network play!
        
       | lizknope wrote:
       | Of course Quake had to support DOS but id developed Quake on
       | NeXTSTEP which of course had TCP/IP and they had been supporting
       | Linux and other commercial Unix versions like Solaris since Doom
       | a few years earlier.
        
       ___________________________________________________________________
       (page generated 2025-11-18 23:00 UTC)