From 19f81d4887f69dad053708d551e37049c9cc9143 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Mon, 23 Feb 2026 20:17:47 +0100 Subject: [PATCH] =?UTF-8?q?fix(assets):=20PR=20#57=20review=20=E2=80=94=20?= =?UTF-8?q?docs,=20uid,=20citation=20fixes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix client sprite naming in README (files are _64.png, not .png) - Clarify --path working directory (renderer/ from repo root) - Remove /sprite-gen reference (skill not in branch yet) - Add D-043 citation on outline color in render_export.gd - Add uid to wall_bar_green.tscn for reproducible imports - Note wall_bar_green has no rendered sprites yet - Note npc_generic capsule symmetry is by design (D-044) - Add outline + D-033 tint compatibility guidance Co-Authored-By: Claude Opus 4.6 --- renderer/README.md | 16 ++++++++-------- renderer/models/wall_bar_green.tscn | 2 +- renderer/render_export.gd | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/renderer/README.md b/renderer/README.md index 8002d9bfa..1725f24ab 100644 --- a/renderer/README.md +++ b/renderer/README.md @@ -47,24 +47,24 @@ Outline implementation: alpha-mask dilation + flat color fill. Outline width in ### Command Line ```bash -# From the renderer/ directory -godot --path . --headless --quit-after 1200 res://render_scene.tscn -- +# From the repository root +godot --path renderer/ --headless --quit-after 1200 res://render_scene.tscn -- ``` -Or use the `/sprite-gen` skill which wraps this command and handles output placement. +The `/sprite-gen` skill wraps this command and handles output placement. ### Adding a New Model 1. Create `renderer/models/.tscn` — root node is a `MeshInstance3D` (or `Node3D` with children) 2. Center the mesh at the origin 3. Use a flat `StandardMaterial3D` (no baked shadows — just albedo color + roughness) -4. Run: `/sprite-gen ` +4. Run: `godot --path renderer/ --headless --quit-after 1200 res://render_scene.tscn -- ` 5. Output: 12 PNGs in `renderer/output/` (4 directions × 3 resolutions) 6. Runtime sprites: copy 64px variants to `client/assets/sprites/` ### Material Guidelines -- **Entity sprites**: neutral flat material (albedo Color(0.5, 0.5, 0.5)). D-033 relationship color tinting applied at runtime. +- **Entity sprites**: neutral flat material (albedo Color(0.5, 0.5, 0.5)). D-033 relationship color tinting applied at runtime by the client's entity renderer. Outline color (#333340 per D-043) is compatible with all D-033 tint colors — the dark blue-grey outline remains visible against teal, green, amber, and red entity tints. - **Structural sprites**: use zone-appropriate texture (`textures/wall_institutional_era1.png`, etc.) - No specularity: `metallic = 0.0`, `roughness = 0.9` - No emission, no normal maps — shape is the signal @@ -74,8 +74,8 @@ Or use the `/sprite-gen` skill which wraps this command and handles output place | Model | File | Type | Notes | |-------|------|------|-------| | `wall_structural` | `models/wall_structural.tscn` | Structure | 1.0×0.8×0.2 box, institutional era-1 texture | -| `wall_bar_green` | `models/wall_bar_green.tscn` | Structure | 1.0×0.8×0.2 box, green panel texture | -| `npc_generic` | `models/npc_generic.tscn` | Entity | Capsule silhouette, neutral grey, 24×32px footprint | +| `wall_bar_green` | `models/wall_bar_green.tscn` | Structure | 1.0×0.8×0.2 box, green panel texture (model only — no sprites rendered yet) | +| `npc_generic` | `models/npc_generic.tscn` | Entity | Capsule silhouette, neutral grey, 24×32px footprint. Rotationally symmetric — north/south and east/west pairs are near-identical by design (asymmetric silhouettes come from named NPC models with identifying features per D-044). | ## Output Naming Convention @@ -92,7 +92,7 @@ Directions: `north`, `east`, `south`, `west` (model rotated 0°, 90°, 180°, 27 64px sprites are deployed to: `client/assets/sprites/` -Naming convention at the client side is `_.png` (64px only — the 1024 and 256 variants stay in `renderer/output/` as pipeline intermediates). +Naming convention at the client side matches the pipeline output: `__64.png`. The 1024 and 256 variants stay in `renderer/output/` as pipeline intermediates (gitignored). ## Design Constraints diff --git a/renderer/models/wall_bar_green.tscn b/renderer/models/wall_bar_green.tscn index 403726ce5..66b61ffac 100644 --- a/renderer/models/wall_bar_green.tscn +++ b/renderer/models/wall_bar_green.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=3 format=3] +[gd_scene load_steps=3 format=3 uid="uid://wallbargreen001"] [ext_resource type="Texture2D" path="res://textures/wall_bar_green_panels.png" id="1_wall_texture"] diff --git a/renderer/render_export.gd b/renderer/render_export.gd index 489da64b2..544dc9e3a 100644 --- a/renderer/render_export.gd +++ b/renderer/render_export.gd @@ -10,7 +10,7 @@ const ROTATIONS: PackedFloat64Array = [0.0, 90.0, 180.0, 270.0] @export var model_scene: PackedScene @export var output_name: String = "wall_structural" @export var outline_width_px: int = 4 # at 256 = 1px at 64 -@export var outline_color: Color = Color(0.2, 0.2, 0.25, 1.0) +@export var outline_color: Color = Color(0.2, 0.2, 0.25, 1.0) # #333340 per D-043 @export var render_now: bool = false: set(value): if value and model_scene: