SF Star Freight Client
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 }