Files
vilya/apidocs/com/threerings/parlor/rating/server/Rating.html
T
2015-03-14 10:44:30 -07:00

452 lines
19 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_31) on Sat Mar 14 10:07:08 PDT 2015 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Rating (Vilya Core 1.6 API)</title>
<meta name="date" content="2015-03-14">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Rating (Vilya Core 1.6 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":9,"i1":9,"i2":10,"i3":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/Rating.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../com/threerings/parlor/rating/server/RatingDelegate.html" title="class in com.threerings.parlor.rating.server"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?com/threerings/parlor/rating/server/Rating.html" target="_top">Frames</a></li>
<li><a href="Rating.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">com.threerings.parlor.rating.server</div>
<h2 title="Class Rating" class="title">Class Rating</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>com.threerings.parlor.rating.server.Rating</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="../../../../../com/threerings/parlor/rating/data/RatingCodes.html" title="interface in com.threerings.parlor.rating.data">RatingCodes</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">Rating</span>
extends <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
implements <a href="../../../../../com/threerings/parlor/rating/data/RatingCodes.html" title="interface in com.threerings.parlor.rating.data">RatingCodes</a></pre>
<div class="block">Encapsulates the rating/experience tuple representing a player's rating for a game, and logic
for calculating rating changes.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/threerings/parlor/rating/server/Rating.html#experience">experience</a></span></code>
<div class="block">The number of times the player's played our game.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/threerings/parlor/rating/server/Rating.html#rating">rating</a></span></code>
<div class="block">The player's rating for our game.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.com.threerings.parlor.rating.data.RatingCodes">
<!-- -->
</a>
<h3>Fields inherited from interface&nbsp;com.threerings.parlor.rating.data.<a href="../../../../../com/threerings/parlor/rating/data/RatingCodes.html" title="interface in com.threerings.parlor.rating.data">RatingCodes</a></h3>
<code><a href="../../../../../com/threerings/parlor/rating/data/RatingCodes.html#DEFAULT_RATING">DEFAULT_RATING</a>, <a href="../../../../../com/threerings/parlor/rating/data/RatingCodes.html#MAXIMUM_RATING">MAXIMUM_RATING</a>, <a href="../../../../../com/threerings/parlor/rating/data/RatingCodes.html#MINIMUM_RATING">MINIMUM_RATING</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../com/threerings/parlor/rating/server/Rating.html#Rating--">Rating</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static float</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/threerings/parlor/rating/server/Rating.html#computeAdjustment-float-int-com.threerings.parlor.rating.server.Rating-">computeAdjustment</a></span>(float&nbsp;W,
int&nbsp;opprat,
<a href="../../../../../com/threerings/parlor/rating/server/Rating.html" title="class in com.threerings.parlor.rating.server">Rating</a>&nbsp;rating)</code>
<div class="block">Computes a ratings adjustment for the given player, using a modified
version of the FIDE Chess rating system as:</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/threerings/parlor/rating/server/Rating.html#computeRating-com.threerings.parlor.rating.server.Rating:A-int-float-">computeRating</a></span>(<a href="../../../../../com/threerings/parlor/rating/server/Rating.html" title="class in com.threerings.parlor.rating.server">Rating</a>[]&nbsp;ratings,
int&nbsp;pidx,
float&nbsp;W)</code>
<div class="block">Computes a player's updated rating using a modified version of the
FIDE/ELO system.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/threerings/parlor/rating/server/Rating.html#isProvisional--">isProvisional</a></span>()</code>
<div class="block">Returns true if this rating is provisional (<code>experience &lt; 20</code>).</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../com/threerings/parlor/rating/server/Rating.html#toString--">toString</a></span>()</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="rating">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rating</h4>
<pre>public&nbsp;int rating</pre>
<div class="block">The player's rating for our game.</div>
</li>
</ul>
<a name="experience">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>experience</h4>
<pre>public&nbsp;int experience</pre>
<div class="block">The number of times the player's played our game.</div>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="Rating--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>Rating</h4>
<pre>public&nbsp;Rating()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="computeRating-com.threerings.parlor.rating.server.Rating:A-int-float-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>computeRating</h4>
<pre>public static&nbsp;int&nbsp;computeRating(<a href="../../../../../com/threerings/parlor/rating/server/Rating.html" title="class in com.threerings.parlor.rating.server">Rating</a>[]&nbsp;ratings,
int&nbsp;pidx,
float&nbsp;W)</pre>
<div class="block">Computes a player's updated rating using a modified version of the
FIDE/ELO system. The rating adjustment is computed for the player versus
each opponent individually and these adjustments are summed and scaled
by one over the number of opponents to create the final rating
adjustment, which is then added to the player's previous rating and
bounded to the rating range. <em>Note:</em> provisional players (those
with experience of less than 20) will be treated as having, at most, the
default rating when used as an opponent in calculatons for a
non-provisional player.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>ratings</code> - the pre-match ratings of each of the opponents.</dd>
<dd><code>pidx</code> - the index of the player whose rating is to be calculated.</dd>
<dd><code>W</code> - the win value for the player whose rating is to be calculated,
(1.0 means the player won, 0.5 means they drew, 0 means they lost).</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the player's updated rating or -1 if none of the opponents could
be applicably rated against this player due to provisional/
non-provisional mismatch or lack of participation.</dd>
</dl>
</li>
</ul>
<a name="computeAdjustment-float-int-com.threerings.parlor.rating.server.Rating-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>computeAdjustment</h4>
<pre>public static&nbsp;float&nbsp;computeAdjustment(float&nbsp;W,
int&nbsp;opprat,
<a href="../../../../../com/threerings/parlor/rating/server/Rating.html" title="class in com.threerings.parlor.rating.server">Rating</a>&nbsp;rating)</pre>
<div class="block">Computes a ratings adjustment for the given player, using a modified
version of the FIDE Chess rating system as:
<pre><code>
adjustment = K(W - We)
where:
K = if (experience &lt; 20) then 64
else if (rating &lt; 2100 and experience &gt;= 20) then 32
else if (rating &gt;= 2100 and rating &lt; 2400 and experience &gt;= 20)
then 24
else 16
W = score for the game just completed, as 1.0, 0.5, and 0.0 for a
win, draw, or loss, respectively.
dR = opponent's rating minus player's rating.
We = expected score (win expectancy) as determined by:
We = 1 / (10^(dR/400) + 1)
</code></pre></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>W</code> - the win value the game in question (1.0 means the player won,
0.5 means they drew, 0 means they lost).</dd>
<dd><code>opprat</code> - the opponent's current rating.</dd>
<dd><code>rating</code> - the player's current rating.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the adjustment to the player's rating.</dd>
</dl>
</li>
</ul>
<a name="isProvisional--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isProvisional</h4>
<pre>public&nbsp;boolean&nbsp;isProvisional()</pre>
<div class="block">Returns true if this rating is provisional (<code>experience &lt; 20</code>).</div>
</li>
</ul>
<a name="toString--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>toString</h4>
<pre>public&nbsp;<a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;toString()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/Rating.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev&nbsp;Class</li>
<li><a href="../../../../../com/threerings/parlor/rating/server/RatingDelegate.html" title="class in com.threerings.parlor.rating.server"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?com/threerings/parlor/rating/server/Rating.html" target="_top">Frames</a></li>
<li><a href="Rating.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2015. All rights reserved.</small></p>
</body>
</html>