diff --git a/Makefile b/Makefile index 15df7e10c..a30c87a8d 100644 --- a/Makefile +++ b/Makefile @@ -64,7 +64,7 @@ help: @echo " make checklist-generate Validate checklists + print condition summary" @echo " make perf-baseline Run performance benchmarks and save baseline" @echo "" - @echo " make screenshot Ad-hoc visual capture (SCENARIO=name, default: fog_3state)" + @echo " make screenshot Ad-hoc visual capture (SCENARIO=name, default: atlas_GJ820Bc_Global)" @echo " make visual-movie Flow capture with contact sheet (FLOW=name)" @echo " make test-visual Run visual golden regression tests" @echo " make visual-update Regenerate visual goldens and stage for commit" diff --git a/client/tests/golden/visual/cursor_menu.png b/client/tests/golden/visual/cursor_menu.png deleted file mode 100644 index 16573152a..000000000 Binary files a/client/tests/golden/visual/cursor_menu.png and /dev/null differ diff --git a/client/tests/golden/visual/cursor_menu.png.import b/client/tests/golden/visual/cursor_menu.png.import deleted file mode 100644 index 7a4b40527..000000000 --- a/client/tests/golden/visual/cursor_menu.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://qlxaaip3fqic" -path="res://.godot/imported/cursor_menu.png-03cbe8a063e08efcd4283ce76f668ea1.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://tests/golden/visual/cursor_menu.png" -dest_files=["res://.godot/imported/cursor_menu.png-03cbe8a063e08efcd4283ce76f668ea1.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/client/tests/golden/visual/dialogue_open.png b/client/tests/golden/visual/dialogue_open.png deleted file mode 100644 index d650f5f91..000000000 Binary files a/client/tests/golden/visual/dialogue_open.png and /dev/null differ diff --git a/client/tests/golden/visual/dialogue_open.png.import b/client/tests/golden/visual/dialogue_open.png.import deleted file mode 100644 index 6104eb53b..000000000 --- a/client/tests/golden/visual/dialogue_open.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://oqbx8gwq1xta" -path="res://.godot/imported/dialogue_open.png-2e5a2dd99abe2817e4bb7ede8f83b0bf.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://tests/golden/visual/dialogue_open.png" -dest_files=["res://.godot/imported/dialogue_open.png-2e5a2dd99abe2817e4bb7ede8f83b0bf.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/client/tests/golden/visual/dialogue_with_monologue.png b/client/tests/golden/visual/dialogue_with_monologue.png deleted file mode 100644 index 893ef2852..000000000 Binary files a/client/tests/golden/visual/dialogue_with_monologue.png and /dev/null differ diff --git a/client/tests/golden/visual/dialogue_with_monologue.png.import b/client/tests/golden/visual/dialogue_with_monologue.png.import deleted file mode 100644 index ee4020414..000000000 --- a/client/tests/golden/visual/dialogue_with_monologue.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b2hctv70ar7al" -path="res://.godot/imported/dialogue_with_monologue.png-5193b3824e2195b1c7ca00bc005f9026.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://tests/golden/visual/dialogue_with_monologue.png" -dest_files=["res://.godot/imported/dialogue_with_monologue.png-5193b3824e2195b1c7ca00bc005f9026.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/client/tests/golden/visual/fog_3state.png b/client/tests/golden/visual/fog_3state.png deleted file mode 100644 index 9e0eec045..000000000 Binary files a/client/tests/golden/visual/fog_3state.png and /dev/null differ diff --git a/client/tests/golden/visual/fog_3state.png.import b/client/tests/golden/visual/fog_3state.png.import deleted file mode 100644 index 183cba57f..000000000 --- a/client/tests/golden/visual/fog_3state.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://bw4kxsno66sv3" -path="res://.godot/imported/fog_3state.png-b0193a736de6756c27053a3db24f9a12.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://tests/golden/visual/fog_3state.png" -dest_files=["res://.godot/imported/fog_3state.png-b0193a736de6756c27053a3db24f9a12.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/client/tests/golden/visual/fog_boundary.png b/client/tests/golden/visual/fog_boundary.png deleted file mode 100644 index 118a5e218..000000000 Binary files a/client/tests/golden/visual/fog_boundary.png and /dev/null differ diff --git a/client/tests/golden/visual/fog_boundary.png.import b/client/tests/golden/visual/fog_boundary.png.import deleted file mode 100644 index 9c8423a8f..000000000 --- a/client/tests/golden/visual/fog_boundary.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://7ol3rcrpienc" -path="res://.godot/imported/fog_boundary.png-7da06d227319f9c43ef7017ee082732a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://tests/golden/visual/fog_boundary.png" -dest_files=["res://.godot/imported/fog_boundary.png-7da06d227319f9c43ef7017ee082732a.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/client/tests/golden/visual/fog_boundary_replay.png b/client/tests/golden/visual/fog_boundary_replay.png deleted file mode 100644 index 4c52149e4..000000000 Binary files a/client/tests/golden/visual/fog_boundary_replay.png and /dev/null differ diff --git a/client/tests/golden/visual/fog_boundary_replay.png.import b/client/tests/golden/visual/fog_boundary_replay.png.import deleted file mode 100644 index ec6337cdd..000000000 --- a/client/tests/golden/visual/fog_boundary_replay.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://fpncie7mnyay" -path="res://.godot/imported/fog_boundary_replay.png-3e1acf3ef35450d1df230400b3003250.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://tests/golden/visual/fog_boundary_replay.png" -dest_files=["res://.godot/imported/fog_boundary_replay.png-3e1acf3ef35450d1df230400b3003250.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/client/tests/golden/visual/fog_debug.png b/client/tests/golden/visual/fog_debug.png deleted file mode 100644 index d6291c1bb..000000000 Binary files a/client/tests/golden/visual/fog_debug.png and /dev/null differ diff --git a/client/tests/golden/visual/fog_debug.png.import b/client/tests/golden/visual/fog_debug.png.import deleted file mode 100644 index 178b83fbd..000000000 --- a/client/tests/golden/visual/fog_debug.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://71e1yuyjdxn7" -path="res://.godot/imported/fog_debug.png-7d563b17499f08fbb82ec57bcdcc0e68.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://tests/golden/visual/fog_debug.png" -dest_files=["res://.godot/imported/fog_debug.png-7d563b17499f08fbb82ec57bcdcc0e68.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/client/tests/golden/visual/fog_diagonal.png b/client/tests/golden/visual/fog_diagonal.png deleted file mode 100644 index 83290796d..000000000 Binary files a/client/tests/golden/visual/fog_diagonal.png and /dev/null differ diff --git a/client/tests/golden/visual/fog_diagonal.png.import b/client/tests/golden/visual/fog_diagonal.png.import deleted file mode 100644 index a5e37c09e..000000000 --- a/client/tests/golden/visual/fog_diagonal.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://2owpogcjnewr" -path="res://.godot/imported/fog_diagonal.png-06416ee4adae921b884280dc73761ed3.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://tests/golden/visual/fog_diagonal.png" -dest_files=["res://.godot/imported/fog_diagonal.png-06416ee4adae921b884280dc73761ed3.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/client/tests/golden/visual/fog_live_hub.png b/client/tests/golden/visual/fog_live_hub.png deleted file mode 100644 index c44eda94b..000000000 Binary files a/client/tests/golden/visual/fog_live_hub.png and /dev/null differ diff --git a/client/tests/golden/visual/fog_live_hub.png.import b/client/tests/golden/visual/fog_live_hub.png.import deleted file mode 100644 index 6b4eb0978..000000000 --- a/client/tests/golden/visual/fog_live_hub.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dufvsap028rfw" -path="res://.godot/imported/fog_live_hub.png-a2756ff6cb45af238cc0a32ba70a705a.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://tests/golden/visual/fog_live_hub.png" -dest_files=["res://.godot/imported/fog_live_hub.png-a2756ff6cb45af238cc0a32ba70a705a.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/client/tests/golden/visual/fog_live_replay.png b/client/tests/golden/visual/fog_live_replay.png deleted file mode 100644 index 09d61a394..000000000 Binary files a/client/tests/golden/visual/fog_live_replay.png and /dev/null differ diff --git a/client/tests/golden/visual/fog_live_replay.png.import b/client/tests/golden/visual/fog_live_replay.png.import deleted file mode 100644 index 59de8985d..000000000 --- a/client/tests/golden/visual/fog_live_replay.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dmqmnfrjrk1u" -path="res://.godot/imported/fog_live_replay.png-4604646d390fbfac6491f513f667c5c6.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://tests/golden/visual/fog_live_replay.png" -dest_files=["res://.godot/imported/fog_live_replay.png-4604646d390fbfac6491f513f667c5c6.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/client/tests/golden/visual/fog_theater_replay.png b/client/tests/golden/visual/fog_theater_replay.png deleted file mode 100644 index 6076a9f31..000000000 Binary files a/client/tests/golden/visual/fog_theater_replay.png and /dev/null differ diff --git a/client/tests/golden/visual/fog_theater_replay.png.import b/client/tests/golden/visual/fog_theater_replay.png.import deleted file mode 100644 index a69ff3bbf..000000000 --- a/client/tests/golden/visual/fog_theater_replay.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://dgdt2rmql6hbb" -path="res://.godot/imported/fog_theater_replay.png-ef10fe62d9da045193422127e48853ba.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://tests/golden/visual/fog_theater_replay.png" -dest_files=["res://.godot/imported/fog_theater_replay.png-ef10fe62d9da045193422127e48853ba.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/client/tests/golden/visual/fog_zone_tint.png b/client/tests/golden/visual/fog_zone_tint.png deleted file mode 100644 index 7ca418129..000000000 Binary files a/client/tests/golden/visual/fog_zone_tint.png and /dev/null differ diff --git a/client/tests/golden/visual/fog_zone_tint.png.import b/client/tests/golden/visual/fog_zone_tint.png.import deleted file mode 100644 index c5d11e9d6..000000000 --- a/client/tests/golden/visual/fog_zone_tint.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://b8weq3wp6tybx" -path="res://.godot/imported/fog_zone_tint.png-5a5cd0f27eaf991e1b39709de687dcf4.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://tests/golden/visual/fog_zone_tint.png" -dest_files=["res://.godot/imported/fog_zone_tint.png-5a5cd0f27eaf991e1b39709de687dcf4.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/client/tests/golden/visual/hud_default.png b/client/tests/golden/visual/hud_default.png deleted file mode 100644 index cf448a4a2..000000000 Binary files a/client/tests/golden/visual/hud_default.png and /dev/null differ diff --git a/client/tests/golden/visual/hud_default.png.import b/client/tests/golden/visual/hud_default.png.import deleted file mode 100644 index e9a31a595..000000000 --- a/client/tests/golden/visual/hud_default.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://c5r4tk4yafj2r" -path="res://.godot/imported/hud_default.png-d3286d0b35f8bfaeab8436d9645c0c0d.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://tests/golden/visual/hud_default.png" -dest_files=["res://.godot/imported/hud_default.png-d3286d0b35f8bfaeab8436d9645c0c0d.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/client/tests/golden/visual/minimap_stance.png b/client/tests/golden/visual/minimap_stance.png deleted file mode 100644 index 5927542a0..000000000 Binary files a/client/tests/golden/visual/minimap_stance.png and /dev/null differ diff --git a/client/tests/golden/visual/minimap_stance.png.import b/client/tests/golden/visual/minimap_stance.png.import deleted file mode 100644 index 397132ea9..000000000 --- a/client/tests/golden/visual/minimap_stance.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://0pym2n4nq12a" -path="res://.godot/imported/minimap_stance.png-abbfd0259479cd17651bee48cdc7f7b8.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://tests/golden/visual/minimap_stance.png" -dest_files=["res://.godot/imported/minimap_stance.png-abbfd0259479cd17651bee48cdc7f7b8.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/client/tests/golden/visual/npc_in_fog.png b/client/tests/golden/visual/npc_in_fog.png deleted file mode 100644 index e1cbf214d..000000000 Binary files a/client/tests/golden/visual/npc_in_fog.png and /dev/null differ diff --git a/client/tests/golden/visual/npc_in_fog.png.import b/client/tests/golden/visual/npc_in_fog.png.import deleted file mode 100644 index fe3f0617e..000000000 --- a/client/tests/golden/visual/npc_in_fog.png.import +++ /dev/null @@ -1,40 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://cc5nmdpumq6t" -path="res://.godot/imported/npc_in_fog.png-e8a24e029e5c640a7daee7d3f2838bdc.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://tests/golden/visual/npc_in_fog.png" -dest_files=["res://.godot/imported/npc_in_fog.png-e8a24e029e5c640a7daee7d3f2838bdc.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 diff --git a/client/tests/visual_capture.gd b/client/tests/visual_capture.gd index 05e788dac..b7eee6d14 100644 --- a/client/tests/visual_capture.gd +++ b/client/tests/visual_capture.gd @@ -5,7 +5,7 @@ ## Usage: ## godot --rendering-driver opengl3 --fixed-fps 60 --resolution 960x540 \ ## --path client -s res://tests/visual_capture.gd -- \ -## --scenario fog_3state --output /abs/path +## --scenario atlas_GJ820Bc_Global --output /abs/path ## ## godot ... -- --flow flow_dialogue --output /abs/path --interval 3 ## godot ... -- --list diff --git a/client/tests/visual_scenarios.gd b/client/tests/visual_scenarios.gd index 1e5062b04..dafc22671 100644 --- a/client/tests/visual_scenarios.gd +++ b/client/tests/visual_scenarios.gd @@ -9,91 +9,35 @@ extends RefCounted ## look up autoloads via get_node("/root/..."). +## Ferrath and its system, shared by the descent-ladder cases below (the older +## per-rung cases still inline their own copies — left alone rather than +## churned, since touching them would move goldens for no reason). +const _FERRATH := { + "body_id": "GJ820Bc", + "body_radius_km": 6062.0, + "proper_name": "Ferrath", + "terrain_reference": "wiki/star-systems/GJ-820B/bodies/GJ820Bc/heightmap.png", +} +const _CYGNI_B := {"system_id": "GJ 820B", "proper_name": "Cygni B"} + +## A known-good LAND point on Ferrath, in world metres. Sourced from the +## cascade's highest-scoring city placement (city 24386 @ heightmap pixel +## (52, 395), survey cell (49, 6), score 7200 — printed by `cargo run --bin +## aliveness_probe -- --body GJ820Bc`), but read it as "somewhere the +## generator considers good ground", NOT as a settlement to look at: a +## CityPlacement is a match record — a pixel, an archetype, a founding +## orientation — and no streets, footprints or buildings exist anywhere yet. +## Drawing settlements is T-1207 (wave 2), deliberately deferred. +## +## Re-run the probe if the cascade seed or placement rules change: a stale +## value here silently reframes the ladder rather than failing. +const _FERRATH_LAND := Vector2(29422009.0, -5675959.0) + + ## Apply scenario-specific setup before tick advancement. ## Returns true if the scenario is recognized, false otherwise. func apply_setup(scenario_name: String, tree_root: Node) -> bool: - var sim_bridge := tree_root.get_node("/root/SimBridge") - var fog_state := tree_root.get_node("/root/FogState") - var game_state := tree_root.get_node("/root/GameState") - match scenario_name: - "fog_3state": - # Default TestHarness state — player at (10,10), 8x8 room. - # All 3 fog states naturally visible: clear (cone), explored (out of cone), unexplored. - pass - - "fog_diagonal": - # Diagonal LOS boundary — staircase regression target. - # Default room works: the diamond-shaped visibility radius creates diagonal edges. - # 10 ticks builds enough explored tiles to show the boundary. - pass - - "fog_boundary": - # Explored/unexplored transition centered. - # Move player south so the northern explored boundary is center-frame. - if sim_bridge.harness: - sim_bridge.harness.player_pos = Vector2i(10, 12) - - "fog_zone_tint": - # Bar zone warm amber tint (D-046). - # Inject zone_id into visible_tiles so fog_state.gd writes bar tint. - # TestHarness tiles don't include zone_id by default — patch them. - if sim_bridge.harness: - sim_bridge.harness.player_pos = Vector2i(10, 10) - # Zone tint is written from visible_tiles with zone_id field. - # We patch GameState.visible_tiles after the first snapshot in post_setup(). - - "fog_debug": - # Raw exploration overlay (green/blue/red). - fog_state.debug_exploration = true - - "npc_in_fog": - # NPC sprite visible above fog (D-033). - # Position player so NPC at (12,9) is at the fog edge. - if sim_bridge.harness: - sim_bridge.harness.player_pos = Vector2i(10, 10) - - "hud_default": - # Full HUD: time, Careful stance, minimap, monologue. - # Tick 1 triggers monologue from TestHarness. - # Inject Careful stance for visible green indicator. - game_state.player_stance = "Careful" - - "dialogue_open": - # Dialogue box + interaction prompt + key bar. - # Move adjacent to NPC and interact. - if sim_bridge.harness: - sim_bridge.harness.player_pos = Vector2i(11, 9) - sim_bridge.harness.process_input("Interact") - - "dialogue_with_monologue": - # Confrontation beat: dialogue + monologue overlap. - if sim_bridge.harness: - sim_bridge.harness.player_pos = Vector2i(11, 9) - sim_bridge.harness.process_input("Interact") - # Monologue will be injected in post_setup after dialogue is active. - - "minimap_stance": - # Minimap + Sprint stance indicator overlap (top-right). - game_state.player_stance = "Sprint" - - "cursor_menu": - # Cursor rendering over dialogue option area. - if sim_bridge.harness: - sim_bridge.harness.player_pos = Vector2i(11, 9) - sim_bridge.harness.process_input("Interact") - - "fog_live_replay", "fog_theater_replay", "fog_boundary_replay": - # Replay real server snapshots via MessagePack → Protocol.decode_snapshot(). - # Setup handled by visual_capture.gd (reads replay_snapshot from config). - pass - - "fog_live_hub": - # Live server connection — Hub spawn position. - # No setup needed: server starts in --test-mode with Gauntlet, - # player spawns at Hub (50,58). Captures real fog pipeline output. - pass - "implant_pending": # #960: overlay the diegetic Layer-1 "generating" indicator for # visual sign-off. Loaded via load() — class_name isn't available @@ -277,6 +221,42 @@ func apply_setup(scenario_name: String, tree_root: Node) -> bool: ["gen_dw_temp"] ) + # The descent ladder (2026-08-06): the SAME body at the SAME world point, + # once per rung, so the rungs read as a sequence rather than as unrelated + # frames. Anchored on land (see _FERRATH_LAND) instead of world-metre + # ZERO, which is just the origin of the region grid and lands wherever it + # happens to land. + # + # What this ladder is for: whether the NATURE layer stays legible as you + # descend — relief, coast, watercourses, biome character. It is NOT + # waiting for cities to appear; nothing civilizational is generated yet + # and none is due before T-1207. No overlays, deliberately: a colour ramp + # on top would mask the very thing being judged. + "atlas_GJ820Bc_land_Region": + _setup_atlas_golden_shot( + tree_root, _FERRATH, _CYGNI_B, "Region", [], _FERRATH_LAND + ) + + "atlas_GJ820Bc_land_District": + _setup_atlas_golden_shot( + tree_root, _FERRATH, _CYGNI_B, "District", [], _FERRATH_LAND + ) + + "atlas_GJ820Bc_land_Quarter": + _setup_atlas_golden_shot( + tree_root, _FERRATH, _CYGNI_B, "Quarter", [], _FERRATH_LAND + ) + + "atlas_GJ820Bc_land_Block": + _setup_atlas_golden_shot( + tree_root, _FERRATH, _CYGNI_B, "Block", [], _FERRATH_LAND + ) + + "atlas_GJ820Bc_land_Chunk": + _setup_atlas_golden_shot( + tree_root, _FERRATH, _CYGNI_B, "Chunk", [], _FERRATH_LAND + ) + "atlas_GJ251c_Global": _setup_atlas_golden_shot( tree_root, @@ -337,37 +317,14 @@ func apply_setup(scenario_name: String, tree_root: Node) -> bool: ## Post-tick setup — called after N ticks have been advanced. -## Use for state that depends on tick processing (e.g. zone tint patching). -func post_setup(scenario_name: String, tree_root: Node) -> void: - var fog_state := tree_root.get_node("/root/FogState") - var game_state := tree_root.get_node("/root/GameState") - - match scenario_name: - "fog_zone_tint": - # Patch visible_tiles with zone_id for fog_state.gd zone tint pipeline. - var patched: Array = [] - for tile in game_state.visible_tiles: - if tile is Dictionary: - var t: Dictionary = tile.duplicate() - t["zone_id"] = "bar" - patched.append(t) - game_state.visible_tiles = patched - # Force fog_state to re-process with zone tint data - fog_state.update_from_state() - - "dialogue_with_monologue": - # Inject monologue to create the overlap condition. - game_state.current_monologue = { - "id": "test_confrontation", - "text": "Something about that answer doesn't add up.", - "duration_seconds": 5.0, - "priority": "high", - "is_urgent": true, - } - - "hud_default": - # Ensure stance is still Careful after ticks (TestHarness may override). - game_state.player_stance = "Careful" +## Use for state that depends on tick processing. +## +## Currently a no-op: every scenario that needed it was a top-down/fog/dialogue +## case, deleted 2026-08-06 (Jeroen's call) along with the rest of the legacy +## suite. The hook stays because visual_capture.gd calls it unconditionally and +## the stepped-Atlas scenarios may yet need a post-tick step. +func post_setup(_scenario_name: String, _tree_root: Node) -> void: + pass ## Apply flow action — called for each step in a movie flow. @@ -408,8 +365,21 @@ func apply_flow_action(action: String, tree_root: Node) -> void: ## and this extends RefCounted, different -s mode load contexts, and the ## duplication is small and stable: both read the same public StepCanvasViewer ## surface, jump_to()/get_overlay_defs()/set_overlay_visible()/get_request()). +## `world_center` defaults to ZERO — the original fixed-center revisit point, +## which every pre-2026-08-06 golden uses. But world-metre zero is just the +## origin of the body's region grid, and on a real body that is almost never +## anywhere interesting: on Ferrath the principal settlement sits at +## (29 422 009, -5 675 959) m. So every deep-rung golden captured at ZERO was +## framing an arbitrary patch — which is why Block and Chunk "passed" while +## showing flat water. Pass a real coordinate (aliveness_probe prints the +## principal settlement's world metres) to descend somewhere that has content. func _setup_atlas_golden_shot( - tree_root: Node, body: Dictionary, system: Dictionary, rung: String, overlay_ids: Array + tree_root: Node, + body: Dictionary, + system: Dictionary, + rung: String, + overlay_ids: Array, + world_center: Vector2 = Vector2.ZERO ) -> void: var hud_groups: Node = tree_root.get_node("/root/HudGroups") var registry: Node = tree_root.get_node("/root/ImplantRegistry") @@ -436,4 +406,4 @@ func _setup_atlas_golden_shot( # jump_to() is the fixed-center revisit intent that descends to any # other rung at a literal, reproducible world_center (D-255(a): every # body's region grid is centered on world-metre ZERO). - viewer.jump_to(Vector2.ZERO, rung) + viewer.jump_to(world_center, rung) diff --git a/server/src/bin/aliveness_probe.rs b/server/src/bin/aliveness_probe.rs index 3f418773e..5789ba8b9 100644 --- a/server/src/bin/aliveness_probe.rs +++ b/server/src/bin/aliveness_probe.rs @@ -121,8 +121,20 @@ fn main() { // HEIGHTMAP_CELLS_PER_DISTRICT working pixels), never true DISTRICT_M. let anchor_cell = bws.placements.iter().max_by_key(|p| p.score).map(|p| { let cell = scale::heightmap_pixel_to_survey_cell(p.position); + // World metres too, not just pixel/cell: this is the coordinate the + // Atlas navigates in (StepCanvasViewer.jump_to takes world_center), so + // printing it is what lets a capture descend the rung ladder ON a + // settlement instead of at world-metre zero. + let (sx, sy) = district_profile::survey_cell_centre_world_m( + cell, + scale::HEIGHTMAP_CELLS_PER_DISTRICT, + bws.heightmap_width as usize, + bws.heightmap_height as usize, + body_params.body_radius_km, + ); println!( - "\nprincipal settlement: city {} @ pixel {:?} → survey cell {:?} (placement score {})", + "\nprincipal settlement: city {} @ pixel {:?} → survey cell {:?} \ + → world ({sx:.0}, {sy:.0}) m (placement score {})", p.city_id, p.position, cell, p.score ); // 150 chunks (9 600 m) ÷ one survey cell's ACTUAL metric width at this diff --git a/tests/run-visual b/tests/run-visual index 74ed830a9..686f58bac 100755 --- a/tests/run-visual +++ b/tests/run-visual @@ -37,7 +37,7 @@ trap '[[ -n "${SERVER_PID:-}" ]] && kill "$SERVER_PID" 2>/dev/null; wait "$SERVE while [[ $# -gt 0 ]]; do case "$1" in - --screenshot) MODE="screenshot"; TARGET="${2:-fog_3state}"; shift 2 ;; + --screenshot) MODE="screenshot"; TARGET="${2:-atlas_GJ820Bc_Global}"; shift 2 ;; --movie) MODE="movie"; TARGET="${2:-flow_dialogue}"; shift 2 ;; --update) MODE="update"; shift ;; --filter) shift 2 ;; # Accept and ignore (run-all compat) diff --git a/tests/visual.json b/tests/visual.json index 026042e8e..7403b10de 100644 --- a/tests/visual.json +++ b/tests/visual.json @@ -6,70 +6,6 @@ "golden_dir": "client/tests/golden/visual", "_comment_atlas_goldens": "T-1157 (D-255 rewrite of the T-1120 matrix, PR #180 provenance carried forward, Tyre): the atlas_* golden scenarios below key on (body, rung) per the stepped Atlas ladder, captured AND verified (exact pixel match) on danoontje's Mesa/AMD stack. T-1121 documents that goldens do NOT port across boxes at the current tolerance (the 19 pre-existing goldens fail 12-14% on this same box) — an atlas_* golden failing on a DIFFERENT machine is expected baseline drift, not a regression, until T-1121 resolves the canonical-capture-box question.", "scenarios": { - "fog_3state": { - "ticks": 5, - "description": "All 3 fog states — clear/explored/unexplored" - }, - "fog_diagonal": { - "ticks": 10, - "description": "Diagonal LOS boundary (staircase regression target)" - }, - "fog_boundary": { - "ticks": 8, - "description": "Explored/unexplored transition centered in frame" - }, - "fog_zone_tint": { - "ticks": 5, - "description": "Bar zone warm amber tint in explored fog (D-046)" - }, - "fog_debug": { - "ticks": 5, - "description": "Raw exploration overlay (green/blue/red)" - }, - "npc_in_fog": { - "ticks": 5, - "description": "NPC sprite visible above fog overlay (D-033)" - }, - "hud_default": { - "ticks": 1, - "description": "Full HUD: time, Careful stance (green), minimap, monologue" - }, - "dialogue_open": { - "ticks": 3, - "description": "Dialogue box + interaction prompt + key bar positioning" - }, - "dialogue_with_monologue": { - "ticks": 4, - "description": "Confrontation beat: dialogue + monologue simultaneously" - }, - "minimap_stance": { - "ticks": 2, - "description": "Minimap + Sprint stance indicator overlap (top-right)" - }, - "cursor_menu": { - "ticks": 3, - "description": "Cursor rendering over dialogue option" - }, - "fog_live_replay": { - "ticks": 1, - "description": "Replay real server hub snapshot — full pipeline fog test", - "replay_snapshot": "tests/fixtures/gauntlet/hub_spawn.msgpack" - }, - "fog_theater_replay": { - "ticks": 1, - "description": "Replay Fog Theater — large room with NPCs at varying distances", - "replay_snapshot": "tests/fixtures/gauntlet/fog_theater.msgpack" - }, - "fog_boundary_replay": { - "ticks": 1, - "description": "Replay hub after movement — explored/visible tile boundary", - "replay_snapshot": "tests/fixtures/gauntlet/hub_after_movement.msgpack" - }, - "fog_live_hub": { - "ticks": 10, - "live": true, - "description": "Live server: Hub spawn fog — real pipeline regression test" - }, "implant_pending": { "ticks": 1, "description": "ImplantPending — diegetic Layer-1 generating indicator (#960)" @@ -136,6 +72,32 @@ "live": true, "description": "T-1157 curated Atlas golden (D-255): Ferrath (GJ820Bc), District rung, temperature overlay" }, + "_comment_descent_ladder": "The atlas_GJ820Bc_land_* set is one body at ONE world point, once per rung, so the ladder reads as a descent. Anchored on land rather than world-metre zero. It judges the NATURE layer (relief, coast, watercourses, biome character) — nothing civilizational is generated yet and none is due before T-1207, so an absence of settlements is the expected state, not a finding.", + "atlas_GJ820Bc_land_Region": { + "ticks": 240, + "live": true, + "description": "Descent ladder (2026-08-06): Ferrath (GJ820Bc), Region rung, land-anchored, no overlay" + }, + "atlas_GJ820Bc_land_District": { + "ticks": 240, + "live": true, + "description": "Descent ladder: Ferrath (GJ820Bc), District rung, land-anchored, no overlay" + }, + "atlas_GJ820Bc_land_Quarter": { + "ticks": 240, + "live": true, + "description": "Descent ladder: Ferrath (GJ820Bc), Quarter rung, land-anchored, no overlay" + }, + "atlas_GJ820Bc_land_Block": { + "ticks": 240, + "live": true, + "description": "Descent ladder: Ferrath (GJ820Bc), Block rung, land-anchored, no overlay" + }, + "atlas_GJ820Bc_land_Chunk": { + "ticks": 240, + "live": true, + "description": "Descent ladder: Ferrath (GJ820Bc), Chunk rung (deepest), land-anchored, no overlay" + }, "atlas_GJ251c_Global": { "ticks": 240, "live": true,