Jump to content

Scoring and rosters: Difference between revisions

From Galactic Empire wiki
No edit summary
 
(No difference)

Latest revision as of 14:13, 18 October 2026

Scoring measures a player'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 roster 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.

The persistent score

The user record keeps three related values: klscore for combat-earned points, plscore for the last calculated value of owned planets, and score for the total used by the roster. Ordinarily, score = klscore + plscore. 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 displays rankings, while REPORT shows the player's own statistics.

Combat points are credited or deducted when a ship is destroyed and the affected user records are saved. Planet value is recalculated during the 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 number of owned planets shown on the roster any time ownership changes, but this does not make the planet's score update immediately.

Planet value

At cleanup, the game visits owned planets and adds each one's calculated value to its owner's plscore. 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:

  • Planetary cash plus uncollected tax: (cash + tax) / (1,000,000 / PLTVCASH).
  • Each item type: (quantity / PLTVDIV) * ITMVALnn, summed over the planet's inventory.

The divisions use integer arithmetic and discard remainders before multiplication. With the distributed settings, PLTVCASH is 10, PLTVDIV is 10,000, and only men have a nonzero item point value (ITMVAL01 = 10). A planet holding 25,000 men and two million in combined cash and tax therefore contributes (25,000 / 10,000) * 10 = 20 population-item points and 2,000,000 / 100,000 = 20 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.

Sysops can change the valuation settings, including giving other planetary items nonzero point values. 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.

Combat points and kill credit

Every ship class has a configured point value, shown for player ships by HELP CLASS. 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 destroyed ship, not the attacker'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.

Classic 3.2e

Classic starts with the destroyed ship's class point value. If the defeated user's saved rospos is positive, it adds an integer bonus of SCRBONUS / rospos. That roster position is assigned during nightly cleanup; it can be stale after scores change. With classic's distributed SCRBONUS = 1,000, 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's score. This rank-based method replaced an earlier score-percentage bonus in classic 2.3f.

The defeated user loses points based on the award: (award / 100) * SCRFACT. At the distributed SCRFACT = 35, 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's combat-score field contains less than the loss.

Classic can also transfer a configured percentage of the defeated player's cash to a player victor through CHGLOSER. 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's existing points to the winner: the winner gains a calculated award while the loser suffers a separately calculated deduction.

ge-next

ge-next retains the class point value but changes player-versus-player scoring. It looks up both players' current positions in the score index. A winner ranked below a higher-scoring loser can receive an upset bonus equal to (winner rank - loser rank) * SCRBONUS + (loser score - winner score) / SCRBONUS. Its distributed SCRBONUS is 200. This is a rank-and-score-gap calculation, not a fixed percentage of the loser's score.

The relative DAMF values of the two ship classes can change the award further. If the destroyed ship's DAMF exceeds the winner's by more than 50, the winner receives another half of the defeated class's base points. If it is lower by more than 50, one third of the base points is taken off the award, not off the winner'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 600 + 40 = 640 upset points, for a 2,140-point award.

For a player-versus-player kill, ge-next computes the loser's nominal deduction as (award * SCRFACT) / 100; at 35%, the 2,140-point example gives 749. It caps the actual loss at the loser's klscore, preserving planet-earned points. If the nominal loss would exceed the loser's total 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 (class points * SCRFACT) / 1,000, 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.

There is a separate rescue award: if destroying an attacker relieves another ship that marked that attacker as its distress target, the winner can receive four times the endangered ship's class point value. The circumstances are governed by the distress system rather than an ordinary class-kill bonus.

Score index and large totals

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 ROSTER ALL behavior.

Classic stores the once-per-cleanup rospos 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 ROSTER differs accordingly, as detailed on the command page.

The stored score 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's signedness would also be a database-layout compatibility decision, not merely a display fix.

Team scores

TEAM SCORE is a separate standing, not an additional contribution to a player's personal score. It averages the member scores and adds a configurable bonus per member. Classic'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.

ge-arena

ge-arena has no standard persistent planet-and-combat score. A player'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 STATUS; Hoard withholds other players' exact gold totals until the final three minutes.

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.

See also