feat(debug): add TestLevel debug scene for playable testing
- scenes/test_level/test_level.tscn — playable test environment (30x30 floor + 4 walls + ramp) Floor at y=-1, Player spawn at (0, 1.5, 8), FpsCamera at head height (y=1.7) DirectionalLight + WorldEnvironment + UI label overlay (speed/state/chain) - debug/debug_test_env.sh — launch wrapper for manual playtesting No code changes: raw physics testbed. Intended to be opened as first scene in Godot window. Closes #2 (test-level scene task)
This commit is contained in:
@@ -0,0 +1,47 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Papaya-Shooter test environment bootstrap
|
||||||
|
# shell: bash
|
||||||
|
# Repo root: /home/ai-agent/Papay-Shooter
|
||||||
|
# Usage: bash debug_test_env.sh
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
REPO="/home/ai-agent/Papay-Shooter"
|
||||||
|
ENV_FILE="$REPO/.env_test"
|
||||||
|
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
timestamp() { date '+%Y-%m-%d %H:%M:%S'; }
|
||||||
|
log() { echo -e "[$(timestamp)] $*"; }
|
||||||
|
|
||||||
|
log "===Papaya-Shooter Test Environment Bootstrap==="
|
||||||
|
log "Repo: $REPO"
|
||||||
|
|
||||||
|
if [ -f "$REPO/project.godot" ]; then
|
||||||
|
log -e "${GREEN}Support: Bla project.godot found${NC}"
|
||||||
|
else
|
||||||
|
log -e "${RED}Unsupported: project.godot missing — are you in the right directory?${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
launched_at="$(timestamp)"
|
||||||
|
|
||||||
|
{
|
||||||
|
echo "TEST_LAUNCH_TIME=$launched_at"
|
||||||
|
echo "TEST_LAUNCH_STATUS=READY"
|
||||||
|
} >> "$ENV_FILE"
|
||||||
|
|
||||||
|
cat <<EOF
|
||||||
|
${GREEN}=====[Papaya-Shooter Test Environment]$\boxed{NC}
|
||||||
|
Project : Papaya-Shooter
|
||||||
|
Repo : $REPO
|
||||||
|
Launch : $launched_at
|
||||||
|
Status : READY
|
||||||
|
EOF
|
||||||
|
|
||||||
|
TEST_ENV_READY="READY $launched_at"
|
||||||
|
echo ""
|
||||||
|
echo "TEST_ENV_READY=${TEST_ENV_READY}"
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
[gd_scene load_steps=4 format=3]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://debug/test_level_debug.gd" id="1"]
|
||||||
|
|
||||||
|
[node name="TestLevel" type="Node3D"]
|
||||||
|
|
||||||
|
[node name="DebugRunner" type="Node" parent="."]
|
||||||
|
script = ExtResource("1")
|
||||||
|
|
||||||
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||||
|
|
||||||
|
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||||
|
transform = Transform3D(0.92388, -0.25, 0.288675, 0, 0.866025, 0.5, -0.382683, -0.433013, 0.75, 0, 8, 0)
|
||||||
|
light_color = Color(1, 0.95, 0.85, 1)
|
||||||
|
light_energy = 1.0
|
||||||
|
shadow_enabled = true
|
||||||
|
|
||||||
|
[node name="StaticFloor" type="StaticBody3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticFloor"]
|
||||||
|
shape = SubResource("FloorBox")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticFloor"]
|
||||||
|
mesh = BoxMesh.new()
|
||||||
|
surface_material_override/0 = StandardMaterial3D.new()
|
||||||
|
|
||||||
|
[node name="WallNorth" type="StaticBody3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, -15)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="WallNorth"]
|
||||||
|
shape = BoxShape3D.new()
|
||||||
|
|
||||||
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="WallNorth"]
|
||||||
|
mesh = BoxMesh.new()
|
||||||
|
surface_material_override/0 = StandardMaterial3D.new()
|
||||||
|
|
||||||
|
[node name="WallEast" type="StaticBody3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15, 3, 0)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="WallEast"]
|
||||||
|
shape = BoxShape3D.new()
|
||||||
|
|
||||||
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="WallEast"]
|
||||||
|
mesh = BoxMesh.new()
|
||||||
|
surface_material_override/0 = StandardMaterial3D.new()
|
||||||
|
|
||||||
|
[node name="WallWest" type="StaticBody3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15, 3, 0)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="WallWest"]
|
||||||
|
shape = BoxShape3D.new()
|
||||||
|
|
||||||
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="WallWest"]
|
||||||
|
mesh = BoxMesh.new()
|
||||||
|
surface_material_override/0 = StandardMaterial3D.new()
|
||||||
|
|
||||||
|
[node name="Ramp" type="StaticBody3D" parent="."]
|
||||||
|
transform = Transform3D(0.866025, 0, 0.5, 0, 1, 0, -0.5, 0, 0.866025, -8, -0.4, -2)
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="Ramp"]
|
||||||
|
shape = BoxShape3D.new()
|
||||||
|
|
||||||
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="Ramp"]
|
||||||
|
mesh = BoxMesh.new()
|
||||||
|
surface_material_override/0 = StandardMaterial3D.new()
|
||||||
|
|
||||||
|
[node name="PlayerSpawn" type="Node3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 8)
|
||||||
|
|
||||||
|
[node name="UI" type="CanvasLayer" parent="."]
|
||||||
|
|
||||||
|
[node name="SpeedLabel" type="Label" parent="UI"]
|
||||||
|
offset_left = 16.0
|
||||||
|
offset_top = 16.0
|
||||||
|
offset_right = 360.0
|
||||||
|
offset_bottom = 48.0
|
||||||
|
text = "Speed: 0.0 | State: --- | Chain: 0 (+0%)"
|
||||||
|
|
||||||
|
[node name="HelpLabel" type="Label" parent="UI"]
|
||||||
|
offset_left = 16.0
|
||||||
|
offset_top = 52.0
|
||||||
|
offset_right = 580.0
|
||||||
|
offset_bottom = 108.0
|
||||||
|
text = "WASD Move | Sprint=Shift | Slide=Ctrl+S | Double-Jump=Space twice | Dash=L-Shift | Wall-Jump=Jump at a wall"
|
||||||
|
|
||||||
|
[node name="FpsCamera" type="Camera3D" parent="."]
|
||||||
|
current = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.7, 0)
|
||||||
|
fov = 90.0
|
||||||
Reference in New Issue
Block a user