/Tech10h ago

Nomad List founder Pieter Levels launches browser-based Quake 1 multiplayer using an emulated null-modem connection over WebSockets

The game runs inside em-dosbox with a 16 MB download.

874291782160.7K
Original post
@levelsio@levelsio#842inTech

🔌Today I created a virtual web-based null modem so now you can finally play Quake 1 (from 1996) in multiplayer in the browser with other people online!

This week I was able to create a virtual printer that listens on the COM2 port to make a web-based printer work in Windows 3.11, like on you can actually print to, it was one of my ideas when I started http://pieter.com but it was always too difficult to make, I had no idea where to start, but this week AI was able to do it!

Today I woke up and thought "if we can listen to COM2 via JS, how about listen to COM1 from Quake 1?" then we could forward the COM1 data via Websockets and to another user to create a virtual null modem

(A null modem was a cable you'd use to connect two computers to each other directly in the 90s, if you couldn't afford buying a network card you'd use this to network, but you could only play with one other computer not multiple)

So I built it, it took about an hour and works! I wanted to get Quake 1 in DOS to work with multiplayer for 2 years but I could never get it to work, but now it did it

This project is a good benchmark of how capable AI is becoming, figuring stuff out that humans would take months within an hour

You can try it here, I don't know how it will match lots of people but let's see, you have to exit to DOS first (ALT-F4 or FN-Option-F4 on Mac), then type CD games, then CD quake, then quake, then ESC, then Multiplayer, then either Create New Game or Join Game, and use Direct Connect, keep settings same and you're in!

https://pieter.com/assets/dosbox/nullmodem-test/index.html

@levelsio@levelsio

🖨️ Next in the printing saga: I installed Print Shop Deluxe 2.0 from 1994

It lets you print these giant banners, I vaguely remember doing this too

And it works with our web-based matrix printer!

You can try it on http://pieter.com, make sure you select the vertical ones, as I didn't get the horizontal printing to work (yet)

5:28 AM · Jun 10, 2026 · 78.4K Views
Sentiment

Users praise the AI-built browser null modem for Quake multiplayer as epic and ingenious because it creatively revives 90s gaming infrastructure with functional nostalgia.

Pos
100.0%
Neg
0.0%
39 comments with sentiment.
Cluster Engagement
Posts from X
Most Activity
Most Activity
VIEWS48.1KBOOKMARKS17LIKES84RETWEETS4REPLIES18
@levelsio@levelsio

Okay I spun it off as a Quake 1 web-based multiplayer game + server you can play now at:

👉 http://q1.pieter.com 👈

It still works via null modem and you get instantly paired to another player (if there is somebody) and it's just a 16mb download of Quake 1 demo instead of the whole 400mb pieter .com drive

If you open the URL both in the same time you probably get paired together and can death match!

There is quite some latency because every package goes through my server and Quake 1 did not have client-side prediction yet (which is what Quake World added later), I'l try get QW running to see if it improves it a bit

Group multiplayer can come but for that I need to see if I can get actual COM1 modem connection working not just a null modem!

Here I'm playing a local LAN death match with @javilopen on a game from 1996 in a web browser via a COM1 serial port tunneled via Websockets over the internet! 🤓

@levelsio@levelsio

🔌Today I created a virtual web-based null modem so now you can finally play Quake 1 (from 1996) in multiplayer in the browser with other people online!

This week I was able to create a virtual printer that listens on the COM2 port to make a web-based printer work in Windows 3.11, like on you can actually print to, it was one of my ideas when I started http://pieter.com but it was always too difficult to make, I had no idea where to start, but this week AI was able to do it!

Today I woke up and thought "if we can listen to COM2 via JS, how about listen to COM1 from Quake 1?" then we could forward the COM1 data via Websockets and to another user to create a virtual null modem

(A null modem was a cable you'd use to connect two computers to each other directly in the 90s, if you couldn't afford buying a network card you'd use this to network, but you could only play with one other computer not multiple)

So I built it, it took about an hour and works! I wanted to get Quake 1 in DOS to work with multiplayer for 2 years but I could never get it to work, but now it did it

This project is a good benchmark of how capable AI is becoming, figuring stuff out that humans would take months within an hour

You can try it here, I don't know how it will match lots of people but let's see, you have to exit to DOS first (ALT-F4 or FN-Option-F4 on Mac), then type CD games, then CD quake, then quake, then ESC, then Multiplayer, then either Create New Game or Join Game, and use Direct Connect, keep settings same and you're in!

https://pieter.com/assets/dosbox/nullmodem-test/index.html

6hViews 48.1KLikes 84Bookmarks 17
@levelsio@levelsio

Okay I tried the same Null Modem with 👹 DOOM and it works too, it's super laggy though I think because the BAUD rate is 14400 (like 14.4kbps or 1.8 kilobyte per second!)

DOOM was the first game that made multiplayer game networking mainstream and it literally invented the word "deathmatch"

But it works, very cool

https://pieter.com/assets/dosbox/nullmodem-test/index.html

@levelsio@levelsio

Okay I spun it off as a Quake 1 web-based multiplayer game + server you can play now at:

👉 http://q1.pieter.com 👈

It still works via null modem and you get instantly paired to another player (if there is somebody) and it's just a 16mb download of Quake 1 demo instead of the whole 400mb pieter .com drive

If you open the URL both in the same time you probably get paired together and can death match!

There is quite some latency because every package goes through my server and Quake 1 did not have client-side prediction yet (which is what Quake World added later), I'l try get QW running to see if it improves it a bit

Group multiplayer can come but for that I need to see if I can get actual COM1 modem connection working not just a null modem!

Here I'm playing a local LAN death match with @javilopen on a game from 1996 in a web browser via a COM1 serial port tunneled via Websockets over the internet! 🤓

2hViews 13.5KLikes 36Bookmarks 8
@levelsio@levelsio

Here's how a null modem looks like :DD

@levelsio@levelsio

🔌Today I created a virtual web-based null modem so now you can finally play Quake 1 (from 1996) in multiplayer in the browser with other people online!

This week I was able to create a virtual printer that listens on the COM2 port to make a web-based printer work in Windows 3.11, like on you can actually print to, it was one of my ideas when I started http://pieter.com but it was always too difficult to make, I had no idea where to start, but this week AI was able to do it!

Today I woke up and thought "if we can listen to COM2 via JS, how about listen to COM1 from Quake 1?" then we could forward the COM1 data via Websockets and to another user to create a virtual null modem

(A null modem was a cable you'd use to connect two computers to each other directly in the 90s, if you couldn't afford buying a network card you'd use this to network, but you could only play with one other computer not multiple)

So I built it, it took about an hour and works! I wanted to get Quake 1 in DOS to work with multiplayer for 2 years but I could never get it to work, but now it did it

This project is a good benchmark of how capable AI is becoming, figuring stuff out that humans would take months within an hour

You can try it here, I don't know how it will match lots of people but let's see, you have to exit to DOS first (ALT-F4 or FN-Option-F4 on Mac), then type CD games, then CD quake, then quake, then ESC, then Multiplayer, then either Create New Game or Join Game, and use Direct Connect, keep settings same and you're in!

https://pieter.com/assets/dosbox/nullmodem-test/index.html

10hViews 8.6KLikes 37Bookmarks 2
@levelsio@levelsio

How it works

@levelsio@levelsio

🔌Today I created a virtual web-based null modem so now you can finally play Quake 1 (from 1996) in multiplayer in the browser with other people online!

This week I was able to create a virtual printer that listens on the COM2 port to make a web-based printer work in Windows 3.11, like on you can actually print to, it was one of my ideas when I started http://pieter.com but it was always too difficult to make, I had no idea where to start, but this week AI was able to do it!

Today I woke up and thought "if we can listen to COM2 via JS, how about listen to COM1 from Quake 1?" then we could forward the COM1 data via Websockets and to another user to create a virtual null modem

(A null modem was a cable you'd use to connect two computers to each other directly in the 90s, if you couldn't afford buying a network card you'd use this to network, but you could only play with one other computer not multiple)

So I built it, it took about an hour and works! I wanted to get Quake 1 in DOS to work with multiplayer for 2 years but I could never get it to work, but now it did it

This project is a good benchmark of how capable AI is becoming, figuring stuff out that humans would take months within an hour

You can try it here, I don't know how it will match lots of people but let's see, you have to exit to DOS first (ALT-F4 or FN-Option-F4 on Mac), then type CD games, then CD quake, then quake, then ESC, then Multiplayer, then either Create New Game or Join Game, and use Direct Connect, keep settings same and you're in!

https://pieter.com/assets/dosbox/nullmodem-test/index.html

10hViews 4.9KLikes 26Bookmarks 5
@levelsio@levelsio

Oops no sound, will upload new one

@levelsio@levelsio

Okay I spun it off as a Quake 1 web-based multiplayer game + server you can play now at:

👉 http://q1.pieter.com 👈

It still works via null modem and you get instantly paired to another player (if there is somebody) and it's just a 16mb download of Quake 1 demo instead of the whole 400mb pieter .com drive

If you open the URL both in the same time you probably get paired together and can death match!

There is quite some latency because every package goes through my server and Quake 1 did not have client-side prediction yet (which is what Quake World added later), I'l try get QW running to see if it improves it a bit

Group multiplayer can come but for that I need to see if I can get actual COM1 modem connection working not just a null modem!

Here I'm playing a local LAN death match with @javilopen on a game from 1996 in a web browser via a COM1 serial port tunneled via Websockets over the internet! 🤓

4hViews 7.2KLikes 7Bookmarks 0
Enes Poyraz@ens_pyrz

@levelsio I like those kinds of experiments. I am currently porting Contra (NES) from ASM to C and then from C to WebAssembly. I can't code in C. I never did a Project in WebAssembly. Claude did all of this. It works:

10hViews 35
@levelsio@levelsio

@AnoNymous768808 Will fix, what key should shoot be?

4hViews 24

@levelsio So epic 🤣

"walk forward" = w "backpedal" = s Mouse speed = max

These 3 things by default will improve the gaming a lot.

6hViews 278Likes 1

@levelsio I remember playing this at school, we all had it on a USB. So many happy memories

2hViews 40Likes 1
Alexander@alexanderrX_

@levelsio Are you using Fable 5 for this? If so, what’s your thoughts?

I was skeptical this morning, but used it all day and pretty damn impressed.

1hViews 24Likes 1
Tasuku Miura@surfer_tas

@levelsio what about downloading a tiny image over a 56k modem.

the wait was always worth it.

9hViews 21Likes 1
Rich@RrichPRMR

@levelsio The fact that a game from 1996 can still find new ways to run in 2026 is amazing )

6hViews 55
Maliik Bryan@Don_adijah

@levelsio Doing the transport as a virtual null modem instead of just opening a websocket is full commitment to the bit. I built browser multiplayer on an authoritative Colyseus server and honestly the 1996 stack has fewer moving parts.

10hViews 55
Smail@Smailancer

@levelsio Is the multiplayer feature made with the new model Fable ?

1hViews 16Likes 1
jimSBr@jimsbr

@levelsio Okay, this is epic

10hViews 40
Lunari@0x_lun

@levelsio emulating a null modem over the web so two browser tabs can play quake together is genuinely unhinged and i respect it

10hViews 35
panaizzz@panaizzz

@levelsio Lool i need to try this with my brothers

10hViews 34
Enes Poyraz@ens_pyrz

@levelsio cmon @levelsio. show me what you got😈!

6hViews 33

@levelsio gg!

@levelsio@levelsio

Okay I spun it off as a Quake 1 web-based multiplayer game + server you can play now at:

👉 http://q1.pieter.com 👈

It still works via null modem and you get instantly paired to another player (if there is somebody) and it's just a 16mb download of Quake 1 demo instead of the whole 400mb pieter .com drive

If you open the URL both in the same time you probably get paired together and can death match!

There is quite some latency because every package goes through my server and Quake 1 did not have client-side prediction yet (which is what Quake World added later), I'l try get QW running to see if it improves it a bit

Group multiplayer can come but for that I need to see if I can get actual COM1 modem connection working not just a null modem!

Here I'm playing a local LAN death match with @javilopen on a game from 1996 in a web browser via a COM1 serial port tunneled via Websockets over the internet! 🤓

1hViews 32Likes 0Bookmarks 0
Load more posts