Skip to content

Auto Warz — Player Levelling System

Document Type: Design Document Version: 0.1 Last Updated: 2026-02-27 Vault destination: 01_Design Documents Phase: Phase 1 — Launch release Related Documents: [36_Progression Arc Design](<./36_Progression Arc Design.md>) · [01_Master GDD](<../01_Master GDD.md>) · [08_Research Tree Design](<./08_Research Tree Design.md>) · [15_Ship & Army Points Design](<./15_Ship & Army Points Design.md>) · [12_Gauntlet Planet Design](<./12_Gauntlet Planet Design.md>) Folder: 01_Design Documents


Overview

Player levelling is account-scoped — tied to the player, not to any world or session. Every activity in Auto Warz contributes XP at different rates. As players level up they earn a mix of cosmetic rewards (skins, titles, themes) and Engineering Points, the currency that buys account-scoped design upgrades. Levelling is account-scoped, not world-scoped: it follows the player between worlds.

Levels never gate world content

Rule, and it is absolute. Player level gates nothing inside a world. Levels grant Engineering Points and cosmetics. They never unlock a building, a recipe, a research node, a layer, a progression beat or an endgame path.

Levels are account-scoped and permanent. World content is world-scoped and resets. If a level gated world content then a new world would not be a fresh start but a partly pre-solved one, a level 40 player and a level 3 player could not meaningfully share a world, and account progress would cross as capability rather than capacity, which [00_Canonical Design Facts](<../../04_Project Management/00_Canonical Design Facts.md>) §20 forbids.

The one honest exception is admission control: a war may set a minimum Fleet Power to join. That gates entry to a shared instance, agreed between participants, not content inside anyone's world. See [36_Progression Arc Design](<./36_Progression Arc Design.md>) §7.

The pace is logarithmic — levelling always feels achievable. Early levels come quickly, high levels slow down, but you always feel forward progress no matter how long you've been playing.


XP Sources

All activities contribute to a single XP pool. Rates are ranked by contribution — War/combat is the highest earner, reflecting the most active and dangerous gameplay. Hours played is the baseline that rewards simply being in the game.

Rank Source XP Rate How It's Measured
1 War / Combat High XP per alien killed, per faction fleet destroyed, per territory captured
2 Factory / RP Production Medium-High XP per Science Drive consumed, per RP generated, per production milestone
3 Asteroid Mining Medium XP per resource unit extracted from asteroids (Phase 2+)
4 Exploration Medium-Low XP per new planet discovered, per system revealed, per planet type landed on first time
5 Hours Played Low Passive XP trickle — 10 XP per minute in-session
6 Gauntlet Planet Waves Bonus burst Large XP burst per wave completed — infrequent but rewarding

Detailed XP Values

War / Combat

Action XP Reward
Alien killed (Tier 1) 2 XP
Alien killed (Tier 2) 5 XP
Alien killed (Tier 3) 12 XP
Alien killed (Tier 4) 25 XP
Alien killed (Tier 5 / Apex) 60 XP
Faction ship destroyed (Fighter) 20 XP
Faction ship destroyed (Cruiser) 80 XP
Faction ship destroyed (Carrier) 200 XP
Territory captured from faction 150 XP
War mode session (per minute active) 3 XP/min bonus

Factory / RP Production

Action XP Reward
Basic Science Drive consumed 5 XP
Advanced Science Drive consumed 20 XP
Quantum Science Drive consumed 75 XP
Research node completed 10 XP
Infinite research level completed 25 XP
Full research tree completed 500 XP (one-time per session)
Production milestone (first 100 of a resource) 15 XP
Production milestone (first 1,000 of a resource) 40 XP

Asteroid Mining

Action XP Reward
First asteroid mined (per session) 50 XP
Per 100 units extracted from asteroid 8 XP
Rare mineral found 30 XP

Exploration

Action XP Reward
New system revealed by scanner 20 XP
New planet type landed on (first ever) 100 XP
New planet type landed on (already seen) 25 XP
Gauntlet Planet discovered 75 XP
All planet types discovered (lifetime) 500 XP (one-time)

Hours Played

Action XP Reward
Per minute in active session 10 XP/min

Gauntlet Planet Waves

Action XP Reward
Wave 1–5 completed 100 XP per wave
Wave 6–15 completed 250 XP per wave
Wave 16–30 completed 500 XP per wave
Wave 31+ completed 1,000 XP per wave

Level Curve

Logarithmic scaling — fast early, always achievable late.

xp_required(level) = 500 × level × (1 + log10(level))

Level 1:   500 XP      ← first session, first hour
Level 5:   3,495 XP    ← ~2-3 sessions
Level 10:  10,000 XP   ← regular player, ~1-2 weeks
Level 25:  35,000 XP   ← dedicated player
Level 50:  85,000 XP   ← veteran
Level 100: 200,000 XP  ← long-term
Level 200: 460,000 XP  ← hardcore

Cumulative XP to Reach Level

Level XP to Reach Approx. Playtime
5 ~12,000 XP 5–8 hours
10 ~40,000 XP 15–25 hours
25 ~200,000 XP 80–120 hours
50 ~700,000 XP 300–400 hours
100 ~2,500,000 XP 1,000+ hours

Estimates assume mixed gameplay across all XP sources. Heavy war/combat players level significantly faster.


Level Rewards Schedule

Every level grants a reward. The pattern cycles through mechanical bonuses and cosmetic unlocks, with milestone levels giving the best rewards.

Reward Pattern (repeating)

Level Type Reward
Every level Engineering Points
Every 5 levels Guaranteed cosmetic unlock
Every 10 levels Bonus Engineering Point grant
Every 25 levels Milestone reward — cosmetic and a larger point grant
Level 100 Prestige unlock (TBD)

Engineering Points

Levels grant Engineering Points. They are the currency that buys Engineering Research, the account-scoped catalogue that improves ship and mothership designs.

This replaces the flat percentage bonuses the earlier draft granted at milestone levels (+2% supply chain contribution per ten levels, +1% extraction per twenty, +10% passive RP at level 80). Those were rounding errors nobody could feel. Points that buy real armour density, umbrella radius and tank capacity are a reason to care about a level.

It also solves a gap on the other side: Engineering Research was defined as account-scoped in [33_Mothership & Fleet Design](<../Systems/33_Mothership & Fleet Design.md>) and nothing paid for it. One mechanic answers both.

What Engineering Points buy — a flat catalogue of upgrade lines, each with levels and a rising cost, bought in any order:

armour density · reactor efficiency · umbrella radius · command range · drone throughput · tank capacity · sensor range

And the rule that bounds them:

Account research improves capacity and efficiency. It never unlocks capability.

A high-level player is better equipped and never has an option a new player lacks. Flat structure enforces this by construction: there is nothing to unlock, only things to raise.

Point yield per level and the cost curve are tuning values. See [35_Economy Design](<../Systems/35_Economy Design.md>).

Design note, unchanged: Factory Research slots are exclusively unlocked through the Research & Science branch — player level has no influence on this. Engineering Research is the other tree, so there is no conflict.

Cosmetic Rewards

Level Cosmetic Unlock
5 Genesis colour variant — Arctic White
10 UI theme — Dark Steel
15 Ship skin — Worn Industrial
20 Building skin set — Copper Trim
25 Genesis colour variant — Plasma Orange
30 UI theme — Deep Space
35 Ship skin — Faction Salvager
40 Building skin set — Chrome Edge
45 Genesis colour variant — Toxic Green
50 UI theme — Neon Teal + Genesis skin — Elite Commander
55 Ship skin — Stealth Black
60 Building skin set — Battle-Worn
75 Genesis skin — Apex Predator variant
100 Prestige Genesis skin — full glow/particle effect
100+ Additional cosmetics added with future updates

Cosmetic philosophy: Skins change colour, trim detail, and emissive effects — they do not change building silhouettes or readability. A level 100 player's factory looks impressive but a new player can always read it.


Cosmetic System Details

Genesis Skins

  • Change Genesis body colour, trim colour, eye glow colour, and idle particle effects
  • Base skin: default white/silver with blue eyes
  • Skins are selected from a Genesis customisation panel before session start
  • In multiplayer: other players see your Genesis skin

Ship Skins

  • Change hull colour scheme and trim detail
  • Applied per ship class — a Fighter skin only applies to Fighters
  • Selected in the ship editor before deploying

Building Skin Sets

  • Apply a consistent visual theme across all buildings simultaneously
  • Accent colours remain the same (for readability) — only base material and trim change
  • Examples: Copper Trim = warm copper base instead of steel grey; Chrome Edge = highly reflective chrome trim

UI Themes

  • Change the colour of UI panels, borders, and backgrounds
  • Dark Steel (default), Deep Space (near-black), Neon Teal, and more
  • Does not affect game world visuals — UI only

GDScript Implementation

# PlayerProfile.gd — persistent, stored in user://player_profile.tres
class_name PlayerProfile
extends Resource

@export var player_name: String
@export var total_xp: int = 0
@export var current_level: int = 1
@export var unlocked_cosmetics: Array[String] = []
@export var active_genesis_skin: String = "default"
@export var active_ui_theme: String = "dark_steel"
@export var active_building_skin: String = "default"

# Mechanical bonuses — derived from level, applied at session start
func get_supply_chain_bonus() -> float:
    var bonus = floor(current_level / 10.0) * 0.02
    if current_level >= 100:
        bonus *= 1.05  # level 100 amplifier
    return bonus

func get_extraction_bonus() -> float:
    return floor(current_level / 20.0) * 0.01

func get_passive_rp_bonus() -> float:
    return 0.10 if current_level >= 80 else 0.0

# Level calculation
static func xp_required_for_level(level: int) -> int:
    return int(500 * level * (1.0 + log(level) / log(10)))

static func level_from_xp(xp: int) -> int:
    var level = 1
    while xp_required_for_level(level + 1) <= xp:
        level += 1
    return level

# XP gain — called from various game systems
func add_xp(amount: int, source: String) -> void:
    total_xp += amount
    var new_level = level_from_xp(total_xp)
    if new_level > current_level:
        _on_level_up(current_level, new_level)
        current_level = new_level
    ResourceSaver.save(self, "user://player_profile.tres")

func _on_level_up(old_level: int, new_level: int) -> void:
    # Fire signal, check cosmetic/mechanical unlocks, show level-up UI
    pass

XP Source Constants

# XPSources.gd — autoload
const XP = {
    # War / Combat
    "alien_kill_t1": 2,
    "alien_kill_t2": 5,
    "alien_kill_t3": 12,
    "alien_kill_t4": 25,
    "alien_kill_t5": 60,
    "ship_destroyed_fighter": 20,
    "ship_destroyed_cruiser": 80,
    "ship_destroyed_carrier": 200,
    "territory_captured": 150,

    # Factory / RP
    "science_drive_basic": 5,
    "science_drive_advanced": 20,
    "science_drive_quantum": 75,
    "research_node_complete": 10,
    "research_infinite_level": 25,
    "research_tree_complete": 500,
    "production_milestone_100": 15,
    "production_milestone_1000": 40,

    # Exploration
    "system_revealed": 20,
    "planet_type_new": 100,
    "planet_type_repeat": 25,
    "gauntlet_discovered": 75,
    "all_planet_types": 500,

    # Gauntlet
    "gauntlet_wave_early": 100,    # waves 1-5
    "gauntlet_wave_mid": 250,      # waves 6-15
    "gauntlet_wave_late": 500,     # waves 16-30
    "gauntlet_wave_endless": 1000, # waves 31+

    # Passive
    "per_minute_played": 10,
}

Open items for this document are tracked in docs/open-items.md, area progression.

Revision History

Version Date Changes
0.3 2026-09-05 Levels never gate world content added as an absolute rule, with its §20 rationale and the Fleet Power admission-control exception.
0.2 2026-09-05 Levels grant Engineering Points, replacing the flat percentage bonuses, which were too small to feel. This also gives Engineering Research the source it never had. Vocabulary corrected from session to world and account.
0.1 2026-02-27 Initial document — persistent player levelling, one XP pool with 6 sources, logarithmic curve, reward schedule (mechanical + cosmetic), cosmetic system details, GDScript implementation, XP constants
0.2 2026-02-27 Removed level 80 research slot bonus — research slots are exclusively unlocked via Research & Science branch. Replaced with +10% passive Field Data RP rate.