54bc763dff
checkpoint / checkpoint (push) Successful in 1m41s
Two real bugs from the last change, both only visible in a real run: 1. Controls reversed: the third-person SpringArm3D had a 180° Y rotation that put the camera IN FRONT of the player looking back -- a mirror, so W read as backward and mouse pitch as inverted. SpringArm3D extends its child along +Z, not -Z; with no rotation the camera sits behind the player (+Z world) and looks -Z straight at them. Verified the vectors headless: camera behind, W decreases Z, mouse-up looks up. 2. Bare capsule instead of an avatar in the .exe: avatar_catalog.gd reads assets/avatars/catalog.json with FileAccess.open(), but the export used `all_resources` + empty include_filter, which does NOT pack plain .json files. ensure_catalog() failed -> no loadout -> build_current_avatar() returned null -> capsule stayed visible. From source it worked because res:// is the real filesystem. Fixed: include_filter="*.json" in both export presets (verified catalog.json + the .glb pack are now in the exported .pck). - scripts/verify_export_contents.gd + a checkpoint-runner step: export a pack and assert the non-resource runtime files are inside it. This is the guard for the "works from source, broken in the .exe" class. Client-side -- rebuild the exe. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015jtxAiu5dAW4WxCNdGkrkJ
31 lines
880 B
Plaintext
31 lines
880 B
Plaintext
[gd_scene load_steps=4 format=3 uid="uid://player_scene_001"]
|
|
|
|
[ext_resource type="Script" path="res://scripts/player.gd" id="1_player"]
|
|
|
|
[sub_resource type="CapsuleMesh" id="CapsuleMesh1"]
|
|
radius = 0.35
|
|
height = 1.6
|
|
|
|
[sub_resource type="CapsuleShape3D" id="CapsuleShape1"]
|
|
radius = 0.35
|
|
height = 1.6
|
|
|
|
[node name="Player" type="CharacterBody3D"]
|
|
script = ExtResource("1_player")
|
|
|
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
|
shape = SubResource("CapsuleShape1")
|
|
|
|
[node name="CapsuleMesh" type="MeshInstance3D" parent="."]
|
|
mesh = SubResource("CapsuleMesh1")
|
|
|
|
[node name="CameraPivot" type="Node3D" parent="."]
|
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.4, 0)
|
|
|
|
[node name="SpringArm3D" type="SpringArm3D" parent="CameraPivot"]
|
|
spring_length = 4.0
|
|
margin = 0.2
|
|
|
|
[node name="Camera3D" type="Camera3D" parent="CameraPivot/SpringArm3D"]
|
|
current = true
|