Per-ship scale/speed factors and updated race/class doc
Give each ship an explicit sprite scale (tuned per role so an Interceptor/Gunship/Bomber/Support/Heavy reads the same size across all 3 races, then reduced another 25% per feedback that ships felt oversized) and a movement speed_factor pulled from a shared SPEED_BY_ROLE table, so e.g. every race's Interceptor moves at the same speed as every other race's. GameConfig carries both through to ship_movement.gd, which now scales thrust/max_speed by the chosen ship's factor. Rewrite overview/racesclasses.md to match what's actually implemented: real ship names/roles for Terran Republic and Vorg Swarm, fill in the previously-undocumented Mechanos Sovereignty roster, and correct the chosen-race list now that Vorg Swarm (bio/acid swarm, matching the uploaded art) replaced Void Wraiths as the third chosen race. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+27
-27
@@ -1,10 +1,10 @@
|
||||
# Races & Ship Classes
|
||||
|
||||
## Chosen Races: 1, 4, 5
|
||||
## Chosen Races: 1, 4, 3
|
||||
|
||||
From the 10 concepts below, races **1 (Terran Republic)**, **4 (Mechanos Sovereignty)**, and **5 (Void Wraiths)** were selected.
|
||||
From the 10 concepts below, races **1 (Terran Republic)**, **4 (Mechanos Sovereignty)**, and **3 (Vorg Swarm)** were selected.
|
||||
|
||||
> **Current in-game status:** The team selection screen uses temporary placeholder names ("Terran Federation", "The Collective", "Iron Order") with placeholder sprites until proper art and lore are integrated for the 3 chosen races.
|
||||
> **Current in-game status:** Team selection now uses the real race names and real ship art for all 3 chosen races (`assets/images/ships/<race>/`). Each race has its own 5-ship roster — Interceptor, Gunship, Bomber, Support, Heavy — matching the tables below. See `team_select.gd`.
|
||||
|
||||
---
|
||||
|
||||
@@ -17,41 +17,41 @@ From the 10 concepts below, races **1 (Terran Republic)**, **4 (Mechanos Soverei
|
||||
|
||||
| # | Ship | Role | Description |
|
||||
|---|------|------|-------------|
|
||||
| 1 | **Falcon** | Interceptor | Fast all-rounder. Standard guns, high agility. Best 1v1 duelist. |
|
||||
| 2 | **Devastator** | Bomber | Launches grenades + missiles with large splash radius. Slow, massive damage. |
|
||||
| 3 | **Sentinel** | Support | Deploys repair drones + turrets. Allies can attach. Mobile spawn point. |
|
||||
| 4 | **Ranger** | Stealth | Cloaks, fires a single high-damage sniper shot, recloaks. |
|
||||
| 5 | **Juggernaut** | Heavy | Armored fortress. Drops proximity mines, fires suppression bursts. Near-unkillable solo. |
|
||||
| 1 | **Warframe** | Interceptor | Very fast, rapid weak laser bursts. Built to close distance instantly and chip away at anything in range. |
|
||||
| 2 | **Striker** | Gunship | Super fast fire rate, very low damage lasers. Trades hitting power for volume of fire. |
|
||||
| 3 | **Deployer** | Bomber | Fast lasers plus an EMP mine dropped in your wake. Strong for area denial and covering a retreat. |
|
||||
| 4 | **Link Node** | Support | Lasers plus a small repair pack dropped for allies to pick up. Keeps a team topped off in prolonged fights. |
|
||||
| 5 | **Bastion** | Heavy | Tankier and slower, but its laser hits harder than anything else in the fleet. Anchors a push. |
|
||||
|
||||
---
|
||||
|
||||
### Race 4 — Mechanos Sovereignty ✅ Chosen
|
||||
**Weapon type:** Railgun / Drone / EMP
|
||||
**Visual:** Perfectly geometric chrome-and-gold ships. No organic curves. Modular, interchangeable parts. Clearly machine-made.
|
||||
**Feel:** Pure precision AI. Railgun sniping, drone swarms, and tactical disruption.
|
||||
**Weapon type:** Cannon / Missile
|
||||
**Visual:** Heavy industrial war machines, chrome-and-gunmetal plating, red accent lighting. Modular, interchangeable parts. Clearly machine-made.
|
||||
**Feel:** Brute-force industrial muscle. Durable, hard-hitting, built to grind a fight down rather than outmaneuver it.
|
||||
|
||||
| # | Ship | Role | Description |
|
||||
|---|------|------|-------------|
|
||||
| 1 | **Warframe** | Interceptor | Fires precise railgun bursts. Fast. Rewards aim skill. |
|
||||
| 2 | **Fabricator** | Bomber | Deploys explosive drone clusters — set-and-forget area denial. |
|
||||
| 3 | **Core Hub** | Support | Broadcasts repair nanobots to nearby allies. Creates mobile spawn beacon. |
|
||||
| 4 | **Phantom Unit** | Stealth | Hacks enemy targeting — turns off their HUD radar briefly. Hard to detect. |
|
||||
| 5 | **Siege Engine** | Heavy | Locks into stationary mode for massive railgun barrage. Vulnerable while moving. |
|
||||
| 1 | **Sentinel** | Interceptor | A light scout mech with twin rapid cannons. Fast and maneuverable for a Mechanos hull. |
|
||||
| 2 | **Vanguard** | Gunship | Dual autocannons built for sustained fire. Durable enough to hold a line, fast enough to reposition. |
|
||||
| 3 | **Ravager** | Bomber | Drops heavy ordnance and mines from its cargo pods. Best used to seal off a chokepoint. |
|
||||
| 4 | **Aegis** | Support | Projects a short-range shield and deploys a repair drone for nearby allies. |
|
||||
| 5 | **Colossus** | Heavy | A walking fortress bristling with cannons. Slow and telegraphed, but absorbs enormous damage. |
|
||||
|
||||
---
|
||||
|
||||
### Race 5 — Void Wraiths ✅ Chosen
|
||||
**Weapon type:** Dark Energy / Gravity / Phase
|
||||
**Visual:** Inky black ships with white particle trails. Look like holes in space. Shifting, unstable edges. Eerie.
|
||||
**Feel:** Terrifying and unpredictable. Gravity wells, phase attacks, hard to pin down.
|
||||
### Race 3 — Vorg Swarm ✅ Chosen
|
||||
**Weapon type:** Bio / Acid (DoT)
|
||||
**Visual:** Organic insectoid creatures rather than built ships — chitin, wings, bioluminescent glow. No two look mechanically alike.
|
||||
**Feel:** Chaotic organic swarm. Corrosive damage-over-time chips away at anyone who lingers nearby.
|
||||
|
||||
| # | Ship | Role | Description |
|
||||
|---|------|------|-------------|
|
||||
| 1 | **Shade** | Interceptor | Partially phases — hard to hit. Fires void energy bolts. |
|
||||
| 2 | **Rift Caster** | Bomber | Opens gravity rifts that pull nearby enemies toward the center then collapse. |
|
||||
| 3 | **Nexus Wraith** | Support | Creates phase portals allies can teleport through. Ally rally point. |
|
||||
| 4 | **Specter** | Stealth | Fully phased and invisible. Only visible for 0.3s when firing. |
|
||||
| 5 | **Void Titan** | Heavy | Absorbs incoming damage, then releases it all in a single omni-directional burst. |
|
||||
| 1 | **Stinger** | Interceptor | Fast, acid shots with light damage-over-time. Swarms a target from range. |
|
||||
| 2 | **Spitter** | Gunship | Faster-firing acid with a stronger damage-over-time effect. Sustained corrosive pressure. |
|
||||
| 3 | **Broodling** | Bomber | Normal acid shots that also spawn a small slowing swarm cloud. Locks down a retreat or chokepoint. |
|
||||
| 4 | **Nurse** | Support | Acid shots plus a small health/regeneration pack dropped for allies. |
|
||||
| 5 | **Behemoth** | Heavy | Tankier and slower, with heavy acid shots that carry a large damage-over-time effect. The swarm's apex predator. |
|
||||
|
||||
---
|
||||
|
||||
@@ -63,8 +63,8 @@ From the 10 concepts below, races **1 (Terran Republic)**, **4 (Mechanos Soverei
|
||||
### Race 2 — Xel'Nara Collective
|
||||
**Weapon type:** Laser / Crystal Energy | **Feel:** Alien elegance, glass cannon
|
||||
|
||||
### Race 3 — Vorg Swarm
|
||||
**Weapon type:** Bio / Organic (acid, spores) | **Feel:** Zergs in space, DOT chaos
|
||||
### Race 5 — Void Wraiths
|
||||
**Weapon type:** Dark Energy / Gravity / Phase | **Feel:** Terrifying and unpredictable, gravity wells and phase attacks, hard to pin down
|
||||
|
||||
### Race 6 — Solari Imperium
|
||||
**Weapon type:** Plasma / Solar Fire | **Feel:** Ancient empire, slow and devastating
|
||||
|
||||
@@ -22,3 +22,5 @@ var bullet_damage: int = 40
|
||||
var player_name: String = ""
|
||||
var player_race: int = 0
|
||||
var player_ship_path: String = ""
|
||||
var player_ship_scale: float = 1.0
|
||||
var player_ship_speed_factor: float = 1.0
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
extends CanvasLayer
|
||||
|
||||
# Movement speed factor by role, shared across all 3 races so e.g. every
|
||||
# race's Interceptor moves at the same speed as every other race's.
|
||||
const SPEED_BY_ROLE := {
|
||||
"Interceptor": 1.3,
|
||||
"Gunship": 1.15,
|
||||
"Bomber": 1.0,
|
||||
"Support": 0.9,
|
||||
"Heavy": 0.7,
|
||||
}
|
||||
|
||||
const RACES := [
|
||||
{
|
||||
"id": 1, "name": "TERRAN REPUBLIC", "sub": "Angular gray-blue military ships, standard balanced fighters",
|
||||
@@ -8,27 +18,27 @@ const RACES := [
|
||||
{
|
||||
"name": "WARFRAME", "role": "Interceptor",
|
||||
"desc": "Very fast, rapid weak laser bursts. Built to close distance instantly and chip away at anything in range. Low individual hit strength but a relentless rate of fire punishes anyone who stands still.",
|
||||
"path": "res://assets/images/ships/terran/warframe.png",
|
||||
"path": "res://assets/images/ships/terran/warframe.png", "scale": 0.229, "speed_factor": SPEED_BY_ROLE.Interceptor,
|
||||
},
|
||||
{
|
||||
"name": "STRIKER", "role": "Gunship",
|
||||
"desc": "Super fast fire rate, very low damage lasers. Trades hitting power for volume — the more shots in the air, the more that connect. Best flown aggressively, applying constant pressure rather than picking single shots.",
|
||||
"path": "res://assets/images/ships/terran/striker.png",
|
||||
"path": "res://assets/images/ships/terran/striker.png", "scale": 0.244, "speed_factor": SPEED_BY_ROLE.Gunship,
|
||||
},
|
||||
{
|
||||
"name": "DEPLOYER", "role": "Bomber",
|
||||
"desc": "Fast lasers plus an EMP mine dropped in your wake. Punishes anyone chasing too closely and disables systems on contact. Strong for area denial and covering a retreat.",
|
||||
"path": "res://assets/images/ships/terran/deployer.png",
|
||||
"path": "res://assets/images/ships/terran/deployer.png", "scale": 0.265, "speed_factor": SPEED_BY_ROLE.Bomber,
|
||||
},
|
||||
{
|
||||
"name": "LINK NODE", "role": "Support",
|
||||
"desc": "Standard lasers plus a small repair pack dropped for allies to pick up. Keeps a team topped off in prolonged fights. Not built to duel alone — stay near the fight, not in the middle of it.",
|
||||
"path": "res://assets/images/ships/terran/link_node.png",
|
||||
"path": "res://assets/images/ships/terran/link_node.png", "scale": 0.329, "speed_factor": SPEED_BY_ROLE.Support,
|
||||
},
|
||||
{
|
||||
"name": "BASTION", "role": "Heavy",
|
||||
"desc": "Tankier and slower, but its laser hits harder than anything else in the fleet. Built to anchor a push and absorb damage while dealing it back. Discourages anyone from engaging head-on.",
|
||||
"path": "res://assets/images/ships/terran/bastion.png",
|
||||
"path": "res://assets/images/ships/terran/bastion.png", "scale": 0.283, "speed_factor": SPEED_BY_ROLE.Heavy,
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -39,27 +49,27 @@ const RACES := [
|
||||
{
|
||||
"name": "SENTINEL", "role": "Interceptor",
|
||||
"desc": "A light scout mech with twin rapid cannons. Fast and maneuverable for a Mechanos hull, built to screen the front line and harass before the heavier machines arrive.",
|
||||
"path": "res://assets/images/ships/mech/sentinel.png",
|
||||
"path": "res://assets/images/ships/mech/sentinel.png", "scale": 0.205, "speed_factor": SPEED_BY_ROLE.Interceptor,
|
||||
},
|
||||
{
|
||||
"name": "VANGUARD", "role": "Gunship",
|
||||
"desc": "Dual autocannons built for sustained fire. Sits between the light scouts and the heavy machines — durable enough to hold a line, fast enough to reposition when it breaks.",
|
||||
"path": "res://assets/images/ships/mech/vanguard.png",
|
||||
"path": "res://assets/images/ships/mech/vanguard.png", "scale": 0.266, "speed_factor": SPEED_BY_ROLE.Gunship,
|
||||
},
|
||||
{
|
||||
"name": "RAVAGER", "role": "Bomber",
|
||||
"desc": "Drops heavy ordnance and mines from its cargo pods. Slow to turn but devastating to anything caught in the blast radius. Best used to seal off a chokepoint.",
|
||||
"path": "res://assets/images/ships/mech/ravager.png",
|
||||
"path": "res://assets/images/ships/mech/ravager.png", "scale": 0.25, "speed_factor": SPEED_BY_ROLE.Bomber,
|
||||
},
|
||||
{
|
||||
"name": "AEGIS", "role": "Support",
|
||||
"desc": "Projects a short-range shield and deploys a repair drone for nearby allies. Doesn't hit hard on its own — its job is keeping everyone else alive long enough to win the fight.",
|
||||
"path": "res://assets/images/ships/mech/aegis.png",
|
||||
"path": "res://assets/images/ships/mech/aegis.png", "scale": 0.248, "speed_factor": SPEED_BY_ROLE.Support,
|
||||
},
|
||||
{
|
||||
"name": "COLOSSUS", "role": "Heavy",
|
||||
"desc": "A walking fortress bristling with cannons. Slow and telegraphed, but absorbs enormous damage and returns it with interest. Usually the last thing standing in an engagement.",
|
||||
"path": "res://assets/images/ships/mech/colossus.png",
|
||||
"path": "res://assets/images/ships/mech/colossus.png", "scale": 0.252, "speed_factor": SPEED_BY_ROLE.Heavy,
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -70,27 +80,27 @@ const RACES := [
|
||||
{
|
||||
"name": "STINGER", "role": "Interceptor",
|
||||
"desc": "Fast, acid shots with light damage-over-time. Built to swarm a target from range, applying just enough acid to wear an enemy down before backing off.",
|
||||
"path": "res://assets/images/ships/vorg/stinger.png",
|
||||
"path": "res://assets/images/ships/vorg/stinger.png", "scale": 0.254, "speed_factor": SPEED_BY_ROLE.Interceptor,
|
||||
},
|
||||
{
|
||||
"name": "SPITTER", "role": "Gunship",
|
||||
"desc": "Faster-firing acid with a stronger damage-over-time effect. Trades some speed for sustained corrosive pressure — anything it tags keeps taking damage long after contact.",
|
||||
"path": "res://assets/images/ships/vorg/spitter.png",
|
||||
"path": "res://assets/images/ships/vorg/spitter.png", "scale": 0.247, "speed_factor": SPEED_BY_ROLE.Gunship,
|
||||
},
|
||||
{
|
||||
"name": "BROODLING", "role": "Bomber",
|
||||
"desc": "Normal acid shots that also spawn a small slowing swarm cloud. The cloud lingers, fouling movement for anyone caught inside it — ideal for locking down a retreat or a chokepoint.",
|
||||
"path": "res://assets/images/ships/vorg/broodling.png",
|
||||
"path": "res://assets/images/ships/vorg/broodling.png", "scale": 0.404, "speed_factor": SPEED_BY_ROLE.Bomber,
|
||||
},
|
||||
{
|
||||
"name": "NURSE", "role": "Support",
|
||||
"desc": "Acid shots plus a small health/regeneration pack dropped for allies. Keeps the swarm alive in extended fights, at the cost of raw offensive power.",
|
||||
"path": "res://assets/images/ships/vorg/nurse.png",
|
||||
"path": "res://assets/images/ships/vorg/nurse.png", "scale": 0.271, "speed_factor": SPEED_BY_ROLE.Support,
|
||||
},
|
||||
{
|
||||
"name": "BEHEMOTH", "role": "Heavy",
|
||||
"desc": "Tankier and slower, with heavy acid shots that carry a large damage-over-time effect. The swarm's apex predator — absorbs punishment while its acid keeps eating away at anyone nearby.",
|
||||
"path": "res://assets/images/ships/vorg/behemoth.png",
|
||||
"path": "res://assets/images/ships/vorg/behemoth.png", "scale": 0.171, "speed_factor": SPEED_BY_ROLE.Heavy,
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -193,6 +203,8 @@ func _show_ship_selection() -> void:
|
||||
|
||||
func _on_ship_chosen(ship: Dictionary) -> void:
|
||||
GameConfig.player_ship_path = ship.path
|
||||
GameConfig.player_ship_scale = ship.scale
|
||||
GameConfig.player_ship_speed_factor = ship.speed_factor
|
||||
GameConfig.team_selected.emit()
|
||||
queue_free()
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ script = ExtResource("1_0e48y")
|
||||
shape = SubResource("CircleShape2D_2uxl3")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=2083904209]
|
||||
scale = Vector2(0.229, 0.229)
|
||||
texture = ExtResource("2_epypp")
|
||||
|
||||
[node name="VisibleOnScreenNotifier2D" type="VisibleOnScreenNotifier2D" parent="." unique_id=1504818491]
|
||||
|
||||
@@ -25,6 +25,7 @@ func _init_player() -> void:
|
||||
var sprite := get_node_or_null("Sprite2D")
|
||||
if sprite and not GameConfig.player_ship_path.is_empty():
|
||||
sprite.texture = load(GameConfig.player_ship_path)
|
||||
sprite.scale = Vector2.ONE * GameConfig.player_ship_scale
|
||||
set_physics_process(true)
|
||||
_respawn()
|
||||
|
||||
@@ -47,12 +48,14 @@ func _physics_process(delta: float) -> void:
|
||||
rotation -= GameConfig.ship_rotation_speed * delta
|
||||
|
||||
# 3. THRUST
|
||||
var thrust := GameConfig.ship_thrust * GameConfig.player_ship_speed_factor
|
||||
var max_speed := GameConfig.ship_max_speed * GameConfig.player_ship_speed_factor
|
||||
if Input.is_action_pressed("move_up"):
|
||||
velocity += Vector2.UP.rotated(rotation) * GameConfig.ship_thrust * delta
|
||||
velocity += Vector2.UP.rotated(rotation) * thrust * delta
|
||||
if Input.is_action_pressed("move_down"):
|
||||
velocity += Vector2.DOWN.rotated(rotation) * GameConfig.ship_thrust * delta
|
||||
velocity += Vector2.DOWN.rotated(rotation) * thrust * delta
|
||||
|
||||
velocity = velocity.limit_length(GameConfig.ship_max_speed)
|
||||
velocity = velocity.limit_length(max_speed)
|
||||
|
||||
move_and_slide()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user