<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://manicpop.org/gewiki/index.php?action=history&amp;feed=atom&amp;title=Scoring_and_rosters</id>
	<title>Scoring and rosters - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://manicpop.org/gewiki/index.php?action=history&amp;feed=atom&amp;title=Scoring_and_rosters"/>
	<link rel="alternate" type="text/html" href="https://manicpop.org/gewiki/index.php?title=Scoring_and_rosters&amp;action=history"/>
	<updated>2026-10-20T15:22:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manicpop.org/gewiki/index.php?title=Scoring_and_rosters&amp;diff=2169&amp;oldid=prev</id>
		<title>Manicpop at 18:13, 18 October 2026</title>
		<link rel="alternate" type="text/html" href="https://manicpop.org/gewiki/index.php?title=Scoring_and_rosters&amp;diff=2169&amp;oldid=prev"/>
		<updated>2026-10-18T18:13:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Scoring&amp;#039;&amp;#039;&amp;#039; measures a player&amp;#039;s accumulated combat results and the value of their planetary empire. A high score is not the same as cash on hand, number of kills, or number of planets. The persistent &amp;#039;&amp;#039;&amp;#039;roster&amp;#039;&amp;#039;&amp;#039; orders user records by that total score. [[ge-arena]] uses a different system: match standings determine a winner, while its persistent roster counts wins by mode.&lt;br /&gt;
&lt;br /&gt;
== The persistent score ==&lt;br /&gt;
&lt;br /&gt;
The user record keeps three related values: &amp;lt;code&amp;gt;klscore&amp;lt;/code&amp;gt; for combat-earned points, &amp;lt;code&amp;gt;plscore&amp;lt;/code&amp;gt; for the last calculated value of owned planets, and &amp;lt;code&amp;gt;score&amp;lt;/code&amp;gt; for the total used by the roster. Ordinarily, &amp;lt;code&amp;gt;score = klscore + plscore&amp;lt;/code&amp;gt;. Kill and planet counts are useful statistics but are not factored directly into the total. ge-next also tracks kills of user-controlled ships separately from all registered kills; individual ships have their own kill counts. [[Roster command|ROSTER]] displays rankings, while [[Report command|REPORT]] shows the player&amp;#039;s own statistics.&lt;br /&gt;
&lt;br /&gt;
Combat points are credited or deducted when a ship is destroyed and the affected user records are saved. Planet value is recalculated during the [[Game execution flow#Midnight routine|midnight cleanup]], not each time a planet produces, trades, gains population, or changes hands. Consequently, a battle can move players on the roster immediately, while a newly acquired or improved planet may not change their points until the next day. ge-next updates the &amp;#039;&amp;#039;number&amp;#039;&amp;#039; of owned planets shown on the roster any time ownership changes, but this does not make the planet&amp;#039;s &amp;#039;&amp;#039;score&amp;#039;&amp;#039; update immediately.&lt;br /&gt;
&lt;br /&gt;
== Planet value ==&lt;br /&gt;
&lt;br /&gt;
At cleanup, the game visits owned planets and adds each one&amp;#039;s calculated value to its owner&amp;#039;s &amp;lt;code&amp;gt;plscore&amp;lt;/code&amp;gt;. It rebuilds the population and planet-count statistics in the same pass, then recomputes total score from planet and combat score. The value comes from two sources:&lt;br /&gt;
&lt;br /&gt;
* Planetary cash plus uncollected tax: &amp;lt;code&amp;gt;(cash + tax) / (1,000,000 / PLTVCASH)&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Each item type: &amp;lt;code&amp;gt;(quantity / PLTVDIV) * ITMVALnn&amp;lt;/code&amp;gt;, summed over the planet&amp;#039;s inventory.&lt;br /&gt;
&lt;br /&gt;
The divisions use integer arithmetic and discard remainders &amp;#039;&amp;#039;before&amp;#039;&amp;#039; multiplication. With the distributed settings, &amp;lt;code&amp;gt;PLTVCASH&amp;lt;/code&amp;gt; is 10, &amp;lt;code&amp;gt;PLTVDIV&amp;lt;/code&amp;gt; is 10,000, and only men have a nonzero item point value (&amp;lt;code&amp;gt;ITMVAL01 = 10&amp;lt;/code&amp;gt;). A planet holding 25,000 men and two million in combined cash and tax therefore contributes &amp;lt;code&amp;gt;(25,000 / 10,000) * 10 = 20&amp;lt;/code&amp;gt; population-item points and &amp;lt;code&amp;gt;2,000,000 / 100,000 = 20&amp;lt;/code&amp;gt; cash/tax points, or 40 points total. The extra 5,000 men do not count toward the next 10-point step yet. Shipboard cash, gold, and inventory do not enter this planet formula.&lt;br /&gt;
&lt;br /&gt;
Sysops can change the valuation settings, including giving other planetary items nonzero point values. [[Gold|Gold]] deposited on a planet is not inherently worth points under the defaults; its later conversion to planetary cash can affect the next score calculation. Classic 3.2c rebalanced its distributed planet-scoring defaults to make combat more competitive with empire-building. For planetary production itself, see [[Planetary production]].&lt;br /&gt;
&lt;br /&gt;
== Combat points and kill credit ==&lt;br /&gt;
&lt;br /&gt;
Every ship class has a configured point value, shown for player ships by [[Help command|&amp;lt;code&amp;gt;HELP CLASS&amp;lt;/code&amp;gt;]]. Destroying a scored Cybertron or other eligible automated ship can award its class value, just as destroying a user ship can. The class value belongs to the &amp;#039;&amp;#039;destroyed&amp;#039;&amp;#039; ship, not the attacker&amp;#039;s class. Additional bonuses or deductions depend on version and circumstances. A kill counter can rise even when a scoring rule awards no points, and a ship can be destroyed without an eligible player receiving credit. See [[Kill credit]] for how the last effective attacker is determined and how ownerless weapons and environmental deaths are handled.&lt;br /&gt;
&lt;br /&gt;
=== Classic 3.2e ===&lt;br /&gt;
&lt;br /&gt;
Classic starts with the destroyed ship&amp;#039;s class point value. If the defeated user&amp;#039;s saved &amp;lt;code&amp;gt;rospos&amp;lt;/code&amp;gt; is positive, it adds an integer bonus of &amp;lt;code&amp;gt;SCRBONUS / rospos&amp;lt;/code&amp;gt;. That roster position is assigned during nightly cleanup; it can be stale after scores change. With classic&amp;#039;s distributed &amp;lt;code&amp;gt;SCRBONUS = 1,000&amp;lt;/code&amp;gt;, defeating a player whose saved position is 2 adds 500 points. A 1,500-point ship would then yield 2,000 points. The bonus is based on saved rank, not a live percentage of the victim&amp;#039;s score. This rank-based method replaced an earlier score-percentage bonus in classic 2.3f.&lt;br /&gt;
&lt;br /&gt;
The defeated user loses points based on the award: &amp;lt;code&amp;gt;(award / 100) * SCRFACT&amp;lt;/code&amp;gt;. At the distributed &amp;lt;code&amp;gt;SCRFACT = 35&amp;lt;/code&amp;gt;, the 2,000-point example costs the loser 700 points. If the attacker is an automated ship rather than a user, classic divides that loss by ten. Integer division happens before multiplication in this classic calculation, so small awards can lose precision. The score and combat-score fields are each prevented from going below zero; classic can nevertheless subtract a loss from total score even when the user&amp;#039;s combat-score field contains less than the loss.&lt;br /&gt;
&lt;br /&gt;
Classic can also transfer a configured percentage of the defeated player&amp;#039;s &amp;#039;&amp;#039;cash&amp;#039;&amp;#039; to a player victor through &amp;lt;code&amp;gt;CHGLOSER&amp;lt;/code&amp;gt;. That cash fine is separate from scoring and does not directly add roster points. A ship destroyed with no credited attacker does not award an ordinary kill score. The old 3.2e behavior is not a simple transfer of the loser&amp;#039;s existing points to the winner: the winner gains a calculated award while the loser suffers a separately calculated deduction.&lt;br /&gt;
&lt;br /&gt;
=== ge-next ===&lt;br /&gt;
&lt;br /&gt;
ge-next retains the class point value but changes player-versus-player scoring. It looks up both players&amp;#039; &amp;#039;&amp;#039;current&amp;#039;&amp;#039; positions in the score index. A winner ranked below a higher-scoring loser can receive an upset bonus equal to &amp;lt;code&amp;gt;(winner rank - loser rank) * SCRBONUS + (loser score - winner score) / SCRBONUS&amp;lt;/code&amp;gt;. Its distributed &amp;lt;code&amp;gt;SCRBONUS&amp;lt;/code&amp;gt; is 200. This is a rank-and-score-gap calculation, not a fixed percentage of the loser&amp;#039;s score.&lt;br /&gt;
&lt;br /&gt;
The relative [[DAMF]] values of the two ship classes can change the award further. If the destroyed ship&amp;#039;s DAMF exceeds the winner&amp;#039;s by more than 50, the winner receives another half of the defeated class&amp;#039;s base points. If it is lower by more than 50, one third of the base points is taken off the &amp;#039;&amp;#039;award&amp;#039;&amp;#039;, not off the winner&amp;#039;s existing score. These power adjustments apply to user-versus-user kills. If a ship is worth 1,500 base points and there is no power adjustment, a rank-5 winner with 4,000 score defeating a rank-2 player with 12,000 score receives &amp;lt;code&amp;gt;600 + 40 = 640&amp;lt;/code&amp;gt; upset points, for a 2,140-point award.&lt;br /&gt;
&lt;br /&gt;
For a player-versus-player kill, ge-next computes the loser&amp;#039;s nominal deduction as &amp;lt;code&amp;gt;(award * SCRFACT) / 100&amp;lt;/code&amp;gt;; at 35%, the 2,140-point example gives 749. It caps the actual loss at the loser&amp;#039;s &amp;lt;code&amp;gt;klscore&amp;lt;/code&amp;gt;, preserving planet-earned points. If the nominal loss would exceed the loser&amp;#039;s &amp;#039;&amp;#039;total&amp;#039;&amp;#039; score, the kill instead yields no ordinary class or upset points. This restricts farming new or low-scoring players. When an automated ship destroys a player, the smaller nominal deduction is &amp;lt;code&amp;gt;(class points * SCRFACT) / 1,000&amp;lt;/code&amp;gt;, also capped to combat-earned score. A player who destroys an eligible automated ship receives its class points without the user-versus-user upset and power adjustments.&lt;br /&gt;
&lt;br /&gt;
There is a separate rescue award: if destroying an attacker relieves another ship that marked that attacker as its [[Droids#Factions and distress in ge-next|distress]] target, the winner can receive four times the endangered ship&amp;#039;s class point value. The circumstances are governed by the distress system rather than an ordinary class-kill bonus.&lt;br /&gt;
&lt;br /&gt;
== Score index and large totals ==&lt;br /&gt;
&lt;br /&gt;
The total score is an indexed key in the [[Btrieve]] user database. This makes the current score order available to both the roster and combat-bonus calculations without sorting all players in memory. The other roster statistics, including kills and population, do not affect that order. See [[Roster command]] for displayed columns, limits, and &amp;lt;code&amp;gt;ROSTER ALL&amp;lt;/code&amp;gt; behavior.&lt;br /&gt;
&lt;br /&gt;
Classic stores the once-per-cleanup &amp;lt;code&amp;gt;rospos&amp;lt;/code&amp;gt; for its rank-based kill bonus, whereas ge-next uses the current score index when it calculates an upset bonus. The displayed rank behavior of &amp;lt;code&amp;gt;ROSTER&amp;lt;/code&amp;gt; differs accordingly, as detailed on the command page.&lt;br /&gt;
&lt;br /&gt;
The stored &amp;lt;code&amp;gt;score&amp;lt;/code&amp;gt; field is unsigned, but its Btrieve key compares the same bits as a signed value. A score above 2,147,483,647 therefore sorts below scores in the positive signed range. Classic also formats such a score as signed, making it appear negative; ge-next prints the unsigned value correctly but retains the original key definition. ge-next does not add a workaround for the ordering edge case because reaching that high a score through ordinary play with default scoring values would take years, perhaps decades. Changing the key&amp;#039;s signedness would also be a database-layout compatibility decision, not merely a display fix.&lt;br /&gt;
&lt;br /&gt;
== Team scores ==&lt;br /&gt;
&lt;br /&gt;
[[Team command|&amp;lt;code&amp;gt;TEAM SCORE&amp;lt;/code&amp;gt;]] is a separate standing, not an additional contribution to a player&amp;#039;s personal score. It averages the member scores and adds a configurable bonus per member. Classic&amp;#039;s cached team standing is updated during cleanup and can lag behind kills or membership changes. ge-next 0.3 calculates it from current user records when requested. See [[Teams]] for the formula, membership rules, and other team effects.&lt;br /&gt;
&lt;br /&gt;
== ge-arena ==&lt;br /&gt;
&lt;br /&gt;
ge-arena has no standard persistent planet-and-combat score. A player&amp;#039;s score during a match depends on its mode: Battle compares kills, Hoard compares gold held, King compares time in the active sector, Base compares Cyber-Base kills, and Scored compares a signed, per-match adaptation of class-based combat points. Scored does not use the normal persistent GE score, planetary value, or classic roster-rank bonus. Match standings appear under &amp;lt;code&amp;gt;STATUS&amp;lt;/code&amp;gt;; Hoard withholds other players&amp;#039; exact gold totals until the final three minutes.&lt;br /&gt;
&lt;br /&gt;
The arena roster instead counts wins in each mode and uses total wins as its Btrieve sort key. A completed match with one winner awards one win; leaders tied at the regulation end enter a tiebreaker, and a true tie awards no win. A sole remaining player after a combat forfeit can also receive a credited win, but an otherwise early-ended match does not earn a roster win. See [[ge-arena]] and [[Roster command]] for match and display details.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Roster command]]&lt;br /&gt;
* [[Kill credit]]&lt;br /&gt;
* [[DAMF]]&lt;br /&gt;
* [[Planetary production]]&lt;br /&gt;
* [[Item and equipment configuration#Base prices and point values|Item point-value options]]&lt;br /&gt;
* [[Teams]]&lt;br /&gt;
* [[ge-arena]]&lt;br /&gt;
&lt;br /&gt;
{{GE navigation}}&lt;br /&gt;
[[Category:Game reference]]&lt;br /&gt;
[[Category:Scoring]]&lt;/div&gt;</summary>
		<author><name>Manicpop</name></author>
	</entry>
</feed>