[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4787: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4789: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4790: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4791: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
InsideQC Forums • View topic - Match controls (ready, notready) to the engine + admin

Match controls (ready, notready) to the engine + admin

Discuss programming topics for the various GPL'd game engine sources.

Moderator: InsideQC Admins

Match controls (ready, notready) to the engine + admin

Postby Baker » Thu May 05, 2011 3:58 am

This is a blue sky thread, clearly.

Mods like CRMOD or CAx had sophisticated match joining logic that is far too high of a burden of expertise on the average modder.

The average modder should be concerned about game-flow, not administrative controls.

Any loose or vague ideas on how this could be done in the engine. Or whether it should be done. The engine supplies cvars like deathmatch 0/1/2/3 and teamplay and samelevel.

I'm not saying the engine would be the whole solution, as the above cvars live mostly or entirely in the QuakeC. At the same time, it seems like voting, match participation and even admin controls are rather uniform in how they work and topics that a very finite number (like can count on fingers on both hands not using them all?) really are experts with.

I guess I'm asking, in an ideal world how could these be implemented in a way that represents the lowest burden on a modder. You might make a freeze tag game or dodgeball or some fun mod, but the work required to make them "multiplayer dedicated professionally hosted public server ready" is rather steep. Issues like a new player connects, or an existing player disconnects that was in the match, controls for allowing a new connecting player in the game and so forth. (FFA is simple, whoever is present plays.)

[Hosting a multiplayer server is different than single player or LAN, obviously. Case in point, in stock id1, if you get the silver key and disconnect --- the key is gone forever! No connecting players can ever complete the current map. One example. Which is one reason I dislike closed-source Quake mods, they never think of stuff like that or other multiplayer problems. Mostly out of a lack of expertise in the area, but nevertheless the problems are real and absolutely terminal. Anyway, since that isn't the subject. I'm just trying to think of ways that more mods can become truly server friendly without imposing unfair burdens on a QuakeC guy]
The night is young. How else can I annoy the world before sunsrise? 8) Inquisitive minds want to know ! And if they don't -- well like that ever has stopped me before ..
User avatar
Baker
 
Posts: 3666
Joined: Tue Mar 14, 2006 5:15 am

Postby r00k » Fri May 06, 2011 2:40 am

"READY", "NOTREADY", "OBSERVER", "AFK" etc are just impulse ALIAS commands. Depending on the MOD, these impulse commands might have different numbers. When someone connects to CRMOD for instance the 1st thing it tries to do is stuffcmd (self,"ignorethis\n");
On the server's end, IGNORETHIS, is an alias to an impulse. 128 for example (not sure which number it is off hand atm). So when a client connects, and that stuffcmd is sent to the client's console (as if they typed it, the server reads the impulse and if it points to the "IGNORETHIS" command, then it does nothing, it assumes the client has the alias commands already "stuffed". Otherwise the server sends all of the ALIAS commands that are impulse commands for the MOD's menu commands, like READY, NOTREADY etc..

One way an engine could provide a global READY command would be to use a SETINFOKEY or stuffcmd (self, "READY 128\n"); or as a clc_READY that the server engine would catch. Since CRMOD, CRCTF, CAx all use READY with different IMPULSE commands, the CVAR for READY could just send that alias back to the server and let the server provide the impulse #...
r00k
 
Posts: 1111
Joined: Sat Nov 13, 2004 10:39 pm

Postby Spike » Fri May 06, 2011 2:47 pm

.
Spike
 
Posts: 2914
Joined: Fri Nov 05, 2004 3:12 am
Location: UK


Return to Engine Programming

Who is online

Users browsing this forum: No registered users and 1 guest