Outpost Model (#600)

Overview

All three stations (Gateway Station, Lunar Gateway, Frontier Outpost) share a single procedural mesh: a detailed, industrial/utilitarian outpost with modular construction. The design replaces the earlier hub-and-ring model with a more visually interesting structure featuring a rotating habitation section, visible fuel storage, multiple docking ports, radiator panels, and antenna arrays.

The design language matches the existing faction aesthetic (cargo hauler, fast frigate) — gray metal tones, exposed structural elements, utilitarian construction.

Scale

  • Built at meter scale (1 unit = 1 m), then scaled by SHIP_VISUAL_SCALE_TRUE
  • Overall extent: ~120 m vertical (Y-axis = up)
  • Model Y-axis is the station’s long axis (spin axis for the hab section)

Materials

All materials use MeshStandardMaterial unless noted.

Name Color Metalness Roughness Notes
hullMat 0x666666 0.7 0.4 Main hull panels
cmdMat 0x777777 0.6 0.3 Command module accent
frameMat 0x555555 0.8 0.3 Structural frame/trusses
tankMat 0x5a5a6a 0.6 0.4 Fuel tanks
radiatorMat 0x334455 0.3 0.6 Radiator panels (DoubleSide)
panelMat 0x2244aa 0.3 0.7 Solar panels
glassMat 0x112244 0.9 0.1 Viewport glass (emissive: 0x0a1828)
dockMat 0x887744 0.5 0.5 Docking port hardware
windowMat MeshBasicMaterial 0x88aaff Window strips (unlit)
navLightMat MeshBasicMaterial 0xff0000 Red nav light
beaconMat MeshBasicMaterial 0x00ff88 Green approach beacons

Structure

A. Static Service Section (lower half, Y ≤ 10)

1. Central Spine

  • CylinderGeometry(8, 8, 50, 16) centered at Y=0
  • Main structural core connecting all modules
  • Uses hullMat

2. Docking Module

  • 4 docking ports at 90° intervals around spine at Y=−10
  • Each port: CylinderGeometry(5, 5, 8, 12) extending outward along ±X and ±Z
  • Guide rails: BoxGeometry(0.5, 2, 12) flanking each port
  • Approach beacons: green SphereGeometry(0.8) at port entrance (self-illuminating, beaconMat)

3. Fuel Storage

  • 4 spherical tanks at 45° angles between docking ports at Y=−10
  • SphereGeometry(8, 16, 12) at radius ~20 m from center
  • Cylindrical pylons connecting to spine
  • Transfer pipes: thin CylinderGeometry(0.3) to nearest docking ports

4. Radiator Panels

  • 2 pairs extending ±X at Y=−20
  • BoxGeometry(25, 0.15, 8) with support trusses underneath
  • Uses radiatorMat (DoubleSide for thin panel visibility)

5. Antenna Array

  • Bottom of spine (Y < −25)
  • Mast: CylinderGeometry(0.5, 0.5, 12, 8)
  • Large inverted dish: ConeGeometry(5, 3, 12) rotated π
  • 2 smaller side dishes on booms at ±X offsets

B. Spin Bearing (Y ≈ 10)

  • TorusGeometry(9, 1.5, 8, 24) — darker mechanical look
  • Uses frameMat
  • Marks the visual boundary between static and rotating sections

C. Rotating Hab Section (Y > 10)

Contained in a THREE.Group named 'habSection' that rotates around local Y-axis in the render loop at ~1 RPM (0.105 rad/s).

1. Hab Drum

  • CylinderGeometry(12, 12, 20, 20) at Y=22
  • 3 window strips: TorusGeometry at Y=15, 22, 29

2. Connecting Struts

  • 4 radial CylinderGeometry from drum exterior to inner shaft

3. Inner Shaft (zero-g corridor)

  • CylinderGeometry(3, 3, 20) through center of hab drum

4. Solar Panel Arms

  • 2 BoxGeometry(40, 0.2, 6) extending ±X from drum top at Y=32
  • Support trusses underneath
  • Rotate with hab section

D. Navigation Lights

Named group 'navLight' — blinks on 2-tick/8-tick cycle (existing logic).

  • Red light on antenna tip (bottom of station)
  • 4 white corner lights on docking port tips

Hab Section Rotation

In the station render loop, after nav light blink logic:

if (station._habSection === undefined) station._habSection = station.getObjectByName('habSection');
if (station._habSection) {
  station._habSection.rotation.y += 0.105 * cappedDt;
}

The cappedDt variable (frame delta time, already in scope) ensures smooth rotation independent of frame rate. ~1 RPM provides a subtle but visible spin effect.

Unchanged Behavior

  • Nav light blink pattern (2 on / 8 off) — unchanged
  • Map view cyan diamond indicators — unchanged
  • Station proximity warning (50 km) — unchanged
  • Station indicator CSS2D labels — unchanged
  • Station physics (gravity-only, fixed attitude in physics) — unchanged

Back to top

Galaxy — Kubernetes-based multiplayer space game

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