News | Forum | People | FAQ | Links | Search | Register | Log in
NetQuake.io Project Expanding WebQuake
Hello, my first post here, hope. I normally used to post on quakeone.com, but I think here is a better place for this kind of post?

A few users ago, a developer did a line by line conversion of the Quake source code to javascript. I've been intrigued ever since, this port allowed for browser based play like QuakeLive, and also allowed native clients to connect.

The original developer seems content with leaving the original source close to original, so I've forked it and have been quietly toying with it off and on the last few years. The last few months I've been really focused on making something that can be consumed by anyone, and that's the state of today.

Why? When I think of trying to get a friend to run quake, I think of having them install quake, maybe install a quake loader, getting a decent key map, maybe adding command line parameters to get the engine working correctly. WebQuake greatly simplifies all this by allowing me to send a simple link to someone and they can be instantly in-game running a demo, custom map, or multiplayer game. Did I mention platform agnostic? It even runs on mobile!

The downsides to WebQuake -
- Slower than native (this is running webgl, but everything filters through the browser's API)
- Browser may limit key configurations - you there's certain key commands that you can't override in a browser like alt+w
- Require an internet connection to run (can be run offline, might have some options here)

What I've added:
Async/IO - the original source used deprecated blocking IO which isn't compatible with other technologies such as IndexedDB
IndexedDB - Local storage to support adding client pak files. This allows the server to not make pak1.pak public, and allows the user to supply it from their local filesystem, "proving" they bought the game.
ES6 modules - allows the game files to be packaged up in modules

What NetQuake.io offers:
Frontend hosting webquake assets with pak0.pak so you can play shareware out of the box
Master server keeping track of server instances
A couple test instances running on my home server
A CTF server running in AWS Ohio

What I want to do:
- Demo Database - Ability to host/play demos
- Custom map lookup (based on quaddicted's database)
- Add more proquake features to the engine
- Make netquake.io "nicer" - it's currently just a prototype
- Move everything to AWS
- Support local mods

Anyway, that's all. I don't know how useful this might be, so putting out there to gauge interest. Would love to keep a project log here maybe?
 
Those one-letter filenames look intimidating. :D 
 
hey i think it's cool.

#1 feature is probably make watching a quake demo as easy as watching a video on youtube.

Playing in the browser is cool too but has some UX issues like you described -- but might still be good as an entry point for first time players, they can sample the game easily and then install a native client once they decide they like it. 
Agree This Is Way Cool 
Please keep us up to date. 
 
Hmm yeah a demo browser/viewer could be cool, especially in conjunction with the ability to load custom maps.

I've seen this sort of thing before but it's still pretty trippy to watch the opening demo roll along in a browser window. My only request at the moment is to allow us to set the gl_texturemode. :-)

(FYI there's a few typos or missing spaces/words on the main page: "Tanks", "accessbile", "intomodern", "which I've wanted to ever") 
 
Oh heck you do have a config file in there for modifying. Never mind about my request. :-) 
 
also, if you use opengl, there are a lot of rendering glitches specific to GLQuake and that were fixed in Fitzquake that would be nice to see in here. 
 
Glad to hear there's interest.

The source and CI/CD is all hosted here:
https://gitlab.com/joe.lukacovic/netquake.io

Spirit pointed me to FTEQuake's webassembly port using emscripten so I'm going to look into using that instead of trying to re-invent the wheel in javascript. I can keep both engines open as an option too... But FTEQuake is pretty sweet, and around 8x faster. My main concern is integration with the web frontend - it'll have to be able to load pak files from IndexedDB, command line parms from the query string, and maybe config files from local storage.

I can make demos a #1 priority. Playing them is no problem, the question I would have is how to source them. I can provide an area for user uploads and maybe source from existing databases, provided I get permission. Would be nice to have video like progress bars too, but that's some engine work. 
 
I'll definitely check this out later, but probably won't understand any WebGL or WebAssembly parts. 
 
Thank you @Johnny Law, fixed the spelling :) 
Post A Reply:
Name:
Title:
Body:
message
question
exclamation
idea
flame
noflame
error
skull
beer
moon
pent
rocket
sheep
pacman
pig
cheese
worldcraft
gauntlet
crate
pitfall
pimp
smile
cool
sad
frown
oi
yay
tongue
evil
wink
neutral
q1
q2
q3
ut
hl
cs
doom
dkt
serious
cube
Website copyright © 2002-2019 John Fitzgibbons. All posts are copyright their respective authors.