TimUSA Posted March 28, 2008 Share Posted March 28, 2008 I run a gaming site for a yacht racing simulator. http://vsk-ayc.totalh.com We use a unique scoring system we call a Bonus High Point System to generate the base points for our individual races and series results. it looks something like this: Base Points = [bS] 1st = 50pts 2nd = 47pts 3rd = 44.3pts 4th = 42pts 5th = 40pts 6th = 38pts 7th = (50 - finish position - 6) or 37 *each position after is calculated the same way. These base points are then used to calculate ladder points which I accomplish by using a factor for each race type. Ad Hoc Race Ladder Points = [bS]*1 Match Race Ladder Points = [bS]*2 Club Fleet Race Ladder Points = [bS]*6 Championship Race Ladder Points = [bS]*8 The problem with this system is that it does not reward the best sailor, it rewards the most active player. I need to be able to reward a combination of both! I have tried just averaging the points, but this allows someone who say has only raced 3 races to be ranked higher then someone who has raced 200. So my question is this. Given the know factors that i have [bS], the race type multiplier, ladder points, and number of races, what are your thoughts on how I could best achieve my goal of rewarding the best sailor. btw here is the code i use to generate the ladder results: global $settings; $query = "SELECT pts_table.skipperName, sum(pts_table.fleetPoints) as SumfleetPoints, smf_members.ID_MEMBER, thm.value AS country FROM pts_table LEFT JOIN smf_members ON pts_table.skipperName = smf_members.realName LEFT JOIN smf_themes AS thm ON (thm.ID_MEMBER = smf_members.ID_MEMBER AND thm.ID_THEME = 1 AND thm.variable = 'country') WHERE pts_table.fleetPoints> 0 GROUP BY pts_table.skipperName ORDER BY SumfleetPoints DESC;"; $result = mysql_query($query); if(mysql_num_rows($result)) { echo' <table class = "bordercolor" cellSpacing="1" cellPadding="1" width="100%" border="0"> <tr class ="catbg"> <td width = "100%">Fleet Race Ladder:</td> <tr> </table><br> <table class = "bordercolor" cellSpacing="1" cellPadding="1" width="100%" border="0"> <tr class ="catbg4"> <td width = "5%"></td> <td width = "70%">Skipper Name:</td> <td width = "25%">Ladder Points:</td> </tr> </table>'; $x = 1; while($row = mysql_fetch_row($result)) { echo' <table class = "bordercolor" cellSpacing="1" cellPadding="1" width="100%" border="0"> <tr> <td width = "5%" class = "catbg2"><img src="' . $settings['default_images_url'] . '/flags/' . $row[3] . '.png" /></td> <td width = "70%" class = "titlebg">' . $x++ . ': ' . $row[0] . '</td><br> <td width = "25%" class = "catbg2">' . $row[1] . '</td><br> </tr> </table>'; } } Quote Link to comment Share on other sites More sharing options...
discomatt Posted March 28, 2008 Share Posted March 28, 2008 Calculate the difference between ranks in percentage... The difference in points between 1st and 2nd is 6%. 2nd and 3rd is ~6%. In most point-type situations, the difference is much greater, sometimes exponential between placements. The difference in points between 1st and 7th is 26%. This is not very rewarding for the first place finisher. Perhaps a better point algorithm could be based on time completed to time expected for given course. This would reward a racer more on individual performance than placement. I could come up with an algorithm for you to try out, but i really don't know enough about the game to help beyond this. Quote Link to comment Share on other sites More sharing options...
mb81 Posted March 28, 2008 Share Posted March 28, 2008 TimUSA, You might try some sort of percentage combo made up of your total score and your average score, where your average score makes up 80% and your total score makes up 20% of the overall score. Otherwise, you might try something using a standard deviation of the number of races participated in or something along those lines. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.