Re: [hlds_linux] Re: Request a higher minimum value for cl_cmdrate.

2005-07-20 Thread James Tucker
On Wed, 20 Jul 2005 01:36:31, Dan Sorenson <[EMAIL PROTECTED]> wrote:
> At 04:36 PM 7/18/2005 -0700, Vapor wrote:
[snip]
> Likely only
> Valve knows how many servers run off OC192's vs. DS1's.

It shouldn't be too hard to get servers to sync up with other
dedicateds on the same subnet and to figure out the gateway bandwidth.
tptest anyone?

[snip]

> Maybe it could be incorporated into the engine, and the client
> elects to use it via command-line flag?  -autorate as a client option
> where the server updates your rates based upon what it sees as your
> latency and loss might be a suitable compromise.

IMO that defeats the point of such a system. The idea of an autorate
system is to remove control from the users who have bad habits such as
not reading docs and looking at forums filled with incorrect
information. Furthermore if we are looking to balance the game in
terms of making the netcode more fair for every user (the knowledgable
and the not so) then you don't want it to be disabled ever. It needs
to either work fully, or not, otherwise it's just an increase in the
general mess.

>  Note to Alfred: I've not patented this idea, but if Valve likes
> it I am prepared to recieve all patent royalties.  Valve may also
> twist my arm and force me to accept an undisclosed amount of cash
> for me to sign away all rights to the idea.  Valve may also send
> me cash because I'm pretty and have remarkably few annoying
> personal habits.  No matter Valve's wishes, I'm ready to
> accept cash.  Please keep this in mind as you argue on my behalf.

It's not just your idea (been working on this idea for some time
myself, including developing a test case in a local distributed hash
table system where it attempts to never swamp a gateway with data).

___
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlds_linux


[hlds_linux] Re: Request a higher minimum value for cl_cmdrate.

2005-07-19 Thread Dan Sorenson
At 04:36 PM 7/18/2005 -0700, Vapor wrote:

>I agree your ideas have merit Dan and are well intentioned, if the ultimate
>scenario is everyone having "averaged" connection performance.

That's all I was after.  Let's face it, you'd hate to have
Manchester United go up against the New York Yankees in a game of baseball
because they're two entirely different games and the playing field is
nowhere near level.  Likewise, we'd hate to have you take on the
Boston Red Sox in a game of cricket.  If we're playing a game of
chess, the rules are the same and the location shouldn't matter.
Under Source, delay is so critical it can give an advantage.
Thus it makes sense to open a discussion on keeping a public
server equal for the players.

>Servers I manage operate on 1 or 2 x 100mbit full duplex connections per box,
>which run from 3-6 clan ports or publics, say 30-120 slots. Based on this
>server side bandwidth is never an issue, bearing in mind the maxrates of these
>servers is 5 kbits.

Keep in mind you can have gigabit connections on your LAN links
to the server, but upstream your ISP is probably the limiting factor.
Let's say your ISP has an OC12, at 622Mbps.  An OC192 is probably the
largest most ISP's get and is is 10Gbps.  An OC48 is about 2.5Gbps.
So if your server is at 100Mbps you're over-subscribed to all clients
until you get an OC12 or better.  Your server isn't the limit, it's
your connection to all your clients.  But that's only if you've a
data center type of connection.  If you're running your server over
a T1 to your office or DSL to your home, all bets are off.  Again,
the server isn't the limit, it's the upstream path.  Likely only
Valve knows how many servers run off OC192's vs. DS1's.

>I suppose it's a matter of circumstance as to which camp people fall in. I'd
>always assumed the majority of CS and CSS servers were rented to clans as
>private or public servers, not given away as community resources, I could
>equally be wrong though :) The same goes for my assumptions of server and
>client connections/bandwidth.

I was thinking of other mods like DoD, DM Classic, and
whatever comes down from the mod community.

>All of the above not withstanding I feel there is a much bigger issue
>responsible for not using an auto-rate system, server side overheads.

As I indicated, I feel it's such a great idea that the
development team could have only settled on their obviously
inferior method because of other constraints.  It wasn't that
long ago that a 2GHz server processor was the top of the line.
Perhaps it will take a 5GHz processor to make this idea usable,
and I suspect the dev team had these constraints in mind when
they designed the engine.

>Maybe an auto-rate option could be added to the
>current min/max system (say setting all netrate options to 0), allowing server
>admins to select auto or fixed min/max.

Maybe it could be incorporated into the engine, and the client
elects to use it via command-line flag?  -autorate as a client option
where the server updates your rates based upon what it sees as your
latency and loss might be a suitable compromise.

 Note to Alfred: I've not patented this idea, but if Valve likes
it I am prepared to recieve all patent royalties.  Valve may also
twist my arm and force me to accept an undisclosed amount of cash
for me to sign away all rights to the idea.  Valve may also send
me cash because I'm pretty and have remarkably few annoying
personal habits.  No matter Valve's wishes, I'm ready to
accept cash.  Please keep this in mind as you argue on my behalf.


- Dan

* Dan Sorenson  DoD #1066  A.H.M.C. #35 [EMAIL PROTECTED] *
* Vikings?  There ain't no vikings here.  Just us honest farmers.   *
* The town was burning, the villagers were dead.  They didn't need  *
* those sheep anyway.  That's our story and we're sticking to it.   *


___
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlds_linux


[hlds_linux] Re: Request a higher minimum value for cl_cmdrate.

2005-07-16 Thread Dan Sorenson
At 06:25 AM 7/15/2005 -0700, Vapor opined:

>Forcing an automatic system based on rates I just can't see being effective.
>What we are realistically saying here is take thousands of connection types,
>speeds and latencies and have the server automatically control their update
>rates. All that will be achieved would be no connection being tweakable and no
>advantage seen on faster connections, all sounds nice yes, but...

But that is the key to the solution, though I admit some
hubris in that since I don't have to actually spend any time or effort
making it work I've not seen the problems associated with it.
Think of me as a member of manglement with pointy hair as you read this.

Source is a hub-and-spoke network topology.  The center hub
is the server.  Thus the server has the knowledge of rates being
asked for by all clients, the latency each of them have, the
jitter (difference between max and min ping time over the course of
some minor time-frame), and its own load.

Would it not make sense, then, (if CPU cycles were infinite and
bus speed instant and memory a penny for a terabyte - yes, I know
there are constraints) for the server to be able to over-ride
client rate settings on a case-by-case basis by issuing new rates,
starting from a baseline of your overall data rate?

Let's say you've a CS server on a single T1.  That's 64Kbps
times 24 channels.  Let's say you did 24 players.  Fine, we've 64K
to work with for each client.  What I'm saying is that rather than
have client A demand rates that would eat up 128K and client B on
two tin cans and a wet string demand 2.4K, we let the server
dynamically tell A "you're good, keep on, here's a little more data
since you've the speed for it and I'm not missing any updates" while
it tells client B (who, being an idiot because we are all plagued by
idiots at some point and I need one in this scenario) set his client
at T1 speeds while drooling on the string to "drop back a bit, you're
missing updates."

Likewise, we're all aware of ping spikes.  You're running at
a steady 50ms and then your wife decides to download that latest
Crazy Frog video, or the Nachi worm made it onto some pointy-haired
marketing-type's laptop with a gigabit ethernet connection to your
switch and decides to port-scan all of New Zealand, or you've a
cablemodem and the kid next door starts downloading all the pr0n
in Holland.  If the server could dynamically adjust rates for the
clients, as the client connection changes the server would notice
and could quickly adapt.

>You will have millions of players blaming Valve for enforcing "their" rates,
>everything from bad reg to lag will be blamed on this and uproar would
>definately occur.

Agreed, but do you think they'd notice if suddenly they
didn't get ping spikes, and consistently had a smooth game no matter
if there were 12 people or 48 people on the server?  Generally the
server has the bandwidth to handle 48 dsl players, but occassionally
people put these things on their office T1 and start it up at night,
or try to run them over 1.5M/512K DSL connections to host a few
friends.  Making the engine optimize the clients for the current load
with some overall boundaries would satisfy a large segment of the
server ops and players who don't rent servers and bandwidth from
hosting firms.  Only Valve would know that market share.

>I pay a lot of money for my fast internet connections,

I'm sure you do.  Let's compare your (unknown) setup to
mine.  I've an OC-48 and an OC-192 into my office.  My backbone
routers spec out at 460Gbps until I start throwing in policy-based
routing, ACL's, and the like, and they weren't exactly cheap either.
I know whereof you speak, but I'm assuming that 90% of the servers
out there aren't hosted at places like mine but in homes and small
businesses with less spendy methods of getting bandwidth.

The question to be asked here is should I be unstoppable if I
take my game rig to work vs standing still if I play from home, or
should we make an attempt to let the server self-adjust for its needs
and force that on the clients attached?  Yes, I'd be less dominant
on the good connection, but less handicapped on the poorer connection.
If the customer, our players, value an even playing field over that
20ms unstoppable ping to their closest server then my idea has merit.

I'm not saying it's do-able, just that is has merit and should
therefore be debated.

>Control of client side rates must be maintained by the client, no other way
>would be widely accepted by the community.

And yet here's an admin asking Valve to change that because
of possible abuse, which is how this thread started.

>The truth of it is although we want to level the playing field and provide
>fairness between all connection speeds, doing so would annoy the masses, who
>are on broadband connections. You only have to look at how many ping
>restricted servers are around to see

Re: [hlds_linux] Re: Request a higher minimum value for cl_cmdrate.

2005-07-14 Thread John Sheu
> Dan look over this
>
> http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
>
> Then give a rethink of some of what you said
He's mostly correct.  Do know though that certain "important" entities (such
as player entities) _are_ PVS-culled.
--
                                I
            think                                poem
   that              never               as                a
I       shall    see        a     lovely      as     binary   tree
___
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlds_linux


Re: [hlds_linux] Re: Request a higher minimum value for cl_cmdrate.

2005-07-14 Thread Kennycom
Dan look over this

http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking

Then give a rethink of some of what you said

- Original Message -
From: "Dan Sorenson" <[EMAIL PROTECTED]>
To: 
Sent: Thursday, July 14, 2005 1:06 AM
Subject: [hlds_linux] Re: Request a higher minimum value for cl_cmdrate.


> At 12:36 AM 7/13/2005 -0700, Eric said to all and sundry:
>>>>Thousands of times, theoretically, when you consider
>>>>holding the mouse button down is sending the signal that
>>>>you're doing so...
>>>
>>> and that still only makes your weapon discharge a single
>>> round
>>
>>...if you're firing a semi-auto weapon, I guess.
>
> I doubt any of that is actually transmitted to the
> server.  Alfred probably can't disclose much, but typically
> the mouse-click is handled client-side and the action performed
> is sent to the server, which responds with a result.  Thus,
> typical netcode will have the client report to the server
> "I'm at position X.Y.Z and pointed to position A.B.C, action
> is automatic fire from Super Soaker."  The server takes that
> information, determines if this action has a result on another
> client, then informs all clients of your new location and
> specific clients of the effects of your action.  We're all
> familiar with seeming to die at the same time a player
> rounds a corner and fires, though human reaction times are
> nowhere near that fast.  In fact, the scene was probably played
> out in the server a half-second prior, and your client is just now
> getting both the "Client 1 moved to position X.Y.Z and is facing towards
> A.B.C" message to generate his form and the "client 1 hit you
> with eighteen gazillion damage" message that tells you to die
> at about the same time.
>
> It would be possible for the netcode to only send updates
> about client position to relevant clients, so when Client 1 moves
> to a position only those with line-of-sight to that location are
> updated.  However, this would necessarially increase the processing
> required on the server and may actually introduce more latency.
> It would also eliminate wallhacks and ESP, since there's nothing
> coming in for them to work with, but that could require an entire
> engine overhaul and coupled with server demands there's probably
> a reason it was written the way it is.
>
> So, in theory a server is going to be sending a bit
> more data than it takes in, since it's taking in only position
> and action while sending out that same info to all clients as
> well as results of actions.  Naturally, this is going to take
> a bit of buffering in the engine to handle the wide range of
> update rates that players are connected at.  If I have a ping of
> 200 (not uncommon given my method of connecting to the internet)
> and you have a ping of 100, that's 300ms worth of player movement
> and action that needs to be buffered.  Let's say a half-second is
> what's in buffer that the server acts upon.  Let's also assume that
> a cl_cmdrate of 10 means 10 updates per second to the server.
>
> So with a cl_cmdrate of 20, if I fire one round at
> time 0.0s the server only knows that action happened between
> t0.0 and t0.05, when it gets the next update.  If I set my
> cl_cmdrate to 10, the server only knows it happened between
> t0.0 and t0.10.  Suddenly I'm firing for twice as long a period.
> Now the server has to figure I fired during that 10th of a second,
> checks the location of you my target, and if you were within the hit
> cone during that 10th of a second has to record a hit.  So, by setting
> my cl_cmdrate to the lowest setting single-shot weapons would
> suddenly be more effective because the time they're on-target
> is a 10th of a second rather than a 20th or a 30th.
>
> Note: all this is speculation on my part.
>
> So, rather than increase the cl_cmdrate minimum, what
> I'd suggest is to base both cl_cmdrate and cl_updaterate off of
> the old rate variable, and just make them a ratio of what the
> server needs vs what it has to send.  So if the server has a
> maxrate of 1, and a minrate of 5000, when client 1 connects
> with rate 5000 he gets cl_cmdrate 20 and cl_updaterate 30.
> When he connects with rate 1 he gets cl_cmdrate 40 and
> cl_updaterate 60, just to use an example.
>
> If we base the up and down rates as portions of the
> overall rate, it should be easier for the engine to handle.
> The caveat is DSL is asymetrical, so people with a 3M download
> speed and a 48K upload speed might have a problem, but overall
&g

[hlds_linux] Re: Request a higher minimum value for cl_cmdrate.

2005-07-13 Thread Dan Sorenson
At 12:36 AM 7/13/2005 -0700, Eric said to all and sundry:
>>>Thousands of times, theoretically, when you consider
>>>holding the mouse button down is sending the signal that
>>>you're doing so...
>>
>> and that still only makes your weapon discharge a single
>> round
>
>...if you're firing a semi-auto weapon, I guess.

I doubt any of that is actually transmitted to the
server.  Alfred probably can't disclose much, but typically
the mouse-click is handled client-side and the action performed
is sent to the server, which responds with a result.  Thus,
typical netcode will have the client report to the server
"I'm at position X.Y.Z and pointed to position A.B.C, action
is automatic fire from Super Soaker."  The server takes that
information, determines if this action has a result on another
client, then informs all clients of your new location and
specific clients of the effects of your action.  We're all
familiar with seeming to die at the same time a player
rounds a corner and fires, though human reaction times are
nowhere near that fast.  In fact, the scene was probably played
out in the server a half-second prior, and your client is just now
getting both the "Client 1 moved to position X.Y.Z and is facing towards
A.B.C" message to generate his form and the "client 1 hit you
with eighteen gazillion damage" message that tells you to die
at about the same time.

It would be possible for the netcode to only send updates
about client position to relevant clients, so when Client 1 moves
to a position only those with line-of-sight to that location are
updated.  However, this would necessarially increase the processing
required on the server and may actually introduce more latency.
It would also eliminate wallhacks and ESP, since there's nothing
coming in for them to work with, but that could require an entire
engine overhaul and coupled with server demands there's probably
a reason it was written the way it is.

So, in theory a server is going to be sending a bit
more data than it takes in, since it's taking in only position
and action while sending out that same info to all clients as
well as results of actions.  Naturally, this is going to take
a bit of buffering in the engine to handle the wide range of
update rates that players are connected at.  If I have a ping of
200 (not uncommon given my method of connecting to the internet)
and you have a ping of 100, that's 300ms worth of player movement
and action that needs to be buffered.  Let's say a half-second is
what's in buffer that the server acts upon.  Let's also assume that
a cl_cmdrate of 10 means 10 updates per second to the server.

So with a cl_cmdrate of 20, if I fire one round at
time 0.0s the server only knows that action happened between
t0.0 and t0.05, when it gets the next update.  If I set my
cl_cmdrate to 10, the server only knows it happened between
t0.0 and t0.10.  Suddenly I'm firing for twice as long a period.
Now the server has to figure I fired during that 10th of a second,
checks the location of you my target, and if you were within the hit
cone during that 10th of a second has to record a hit.  So, by setting
my cl_cmdrate to the lowest setting single-shot weapons would
suddenly be more effective because the time they're on-target
is a 10th of a second rather than a 20th or a 30th.

Note: all this is speculation on my part.

So, rather than increase the cl_cmdrate minimum, what
I'd suggest is to base both cl_cmdrate and cl_updaterate off of
the old rate variable, and just make them a ratio of what the
server needs vs what it has to send.  So if the server has a
maxrate of 1, and a minrate of 5000, when client 1 connects
with rate 5000 he gets cl_cmdrate 20 and cl_updaterate 30.
When he connects with rate 1 he gets cl_cmdrate 40 and
cl_updaterate 60, just to use an example.

If we base the up and down rates as portions of the
overall rate, it should be easier for the engine to handle.
The caveat is DSL is asymetrical, so people with a 3M download
speed and a 48K upload speed might have a problem, but overall
I think it would even out a lot of the differences between
the broadband and the dial-up users.

-- Dan

* Dan Sorenson  DoD #1066  A.H.M.C. #35 [EMAIL PROTECTED] *
* Vikings?  There ain't no vikings here.  Just us honest farmers.   *
* The town was burning, the villagers were dead.  They didn't need  *
* those sheep anyway.  That's our story and we're sticking to it.   *


___
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlds_linux