Digital Paint Discussion Board

Development => General Development => Topic started by: Cobo on January 29, 2008, 08:23:22 PM

Title: Possible stat server model
Post by: Cobo on January 29, 2008, 08:23:22 PM
So I've been thinking that maybe stat recording for servers could be done through the method of connectionless packets, like the yyystatus command, except it would be specialized for status recording. This way the status recording could be made a lot more flexible, from getting global stats from all the servers that are listed in the server list to recording stats for private servers and such.

Basicly, here's how the stats server would work:

I will refer to the stats server as SS and the game server as CS (client server).

First thing that would happen is that the SS will send a command to the CS that lets him know that we are going to record stats from him, the command could be something like "statsconnect" or whatever. This command will cause the CS to create a 'Message' stack and an unique ID that the CS will send back to the SS. Each 'Message' would contain the information for every event that occurs in the server. Every time an event happens (player A kills player B, player A connects, map changed) a message would be created and it would be pushed into the stack.

The SS will wait for the unique ID and from then it will send this ID along with every command so the CS knows what stack to use.

Now every minute or so, the SS would send another command to the CS, what this command will do is pop all the elements of the stack from the CS and send them to the SS, which would be parsed.

The SS would probably wait for a map change so it can start recording data, this way you can take advantage of the current pop command for getting stuff like client connects or the current map being played, therefore not having to implement other commands that fetch the players or current map.

All that the SS has to do now is pop all the messages from the stack every now and then and its set, the CS would probably need a min and max time limit so it doesnt get abused and the stack can be freed when the SS times out.

So any thoughts? Feedback? Possible changes to the model or maybe even a completely different model? Please post it. I realize that my model isnt perfect, that why I didnt make a feature vote thread, so please post your thoughts.
Title: Re: Possible stat server model
Post by: sk89q on January 29, 2008, 08:34:10 PM
You could have explained it much much simpler in one paragraph.

But anyway, I think the game server should aggregate the data and then send it in a chunk at the end of a map. It would cut down on bandwidth and offload CPU usage from the stats tracking server.
Title: Re: Possible stat server model
Post by: Cobo on January 29, 2008, 08:39:03 PM
I really suck at explaining things :P
Also, yeah I thought of that after I made the thread and it does sound a lot better.
Title: Re: Possible stat server model
Post by: Zorchenhimer on January 29, 2008, 11:19:13 PM
Keep the private servers out of the stats.  That way you don't have some guy running around on his own server stat-whoring.
Title: Re: Possible stat server model
Post by: Eiii on January 30, 2008, 12:13:55 AM
I say not only exclude private servers, but all public servers that don't meet certain standards. More than 16 or so players max, non-strict accordance to mapinfos, servers running certain maps would all be excluded from the stats system. That'd both prevent stat whoring, and keep the game a bit more in check.

PS: Also, in my perfect system, matches would count 10x more than anything else.
Title: Re: Possible stat server model
Post by: QueeNiE on January 30, 2008, 11:31:26 AM
Or just count matches in general.  Who cares about pub stats?  Or keep them separate.
Title: Re: Possible stat server model
Post by: Cobo on January 30, 2008, 04:50:35 PM
Keep the private servers out of the stats.  That way you don't have some guy running around on his own server stat-whoring.
What I mean by keeping stats for a private server is that someone could just create his own stat-recording app and display them on some website. The global one could just do a yyystatus check to see if the server is private or whatever and keep him out of the stats.

Or just count matches in general.  Who cares about pub stats?  Or keep them separate.
Thats something this could do, since one of its characteristics is that its flexible.
Someone could just write a dpcup stat keeper and schedule matches at a certain time at a certain server.
Title: Re: Possible stat server model
Post by: sk89q on January 30, 2008, 05:06:54 PM
If you want to keep stats for one specific server for an event, you could just parse STDLogs.
Title: Re: Possible stat server model
Post by: Garrett on January 30, 2008, 11:44:57 PM
I like the idea of the server needing a set standard for the stats to be able to record.  Sometimes I go to a server and there is a group of 4 friends who are just starting out.  I like the set amount of people in the server needed to record the stats because if you have more then say 10 people, chances are, one of those people are half-decent.
Title: Re: Possible stat server model
Post by: sk89q on January 31, 2008, 12:23:07 AM
I think that if jit wanted global stats logging, he'd just make it aggregate the data and submit it to his server periodically. Which servers get logged is a different matter. :P