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 Related Documents: [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 persistent across all sessions — it is tied to the player account, not to any individual 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 meaningful-but-not-game-changing mechanical bonuses that apply at the start of every session.

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 Small mechanical bonus OR cosmetic unlock
Every 5 levels Guaranteed cosmetic unlock
Every 10 levels Guaranteed mechanical bonus
Every 25 levels Milestone reward — both cosmetic + mechanical
Level 100 Prestige unlock (TBD)

Mechanical Bonuses

Mechanical bonuses are passive — they apply automatically at the start of every session. They are meaningful but never dominant. A level 50 player has a real but modest advantage over a level 1 player.

Milestone Bonus
Level 10 +2% supply chain contribution per session
Level 20 +1% extraction rate on all resources
Level 30 +2% supply chain contribution (cumulative: +4%)
Level 40 +5% XP gain rate (levels faster)
Level 50 +2% supply chain contribution (cumulative: +6%)
Level 60 +1% extraction rate (cumulative: +2%)
Level 70 +2% supply chain contribution (cumulative: +8%)
Level 80 +10% passive Field Data RP rate per session
Level 90 +2% supply chain contribution (cumulative: +10%)
Level 100 +5% to all mechanical bonuses (amplifier)
Level 110+ Pattern repeats with diminishing returns

Design note: Research slots are exclusively unlocked through the Research & Science branch of the research tree — player level has no influence on this. At level 100, a player has +10% supply chain contribution, +2% extraction rate, and +10% passive RP rate per session. Meaningful but never dominant.

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.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.