A Stats Algroithm

crazynetcrazynet 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

Comments

  • ZaggyZaggy NullPointerException The Netherlands Join Date: 2003-12-10 Member: 24214Forum Moderators, NS2 Playtester, Reinforced - Onos, Subnautica Playtester
    Hmm, nice idea, though you shouldn't play NS for the points...imho
  • coriscoris Join Date: 2003-07-08 Member: 18034Members, Constellation
    Woho, great idea.
    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-->
  • GhostBomberGhostBomber Join Date: 2002-11-04 Member: 6910Members
    In my opinion, ranks should be done by kills, but if you can, I would definetely recommend listing the points (and possibly even changing the rank by points).
  • MavericMaveric Join Date: 2002-08-07 Member: 1101Members
    ranking should be done in <b>number of uses</b>. Not everything can kill something else, you know.

    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-->
  • Jabba_The_HuntJabba_The_Hunt Join Date: 2003-01-05 Member: 11850Members
    How about allowing users to sort people by whatever they want to be sorted by, kills, deaths, ratio, builds etc...
  • ZiGGYZiGGY Join Date: 2003-01-19 Member: 12479Members
    in my opinion you can only truly compare people in different game ROLES
  • crazynetcrazynet Join Date: 2004-05-13 Member: 28647Members, Constellation
    This will not be using any outside software... this will be completley contaned... It a java applet as the web interphase and I wrote an internal database in it.
  • KaMiKaZe1KaMiKaZe1 Join Date: 2002-11-18 Member: 9196Members
    edited June 2004
    Stats take away from teamplay, taking away from teamplay ruins games.
  • ThansalThansal The New Scum Join Date: 2002-08-22 Member: 1215Members, Constellation
    yegods you people are silly.

    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-->
  • RueRue Join Date: 2002-10-21 Member: 1564Members
    Yeh I think you should make the user able to choose how the stats are ranked
    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 :/
  • LichoLicho Join Date: 2002-11-02 Member: 3858Members, NS1 Playtester
    If you need a way to reliably send logs from server to you after each round, I made a plugin that does it. (There is no way to do it without server plugin or some other server based program, because logaddress facility uses UDP and is not reliable (some log lines get lost)).

    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..
  • coriscoris Join Date: 2003-07-08 Member: 18034Members, Constellation
    Oh I forgot to mention that Im also against a global stats-application that can show you kills and so on, though I think that a global database that is meant to use for solving BALANCE ISSUES would be great (which is what i think that the BUS is).
  • Dorian_GrayDorian_Gray Join Date: 2004-02-15 Member: 26581Members, Constellation
    What'd be a neat feature would be similar to the Awards metamod plugin. Have the biggest res***** (aliens), the biggest waste of res (marine who loses the most eq), and all that. It'd at least be useful for comms so they know who not to give HMG/HA to <!--emo&:p--><img src='http://www.unknownworlds.com/forums/html//emoticons/tounge.gif' border='0' style='vertical-align:middle' alt='tounge.gif' /><!--endemo-->
  • SandstormSandstorm Join Date: 2003-09-25 Member: 21205Members
    Here's a list of stats you could base your rankings on. This is a way to determine how much and in what way that player has helped his team. Each event generates a change in these stats for every player, though it obviously affects some players more than others. Often, more than one person is responsible for an event, so it's best players get an appropriate portion of the credit for causing an event.

    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.
  • crazynetcrazynet Join Date: 2004-05-13 Member: 28647Members, Constellation
    I am tracking the kills and all but with the mentioning the ideas of ranking by the kills would be a digression to the team play part. So I think that ill use the kills to track RFK and lean more to resource management... which in all is what the game is about... how well u can use ur recourses to help the team.

    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.
  • EvenFlowEvenFlow Join Date: 2002-12-18 Member: 11046Members
    <!--QuoteBegin-Zaggy+Jun 19 2004, 07:57 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (Zaggy @ Jun 19 2004, 07:57 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> Hmm, nice idea, though you shouldn't play NS for the points...imho <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd-->
    If points are being given for working as a team, then yes, you should play NS for the points.
  • AbsolutCamperAbsolutCamper Join Date: 2004-05-10 Member: 28591Members
    <!--QuoteBegin-Sandstorm+Jun 20 2004, 09:47 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (Sandstorm @ Jun 20 2004, 09:47 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> Here's a list of stats you could base your rankings on. This is a way to determine how much and in what way that player has helped his team. Each event generates a change in these stats for every player, though it obviously affects some players more than others. Often, more than one person is responsible for an event, so it's best players get an appropriate portion of the credit for causing an event.

    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.
  • IceBaronIceBaron Join Date: 2003-02-25 Member: 13954Members
    The only problem with stats is that there is no way to record how you really helped the team. For example, you are alone building a phase gate at the hive, you have 4 people with shotguns waiting at the base for you to finish, a fade comes blinking toward you, you have one click left on the phase before its done but you will die finishing it or you can stop building and try to kill the fade. You may of just won the game by finishing it for your team but stats can't tell that.
    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?
  • CMEastCMEast Join Date: 2002-05-19 Member: 632Members
    If you are going to do a stats system maybe you should have stats which show
    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.
  • crazynetcrazynet Join Date: 2004-05-13 Member: 28647Members, Constellation
    edited June 2004
    The gorge last ditch effort will be shown... and if they do it on a regular bases because the stats will track how many of each building they build... so if they have lots of DC's but very little OC's, MC's or SC's then you could stand to figure that they do the DC ending. Also if theres an unusulay large number of OC's complared to the other chanbers then it would stand to reason they just randomly put them up. So in many ways alot can be seen about player habbits.

    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. :-)
  • crazynetcrazynet Join Date: 2004-05-13 Member: 28647Members, Constellation
    edited July 2004
    At this point and time I have come up with a point system based on events and what race/unit you are.

    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
  • billcatbillcat Join Date: 2002-11-02 Member: 4903Members, Constellation
    dear god, not teh java..

    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?
  • PalinPalin Join Date: 2003-03-24 Member: 14848Members
    I'd have to ask this question: What value does creating this stat system offer that cannot already be obtained without it?

    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.
  • SatertekSatertek Join Date: 2002-12-22 Member: 11372Members, Constellation, Reinforced - Supporter
    <!--QuoteBegin-billcat+Jul 8 2004, 09:05 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (billcat @ Jul 8 2004, 09:05 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> dear god, not teh java..

    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
  • PalinPalin Join Date: 2003-03-24 Member: 14848Members
    <!--QuoteBegin-billcat+Jul 8 2004, 08:05 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> (billcat @ Jul 8 2004, 08:05 PM)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> 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. <!--QuoteEnd--> </td></tr></table><div class='postcolor'> <!--QuoteEEnd-->
    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! ^^
  • eVoxeVox Join Date: 2003-08-16 Member: 19840Members, Constellation
    have some sort of feature to describe a game/time. much like the post-game graphs in Age Of Empires.

    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
  • AlienCowAlienCow Join Date: 2003-09-20 Member: 21040Members
    edited July 2004
    <!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td><b>QUOTE</b> </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->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.
    <!--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-->
  • crazynetcrazynet Join Date: 2004-05-13 Member: 28647Members, Constellation
    Ok I am sorry that there so many complaints about the language that I chose to write this in. But I am paying close attention to the memory usage and the processor usage of the program. At the moment it is running well within an acceptable bounds range compared to HLDS.

    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
Sign In or Register to comment.