[quake3-bugzilla] [Bug 5099] New: Add support for dpmaster protocol

bugzilla-daemon at icculus.org bugzilla-daemon at icculus.org
Mon Jul 25 21:31:37 EDT 2011


https://bugzilla.icculus.org/show_bug.cgi?id=5099

           Summary: Add support for dpmaster protocol
           Product: ioquake3
           Version: SVN HEAD
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P3
         Component: Misc
        AssignedTo: zakk at icculus.org
        ReportedBy: ZTurtleMan at gmail.com
         QAContact: quake3-bugzilla at icculus.org


Created attachment 2863
  --> https://bugzilla.icculus.org/attachment.cgi?id=2863
Add support for dpmaster protocol

Dpmaster protocol allows standalone games to be separate from quake3 on the
master server list. Most standalone games (all but tremulous?) seems to use
dpmaster, so most should be able to easily take advantage of this. Using
dpmaster protocol is optional, enabled by com_useDpmasterProtocol cvar at
startup. STANDALONE build only supports dpmaster protocol by default, just
needs to define LEGACY_MASTER_PROTOCOL to readd support for legacy q3a master
server protocol.

A "gamename" is used to keep the games separate on the master server, instead
of just "protocol". Standalone games can use the same "protocol" as other games
(even on the same master server), as "gamename" keeps them separate. The
"gamename" is also used to prevent clients for other games from joining
servers, even if not using dpmaster protocol (previously used heartbeat, but
dpmaster protocol requires all games to use "DarkPlaces").

Standalone games (running using ioq3 binary) just need to set the
"com_gamename" cvar (to a string with no whitespaces) at startup to prevent
client/server interaction of different standalone games. And set
"com_useDpmasterProtocol" to 1 at startup to be separate from quake3 on
dpmaster (if com_gamename is set) and not have to worry about same protocol as
other games.

Hosting a server and getting server list using master.quake3arena.com,
dpmaster.deathmask.net, and LAN have been testing using dpmaster protocol and
gamename "Quake3Arena" (interacts with quake3 servers) and other test gamenames
(such as "ioq3") and everything seemed to work as intended.

Changes;
* Added cvar com_useDpmasterProtocol to enable using dpmaster protocol. (Feel
free to rename it if you think of something better.)
* Renamed cl_gamename cvar to com_gamename.
* Send/check com_gamename instead of sv_heartbeat in client challenge. Note,
ioq3 client from r2075 or later is unable to join! (dpmaster protocol always
uses "DarkPlaces" for heartbeats.)
* Add gamename (from com_gamename cvar) to info string in infoResponse message
if using dpmaster protocol.
* If using dpmaster protocol check if server's reported gamename matches
com_gamename in CL_ServerInfoPacket, so only server with the same gamename show
on LAN in q3_ui/ui server browsers.
* Send gamename (from com_gamename cvar) with "getservers" request if using
dpmaster protocol.
* Use heatbeat "DarkPlaces" by default if using dpmaster protocol.
* If not defined LEGACY_PROTOCOL or com_legacyprotocol is 0; client requires
"gamename" in infoResponse and server requires "gamename" in challenge. This is
to keep game separate from legacy quake3 servers/clients.
* Updated README for changes. (Could be better.)

Note;
* This patch reintroduces behavior removed in r1490,
http://svn.icculus.org/quake3?view=rev&revision=1490 , but only if dpmaster
protocol is enabled. I cannot think of a way to fix this, while supporting
dpmaster protocol and full quake3 compatibility. Standalone-engine games could
add "gamename" (com_gamename) to statusResponse like infoResponse and rename
"gamename" cvar to "gameversion" in game and ui. I do not know if it would
cause issues for standalone server browsers (such as qstat).

-- 
Configure bugmail: https://bugzilla.icculus.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the quake3-bugzilla mailing list