Files
RustRaptor/docs/weapon-balance.md
T

155 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Shipped weapon prices and balance
The five independent weapon mods use the original game's credit scale. The first three
initial example prices of 6,500, 14,000 and 22,000 made reusable upgrades cheaper
than much weaker original equipment. The revised prices preserve their firing,
damage, scripts, sounds and artwork.
| Mod weapon | Price | Place in the original progression |
| --- | ---: | --- |
| Pulse Cannon | 185,000 | Just above the 175,600-credit Micro Missile primary upgrade. It adds similar sustained damage and also adds a spread burst every third volley. |
| Seeker Swarm | 285,000 | Above the 250,650-credit Mini Gun. Its three missiles track air and ground enemies and hits fragment into at most two nearby enemies. It remains below the 512,850-credit instant Turret. |
| Ion Lance | 425,000 | Below the Turret and the 950,000-credit Death Ray. Its lower damage per target trades against immediate hits and the ability to pierce several enemies in one column. |
| Lightning Cannon | 825,000 | Above the original 725,000-credit Pulse Cannon and below the 950,000-credit Death Ray. Its strong immediate forward hit can chain to three nearby enemies, but it needs an initial target in its aiming lane and the chain has a strict 48-pixel reach. |
| Lightning Shield | 155,000 | A supplementary primary below the 175,600-credit Micro Missile. It adds only a little damage and reaches roughly 12 pixels beyond the pilot's hull; its value comes from covering close airborne threats in every direction while the other guns fire. |
Pulse Cannon is always equipped and fires alongside other primary guns. Seeker
Swarm, Ion Lance and Lightning Cannon occupy the selected special slot and fire with Fire or
Special while selected. Lightning Shield is always equipped and pulses only while
Fire is held; it does not occupy the selected slot. All five are reusable, consume no ammunition and have
a maximum inventory count of one. Each equipment definition includes a shop
description stating these controls and its target behavior.
## Controlled damage observations
The local benchmark loads the original asset catalog and original registered
weapons, plus eight shipped weapon/enemy packages. Every weapon runs through
the real `World::step` simulation and real scripts at difficulty 2. Each scene
holds Fire for 700 steps, exactly 30 seconds at 70/3 Hz, against 32×32 fixtures
with 1,000,000 health. The pilot remains at the initial position with no other
weapons equipped. Ground fixtures use a test-only movement callback to cancel
the normal one-pixel terrain scroll after each collision pass.
The numbers below include travel delay and misses during that 30-second window.
They measure health lost per second, rather than nominal damage divided by
cooldown.
| Weapon | Price | Aligned air damage/s | Aligned ground damage/s | Air target 76 pixels to the right damage/s |
| --- | ---: | ---: | ---: | ---: |
| Original Forward Guns | 12,000 | 23.13 | 23.13 | 0 |
| Original Plasma Guns | 78,800 | 4.67 | 0 | 0 |
| Original Micro Missile | 175,600 | 23.07 | 23.07 | 0 |
| Original Mini Gun | 250,650 | 12.57 | 12.57 | 16.27 |
| Original Turret | 512,850 | 19.50 | 0 | 19.50 |
| Original Pulse Cannon | 725,000 | 38.50 | 38.50 | 0 |
| Original Death Ray | 950,000 | 80.00 | 80.00 | 0 |
| Original Forward Laser | 1,750,000 | 266.67 | 266.67 | 0 |
| Mod Pulse Cannon | 185,000 | 24.00 | 24.00 | 0 |
| Seeker Swarm | 285,000 | 23.40 | 23.40 | 23.40 |
| Ion Lance | 425,000 | 26.67 | 26.67 | 0 |
| Lightning Cannon | 825,000 | 41.60 | 41.60 | 0 |
| Lightning Shield | 155,000 | 0 | 0 | 0 |
The original forward laser's native beam damage pass reaches ground enemies
despite its historical air target metadata; the observations use its actual
behavior. The original turret selects airborne enemies. Original weapons retain
their native update and collision paths throughout this comparison.
Equipping Pulse Cannon with the starter Forward Guns produced 46.33 damage/s
against either aligned target, compared with 46.20 for Forward Guns plus Micro
Missile. Pulse therefore belongs beside that original primary upgrade, rather
than below the 12,000-credit starter guns. Scripted angled shots also reached a
second target in the cluster scene.
Seeker Swarm delivered 23.40 damage/s to an offset airborne or ground target.
In a tight three-enemy cluster, it delivered 23.40 to the primary target plus
7.80 to each of two neighbors: 39.00 combined. Its fragmentation is bounded;
it does not damage every enemy on screen.
Ion Lance delivered 26.67 damage/s to each of two vertically separated targets
in the same column: 53.33 combined. It delivered 80.00 combined across three
overlapping column targets. It dealt zero damage to targets outside its launch
column. It is a brief aimed beam, rather than a screen-wide attack.
Lightning Cannon fires every 18 ticks and hits the first target for 32 damage.
In a chain scene with 40 pixels between target centers, it delivered 41.60,
26.00, 15.60 and 10.40 damage/s to four distinct targets, for 93.60 combined.
A fifth neighboring target took zero damage. Each hop chooses the nearest
living, previously unhit target within 48 pixels of the previous hit; it can
chain through air and ground targets and never revisits a target. It missed an
isolated target 76 pixels to the right of its narrow forward acquisition lane.
Its 825,000-credit price reflects better single-target output than the original
Pulse Cannon plus bounded cluster utility, while staying below the Death Ray's
80.00 aligned damage/s. Cluster performance alone does not guarantee campaign
performance: spaced enemies break the chain and weak targets reduce its useful
damage through overkill.
Lightning Shield cannot reach the normal distant fixtures. Against a stationary
aircraft with its hull 28 pixels from the pilot's center, it delivered **5.87
damage/s**. The equivalent ground fixture took zero damage. Against five close
aircraft it dealt 5.87 to each of the four closest targets, for 23.47 combined,
and zero to the fifth. The 28-pixel distance is measured to the nearest point on
the enemy hull, so it reaches only about 12 pixels beyond the pilot's own hull.
Its 155,000-credit price treats this as supplemental coverage near the ship,
below the Micro Missile and mod Pulse Cannon upgrades. Its short reach requires
dangerous proximity, and it provides no protection from collisions or bullets.
Firing alongside Forward Guns preserves its 5.87 close-target damage/s; selecting
another special never disables it. Its pulses consume no equipment.
## Economy and limits
Controlled first-mission runs starting with 100 energy and zero credits earned
42,775 credits at difficulty 1 and 59,025 at difficulty 2 with starter guns.
The in-game registration flow starts with 10,000 credits and 75 energy, matching
the original hangar setup. Compared with the latter controlled gross
reward, the first three prices represent approximately 3.13, 4.83 and 7.20 such payouts.
Lightning Cannon costs about 13.98 and Lightning Shield about 2.63 such payouts.
Repairs and other purchases increase the saving time; later missions have
different rewards. This comparison sets a progression tier and does not promise
an exact purchase mission.
Stationary fixtures favor perfect alignment and long-lived targets. They do
not establish equal campaign difficulty, measure moving-target accuracy,
account for overkill against weak enemies or quantify projectile travel time
against fast enemies. The benchmark also isolates weapons; real pilots can
combine several primaries with one selected special. These prices are concrete
initial balance choices, not an assertion that every loadout is equally strong.
Iron Coast Mission 1 intentionally supplies a free Pulse Cannon loan if the
pilot does not already own one. The mission returns the loan at its end while
preserving previously owned equipment. The trial therefore helps this mission
without granting a permanent shop upgrade or a repeatable resale reward.
## Reproduce
Run the local-only test from the repository root with the original catalog:
```sh
RAPTOR_TEST_DATA="$PWD/data" RAPTOR_BALANCE_REPORT="$PWD/.reference/weapon-balance.json" \
cargo test --release \
--no-default-features --test weapon_balance -- --ignored --nocapture
```
`RAPTOR_TEST_DATA` can override the catalog directory. The optional JSON report
records all 120 observations: seventeen weapons in six scenes, the three original
primary upgrade comparisons with Forward Guns, four additional proximity/chain
scenes for each lightning weapon, and four lightning/Forward Guns comparisons. Assertions
check all-target homing, column piercing, off-axis beam misses, target survival
and unchanged pilot shields. The test uses the Rust engine without SDL or C++.
The bundled original data is tracked; locally written reference reports stay outside Git. The portable
weapon tests additionally check range boundaries, chain gaps, repeated-hit
exclusion, kills, cooldown, absence of input, removed equipment, combined loadouts
and deterministic continuation.
The opt-in visual proof uses the actual package icons, original palette and
public arc renderer in SD and HD. It writes local, ignored captures:
```sh
cargo test --locked --no-default-features --test weapons_mods \
lightning_mods_render_real_icons_and_discharge_arcs_in_sd_and_hd \
-- --ignored --nocapture
```
Both packages include a numeric `balance-report.json`; these observations do
not include original game artwork or catalog data.