A Stats Algroithm
crazynet
Join Date: 2004-05-13 Member: 28647Members, Constellation
Hey guys, I am working on a new stats program just for NS. Its a few months out from completion though.
I am tracking pretty much all of the 91 elements of the game. OC builds, kills, have builds, gun drops, scanner sweeps, researches.... etc.
Only problem is I don’t have a good idea of how to do the rankings. If anyone has any ideas it would be great.
This program will be a lot different than psycostats mainly due to the fact that its being written in java. Its also going to be a live log parser.
Additionally I have been thinking of extending this a bit more and if things fall into place I should be able to easily setup a global ns ranking system of all that are using this program on there server... Well have to see with that one... but anyways any suggestions on how to do that rankings would be a great help
I am tracking pretty much all of the 91 elements of the game. OC builds, kills, have builds, gun drops, scanner sweeps, researches.... etc.
Only problem is I don’t have a good idea of how to do the rankings. If anyone has any ideas it would be great.
This program will be a lot different than psycostats mainly due to the fact that its being written in java. Its also going to be a live log parser.
Additionally I have been thinking of extending this a bit more and if things fall into place I should be able to easily setup a global ns ranking system of all that are using this program on there server... Well have to see with that one... but anyways any suggestions on how to do that rankings would be a great help
Comments
Are you using php+mysql?
Well, I actually think that this is what the BUS will be, but maybe you beat them to it <!--emo&;)--><img src='http://www.unknownworlds.com/forums/html//emoticons/wink.gif' border='0' style='vertical-align:middle' alt='wink.gif' /><!--endemo-->
if you get something like 60, 40, and 10 uses for gorges building DCs, MCs, and SCs then something obviously has to be done to increase sensory's apeal.
Just as a example. Not like that happens much in NS, nowadays.
//sarcasm
<!--emo&:p--><img src='http://www.unknownworlds.com/forums/html//emoticons/tounge.gif' border='0' style='vertical-align:middle' alt='tounge.gif' /><!--endemo-->
Stats are niether good nor evil, they are a tool.
Personaly I think the sorting should be done as you want, so that we can see that JoeX has a tendancy to drop hives, and JoeY never spend Rez on anytihng aside from going onos.
I would also be nifty to be able to see total stats (total # of meds droped, total Rez income, total # of JPs/HMGs/GLs etc)
number of frags/building kills you get with each weapon.
also if you can hook it in with a clock...
fisrt hive at xxx
first fade at xxx
upgrades were gotten at xxx, yyy, and zzz
would be nifty <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html//emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo-->
you should also have some sort of search function
Are you using an applet? Maybe if your web space allows you could try jsp? so peeps dont need to load the JVM :/
But I don't think global stats are good idea, it could degrade teamplay, I'm even against scores/kills and deaths tables that are currently in game..
Resources Gathered - This is the amount of resources a player is responsible for gathering. This includes building resource towers and RFK. The higher this value is, the better.
Resources Spent - This is the amount of resources a player has spent. A large difference from the Resources Gathered stat could suggest the player either couldn't spend resources (he's wasn't the Commander, for example) or the player didn't bother to spend the resources, either because he didn't know how, or had no need to spend them. As a result, the best value for this stat is situational.
Resources Lost - This is the amount of resources a player has lost for the team. In the case of marines, this could be losing HA/JP and your weapons. In the case of aliens, getting killed as a higher lifeform would count as lost resources. This value should be as low as possible.
Resources Destroyed - This is the amount of resources a player has destroyed on the enemy's side. Taking down RTs, eating HA, etc. all count towards this value. If something is lost in a Friendly Fire incident, the resources are counted as Resources Lost instead. The higher this value is, the better.
The first release will most likely be using the java applet as the interface, but hopefully by the second release I will have been able to come up with something much more efferent. JSP would be something hard for all users to be setting up each time... I’m going to look more in to PHP and JScrip. Any other ideas are welcome.
I will have live current map state tracking on so that users can see how many of what buildings are up from the site.
I’m really likening the resource ideas and the sort function by category. I will work on implementation of both of them. The hive build times ill also look at too.
If points are being given for working as a team, then yes, you should play NS for the points.
Resources Gathered - This is the amount of resources a player is responsible for gathering. This includes building resource towers and RFK. The higher this value is, the better.
Resources Spent - This is the amount of resources a player has spent. A large difference from the Resources Gathered stat could suggest the player either couldn't spend resources (he's wasn't the Commander, for example) or the player didn't bother to spend the resources, either because he didn't know how, or had no need to spend them. As a result, the best value for this stat is situational.
Resources Lost - This is the amount of resources a player has lost for the team. In the case of marines, this could be losing HA/JP and your weapons. In the case of aliens, getting killed as a higher lifeform would count as lost resources. This value should be as low as possible.
Resources Destroyed - This is the amount of resources a player has destroyed on the enemy's side. Taking down RTs, eating HA, etc. all count towards this value. If something is lost in a Friendly Fire incident, the resources are counted as Resources Lost instead. The higher this value is, the better. <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd-->
Man, that sounds like a fantastic idea. I think that would be pretty effective in increasing teamwork and gameplay instead of counting frags.
Also, so you count structures built. There is a difference between good gorges and bad gorges. So here is this gorge that has saved 80 res and runs into marine spawn and spams 8 oc's, dieing in the process. All 8 oc's get destroyed before completion. Or how about the lovely last ditch gorge we all love so much. You know the guy, they are seiging the last hive so he runs in a vent and sets up 5 defense chambers so we can all watch him sit there waiting to die. Yea, that guy should get a great rank. How will any ranking system rate what people do in a game as complicated as ns?
1) how many times they've been kicked/banned etc (possible?)
2) how many times their side has won (if they always win they are more likely to be a good player even if they have a low amount of kills)
3) F4 usage <!--emo&:)--><img src='http://www.unknownworlds.com/forums/html//emoticons/smile.gif' border='0' style='vertical-align:middle' alt='smile.gif' /><!--endemo-->
In general just have as many stats as possible that promote teamplay and discourage idiocy. People will be less likely to act like llama's if they're behaviour is recorded forever. Plus it will stop people just going for kills in an attempt at hitting the 'high score'. Clans will be less likely to recruit someone who has a great kill ratio but who's team never wins and gets banned a lot.
Now thats its mentioned ill come up with a way to track F4 usage... I think that player team is turned to none when you are in the ready room so i can count the times that comes up.
Edit: Because of the extreme diffrencess between Classic and Combat with how each affect statistics I will be tracking each map stistics in too diffrent sets.
Also if u want to see a very rough looking way that the applet is going... it is up on the net @ <a href='http://www.NSStats.com/stats' target='_blank'>www.NSStats.com/stats</a>. I will try and update it dayly with the changes that im makeing to the collection software and the applet. :-)
The events and ranks are @ <a href='http://www.nsstats.com/eventRanking.htm' target='_blank'>Stats Rank Page</a>.
The applets link is above. It will be undergoing a complete change due to its long load time at the moment.
Any suggestions welcome <!--emo&:D--><img src='http://www.unknownworlds.com/forums/html//emoticons/biggrin.gif' border='0' style='vertical-align:middle' alt='biggrin.gif' /><!--endemo-->
\\edited for spelling
omg, why is java the language they use in CS101 classes these days? Oh for the days of interpeted langs that didn't cause your browser to take a **** and make blocking OS calls hanging your system for 7.5 min while the 'virtual engine' loads.
Someday I hope the edu cottonheads wake up and stop using this bloated pos as an example of a crossplatform wonder that everyone should embrace. ADA and FORTRAN were crossplatform and you don't see people craming them into the browser space either. oh well. I dislike java is all.
I'd really like to use an app like this, couldn't you use perl or c++ or something that worked on the back end of the server rather than in browser space and OS ram?
I ask this of just about any kind of project I think I might want to do. Most of my projects like this I inevitably decide against because I find no use or find the cons outweighing the pros.
Once you have answered the question sufficiently you will then have a purpose for your program. Once you have a purpose you have basically defined a 'big picture' of things you want to evaluate when gathering your stats. Once you have the big picture you can divide it up into its individual parts and end up finally with different categories of rating individuals.
Personally my answer to the above question was "nothing", and as such I'd have to make the suggestion to not bother with completing this. Fortunately for you, none of us really have the same idea of what this system will represent as you do and as such you may be able to answer that question sufficiently.
Some things that might qualify this program as worthy of developing is to answer the question, "What more can I provide that would improve upon the quality of existing solutions?" If you can answer that then you have your list of stats you need (ie. those in existing solutions plus the extras that you provide).
Regardless of all those things I have stated above, I find that VERY few stats could be recorded (especially on the level of the individual player) that would actually give any kind of meaning due to the game being a largely team-based game. It'd be nice if you could record certain teams and their performance, but that would really only be viable on the clan competition scene and not for the general masses. I guess what I'm trying to say is that collecting stats seems a moot point considering the nigh unrecordable "teamwork" element that is ever persistent. Collecting stats should IMO be left to deathmatch type scenarios where the variables are so limited that you can actually derive meaning from one stat or another. As complex as NS is, you'd be hard pressed to find two handfuls of people that could agree on what a certain stat conveyed and how important that stat is in the whole scheme of things. Thus the whole idea of a stats system (at least for individual players) seems kinda silly to me for NS.
Nevertheless if you're determined to find some way of ranking people here is how I would go about it:
When a game (of a minimum to maximum size from start to completion) is finished, tabulate a win vs. each opponent (or loss vs. each opponent if your side lost the game) for each player. From a global perspective you can simply view how good a player is (over a long period of time) based upon the total Win:Loss ratio. On the detailed level you can see how a player is ranked individually against an array of opponents that that player has played against (W:L vs. opponent). All other stats that are collected would only be viewable at the personal level (K:D, K:M, Avg. resource gain per round, etc...) and not used as a means of ranking one player vs. another simply because people with god-like scores and ratios can still lose the game and the only thing that really matters is if your team won or not.... not how well you performed despite that fact. Those stats might give an indication of how well you might aid a team to success, but you still have to achieve success to get credit for it.
omg, why is java the language they use in CS101 classes these days? Oh for the days of interpeted langs that didn't cause your browser to take a **** and make blocking OS calls hanging your system for 7.5 min while the 'virtual engine' loads.
Someday I hope the edu cottonheads wake up and stop using this bloated pos as an example of a crossplatform wonder that everyone should embrace. ADA and FORTRAN were crossplatform and you don't see people craming them into the browser space either. oh well. I dislike java is all.
I'd really like to use an app like this, couldn't you use perl or c++ or something that worked on the back end of the server rather than in browser space and OS ram? <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd-->
Ugh, your right about that.
I have no interest in java, but I have to learn it before the semester starts for my Comp Sci class.
(5 weeks <!--emo&:(--><img src='http://www.unknownworlds.com/forums/html//emoticons/sad.gif' border='0' style='vertical-align:middle' alt='sad.gif' /><!--endemo--> )
I'd much rather be workin in C
I feel your pain, but I also know the general answer. I have seen far too many servers crashed and networks brought to their collective knees because some noob C programmer forgot to check some bounds on an unchecked allocation and ended up spamming memory leaks all over the place leading to several university wide reboots (I say several because there are usually multiple noob C programmers per class). The headaches that java and other "safe"r languages have don't compare to the relief that a stark majority of sys admins and net admins have felt since the switch at many universities.
The bad part about it is that many of these curriculums never get themselves out of the java rut and don't teach some of the more powerful aspects of the more powerful languages (C, Lisp, Ada, Cobol) or the more productive aspects of the more productive languages (Take your pick from the .Net languages, perl flavours, and other various scripting languages). You would at least hope that the majority of these curriculums would still focus on teaching the basic concepts more than anything else because languages and technologies can be outdated in a matter of weeks. Unfortunately I run into far too many people that say, "Aww.... I can't use Java? Well how the hell am I supposed to do this then? What? I don't have psedo-code to translate? How the hell am I supposed to do this then?"
It's pitiful really.
How's THAT for derailing a topic! ^^
Like went lerk at 3 min, kills went up to 8 by 3:40, etc. have it show upgrades and stuff. It'd be cool to see what kind of effect things have. like upgade to weapons 2 and kills skyrocket for 2 minutes
<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
I'd refine that a bit...surely if you die as an Onos/HA, you may already have killed more than your value in res? If so, its a bit unfair to say you've lost like 100 res or whatever...
...a player may have lost far more res than his team mate, but maybe he has earned more res so is able to lose more. A marine may have died 5 times as an HA, but may have killed 60 lifeforms in the process. He would have a low "rank". A player who has not been given anything more than a shotgun would have a higher "rank"?
Theres so many situations and possibilities, its rather more complex then you suggest, isn't it? <!--emo&;)--><img src='http://www.unknownworlds.com/forums/html//emoticons/wink.gif' border='0' style='vertical-align:middle' alt='wink.gif' /><!--endemo-->
*EDIT* pretty much everything I just wrote is b/s, don't worry <!--emo&:D--><img src='http://www.unknownworlds.com/forums/html//emoticons/biggrin.gif' border='0' style='vertical-align:middle' alt='biggrin.gif' /><!--endemo--> I clicked the link, and see how it works now...you're getting tons of other points to counter your deaths etc. Would be interesting to see how it pans out actually, good work <!--emo&:p--><img src='http://www.unknownworlds.com/forums/html//emoticons/tounge.gif' border='0' style='vertical-align:middle' alt='tounge.gif' /><!--endemo-->
If I can find a good servlet implementation that’s free and can be universally used on web servers I will ditch the applet for servlet, which is closely related to perl/cgi/php scripting.
The points system that I am developing is trying to award points to a player for doing things that helps the team and takes points away from them for doing something stupid or that seems to be a waste for the team.
I understand that NS is a team based game, I play it also, I will include a counter that tells what team a player is on and if there team won or not and there will be a point value added to the player for that.
I am using all suggestions in and working at implementing them into the rank best as possible.
Please comment on the current point system. Thanks