Age :42
Group: News Writer
Location: Melbourne
No presentation has been written.
Guides  /  22 Jun 2015, 15:14
How to use Qizmo to fix your Lag/Packetloss
If you have been playing Quakeworld for a long time then you know that Qizmo was an absolute must for online competitive gameplay. It contains a massive suite of features such as... route improvement, FPS enhancements, QW over TCP, teamplay and voice enhancements, demo viewing, demo compression, large scale spectating games online and, quite uniquely, manipulation of the QW Netcode.

Most of these features have now been replicated and replaced within the clients we use (ezQuake, FTE, Fod) or with QTV and QWfwd however there are still a few important features in Qizmo that have never been replaced and keep Qizmo as something that people should know how to use.
How does it work?

When using Qizmo, if you connect via 2 Qizmos, one locally on your PC and the other remotely hosted server on the internet it allows you to manipulate the QW traffic going between the 2 Qizmo's without the client or the server knowing about it. Here is a basic picture of how your connection would look:
Client > Local Qizmo > Remote Qizmo > Server.


What are the basics?

First the basic setup.
1. Download Qizmo for Windows or Linux.
2. Run Qizmo.exe
3. Connect via your Local Qizmo to a Remote Qizmo (Full list on quakeservers.net ) using the following commands:
cl_useproxy 1 //ezQuake server browser will work via Qizmo
connect 127.0.0.1 //This connects you to your Local Qizmo
.connect nl.besmella.com //This connects from your Local Qizmo to Remote Qizmo

Now you need to connect to a server and you can either use the ezQuake server browser or you can manually do this:
,connect qw.foppa.dk:28501 //Manually connect Remote Qizmo to a server


Everyone should know by now that to send a command to a proxy you need to put a "." (dot, period, fullstop) at the beginning of the command, for example .connect however this poses a problem when you are using more than one proxy because it will always be the proxy closest to you that receives the command. If you send a .connect command it will make your Local Qizmo connect to an IP instead of the Remote Qizmo. To get around this you instead use a "," (comma) which will send the command to the last proxy in the chain (in your case, the Remote Qizmo).

A shortcut to automatically connect to your own Qizmo is to add +connect 127.0.0.1 to your command-line. Also you can create an alias to connect from your Local Qizmo to a specific Remote Qizmo...
ezquake-gl.exe +connect 127.0.0.1
alias qizmo_nl "say ,connect nl.besmella.com"


Ok, now what?

Now we have you connected, I am going to cover just 3 important features which have not been replicated in modern clients or servers.... They are the Nail Filter, Data Compression and Sending multiple packets

Nail Filter:

As anyone who plays 4on4 knows, especially on e1m2, that when you get a lot of super nailgun action it can create not only FPS lag but network lag because every single nail that is fired is its own unique projectile and 3 dimensional element being rendered by the client and having its telemetry transmitted from client to server and vice versa. Qizmo allow you to help this buy setting the Remote Qizmo to only send half or three quarters of this information to you. You will see less of the nails but you will lag less too. Remember to use a comma when you configure it so it is the Remote Qizmo that filters the nails otherwise you will only get the FPS Benefit and not the network lag benefit:
,fps 0 0 0 0 0 0 2 0 0 0 //Filter 1/2 Nails (one half)
,fps 0 0 0 0 0 0 3 0 0 0 //Filter 2/3 Nails (two thirds)
,fps 0 0 0 0 0 0 4 0 0 0 //Filter 3/4 Nails (three quarters)
,fps 0 0 0 0 0 0 0 0 0 0 //Disable Nail Filter

There is 10 numbers and the 7th number controls the Nail Filter.

Data Compression:

Most people have fast connections these days and trying to squeeze more data through your connection in order to be able to use a higher rate is a thing of the past but if you still have a low bandwidth connection then this may interest you. By enabling data compression any QW traffic between the 2 Qizmo's is compressed and decompressed by the Local and Remote Qizmo's and therefore uses less traffic. Once connected to both Qizmo's this is as simple as typing the following commands which Qizmo automatically creates aliases for (experiment with which works best for you):
ezcomp //Compression in both directions
ezcomp2 //Compression with Quality Line Mode*
ezcomp2 //Compression with Quality Line & Lossy Compression Modes*


The results are quite impressive. From my testing I have found that the basic compression in both directions (ezcomp) achieves the following results:
Client-to-Server data - 64% reduction in size
Server-to-Client data - 80% reduction in size


* If anyone can give me a good explanation about the Quality Line & Lossy Compression Modes that would be appreciated.

Sending Multiple Packets:

Of the 3 features that I am covering, this is the least known and definitely the most beneficial because you can lower your packetloss. Packetloss can be caused for many reasons such as a poor quality internet connection or an ISP who is oversubscribed... but for whatever the reason it sucks for Quakeworld. Qizmo has the ability to send each packet more than once which greatly lowers the chance of that packet being lost. From the Remote Qizmo you can receive each packet up to 5 times and from your Local Qizmo you can send each packet up to 3 times. This means that if you have a high bandwidth connection, you can just send more data and get less chance of packetloss.

I previously had a connection that would get a constant 10% PL any time it reached 21:00 at night. When this happened I would connect via 2 Qizmo's and set my Local Qizmo to send each packet twice and the Remote Qizmo to send each packet 3 times and I could effectively lower my 10% PL down to 1% or 2% (or low enough that I didn't notice it at all). If sending more traffic is a problem for you then you can also combine this feature with the Data Compression I mentioned above. In really extreme PL cases you should use the maximum setting of sending each packet 3 times and receiving each packet 5 times.

Cool! How do I configure it?

Sending packets Client-to-Server (c2s)
.repeatc2s 1 //Default setting (send once)
.repeatc2s 2 //Send each packet twice
.repeatc2s 3 //Send each packet three times


Receiving packets Server-to-Client (s2c)
,repeats2c 1 //Default setting (send once)
,repeats2c 2 //Send each packet twice
,repeats2c 3 //Send each packet three times
,repeats2c 4 //Send each packet four times
,repeats2c 5 //Send each packet five times


Basically you just need to increase the amount of packets you send until your PL starts going down. To make it easier you can even create a couple of aliases which will do this for you:
alias pl_none "say .repeatc2s 1;say ,repeats2c 1"
alias pl_medium "say .repeatc2s 2;say ,repeats2c 3"
alias pl_big "say .repeatc2s 3;say ,repeats2c 5"


Share your thoughts and experiences in the comments section.
Comments
2015-06-22, 15:40
Archive.org has stored the old Qizmo download page where the Linux version can be found: https://web.archive.org/web/20090228232122/http://www.udpsoft.com/qizmo/dl.html
2015-06-22, 17:45
cheers mli
2015-06-23, 10:48
cool! very good explanation dirtbox.

packet loss is a problem for everyone. and everyone can benefit from using qizmo to lower it.

i have a couple of questions:

1) those . (dot) commands can only be executed when already connected to the first qizmo, correct? and therefore the , (comma) commands can only be executed when connected to the second qizmo? correct?

2) when using cl_useproxy on ezQuake, when connecting to a server via the server browser, will it will connect via the qizmos?


since this is a simple procedure, and since PL is around the corner at all times, wouldn't make sense to use this feature EVERYTIME?

(Edited 2015-06-23, 10:56)
2015-06-23, 10:53
here's the aliases to connect to the current qizmos around the world

alias qizmo_list echo "qizmo_au qizmo_nl qizmo_pl qizmo_020 qizmo_021 qizmo_frosh qizmo_qw2ru qizmo_trxnyc qizmo_trxsfo qizmo_trxuk qizmo_la qizmo_sobolpl"
alias qizmo_au "say ,connect 54.79.51.12:27500" //au.besmella.com - Qizmo
alias qizmo_nl "say ,connect 5.101.102.117:27500" //nl.besmella.com - Qizmo
alias qizmo_pl "say ,connect 95.143.243.24:27900" //PHC Qizmo Server
alias qizmo_020 "say ,connect 5.150.202.177:30001" //Qizmo #020 2
alias qizmo_021 "say ,connect 5.150.202.177:28000" //Qizmo - #020
alias qizmo_frosh "say ,connect 212.13.203.166:27666" //Qizmo - froschroom.com
alias qizmo_qw2ru "say ,connect 93.81.254.63:30001" //Qizmo - qw2.ru:30001
alias qizmo_trxnyc "say ,connect 162.243.62.22:27500" //TraXo.net NYC Qizmo
alias qizmo_trxsfo "say ,connect 104.131.159.73:27500" //TraXo.net SFO Qizmo
alias qizmo_trxuk "say ,connect 178.79.132.17:27500" //TraXo.net UK Qizmo
alias qizmo_la "say ,connect 23.244.69.195:27500" //usa.besmella.com Qizmo - Los Angeles
alias qizmo_sobolpl "say ,connect 91.121.69.201:27600" //[ThE]SoboL QIZMO
2015-06-23, 11:59
You can actually use the ,commands (comma) any time you are connected and whichever is the last Qizmo in the chain (closest to the server) will get the command. This means if you are connecting to only one Qizmo then both . and , will go to that one Qizmo
2015-07-01, 02:21
Quality Line Mode will compress it tighter, but any PL will cause more data to be lost than normal (compression will do this anyway, but QLM is even less tolerant of PL)

Lossy Compression Mode will chuck out some data you don't absolutely need. What exactly, I'm not sure
2015-07-02, 10:09
Maybe some angle information among other things. I think I recall seeing nails coming out sideways or something with that on.
2015-07-03, 06:10
If anyone is curious, firing some nails with sv_mintic 999 will show you for sure (as made famous in Misusing Explosives)
2015-07-13, 12:47
thanks for the explanation
You have to be logged in to be able to post a comment.
Username:
Password: