Godot 4.6
Star Freight graphical client.
Pixel sprite rendering surface for the Star Freight space merchant RPG. Python engine stays authoritative — Godot renders what the engine tells it.
Run
Open in Godot 4.6 → Press F5
Bridge
starfreight rpc # Python engine serves state via JSON-RPC
Import
python scripts/import_packs.py --subjects sera_vale,thal
Features
A thin, focused rendering client.
Sprite Packs
8-direction pixel sprites with albedo, normal, and depth maps. 48×48 transparent PNGs loaded via manifest.json.
Engine Bridge
JSON-RPC 2.0 over stdio. Godot spawns the Python engine as a subprocess — turn-based latency is invisible.
Normal Lighting
CanvasTexture combines albedo + normal maps for dynamic point light rendering on 2D sprites.
Architecture
Two-repo split
star-freight (Python) star-freight-client (Godot)
┌─────────────────┐ ┌────────────────────────┐
│ portlight.engine │─JSON-RPC─│ engine_bridge.gd │
│ portlight.rpc │ (stdio) │ pack_loader.gd │
│ portlight.content│ │ character_node.gd │
└─────────────────┘ │ assets/characters/ │
└────────────────────────┘ RPC contract
ping → { status, version }
get_roster → { crew: [...], count }
get_crew_member → crew member dict
get_campaign → campaign summary
shutdown → { status }