Fast Frigate Model Specification

Issue: #598 Status: Draft Ship class: fast_frigate Builder method: _createFastFrigateMesh() in cockpitView.js

Design Intent

Sleek angular warship from the same shipyard as the cargo hauler — sharing materials, structural language (exposed trusses, torus accents, modular mounting), and engine design — while being distinctly smaller, faster, and more aggressive.

Immutable Constraints

Constraint Value
RCS pod positions [±3.5, ±3.5, ±6] (physics-dependent)
Engine plume group name 'enginePlume' (single plume at X=0)
Nav lights group name 'navLights'
_addRCSPods() params positions, 0.8, 0.6, 0.2, 1.5, 0.4
Forward axis +Y
Build scale 1 unit = 1 meter, scaled by shipVisualScale
Ship envelope ~18 m long × 12 m wide × 10 m tall

Materials (12)

Identical palette to cargo hauler for faction consistency.

Name Color Metalness Roughness Notes
hullMat 0x666666 0.7 0.4 Main hull plates
hullDarkMat 0x555555 0.7 0.5 Recessed/worn panels
cmdMat 0x777777 0.6 0.3 Bridge/cockpit
frameMat 0x555555 0.8 0.3 Structural trusses
podMat 0x887744 0.5 0.5 Weapon hardpoint housings (= hauler cargo pod)
doorMat 0x776633 0.5 0.6 Weapon bay doors
tankMat 0x5a5a6a 0.6 0.4 Fuel tanks
radiatorMat 0x334455 0.3 0.6 Radiator panels (DoubleSide)
pipeMat 0x5a5a5a 0.6 0.4 Fuel/coolant piping
nozzleMat 0x333333 0.9 0.2 Engine internals
glassMat 0x112244 0.9 0.1 Viewports (emissive 0x0a1828)
armorMat 0x887744 0.5 0.5 Armor plate accents (= hauler dockMat)

Geometry Sections (~170 meshes)

A. Structural Spine (Y = −7 to +7) — 16 meshes

Shorter, tighter version of hauler’s open-frame truss — the key faction unifier.

  • 4 longitudinal rails: BoxGeometry(0.4, 14, 0.4) at [±2.5, 0, ±2.5] — frameMat
  • 4 rib rings at Y = −5, −1, +3, +7:
    • Outer frame: BoxGeometry(5.5, 0.3, 5.5) — hullDarkMat
    • X cross-member: BoxGeometry(5, 0.25, 0.25) — frameMat
    • Z cross-member: BoxGeometry(0.25, 0.25, 5) — frameMat

B. Forward Hull Plates (Y = +3 to +9) — 8 meshes

Angular/faceted plates forming a tapered wedge — military look distinct from hauler’s boxy modules.

  • 4 main hull plates (dorsal pair, ventral pair): trapezoidal BoxGeometry sections — hullMat/hullDarkMat
    • Dorsal plates: BoxGeometry(5, 6, 0.2) at Z = +2.5, angled inward
    • Ventral plates: BoxGeometry(5, 6, 0.2) at Z = −2.5, angled inward
  • 2 side plates: BoxGeometry(0.2, 6, 5) at X = ±2.5 — hullMat
  • Nose cap: ConeGeometry(2.0, 3, 6) at (0, 10.5, 0) — cmdMat (6-sided = faceted)
  • Nose accent ring: TorusGeometry(2.0, 0.15, 6, 24) at Y = +9, rotated π/2 on X — frameMat

C. Bridge/Cockpit (Y = +6 to +9, dorsal offset Z = +2.2) — 6 meshes

Small angular cockpit on dorsal surface — asymmetric like hauler’s command module.

  • Bridge housing: BoxGeometry(3.5, 3, 2.5) at (0, 7.5, 2.2) — cmdMat
  • 2 side accent plates: BoxGeometry(0.1, 2.5, 2) at X = ±1.8 — hullDarkMat
  • 2 viewport strips: BoxGeometry(2.5, 0.15, 0.6) at Y = 8.0 and 7.0, Z = 3.5 — glassMat
  • Torus accent: TorusGeometry(1.5, 0.1, 6, 16) at Y = 6, Z = 2.2 — frameMat

D. Aft Engineering (Y = −5 to −7) — 9 meshes

Compact engineering hull — same structural language as hauler aft section.

  • Hull: BoxGeometry(4.5, 4, 4.5) at (0, −5.5, 0) — hullMat
  • Reactor housing (dorsal): CylinderGeometry(1.2, 1.2, 4, 8) at (0, −5.5, 2.8) — tankMat
  • Mount frame: BoxGeometry(5.5, 0.4, 2) at (0, −3.5, 0) — frameMat
  • 2 stiffener struts: BoxGeometry(0.2, 3, 0.2) flanking — frameMat
  • 4 equipment box greebles: BoxGeometry(0.8, 0.8, 0.6) — hullDarkMat

E. Engine Bell (single) — 3 meshes

Same design language as hauler (truncated cone + inner nozzle + lip ring) but single and smaller.

  • Outer bell: CylinderGeometry(1.2, 2.5, 4, 12) at (0, −9.5, 0) — frameMat
  • Inner nozzle: CylinderGeometry(0.8, 2.0, 3.2, 10) at (0, −9.7, 0) — nozzleMat
  • Lip ring: TorusGeometry(2.5, 0.2, 6, 16) at Y = −11.5 — nozzleMat

F. Fuel Tanks (2, flanking aft) — 12 meshes

Same visual language as hauler: cylinders + squished sphere end caps + torus mounting straps.

Per tank (at X = ±2.2):

  • Tank body: CylinderGeometry(1.0, 1.0, 8, 8) — tankMat
  • 2 end caps: SphereGeometry(1.0, 8, 6) scaled (1, 0.4, 1) — tankMat
  • 2 mounting straps: TorusGeometry(1.1, 0.1, 4, 12) — frameMat
  • Transfer pipe: CylinderGeometry(0.15, 0.15, 3, 6) angled to engine — pipeMat

G. Weapon Hardpoints (port/stbd, Y = +1 to +4) — 12 meshes

Military distinction — podMat/doorMat (= hauler cargo accent colors) for faction-consistent weapon mounts with same “pylon + modular pod” language.

Per hardpoint (at X = ±4.5):

  • Mount pylon: BoxGeometry(1.5, 0.3, 0.3) — frameMat
  • Weapon pod: BoxGeometry(1.2, 3, 1.2) — podMat
  • Door panel: BoxGeometry(0.15, 2, 1) outward-facing — doorMat
  • 2 latch bars: BoxGeometry(0.8, 0.1, 0.1) — frameMat
  • Mounting strap: TorusGeometry(0.7, 0.08, 4, 8) — frameMat

H. Swept Fins (structurally connected) — 8 meshes

Larger than current, connected to spine rails via visible struts — no more floating.

Per fin (port at X = −5, stbd at X = +5):

  • Fin body: BoxGeometry(4, 0.15, 2.5) at Y ≈ −2, rotated ±20° on Z — hullMat
  • Root strut: BoxGeometry(0.2, 0.2, 2) from spine rail to fin root — frameMat
  • Tip strut: BoxGeometry(0.2, 0.2, 1.5) at fin tip — frameMat
  • Leading-edge accent: BoxGeometry(4, 0.08, 0.15) on leading edge — hullDarkMat

I. Radiator Panels (short booms) — 10 meshes

Smaller version of hauler radiators: thin panel + subdivision lines + boom + hinge joint.

Per radiator (at X = ±5.5):

  • Panel: BoxGeometry(0.08, 6, 4) — radiatorMat (DoubleSide)
  • 2 subdivision lines: BoxGeometry(0.1, 0.05, 4) — frameMat
  • Boom: CylinderGeometry(0.15, 0.15, 3, 6) rotated π/2 on Z — frameMat
  • Hinge sphere: SphereGeometry(0.2, 6, 4) — frameMat

J. Ventral Sensor/Targeting Array (Z = −3.5) — 8 meshes

Warship distinction — replaces hauler’s docking port with targeting sensors.

  • Housing: BoxGeometry(2.5, 3, 1.5) at (0, 1.5, −3.5) — hullMat
  • Primary lens: SphereGeometry(0.5, 8, 6) — glassMat
  • 2 secondary lenses: SphereGeometry(0.3, 6, 4) — glassMat
  • 3 scanner bars: BoxGeometry(0.1, 0.1, 1.5) — frameMat
  • Mounting bracket: BoxGeometry(0.2, 2, 0.2) — frameMat

K. Antennas & Sensors — 9 meshes

Same design elements as hauler: dorsal sensor dome, comm dish, whip antenna, sensor housings.

  • Sensor dome: SphereGeometry(0.6, 8, 6, 0, 2π, 0, π/2) (hemisphere) at (0, 9, 3.5) — cmdMat
  • Dome mast: CylinderGeometry(0.1, 0.1, 1.5, 6) — frameMat
  • Antenna mast: CylinderGeometry(0.08, 0.08, 3, 6) at (0, 12.5, 0) — frameMat
  • Comm dish: ConeGeometry(0.6, 0.4, 8) inverted at mast top — cmdMat
  • Aft whip: CylinderGeometry(0.05, 0.05, 2, 4) at (0, −7, −2.5) — frameMat
  • 2 sensor housings: BoxGeometry(0.5, 0.5, 0.4) flanking bridge — hullMat
  • 2 sensor lenses: SphereGeometry(0.15, 6, 4) — glassMat

L. Ventral Keel — 4 meshes

  • Keel beam: BoxGeometry(0.8, 12, 0.4) at (0, 0, −3.2) — frameMat
  • 3 ribs: BoxGeometry(2.5, 0.2, 0.3) at Y = −4, 0, +4 — frameMat

M. RCS Integration Struts — 8 meshes

Each pod gets a strut connecting it to the nearest spine rail corner.

  • 8 struts: BoxGeometry(0.15, 0.15, length) computed from pod position to nearest spine rail corner at [±2.5, ±2.5] — frameMat

N. Surface Greebles — 16 meshes

  • 4 panel lines on dorsal hull: BoxGeometry(3, 0.05, 0.05) — hullDarkMat
  • 4 equipment boxes on engineering hull: BoxGeometry(0.6, 0.6, 0.4) — hullDarkMat
  • 4 fuel conduits: CylinderGeometry(0.1, 0.1, 2, 4) — pipeMat
  • 4 armor plate accents on bridge: BoxGeometry(1.2, 0.6, 0.08) — armorMat

O. Navigation Lights — 6 meshes

All using SphereGeometry(0.4, 8, 8) with MeshBasicMaterial({ toneMapped: false }):

Light Color Position Location
Port 0xff0000 (−7, −2, 1) Port fin tip
Starboard 0x00ff00 (7, −2, 1) Stbd fin tip
Forward 0xffffff (0, 13.5, 0) Antenna mast tip
Aft 0xffaa00 (0, −12, 0) Below engine bell
Dorsal strobe 0xffffff (0, 10, 3.5) Dome mast tip
Ventral strobe 0xffffff (0, 1.5, −4.5) Below sensor array

P. Engine Plume (triple-layer, single) — 3 meshes

Same hauler plume colors, single nozzle.

Layer Color Opacity Radius scale Height scale
Outer 0x4488ff 0.70 1.0× 1.0×
Inner 0xaaddff 0.80 0.6× 0.6×
Core 0xddffff 0.90 0.3× 0.35×

Base radius = bell bottom (2.5 m), plume height = 12 m. Group positioned at bell bottom: Y = −11.5 − 6 = −17.5.

Q. RCS Pods — ~56 meshes

Via _addRCSPods(), unchanged. Positions: [±3.5, ±3.5, ±6].

Total Estimated Mesh Count

~170 meshes (excluding RCS ~56) = ~226 total.

Verification Checklist

  • RCS pods visibly attached to hull (struts, no floating)
  • Toggle thrust: single plume with 3-layer glow
  • Nav lights blink correctly (6 lights)
  • Faction consistency: same color palette, truss spine, torus accents, engine design as cargo hauler
  • Distinct silhouette: angular wedge vs hauler’s boxy frame
  • No console errors from missing group names (enginePlume, navLights, rcsPods)
  • Ship envelope within ~18 m × 12 m × 10 m

Back to top

Galaxy — Kubernetes-based multiplayer space game

This site uses Just the Docs, a documentation theme for Jekyll.