What is FTEQTV?
FTEQTV is a streaming proxy. It is designed to sit somewhere between a compatible server, and any standard client.
Which protocols does FTEQTV use?
The proxy itself uses a combination of TCP and UDP. TCP is used server->proxy, and UDP is used proxy->client. The data sent via UDP is standard quakeworld client protocols, and in it's basic form is compatable with any quakeworld client available. The TCP server->proxy stream carrays an MVD stream. This is the same format of stream that is stored in the MVD (multi-view demo) created by certain quakeworld servers such as MVDSV and FTE.
The proxy performs protocol translation between the two, and streams standard quakeworld protocols to the client. It remembers parts of the stream, and is able to allow new clients to connect mid-game.
The proxy does not use any totally new protocols. We plan on adding support for FTE protocol extensions at some point. These protocols are negotiable and are only used where possible. They will also only be used if the original game server used them. ZQuake extensions are normally transparent, and thus need no explicit proxy support.
What are the ties between FTE QuakeWorld and FTEQTV?
The two projects use the same website, and primary developer. FTEQW is the primary engine used for testing. Yes, there is favouritism, but it is not exclusively targeted for FTE. Having said that, there are a few extensions provided by FTE clients that qtv takes advantage of. These extensions are not mandatory, and fallbacks are provided for key functionality.
Does the proxy support chaining?
Yes. It allows streaming the MVD protocol from server to proxy to proxy to proxy ... to proxy to client.
Can I record games and play them back later?
The proxy streams using the MVD protocols. Seeing as this format can store recorded, smooth games, and initiate new connections for new proxies connecting mid-game, recording was a really easy feature to add. Playback is of course easy too, and is compatable with MVD demos recorded before the proxy was even started. You can also play proxy-recorded demos in many quakeworld clients too. Recording to QWD is not supported, as there is no 'best-pov' support yet.
Does the proxy support interpolation.
Yes. However, the Quakeworld protocol can still end up juddery due to inconsistent lag and packet loss. Running a local proxy and chaining can alleviate these issues, but requires a client that doesn't hog CPU power. The high packet rate of quakeworld can cause issues. There is an option to choke packets to updates only, this will greatly reduce bandwidth, and FTE clients will have the option of consistant interpolation, where inconsistent lag is much less severe - the smoothing is complete in the proxy, but is still in development in the client, unfortunately.
Can the proxy connect to multiple sources at the same time?
Yes, use the addserver or adddemo command to add an additional source. If the proxy is streaming only from one server, new spectators will connect to that stream. If there are multiple streams, spectators will be given a list of available sources, and will be expected to choose one to watch.
Is rcon supported?
Yes, rcon works, but be warned that it doesn't have as many commands as a regular qw server does.
Does the proxy support subscribing to master servers?
Yes, but only one at a time. Use the 'master <ip:port>' command.
What about other commands?
Yes, there are other commands too, eg the exec command is working. Use the help command to see a list.
Where can I go to ask for help or support?
The prefered method is using IRC. You can find developers in #FTE on either quakenet or irc.enterthegame.com Alternativly, there may be some knowledgable guys in #ezquake on quakenet. You could also try asking in #quakeworld. :p If you do not like irc, you could send an email to email@example.com with your question. If the past few days are anything to go by, it might take a while to get a response. Forum-wise, besmella-quake is probably the best set of forums to ask on at the moment. It used to be quakeworld.nu but that site has been down for a while.
Will NetQuake protocols ever be supported?
NQ protocols are partially supported as of the current SVN version. NQ clients are able to connect to the proxy, but the proxy is unable to connect to NQ servers. There is a setting on the proxy to disable this if you are paranoid about nq-based denial of service attacks.
Does the proxy need any files?
Yes and no. The proxy reads config commands via the exec command, probably by the commandline. The proxy reads/writes mvd files. The proxy loads bsp files for the current map. The full reason for this is awkward to explain concisely. Standard QuakeWorld protocols support only 64 visible entities at any one time. However, on the typical map, there are about that many items, often more. The bsp is used as a way of optimising the visible entities. This cuts down the total number and hopefully uses less bandwidth too. The proxy is able to read bsp files inside paks and from the gamedirectory specified by the game server. If you already have quake installed, you can run the proxy from inside your quake directory to allow these features.
How do I enable QTV streaming from a server (ftesv / mvdsv)?
Both FTE and mvdsv have a single cvar to both enable streaming and specify a port. The cvar is named mvd_streamport. It is suggested that you use the same port number as clients would use. eg: mvd_streamport 27500
FIXME: add info on passworded qtv streams.
How can I set up a free-for-all proxy? (not home users)
As a bare minimum, you don't need to install anything other than the qtv executable. However, if you intend to allow the udp protocols, it is a very very good idea to install the quake maps first (typically achieved by simply installing quake). Once you have: /quake/ /quake/id1/pak0.pak /quake/id1/pak1.pak
Custom maps would go in /quake/id1/maps/ Gamedirs are supported so /quake/fortress/maps/ is fine too, depending on the gamedir for the played game.
You would then install the qtvprox.exe / qtv binary to /quake/
As an additional step, create /quake/qtv.cfg This file should contain customized settings, eg:
hostname "Example Config" udpport 27599 tcpport 27599 adminpassword changeme master satan.idsoftware.com:27000
(satan.idsoftware.com is id's quakeworld master server, port 27500 is commonly dubbed 'id Limbo')
Once you have the maps, the executable, and the config, just start up the proxy and feel free to connect.
Specifying a master server like that might be a bad plan bandwidth-wise, but there's no other 'global' way to publicise it.
How do I watch a game?
The exact procedure for this isn't entirly polished, and the recommended way might change any time soon. There are two ways. For the lazy:
- You would connect to the proxy like you would connect to any other qw server.
For the enlightened:
- Go to the proxy's internal http site (or tourney's website). Choose the game by clicking on the link. Download the 'qtv' file and open it with your favorite qw client (as of writing, only fte supports this). Windows only: If your client is one of the lame / old clients that doesn't support this then open it with a copy of the proxy (to be coded). You will then be given a couple of prompts for choice of engine and commandline.
For the bandwidth friendly:
- start a qtv proxy locally (typically without a qtv.cfg). Start up your client, connect to localhost:27599. Type .qtv stream@ipaddress:port.
Is it true that I can play a demo from a different qtv proxy?
Yes. This is the command: demo firstname.lastname@example.org:5678 This is also available to non-admins by prefixing with a dot.
What is this about an http server?
Seeing as the qtv protocol is similar to the http protocol, adding an http server was a logical step. The primary advantage for this is that qtv is able to provide a more friendly (hopefully) interface for choosing a game to watch. The other, less obvious advantage is that you can post a url and others can watch the game simply by clicking the link (and saying 'yes I really do want to open this file').