wayfarers_wanderer/main.tscn
Jonas Reith 92f220e208 Populate the first region: 6 placeholder POIs + gated center portal
poi.tscn now uses the checkerboard debug texture instead of the ruins
sprite, and poi.gd gained a marker_color export (multiplied into the
existing visited/undiscovered dimming) so each POI marker can be
tinted a distinct color. Six instances placed inside region k=0's
wedge (angle ~12-48°, radius ~18-38, clear of the border walls),
tagged with the "region1_pois" group, in red/orange/yellow/green/
blue/purple.

Simplified InteractionManager's "Erkunden" content to a plain
placeholder ("Das wurde besucht.") instead of the old random
animal-track flavor text, and removed the now-dead handle_explore()
submenu it drove. Added InteractionManager.open_message() for POIs
that need an info popup without the explore/rest/close menu.

New poi_gate.gd/.tscn: a portal placed near region k=0's table-edge
border. Checks whether every POI in "region1_pois" has been visited;
if not, shows a "not yet" message, otherwise teleports the player to
target_position (the center) — a one-way shortcut past the border
wall rather than an opening in it, matching the "explore everything,
then unlock the way onward" progression the user described (this
pattern will repeat per outer region later).

Verified headless: all 6 POIs register in the group with correct
names/colors, gate refuses the transition at 0/6 and 5/6 visited and
allows it at 6/6, and the teleport lands the player exactly on
target_position.
2026-08-26 21:05:38 +02:00

335 lines
13 KiB
Plaintext
Executable File

[gd_scene format=3 uid="uid://bju1lndv8l1mo"]
[ext_resource type="Script" uid="uid://ckrqvbqw08kin" path="res://player.gd" id="1_0xm2m"]
[ext_resource type="Script" uid="uid://cpo34pbk0145n" path="res://terrain.gd" id="1_terrain"]
[ext_resource type="Texture2D" uid="uid://epcqli428yem" path="res://assets/sprites/player/debug_player.png" id="2_h2yge"]
[ext_resource type="Script" uid="uid://b0y06y7c0bihj" path="res://camera_rig.gd" id="3_h2yge"]
[ext_resource type="PackedScene" uid="uid://be6ufrc3dsjge" path="res://poi.tscn" id="5_lquwl"]
[ext_resource type="PackedScene" path="res://poi_gate.tscn" id="5_gate"]
[ext_resource type="PackedScene" uid="uid://dmhs1oy1kh6hi" path="res://assets/models/mountain.glb" id="6_7mycd"]
[ext_resource type="PackedScene" uid="uid://gl4qpk4wto1e" path="res://assets/models/mountain2v5.glb" id="7_272bh"]
[ext_resource type="PackedScene" uid="uid://be2uq7ixlbv6b" path="res://assets/models/forest.glb" id="8_5vw27"]
[sub_resource type="Environment" id="Environment_h2yge"]
ambient_light_color = Color(0, 0, 0.31764707, 1)
ambient_light_energy = 0.3
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_player"]
radius = 0.16
height = 0.5
[sub_resource type="AtlasTexture" id="AtlasTexture_lquwl"]
atlas = ExtResource("2_h2yge")
region = Rect2(0, 0, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_7mycd"]
atlas = ExtResource("2_h2yge")
region = Rect2(48, 0, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_272bh"]
atlas = ExtResource("2_h2yge")
region = Rect2(96, 0, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_5vw27"]
atlas = ExtResource("2_h2yge")
region = Rect2(0, 0, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_kek77"]
atlas = ExtResource("2_h2yge")
region = Rect2(48, 0, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_4c57u"]
atlas = ExtResource("2_h2yge")
region = Rect2(96, 0, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_efxa6"]
atlas = ExtResource("2_h2yge")
region = Rect2(0, 60, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_dg77c"]
atlas = ExtResource("2_h2yge")
region = Rect2(48, 60, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_ycdy4"]
atlas = ExtResource("2_h2yge")
region = Rect2(96, 60, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_w48qg"]
atlas = ExtResource("2_h2yge")
region = Rect2(0, 120, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_vivmo"]
atlas = ExtResource("2_h2yge")
region = Rect2(48, 120, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_2cqfq"]
atlas = ExtResource("2_h2yge")
region = Rect2(96, 120, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_yaehf"]
atlas = ExtResource("2_h2yge")
region = Rect2(0, 180, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_074og"]
atlas = ExtResource("2_h2yge")
region = Rect2(48, 180, 48, 60)
[sub_resource type="AtlasTexture" id="AtlasTexture_cegan"]
atlas = ExtResource("2_h2yge")
region = Rect2(96, 180, 48, 60)
[sub_resource type="SpriteFrames" id="SpriteFrames_82xsv"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_lquwl")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7mycd")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_272bh")
}],
"loop": true,
"name": &"idle",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_5vw27")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_kek77")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4c57u")
}],
"loop": true,
"name": &"move_down",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_efxa6")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dg77c")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ycdy4")
}],
"loop": true,
"name": &"move_left",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_w48qg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vivmo")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_2cqfq")
}],
"loop": true,
"name": &"move_right",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_yaehf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_074og")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_cegan")
}],
"loop": true,
"name": &"move_up",
"speed": 5.0
}]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_7mycd"]
radius = 7.0
height = 20.0
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_5vw27"]
radius = 8.5078125
height = 17.015625
[sub_resource type="CylinderShape3D" id="CylinderShape3D_5vw27"]
height = 2.2817383
radius = 0.72021484
[sub_resource type="CylinderShape3D" id="CylinderShape3D_kek77"]
height = 1.8276367
radius = 0.5517578
[node name="Main" type="Node3D" unique_id=1313637872]
[node name="Environment" type="WorldEnvironment" parent="." unique_id=753803863]
environment = SubResource("Environment_h2yge")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=630943989]
[node name="Terrain" type="Node3D" parent="." unique_id=309197966]
script = ExtResource("1_terrain")
[node name="Player" type="CharacterBody3D" parent="." unique_id=1504574304 groups=["player"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28.1458, -2.5, 16.25)
script = ExtResource("1_0xm2m")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Player" unique_id=1483851051]
shape = SubResource("CapsuleShape3D_player")
[node name="AnimatedSprite3D" type="AnimatedSprite3D" parent="Player" unique_id=155581900]
billboard = 2
texture_filter = 0
sprite_frames = SubResource("SpriteFrames_82xsv")
animation = &"idle"
[node name="CameraRig" type="Node3D" parent="." unique_id=1094565525 groups=["camera_rig"]]
script = ExtResource("3_h2yge")
target = NodePath("../Player")
[node name="CameraArm" type="Node3D" parent="CameraRig" unique_id=1827622739]
transform = Transform3D(1, 0, 0, 0, 0.81915206, 0.57357645, 0, -0.57357645, 0.81915206, 0, 0, 0)
[node name="Camera3D" type="Camera3D" parent="CameraRig/CameraArm" unique_id=1414235198]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 12)
fov = 50.0
near = 0.1
far = 500.0
[node name="POI" parent="." unique_id=1770000468 instance=ExtResource("5_lquwl")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0.5, 2)
[node name="Ort1" parent="." instance=ExtResource("5_lquwl") groups=["region1_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.15, -1.214, 6.47)
poi_name = "Ort 1"
marker_color = Color(1, 0.2, 0.2, 1)
[node name="Ort2" parent="." instance=ExtResource("5_lquwl") groups=["region1_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17.68, -1.214, 17.68)
poi_name = "Ort 2"
marker_color = Color(1, 0.6, 0.1, 1)
[node name="Ort3" parent="." instance=ExtResource("5_lquwl") groups=["region1_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 37.17, -3.443, 7.9)
poi_name = "Ort 3"
marker_color = Color(1, 0.95, 0.2, 1)
[node name="Ort4" parent="." instance=ExtResource("5_lquwl") groups=["region1_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.43, -3.443, 28.24)
poi_name = "Ort 4"
marker_color = Color(0.2, 0.9, 0.3, 1)
[node name="Ort5" parent="." instance=ExtResource("5_lquwl") groups=["region1_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19.05, -0.7, 11.0)
poi_name = "Ort 5"
marker_color = Color(0.2, 0.5, 1, 1)
[node name="Ort6" parent="." instance=ExtResource("5_lquwl") groups=["region1_pois"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 38.1, -4.471, 22.0)
poi_name = "Ort 6"
marker_color = Color(0.7, 0.3, 0.9, 1)
[node name="GateToCenter" parent="." instance=ExtResource("5_gate")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.72, 0.157, 8.5)
poi_name = "Tor zur Mitte"
target_position = Vector3(0, 0.5, 0)
[node name="Node3D" type="Node3D" parent="." unique_id=597556846]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 3.6214647, -0.23645921, 0.47627413)
[node name="mountain" parent="Node3D" unique_id=2116024014 instance=ExtResource("6_7mycd")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -7.0459113)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D/mountain" unique_id=1378662574]
shape = SubResource("CapsuleShape3D_7mycd")
[node name="mountain2" parent="Node3D" unique_id=1164111955 instance=ExtResource("6_7mycd")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.6505966, 0, -7.0459113)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D/mountain2" unique_id=1044531282]
shape = SubResource("CapsuleShape3D_7mycd")
[node name="mountain3" parent="Node3D" unique_id=1031030133 instance=ExtResource("6_7mycd")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.5228462, 0, -2.3011575)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D/mountain3" unique_id=1670981761]
shape = SubResource("CapsuleShape3D_7mycd")
[node name="mountain4" parent="Node3D" unique_id=213527076 instance=ExtResource("6_7mycd")]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D/mountain4" unique_id=370339188]
shape = SubResource("CapsuleShape3D_7mycd")
[node name="Node3D2" type="Node3D" parent="." unique_id=97687536]
[node name="mountain2v5" parent="Node3D2" unique_id=1347056585 instance=ExtResource("7_272bh")]
transform = Transform3D(0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 5.449942, -0.15, 0.60275173)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D2/mountain2v5" unique_id=1250318876]
shape = SubResource("CapsuleShape3D_5vw27")
[node name="mountain2v6" parent="Node3D2" unique_id=722974757 instance=ExtResource("7_272bh")]
transform = Transform3D(0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 5.309197, -0.15, 0.16273117)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D2/mountain2v6" unique_id=232796233]
shape = SubResource("CapsuleShape3D_5vw27")
[node name="mountain2v7" parent="Node3D2" unique_id=279879297 instance=ExtResource("7_272bh")]
transform = Transform3D(0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 5.801124, -0.15, -0.25847834)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D2/mountain2v7" unique_id=271099516]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.04194641, 0.13291359, -0.03959179)
shape = SubResource("CapsuleShape3D_5vw27")
[node name="mountain2v8" parent="Node3D2" unique_id=1413121196 instance=ExtResource("7_272bh")]
transform = Transform3D(0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 6.2565756, -0.15, 0.1419242)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D2/mountain2v8" unique_id=632282427]
shape = SubResource("CapsuleShape3D_5vw27")
[node name="mountain2v9" parent="Node3D2" unique_id=888354952 instance=ExtResource("7_272bh")]
transform = Transform3D(0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 5.309197, -0.15, -0.051428914)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D2/mountain2v9" unique_id=1549534653]
shape = SubResource("CapsuleShape3D_5vw27")
[node name="Node3D3" type="Node3D" parent="." unique_id=2010190045]
transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 6.5570726, 0.80977285, 4.959112)
[node name="forest" parent="Node3D3" unique_id=1142695276 instance=ExtResource("8_5vw27")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.89663315, -3.8352594, -0.41697693)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D3/forest" unique_id=1992100035]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0569582, -0.37715888, -0.2822442)
shape = SubResource("CylinderShape3D_5vw27")
[node name="CollisionShape3D2" type="CollisionShape3D" parent="Node3D3/forest" unique_id=2004443612]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.1139164, -0.75431776, 0.11189556)
shape = SubResource("CylinderShape3D_5vw27")
[node name="CollisionShape3D3" type="CollisionShape3D" parent="Node3D3/forest" unique_id=1398520795]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.4591012, -0.5861306, 0.51387644)
shape = SubResource("CylinderShape3D_5vw27")
[node name="forest2" parent="Node3D3" unique_id=2120638756 instance=ExtResource("8_5vw27")]
transform = Transform3D(-0.87206924, 0, 0.4893825, 0, 1, 0, -0.4893825, 0, -0.87206924, 0, -3.83526, 0)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Node3D3/forest2" unique_id=92773776]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.15763283, -0.2685547, -0.28089857)
shape = SubResource("CylinderShape3D_kek77")
[node name="CollisionShape3D2" type="CollisionShape3D" parent="Node3D3/forest2" unique_id=291722829]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.021739006, -0.5371094, 0.2103684)
shape = SubResource("CylinderShape3D_kek77")
[node name="CollisionShape3D3" type="CollisionShape3D" parent="Node3D3/forest2" unique_id=1876581014]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.084690094, -0.5371094, 0.40002155)
shape = SubResource("CylinderShape3D_kek77")