criticalstack / quake-kube Goto Github PK
View Code? Open in Web Editor NEWQuake 3 on Kubernetes
License: Apache License 2.0
Quake 3 on Kubernetes
License: Apache License 2.0
QuakeJS is used for the browser client of Quake 3, and has not been updated in some time. As detailed in inolen/quakejs#44 the Emscripten tooling would need to be updated to recompile with a modern version of Emscripten. The other alternative would be to integrate a new client into QuakeKube like the client used in planet_quake, however, this is probably also non-trivial and would need a lot of work to adapt to work with QuakeKube (most notably because it relies on SOCKS vs. the websocket proxy used in QuakeKube).
The goal of this would be improve compatibility/performance with browsers (e.g. Firefox doesn't work too well with the older client), and to potentially introduce the ability to use custom games.
When using this with custom maps it seems about 1/3rd of maps the client can't find the map but the server can, which puts the server in an unrecoverable bad state since nobody can join to issue rcon commands. Restarting the deployment causes you to lose the volume, and repeatedly killing just the server container in the pod puts me in an increasingly long CrashLoopBackoff.
It'd be great if I could exec
into the server container and just issue the command to change the map that way. Is that possible?
I suppose I could make a persistent volume for the maps as well, but I still think it would be valuable to be able to control the server directly.
There are three occurences where the URI protocol is hardcoded as http://
in ioquake3.js; this prevents running this behind a reverse proxy with TLS due to the browser blocking mixed content.
Hi,
i have clone your git hub repo
https://github.com/criticalstack/quake-kube.git
and edit the file
quake-kube/public/index.html
adding this lines
args.push.apply(args, ['+set', 'cg_drawfps', '"1"'])
args.push.apply(args, ['+set', 'cg_fov', '"115"'])
after line 142.
but after compiling the docker image, the changes have no effect. Compilation is successful.
In directory
quake-kube/public/
it's file called zz_generated.static.go and inside is (line 217):
"/index.html": &vfsgen۰CompressedFileInfo{ name: "index.html", modTime: time.Time{}, uncompressedSize: 6166, compressedContent: []byte("\x1f\x8b\x08\... ...\x00\x00"),
perhaps the index.html file is not recompressed and converted. How can I solve?
Hi,
any idea where this error is coming from when the content-server starts ?
Error: invalid character '<' looking for beginning of value
2020/08/05 10:27:44 invalid character '<' looking for beginning of value
This is an amazing project and I was super keen to give it a go.
I was hoping I could get some help here, since I am very new to kubernetes.
Systes:
Windows 10 64-bit machine
Latest updates applied
WSL2 and Docker.
I managed to setup the example stack and it is up and running and the websites are available.
However after the name selection and acceptance for the game startup I get an error message : Method not allowed.
I tried in Windows Firefox & Chrome and Mobile Firefox, getting the following :
Did I miss something in the setup ?
I will give a bit more of a hack at this week and potentially answer my own issue, but if you know what it is, it would be really appreciated if you could share.
Thanks again for even doing this to start with, I'm finally starting on my journey to learning kubernetes, thanks to you 😄
Hi, thank you for this project.
I would like to try and build this on a rpi4 cluster using k3s. I am not 100% sure what I need to do to get it running using ARM images.
If possible, can you give me some pointers please on what I would need to do? I am still new to kubernetes. Happy to contribute back if I can get it going.
Use kubebuilder to make a quake-kube server controller to create ContentServer
and GameServer
types.
After deploying example.yaml on my cluster I can see in the pod server logs:
**************************************************
WARNING: baseq3/pak0.pk3 is present but its checksum (2985612116)
is not correct. Please re-copy pak0.pk3 from your
legitimate Q3 CDROM.
**************************************************
Not sure if this a known non-issue or something that needs to be re-copied into the container image.
Hi All,
Nice work, well done! I got a question on running this through a tls reverse proxy.
So, when I run it through tls, I get this:
Form submission canceled because the form is not connected (index)
ioquake3.js:116 initial sync completed in 0.01 seconds
ioquake3.js:15511 Mixed Content: The page at 'https://quake.domain.com/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://quake.domain.com/info'. This request has been blocked; the content must be served over HTTPS.
did you think about any way of addressing this ? Or maybe there's a flag somewhere... ? :)
I'm wondering about things like bots and other servers settings. Is it possible to influence these via the ConfigMap as we can the maps, game types, time/capture limits, etc.?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.