34 Commits

Author SHA1 Message Date
WiseNoodle
cbbf9d538d Merge branch 'lobby-system' into player-character 2025-08-21 21:52:08 -04:00
WiseNoodle
0d651493e3 fix rendering 2025-08-21 21:39:32 -04:00
WiseNoodle
690a2c0205 add correct head shadow fix 2025-08-21 21:38:05 -04:00
WiseNoodle
9be3a0b61c sync anims 2025-08-21 21:27:17 -04:00
WiseNoodle
6798db74d9 Implement jump/fall animations 2025-08-21 20:24:50 -04:00
WiseNoodle
c759004028 Implement walking animation 2025-08-21 19:55:17 -04:00
WiseNoodle
7eaae582b2 Add walk animation 2025-08-21 19:44:11 -04:00
WiseNoodle
6ce47a21ce animes 2025-08-12 23:19:45 -04:00
WiseNoodle
732cd2c976 Add idle anim 2025-08-12 23:18:41 -04:00
WiseNoodle
3700789497 Rigged player character 2025-08-12 22:52:05 -04:00
0db8edef2a reeeeeeeeeeeeeee 2025-08-12 20:59:05 -05:00
88b399f453 Try again to remove player when disconnecting 2025-08-12 20:57:26 -05:00
WiseNoodle
d61b045688 Add player armature 2025-08-12 21:53:25 -04:00
eaaa3075d5 Attempt removing player upon disconnect 2025-08-12 20:52:10 -05:00
WiseNoodle
90ecb18414 Reshow player head 2025-08-12 21:25:05 -04:00
WiseNoodle
098e906dc7 Add watch framework 2025-08-12 21:24:35 -04:00
WiseNoodle
04440c0319 tweak tent rotation 2025-08-12 19:45:55 -04:00
98cf12f533 steam ui join 2 2025-08-12 18:42:09 -05:00
52a34c8415 steam ui join 2025-08-12 18:16:08 -05:00
WiseNoodle
ec0bef4d92 \/ 2025-08-10 23:34:56 -04:00
WiseNoodle
def4324902 fix player camera offset and tweak fog 2025-08-10 23:34:42 -04:00
WiseNoodle
59cbbc0880 tent fix col attempt 2025-08-10 23:24:31 -04:00
WiseNoodle
898a382a71 test sync without auth on light in lobby 2025-08-10 23:13:53 -04:00
WiseNoodle
912e6b9d31 Add spooky fog 2025-08-10 23:09:57 -04:00
WiseNoodle
95d384b0ee fix tree col 2025-08-10 23:06:20 -04:00
WiseNoodle
70f0a65a3a Lots O treez 2025-08-10 23:04:25 -04:00
WiseNoodle
724d78973b Add player scale for syncing 2025-08-10 22:58:40 -04:00
WiseNoodle
69596dac01 let mouse be FREEEEE 2025-08-10 22:42:11 -04:00
WiseNoodle
eb783c37da IT WORKS 2025-08-10 22:36:01 -04:00
WiseNoodle
14464d703c New player controller 2025-08-10 22:22:25 -04:00
WiseNoodle
5807549863 fixy 2 2025-08-10 22:05:50 -04:00
WiseNoodle
3d44cc7761 Fix player head rotation 2025-08-10 22:04:42 -04:00
WiseNoodle
bbbfd424ec Seperate head rotation 2025-08-10 00:33:17 -04:00
WiseNoodle
39e944806c Add new character model 2025-08-10 00:26:34 -04:00
39 changed files with 6452 additions and 122 deletions

View File

@@ -1,8 +1,8 @@
extends Node extends Node
var players: Array[int] = [] var players: Dictionary[int, Player] = {}
var player_spawner: MultiplayerSpawner var player_spawner: LobbyPlayerSpawner
@onready var debug_ui: PackedScene = preload("res://ui/multiplayer-debug-ui/multiplayer-debug-ui.tscn") @onready var debug_ui: PackedScene = preload("res://ui/multiplayer-debug-ui/multiplayer-debug-ui.tscn")
var debug_ui_instance var debug_ui_instance
@@ -29,3 +29,8 @@ func request_server_to_spawn_player(peer_id: int, player_name: String) -> void:
data["player_name"] = player_name data["player_name"] = player_name
player_spawner.spawn(data) player_spawner.spawn(data)
@rpc("any_peer", "call_local", "reliable")
func request_server_to_delete_player(peer_id: int) -> void:
player_spawner.delete_player(peer_id)

View File

@@ -142,3 +142,10 @@ draw_pass_1 = SubResource("QuadMesh_8eekk")
stream = ExtResource("4_u2sse") stream = ExtResource("4_u2sse")
volume_db = -15.0 volume_db = -15.0
unit_size = 5.0 unit_size = 5.0
[node name="OmniLight3D" type="OmniLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.733088, 0)
light_color = Color(1, 0.823529, 0, 1)
shadow_enabled = true
distance_fade_enabled = true
omni_range = 9.93165

View File

@@ -1,12 +1,22 @@
[gd_scene load_steps=10 format=3 uid="uid://bj52j4ew2lfr6"] [gd_scene load_steps=11 format=3 uid="uid://bj52j4ew2lfr6"]
[ext_resource type="PackedScene" uid="uid://5vggmy1srgxb" path="res://tools/human-height-reference.tscn" id="1_yyu2g"] [ext_resource type="PackedScene" uid="uid://baxlyc1rqnkh5" path="res://levels/lobby-scene/tree/tree.tscn" id="2_qjimh"]
[ext_resource type="PackedScene" uid="uid://bhgahenvxqhec" path="res://levels/lobby-scene/tree/tree.blend" id="3_0u2wx"]
[ext_resource type="PackedScene" uid="uid://b5xb0fsfpn7r3" path="res://levels/lobby-scene/lobby-terrain/lobby-terrain.blend" id="3_f73ky"] [ext_resource type="PackedScene" uid="uid://b5xb0fsfpn7r3" path="res://levels/lobby-scene/lobby-terrain/lobby-terrain.blend" id="3_f73ky"]
[ext_resource type="Script" uid="uid://bbhx0fwgcgjr4" path="res://networking/player_spawner.gd" id="3_qjimh"] [ext_resource type="Script" uid="uid://bbhx0fwgcgjr4" path="res://networking/player_spawner.gd" id="3_qjimh"]
[ext_resource type="PackedScene" uid="uid://c4cew4af3h306" path="res://levels/lobby-scene/tent/tent.blend" id="4_qjimh"] [ext_resource type="PackedScene" uid="uid://c5ww6wbm2axro" path="res://levels/lobby-scene/tent/tent.tscn" id="4_qjimh"]
[ext_resource type="PackedScene" uid="uid://wcsd1tb0quj3" path="res://levels/lobby-scene/campfire/campfire.tscn" id="5_qjimh"] [ext_resource type="PackedScene" uid="uid://wcsd1tb0quj3" path="res://levels/lobby-scene/campfire/campfire.tscn" id="5_qjimh"]
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_qjimh"]
properties/0/path = NodePath("WorldEnvironment/DirectionalLight3D:rotation")
properties/0/spawn = true
properties/0/replication_mode = 2
properties/1/path = NodePath("WorldEnvironment/DirectionalLight3D:light_color")
properties/1/spawn = true
properties/1/replication_mode = 2
properties/2/path = NodePath("WorldEnvironment/DirectionalLight3D:light_energy")
properties/2/spawn = true
properties/2/replication_mode = 2
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_f73ky"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_f73ky"]
[sub_resource type="Sky" id="Sky_0aw1h"] [sub_resource type="Sky" id="Sky_0aw1h"]
@@ -22,28 +32,325 @@ glow_enabled = true
volumetric_fog_enabled = true volumetric_fog_enabled = true
volumetric_fog_density = 0.0 volumetric_fog_density = 0.0
[sub_resource type="FogMaterial" id="FogMaterial_qjimh"]
density = 0.05
albedo = Color(0.71539, 0.628132, 0.473352, 1)
height_falloff = 1e-05
[node name="Lobby" type="Node3D"] [node name="Lobby" type="Node3D"]
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
replication_config = SubResource("SceneReplicationConfig_qjimh")
[node name="WorldEnvironment" type="WorldEnvironment" parent="."] [node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_72fkp") environment = SubResource("Environment_72fkp")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="WorldEnvironment"] [node name="DirectionalLight3D" type="DirectionalLight3D" parent="WorldEnvironment"]
transform = Transform3D(0.915754, 0.29917, -0.268128, 0.115653, 0.442845, 0.889108, 0.384733, -0.845214, 0.370937, 0, 0, 0) transform = Transform3D(0.917663, -0.182505, -0.352967, 0.227411, 0.969643, 0.0898726, 0.32585, -0.162741, 0.931309, 0, 0, 0)
light_color = Color(0.71539, 0.628132, 0.473352, 1)
light_energy = 3.435
light_volumetric_fog_energy = 2.0
shadow_enabled = true shadow_enabled = true
shadow_transmittance_bias = 5.628 shadow_transmittance_bias = 5.628
[node name="Human-height-reference" parent="." instance=ExtResource("1_yyu2g")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.33741, 0.953, -5.00694)
[node name="lobby-terrain" parent="." instance=ExtResource("3_f73ky")] [node name="lobby-terrain" parent="." instance=ExtResource("3_f73ky")]
[node name="Node3D" type="Node3D" parent="lobby-terrain"] [node name="Tree" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 11.1286, 0, 0.918179)
[node name="tree" parent="lobby-terrain/Node3D" instance=ExtResource("3_0u2wx")] [node name="Tree2" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.47232, 0, -12.0981) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.48594, 0, -21.9149)
[node name="tree2" parent="lobby-terrain/Node3D" instance=ExtResource("3_0u2wx")] [node name="Tree3" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.47232, 0, -12.0981) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 34.9316, 0, -26.9708)
[node name="Tree4" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 39.9316, 0, 6.02919)
[node name="Tree5" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.9316, 0, -12.9708)
[node name="Tree6" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.06842, 0, 11.0292)
[node name="Tree7" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.611513, 0, 0.791234, 0, 1, 0, -0.791234, 0, 0.611513, -52.7514, 0, -25.6344)
[node name="Tree8" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.611513, 0, 0.791234, 0, 1, 0, -0.791234, 0, 0.611513, -84.2187, 0, -37.0667)
[node name="Tree9" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.611513, 0, 0.791234, 0, 1, 0, -0.791234, 0, 0.611513, -60.2623, 0, -61.5226)
[node name="Tree10" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.611513, 0, 0.791234, 0, 1, 0, -0.791234, 0, 0.611513, -31.094, 0, -45.2988)
[node name="Tree11" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.611513, 0, 0.791234, 0, 1, 0, -0.791234, 0, 0.611513, -57.1347, 0, -42.6753)
[node name="Tree12" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.611513, 0, 0.791234, 0, 1, 0, -0.791234, 0, 0.611513, -56.4904, 0, -4.26199)
[node name="Tree13" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.122129, 0, 0.992514, 0, 1, 0, -0.992514, 0, -0.122129, 12.3259, 0, -50.3651)
[node name="Tree14" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.122129, 0, 0.992514, 0, 1, 0, -0.992514, 0, -0.122129, -12.7043, 0, -30.1653)
[node name="Tree15" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.122129, 0, 0.992514, 0, 1, 0, -0.992514, 0, -0.122129, -18.2613, 0, -70.5838)
[node name="Tree16" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.122129, 0, 0.992514, 0, 1, 0, -0.992514, 0, -0.122129, 13.881, 0, -79.5766)
[node name="Tree17" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.122129, 0, 0.992514, 0, 1, 0, -0.992514, 0, -0.122129, -2.77846, 0, -59.3909)
[node name="Tree18" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.122129, 0, 0.992514, 0, 1, 0, -0.992514, 0, -0.122129, 24.7058, 0, -32.5466)
[node name="Tree19" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.424468, 0, -0.905443, 0, 1, 0, 0.905443, 0, -0.424468, -73.4507, 0, 61.208)
[node name="Tree20" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.424468, 0, -0.905443, 0, 1, 0, 0.905443, 0, -0.424468, -40.2487, 0, 65.511)
[node name="Tree21" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.424468, 0, -0.905443, 0, 1, 0, 0.905443, 0, -0.424468, -58.3024, 0, 94.5982)
[node name="Tree22" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.424468, 0, -0.905443, 0, 1, 0, 0.905443, 0, -0.424468, -90.3043, 0, 85.1179)
[node name="Tree23" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.424468, 0, -0.905443, 0, 1, 0, 0.905443, 0, -0.424468, -65.4605, 0, 76.8849)
[node name="Tree24" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.424468, 0, -0.905443, 0, 1, 0, 0.905443, 0, -0.424468, -74.4571, 0, 39.5343)
[node name="Tree25" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.456849, 0, -0.889544, 0, 1, 0, 0.889544, 0, 0.456849, -22.2938, 0, 14.639)
[node name="Tree26" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.456849, 0, -0.889544, 0, 1, 0, 0.889544, 0, 0.456849, 5.24282, 0.333068, -22.3762)
[node name="Tree27" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.456849, 0, -0.889544, 0, 1, 0, 0.889544, 0, 0.456849, 13.389, 0, 23.0717)
[node name="Tree28" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.456849, 0, -0.889544, 0, 1, 0, 0.889544, 0, 0.456849, -13.6817, 12.3126, 37.5975)
[node name="Tree29" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.456849, 0, -0.889544, 0, 1, 0, 0.889544, 0, 0.456849, -5.00365, 0, 17.9035)
[node name="Tree30" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.456849, 0, -0.889544, 0, 1, 0, 0.889544, 0, 0.456849, -40.0582, 0, 2.18158)
[node name="Tree31" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.950505, 0, -0.31071, 0, 1, 0, 0.31071, 0, 0.950505, -27.5248, 0, 84.0602)
[node name="Tree32" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.950505, 0, -0.31071, 0, 1, 0, 0.31071, 0, 0.950505, -27.309, 0, 50.5812)
[node name="Tree33" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.950505, 0, -0.31071, 0, 1, 0, 0.31071, 0, 0.950505, 3.76537, 0, 64.9473)
[node name="Tree34" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.950505, 0, -0.31071, 0, 1, 0, 0.31071, 0, 0.950505, -1.73554, 0, 97.8675)
[node name="Tree35" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.950505, 0, -0.31071, 0, 1, 0, 0.31071, 0, 0.950505, -12.9411, 0, 74.2152)
[node name="Tree36" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.950505, 0, -0.31071, 0, 1, 0, 0.31071, 0, 0.950505, -48.9133, 0, 87.706)
[node name="Tree37" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.958462, 0, 0.28522, 0, 1, 0, -0.28522, 0, -0.958462, -68.895, 0, -38.1058)
[node name="Tree38" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.958462, 0, 0.28522, 0, 1, 0, -0.28522, 0, -0.958462, -68.2169, 0, -4.63298)
[node name="Tree39" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.958462, 0, 0.28522, 0, 1, 0, -0.28522, 0, -0.958462, -99.6637, 0, -18.1643)
[node name="Tree40" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.958462, 0, 0.28522, 0, 1, 0, -0.28522, 0, -0.958462, -95.0437, 0, -51.2197)
[node name="Tree41" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.958462, 0, 0.28522, 0, 1, 0, -0.28522, 0, -0.958462, -83.2106, 0, -27.8749)
[node name="Tree42" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.958462, 0, 0.28522, 0, 1, 0, -0.28522, 0, -0.958462, -47.6115, 0, -42.3214)
[node name="Tree43" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.811788, 0, -0.583952, 0, 1, 0, 0.583952, 0, -0.811788, -15.2417, 0, 5.56369)
[node name="Tree44" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.811788, 0, -0.583952, 0, 1, 0, 0.583952, 0, -0.811788, 2.89171, 5.28237, 42.2972)
[node name="Tree45" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.811788, 0, -0.583952, 0, 1, 0, 0.583952, 0, -0.811788, -18.2788, 0, 42.1034)
[node name="Tree46" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.811788, 0, -0.583952, 0, 1, 0, 0.583952, 0, -0.811788, -41.6082, 0, 18.2342)
[node name="Tree47" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.811788, 0, -0.583952, 0, 1, 0, 0.583952, 0, -0.811788, -15.9009, 0, 23.147)
[node name="Tree48" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.811788, 0, -0.583952, 0, 1, 0, 0.583952, 0, -0.811788, -5.56213, 0, -13.8545)
[node name="Tree49" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.166029, 0, -0.986121, 0, 1, 0, 0.986121, 0, -0.166029, -84.6695, 0, 10.7058)
[node name="Tree50" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.166029, 0, -0.986121, 0, 1, 0, 0.986121, 0, -0.166029, -51.5301, 0, 5.94477)
[node name="Tree51" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.166029, 0, -0.986121, 0, 1, 0, 0.986121, 0, -0.166029, -61.1196, 0, 38.8088)
[node name="Tree52" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.166029, 0, -0.986121, 0, 1, 0, 0.986121, 0, -0.166029, -94.4917, 0, 38.2604)
[node name="Tree53" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.166029, 0, -0.986121, 0, 1, 0, 0.986121, 0, -0.166029, -72.7669, 0, 23.6648)
[node name="Tree54" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.166029, 0, -0.986121, 0, 1, 0, 0.986121, 0, -0.166029, -91.4529, 0, -9.90353)
[node name="Tree55" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.451345, 0, 0.89235, 0, 1, 0, -0.89235, 0, 0.451345, 79.8631, 0, 23.359)
[node name="Tree56" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.451345, 0, 0.89235, 0, 1, 0, -0.89235, 0, 0.451345, 46.8045, 0, 18.0654)
[node name="Tree57" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.451345, 0, 0.89235, 0, 1, 0, -0.89235, 0, 0.451345, 65.7197, 0, -10.4691)
[node name="Tree58" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.451345, 0, 0.89235, 0, 1, 0, -0.89235, 0, 0.451345, 84.7693, 0, -0.0364418)
[node name="Tree59" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.451345, 0, 0.89235, 0, 1, 0, -0.89235, 0, 0.451345, 72.3451, 0, 7.45029)
[node name="Tree60" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.451345, 0, 0.89235, 0, 1, 0, -0.89235, 0, 0.451345, 80.2211, 0, 45.0531)
[node name="Tree61" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.430054, 0, 0.902803, 0, 1, 0, -0.902803, 0, -0.430054, 27.337, 0, 68.378)
[node name="Tree62" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.430054, 0, 0.902803, 0, 1, 0, -0.902803, 0, -0.430054, 2.93279, 0, 91.2979)
[node name="Tree63" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.430054, 0, 0.902803, 0, 1, 0, -0.902803, 0, -0.430054, -8.07783, 0, 58.8824)
[node name="Tree64" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.430054, 0, 0.902803, 0, 1, 0, -0.902803, 0, -0.430054, 19.5644, 0, 40.1766)
[node name="Tree65" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.430054, 0, 0.902803, 0, 1, 0, -0.902803, 0, -0.430054, 10.1521, 0, 64.598)
[node name="Tree66" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.430054, 0, 0.902803, 0, 1, 0, -0.902803, 0, -0.430054, 44.721, 0, 81.3608)
[node name="Tree67" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.940792, 0, 0.338984, 0, 1, 0, -0.338984, 0, -0.940792, 34.6408, 0, -0.855806)
[node name="Tree68" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.940792, 0, 0.338984, 0, 1, 0, -0.338984, 0, -0.940792, 33.4243, 0, 32.6017)
[node name="Tree69" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.940792, 0, 0.338984, 0, 1, 0, -0.338984, 0, -0.940792, 2.79329, 0, 17.3131)
[node name="Tree70" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.940792, 0, 0.338984, 0, 1, 0, -0.338984, 0, -0.940792, 9.27582, 0, -15.4279)
[node name="Tree71" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.940792, 0, 0.338984, 0, 1, 0, -0.338984, 0, -0.940792, 19.7694, 0, 8.54882)
[node name="Tree72" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(-0.940792, 0, 0.338984, 0, 1, 0, -0.338984, 0, -0.940792, 56.1288, 0, -3.86066)
[node name="Tree73" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.971063, 0, -0.238822, 0, 1, 0, 0.238822, 0, 0.971063, 6.73125, 0, 27.1375)
[node name="Tree74" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.971063, 0, -0.238822, 0, 1, 0, 0.238822, 0, 0.971063, 4.44506, 0, -6.264)
[node name="Tree75" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.971063, 0, -0.238822, 0, 1, 0, 0.238822, 0, 0.971063, 36.5059, 0, 5.74019)
[node name="Tree76" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.971063, 0, -0.238822, 0, 1, 0, 0.238822, 0, 0.971063, 33.4801, 0, 38.9794)
[node name="Tree77" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.971063, 0, -0.238822, 0, 1, 0, 0.238822, 0, 0.971063, 20.5386, 0, 16.2304)
[node name="Tree78" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.971063, 0, -0.238822, 0, 1, 0, 0.238822, 0, 0.971063, -14.325, 0, 32.3713)
[node name="Tree79" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.782782, 0, 0.622296, 0, 1, 0, -0.622296, 0, 0.782782, -48.959, 0, -13.9026)
[node name="Tree80" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.782782, 0, 0.622296, 0, 1, 0, -0.622296, 0, 0.782782, -76.7854, 0, -32.5192)
[node name="Tree81" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.782782, 0, 0.622296, 0, 1, 0, -0.622296, 0, 0.782782, -47.6816, 0, -50.5461)
[node name="Tree82" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.782782, 0, 0.622296, 0, 1, 0, -0.622296, 0, 0.782782, -25.5144, 0, -27.6785)
[node name="Tree91" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.782782, 0, 0.622296, 0, 1, 0, -0.622296, 0, 0.782782, -6.96076, 0, -27.3104)
[node name="Tree92" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.782782, 0, 0.622296, 0, 1, 0, -0.622296, 0, 0.782782, -19.3298, 0, -30.7708)
[node name="Tree93" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.782782, 0, 0.622296, 0, 1, 0, -0.622296, 0, 0.782782, -31.2627, 0, -22.9674)
[node name="Tree94" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.782782, 0, 0.622296, 0, 1, 0, -0.622296, 0, 0.782782, -31.3363, 0, -16.1939)
[node name="Tree95" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.782782, 0, 0.622296, 0, 1, 0, -0.622296, 0, 0.782782, -29.4957, 0, -9.42036)
[node name="Tree96" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.782782, 0, 0.622296, 0, 1, 0, -0.622296, 0, 0.782782, -17.5693, 0, -4.45112)
[node name="Tree97" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.782782, 0, 0.622296, 0, 1, 0, -0.622296, 0, 0.782782, -6.45191, 0, -8.94227)
[node name="Tree98" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.782782, 0, 0.622296, 0, 1, 0, -0.622296, 0, 0.782782, -2.01016, 0, -37.6058)
[node name="Tree99" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.782782, 0, 0.622296, 0, 1, 0, -0.622296, 0, 0.782782, -14.8881, 0, -42.9982)
[node name="Tree83" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.782782, 0, 0.622296, 0, 1, 0, -0.622296, 0, 0.782782, -49.1457, 0, -31.4973)
[node name="Tree84" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.782782, 0, 0.622296, 0, 1, 0, -0.622296, 0, 0.782782, -57.694, 0, 5.95833)
[node name="Tree85" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.118439, 0, 0.992961, 0, 1, 0, -0.992961, 0, 0.118439, 20.1415, 0, -22.3759)
[node name="Tree86" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.118439, 0, 0.992961, 0, 1, 0, -0.992961, 0, 0.118439, -24.3894, 0, -5.41777)
[node name="Tree87" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.118439, 0, 0.992961, 0, 1, 0, -0.992961, 0, 0.118439, -4.73205, 0, -49.3144)
[node name="Tree88" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.118439, 0, 0.992961, 0, 1, 0, -0.992961, 0, 0.118439, 28.6279, 0, -50.3707)
[node name="Tree89" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.118439, 0, 0.992961, 0, 1, 0, -0.992961, 0, 0.118439, 7.6297, 0, -34.7478)
[node name="Tree90" parent="lobby-terrain" instance=ExtResource("2_qjimh")]
transform = Transform3D(0.118439, 0, 0.992961, 0, 1, 0, -0.992961, 0, 0.118439, 27.9076, 0, -2.11639)
[node name="PlayerSpawner" type="MultiplayerSpawner" parent="."] [node name="PlayerSpawner" type="MultiplayerSpawner" parent="."]
_spawnable_scenes = PackedStringArray("uid://csmfxg011xisf") _spawnable_scenes = PackedStringArray("uid://csmfxg011xisf")
@@ -51,7 +358,7 @@ spawn_path = NodePath("../Marker3D")
script = ExtResource("3_qjimh") script = ExtResource("3_qjimh")
[node name="Marker3D" type="Marker3D" parent="."] [node name="Marker3D" type="Marker3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.269072, -8.35164) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.1053, 1.29751, -14.168)
[node name="Campsite" type="Node3D" parent="."] [node name="Campsite" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.724, 0, -17.6721) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.724, 0, -17.6721)
@@ -59,22 +366,27 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.724, 0, -17.6721)
[node name="TentPlot1" type="Marker3D" parent="Campsite"] [node name="TentPlot1" type="Marker3D" parent="Campsite"]
transform = Transform3D(-0.998887, 0, -0.0471587, 0, 1, 0, 0.0471587, 0, -0.998887, -0.468871, 0.334599, -6.31805) transform = Transform3D(-0.998887, 0, -0.0471587, 0, 1, 0, 0.0471587, 0, -0.998887, -0.468871, 0.334599, -6.31805)
[node name="tent" parent="Campsite/TentPlot1" instance=ExtResource("4_qjimh")] [node name="Tent" parent="Campsite/TentPlot1" instance=ExtResource("4_qjimh")]
[node name="TentPlot2" type="Marker3D" parent="Campsite"] [node name="TentPlot2" type="Marker3D" parent="Campsite"]
transform = Transform3D(-0.240973, 0, -0.970532, 0, 1, 0, 0.970532, 0, -0.240973, -6.46887, 0.334599, -2.31805) transform = Transform3D(-0.240973, 0, -0.970532, 0, 1, 0, 0.970532, 0, -0.240973, -6.46887, 0.334599, -2.31805)
[node name="tent" parent="Campsite/TentPlot2" instance=ExtResource("4_qjimh")] [node name="Tent" parent="Campsite/TentPlot2" instance=ExtResource("4_qjimh")]
[node name="TentPlot3" type="Marker3D" parent="Campsite"] [node name="TentPlot3" type="Marker3D" parent="Campsite"]
transform = Transform3D(0.689594, 0, -0.724196, 0, 1, 0, 0.724196, 0, 0.689594, -4.46887, 0.334599, 4.68195) transform = Transform3D(0.689594, 0, -0.724196, 0, 1, 0, 0.724196, 0, 0.689594, -4.46887, 0.334599, 4.68195)
[node name="tent" parent="Campsite/TentPlot3" instance=ExtResource("4_qjimh")] [node name="Tent" parent="Campsite/TentPlot3" instance=ExtResource("4_qjimh")]
[node name="TentPlot4" type="Marker3D" parent="Campsite"] [node name="TentPlot4" type="Marker3D" parent="Campsite"]
transform = Transform3D(-0.0217975, 0, 0.999762, 0, 1, 0, -0.999762, 0, -0.0217975, 6.53113, 0.334599, -2.31805) transform = Transform3D(-0.518758, 0, 0.854921, 0, 1, 0, -0.854921, 0, -0.518758, 6.53113, 0.334599, -2.31805)
[node name="tent" parent="Campsite/TentPlot4" instance=ExtResource("4_qjimh")] [node name="Tent" parent="Campsite/TentPlot4" instance=ExtResource("4_qjimh")]
[node name="Campfire" parent="Campsite" instance=ExtResource("5_qjimh")] [node name="Campfire" parent="Campsite" instance=ExtResource("5_qjimh")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.392361, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.392361, 0)
[node name="FogVolume" type="FogVolume" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.07413, 6.02039, -11.3029)
size = Vector3(393.422, 76.9358, 405.889)
material = SubResource("FogMaterial_qjimh")

View File

@@ -0,0 +1,23 @@
[gd_scene load_steps=4 format=3 uid="uid://c5ww6wbm2axro"]
[ext_resource type="PackedScene" uid="uid://c4cew4af3h306" path="res://levels/lobby-scene/tent/tent.blend" id="1_bey51"]
[sub_resource type="BoxShape3D" id="BoxShape3D_6ocyw"]
size = Vector3(3.39648, 0.105957, 4.00098)
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_bey51"]
data = PackedVector3Array(1, -1, -1.4167, 1.0131, -0.75, -0.9922, 1.0131, -0.75, -1.3052, 1, -1, -1.4167, 1, -1, -0.9924, 1.0131, -0.75, -0.9922, 1.0131, -0.75, -1.3052, 1.0523, 0, -0.9917, 1.0262, -0.5, -1.4875, 1.0131, -0.75, -1.3052, 1.0131, -0.75, -0.9922, 1.0523, 0, -0.9917, 1.0131, -0.75, -0.9922, 1.1047, 1, 0, 1.0523, 0, -0.9917, 1, -1, -0.9924, 1.0131, -0.75, -0.8156, 1.0131, -0.75, -0.9922, 1.0915, 0.749, 0.0034, 1.0131, -0.75, -0.9922, 1.0131, -0.75, -0.8156, 1.1047, 1, 0, 1.0131, -0.75, -0.9922, 1.0915, 0.749, 0.0034, 1, -1, -0.9924, 1.0131, -0.75, 0.8012, 1.0131, -0.75, -0.8156, 1.0131, -0.75, 0.8012, 1, -1, -0.9924, 1, -1, 0, 1.0131, -0.75, 0.8012, 1, -1, 0, 1, -1, 0.9909, 1.0131, -0.75, 0.9911, 1.0915, 0.749, 0.0034, 1.0131, -0.75, 0.8012, 1.1047, 1, 0, 1.0915, 0.749, 0.0034, 1.0131, -0.75, 0.9911, 1.0131, -0.75, 0.8012, 1, -1, 0.9909, 1.0131, -0.75, 0.9911, 1.0131, -0.75, 0.9911, 1, -1, 0.9909, 1, -1, 1.4166, 1.1047, 1, 0, 1.0131, -0.75, 0.9911, 1.0523, 0, 0.9916, 1.0131, -0.75, 0.9911, 1, -1, 1.4166, 1.0131, -0.75, 1.3051, 1.0523, 0, 0.9916, 1.0131, -0.75, 0.9911, 1.0131, -0.75, 1.3051, 1.0523, 0, 0.9916, 1.0131, -0.75, 1.3051, 1.0262, -0.5, 1.4875, -1.0131, -0.75, -1.3052, -1, -1, 0, -1, -1, -1.4167, -1.0131, -0.75, -1.3052, -1.0131, -0.75, 1.3051, -1, -1, 0, -1, -1, 0, -1.0131, -0.75, 1.3051, -1, -1, 1.4166, -1.0131, -0.75, 1.3051, -1.0131, -0.75, -1.3052, -1.0524, 0, -0.9917, -1.0524, 0, -0.9917, -1.0131, -0.75, -1.3052, -1.0262, -0.5, -1.4875, -1.0131, -0.75, 1.3051, -1.0524, 0, -0.9917, -1.0524, 0, 0.9916, -1.0524, 0, 0.9916, -1.0524, 0, -0.9917, -1.1047, 1, 0, -1.0131, -0.75, 1.3051, -1.0524, 0, 0.9916, -1.0262, -0.5, 1.4875, 1.0523, 0, 0.9916, 0, 0.9167, 0, 1.1047, 1, 0, 1.0523, 0, 0.9916, 0, -0.0417, 0.9916, 0, 0.9167, 0, -1.0524, 0, 0.9916, 0, 0.9167, 0, 0, -0.0417, 0.9916, -1.0524, 0, 0.9916, -1.1047, 1, 0, 0, 0.9167, 0, 0, -0.5208, 1.4875, -1.0524, 0, 0.9916, 0, -0.0417, 0.9916, 0, -0.5208, 1.4875, -1.0262, -0.5, 1.4875, -1.0524, 0, 0.9916, 1.0262, -0.5, 1.4875, 0, -0.0417, 0.9916, 1.0523, 0, 0.9916, 1.0262, -0.5, 1.4875, 0, -0.5208, 1.4875, 0, -0.0417, 0.9916, 1.0131, -0.75, 1.3051, 0, -0.5208, 1.4875, 1.0262, -0.5, 1.4875, 1.0131, -0.75, 1.3051, 0, -0.7604, 1.3051, 0, -0.5208, 1.4875, 0, -0.7604, -1.3052, -1, -1, -1.4167, 0, -1, -1.4167, 0, -0.7604, -1.3052, -1.0131, -0.75, -1.3052, -1, -1, -1.4167, 1.0131, -0.75, -1.3052, 0, -1, -1.4167, 1, -1, -1.4167, 1.0131, -0.75, -1.3052, 0, -0.7604, -1.3052, 0, -1, -1.4167, 0, -0.7604, -1.3052, 1.0262, -0.5, -1.4875, 0, -0.5208, -1.4875, 0, -0.7604, -1.3052, 1.0131, -0.75, -1.3052, 1.0262, -0.5, -1.4875, 0, -0.7604, -1.3052, -1.0262, -0.5, -1.4875, -1.0131, -0.75, -1.3052, 0, -0.7604, -1.3052, 0, -0.5208, -1.4875, -1.0262, -0.5, -1.4875, -1.0524, 0, -0.9917, 0, -0.5208, -1.4875, 0, -0.0417, -0.9917, -1.0524, 0, -0.9917, -1.0262, -0.5, -1.4875, 0, -0.5208, -1.4875, 1.0262, -0.5, -1.4875, 0, -0.0417, -0.9917, 0, -0.5208, -1.4875, 1.0262, -0.5, -1.4875, 1.0523, 0, -0.9917, 0, -0.0417, -0.9917, 0, -0.0417, -0.9917, 1.1047, 1, 0, 0, 0.9167, 0, 0, -0.0417, -0.9917, 1.0523, 0, -0.9917, 1.1047, 1, 0, 0, -0.0417, -0.9917, -1.1047, 1, 0, -1.0524, 0, -0.9917, 0, -0.0417, -0.9917, 0, 0.9167, 0, -1.1047, 1, 0, 0, -0.5208, 1.4875, -1.0131, -0.75, 1.3051, -1.0262, -0.5, 1.4875, 0, -0.5208, 1.4875, 0, -0.7604, 1.3051, -1.0131, -0.75, 1.3051, -1, -1, 1.4166, 0, -0.7604, 1.3051, 0, -1, 1.4166, -1, -1, 1.4166, -1.0131, -0.75, 1.3051, 0, -0.7604, 1.3051, 0, -0.7604, 1.3051, 1, -1, 1.4166, 0, -1, 1.4166, 0, -0.7604, 1.3051, 1.0131, -0.75, 1.3051, 1, -1, 1.4166, 1, -1, -0.9924, 1, -0.9917, -1.4167, 1, -1, -1.4167, 1, -1, -0.9924, 1, -0.9917, -0.9924, 1, -0.9917, -1.4167, 1, -1, 0, 1, -0.9917, -0.9924, 1, -1, -0.9924, 1, -1, 0, 1, -0.9917, 0, 1, -0.9917, -0.9924, -1, -1, -1.4167, -1, -0.9917, 0, -1, -1, 0, -1, -1, -1.4167, -1, -0.9917, -1.4167, -1, -0.9917, 0, -1, -1, 0, -1, -0.9917, 0, -1, -0.9917, 1.4166, -1, -1, 0, -1, -0.9917, 1.4166, -1, -1, 1.4166, 1, -1, -1.4167, 0, -0.9917, -1.4167, 1, -0.9917, -1.4167, 1, -1, -1.4167, 0, -1, -1.4167, 0, -0.9917, -1.4167, 0, -1, -1.4167, -1, -0.9917, -1.4167, 0, -0.9917, -1.4167, 0, -1, -1.4167, -1, -1, -1.4167, -1, -0.9917, -1.4167, 1, -1, 1.4166, 1, -0.9917, 0.9909, 1, -1, 0.9909, 1, -1, 1.4166, 1, -0.9917, 1.4166, 1, -0.9917, 0.9909, 0, -1, 1.4166, 1, -0.9917, 1.4166, 1, -1, 1.4166, 0, -1, 1.4166, 0, -0.9917, 1.4166, 1, -0.9917, 1.4166, -1, -1, 1.4166, 0, -0.9917, 1.4166, 0, -1, 1.4166, -1, -1, 1.4166, -1, -0.9917, 1.4166, 0, -0.9917, 1.4166, 1, -1, 0.9909, 1, -0.9917, 0, 1, -0.9917, 0.9909, 1, -1, 0.9909, 1, -1, 0, 1, -0.9917, 0)
[node name="Tent" type="Node3D"]
[node name="tent" parent="." instance=ExtResource("1_bey51")]
[node name="StaticBody3D" type="StaticBody3D" parent="."]
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0397949, 0)
shape = SubResource("BoxShape3D_6ocyw")
[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(3.57628e-07, 0, 1.2, 0, 1.2, 0, -2, 0, 2.14577e-07, 0, 1.2, 0)
shape = SubResource("ConcavePolygonShape3D_bey51")

View File

@@ -0,0 +1,17 @@
[gd_scene load_steps=3 format=3 uid="uid://baxlyc1rqnkh5"]
[ext_resource type="PackedScene" uid="uid://bhgahenvxqhec" path="res://levels/lobby-scene/tree/tree.blend" id="1_lbkut"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_0o2vh"]
radius = 0.3
height = 13.6187
[node name="Tree" type="Node3D"]
[node name="tree2" parent="." instance=ExtResource("1_lbkut")]
[node name="StaticBody3D" type="StaticBody3D" parent="."]
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 6.8, 0)
shape = SubResource("CapsuleShape3D_0o2vh")

View File

@@ -1,7 +1,10 @@
class_name LobbyPlayerSpawner
extends MultiplayerSpawner extends MultiplayerSpawner
@onready var player_scene: PackedScene = load("res://player/Player.tscn") @onready var player_scene: PackedScene = load("res://player/Player.tscn")
var players_dict: Dictionary[int, Player] = {}
func _ready() -> void: func _ready() -> void:
spawn_function = spawn_player spawn_function = spawn_player
@@ -17,6 +20,12 @@ func spawn_player(data: Dictionary) -> Player:
new_player.set_player_name(peer_id, player_name) new_player.set_player_name(peer_id, player_name)
new_player.position = Vector3.UP new_player.position = Vector3.UP
GameManager.players.append(int(peer_id)) GameManager.players[int(peer_id)] = new_player
return new_player return new_player
func delete_player(id: int) -> void:
var player_to_delete = GameManager.players[id]
GameManager.players.erase(id)
player_to_delete.queue_free()

View File

@@ -26,10 +26,12 @@ func _ready() -> void:
Steam.lobby_joined.connect(_on_lobby_joined) Steam.lobby_joined.connect(_on_lobby_joined)
Steam.lobby_chat_update.connect(_on_lobby_chat_update) Steam.lobby_chat_update.connect(_on_lobby_chat_update)
Steam.p2p_session_request.connect(_on_p2p_session_request) Steam.p2p_session_request.connect(_on_p2p_session_request)
Steam.join_requested.connect(_on_lobby_join_requested)
multiplayer.peer_connected.connect(_on_peer_connected) multiplayer.peer_connected.connect(_on_peer_connected)
multiplayer.peer_disconnected.connect(_on_peer_disconnected) multiplayer.peer_disconnected.connect(_on_peer_disconnected)
multiplayer.connected_to_server.connect(_on_connected_to_server) multiplayer.connected_to_server.connect(_on_connected_to_server)
multiplayer.server_disconnected.connect(_on_disconnected_from_server)
multiplayer.connection_failed.connect(_on_connection_failed) multiplayer.connection_failed.connect(_on_connection_failed)
check_command_line() check_command_line()
@@ -37,7 +39,6 @@ func _ready() -> void:
multiplayer.server_relay = true multiplayer.server_relay = true
func _process(delta): func _process(delta):
if not steam_initialized: if not steam_initialized:
return return
@@ -72,6 +73,11 @@ func join_lobby(this_lobby_id: int):
Steam.joinLobby(this_lobby_id) Steam.joinLobby(this_lobby_id)
func _on_lobby_join_requested(this_lobby_id: int, friend_id: int) -> void:
print("[CLIENT] 1. Attempting to join lobby (ID: %s)..." % this_lobby_id)
join_lobby(this_lobby_id)
func _on_lobby_joined(this_lobby_id: int, _p, _l, response: int): func _on_lobby_joined(this_lobby_id: int, _p, _l, response: int):
if response != Steam.CHAT_ROOM_ENTER_RESPONSE_SUCCESS: if response != Steam.CHAT_ROOM_ENTER_RESPONSE_SUCCESS:
print("[CLIENT] !!! Failed to join lobby: %s" % get_join_fail_reason(response)) print("[CLIENT] !!! Failed to join lobby: %s" % get_join_fail_reason(response))
@@ -91,6 +97,10 @@ func _on_connected_to_server():
GameManager.request_server_to_spawn_player.rpc_id(1, multiplayer.get_unique_id(), steam_username) GameManager.request_server_to_spawn_player.rpc_id(1, multiplayer.get_unique_id(), steam_username)
func _on_disconnected_from_server():
pass
func _on_p2p_session_request(steam_id_remote: int) -> void: func _on_p2p_session_request(steam_id_remote: int) -> void:
print("[P2P] ==> Session request from: %s. Accepting." % steam_id_remote) print("[P2P] ==> Session request from: %s. Accepting." % steam_id_remote)
Steam.acceptP2PSessionWithUser(steam_id_remote) Steam.acceptP2PSessionWithUser(steam_id_remote)
@@ -129,11 +139,12 @@ func _on_peer_connected(id: int):
func _on_peer_disconnected(id: int): func _on_peer_disconnected(id: int):
print("[INFO] Peer %s has disconnected." % id) print("[INFO] Peer %s has disconnected." % id)
GameManager.request_server_to_delete_player.rpc_id(1, id)
if players.has(id): if players.has(id):
#players[id].queue_free()
players.erase(id) players.erase(id)
func _on_connection_failed() -> void: func _on_connection_failed() -> void:
print("[CLIENT] !!! Connection to the host failed.") print("[CLIENT] !!! Connection to the host failed.")
@@ -142,7 +153,9 @@ func _on_lobby_chat_update(_l_id, user_changed_id: int, _u_m_c_id, chat_state: i
var state_string = "UNKNOWN" var state_string = "UNKNOWN"
match chat_state: match chat_state:
Steam.CHAT_MEMBER_STATE_CHANGE_ENTERED: state_string = "ENTERED" Steam.CHAT_MEMBER_STATE_CHANGE_ENTERED: state_string = "ENTERED"
Steam.CHAT_MEMBER_STATE_CHANGE_LEFT: state_string = "LEFT" Steam.CHAT_MEMBER_STATE_CHANGE_LEFT:
state_string = "LEFT"
Steam.CHAT_MEMBER_STATE_CHANGE_DISCONNECTED: state_string = "DISCONNECTED" Steam.CHAT_MEMBER_STATE_CHANGE_DISCONNECTED: state_string = "DISCONNECTED"
print("[LOBBY INFO] User %s has %s the lobby." % [user_changed_id, state_string]) print("[LOBBY INFO] User %s has %s the lobby." % [user_changed_id, state_string])

View File

@@ -1,64 +1,60 @@
[gd_scene load_steps=7 format=3 uid="uid://csmfxg011xisf"] [gd_scene load_steps=7 format=3 uid="uid://csmfxg011xisf"]
[ext_resource type="Script" uid="uid://dopyfulbw2mx5" path="res://player/player.gd" id="1_ulp21"] [ext_resource type="Script" uid="uid://dopyfulbw2mx5" path="res://player/player.gd" id="1_ulp21"]
[ext_resource type="PackedScene" uid="uid://caons6q8u2qt2" path="res://player/player.blend" id="2_3c3w1"]
[ext_resource type="PackedScene" uid="uid://k6jhk4snc3je" path="res://player/head.blend" id="3_wnvi2"]
[ext_resource type="PackedScene" uid="uid://xnd2p4kstsfw" path="res://player/watch/watch.tscn" id="4_83hs8"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ehsmr"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_ehsmr"]
radius = 0.153372
[sub_resource type="CapsuleMesh" id="CapsuleMesh_ulp21"] height = 1.37733
radius = 0.3
height = 1.5
[sub_resource type="PrismMesh" id="PrismMesh_3c3w1"]
size = Vector3(0.5, 0.5, 0.5)
[sub_resource type="SphereMesh" id="SphereMesh_wnvi2"]
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_ulp21"] [sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_ulp21"]
properties/0/path = NodePath(".:position") properties/0/path = NodePath(".:position")
properties/0/spawn = true properties/0/spawn = true
properties/0/replication_mode = 2 properties/0/replication_mode = 2
properties/1/path = NodePath(".:rotation") properties/1/path = NodePath("Neck:rotation")
properties/1/spawn = true properties/1/spawn = true
properties/1/replication_mode = 2 properties/1/replication_mode = 2
properties/2/path = NodePath(".:rotation")
properties/2/spawn = true
properties/2/replication_mode = 2
properties/3/path = NodePath(".:scale")
properties/3/spawn = true
properties/3/replication_mode = 2
properties/4/path = NodePath("Mesh/AnimationPlayer:current_animation")
properties/4/spawn = true
properties/4/replication_mode = 2
[node name="Player" type="CharacterBody3D"] [node name="Player" type="CharacterBody3D" node_paths=PackedStringArray("camera", "neck", "body", "head", "animation_player")]
collision_layer = 2 collision_layer = 2
collision_mask = 3 collision_mask = 3
script = ExtResource("1_ulp21") script = ExtResource("1_ulp21")
camera = NodePath("Neck/Camera3D")
neck = NodePath("Neck")
body = NodePath("Mesh")
head = NodePath("Neck/HeadBoneAttachment3D/head")
animation_player = NodePath("Mesh/AnimationPlayer")
[node name="Camera3D" type="Camera3D" parent="."] [node name="Neck" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.399442, 0.0644827) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.297908, 0)
[node name="Camera3D" type="Camera3D" parent="Neck"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.144889, 0)
[node name="HeadBoneAttachment3D" type="BoneAttachment3D" parent="Neck"]
transform = Transform3D(0.999974, -0.00719406, 8.09973e-08, 0.00719406, 0.999974, -1.33776e-07, -8.00328e-08, 1.34355e-07, 1, 0.00301405, -0.0458933, 0.00284567)
bone_name = "HeadBone.002"
bone_idx = 8
use_external_skeleton = true
external_skeleton = NodePath("../../Mesh/Armature/Skeleton3D")
[node name="head" parent="Neck/HeadBoneAttachment3D" instance=ExtResource("3_wnvi2")]
transform = Transform3D(0.999899, 0.014218, -6.68899e-05, -0.0142179, 0.999899, 0.000213697, 6.99214e-05, -0.000212723, 1, 0.00483739, 0.27284, -0.0187194)
[node name="CollisionShape3D" type="CollisionShape3D" parent="."] [node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("CapsuleShape3D_ehsmr") shape = SubResource("CapsuleShape3D_ehsmr")
[node name="Mesh" type="Node3D" parent="."]
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0, 0, 0)
[node name="MeshInstance3D" type="MeshInstance3D" parent="Mesh"]
transform = Transform3D(1, 0, 0, 0, 0.89961, 0, 0, 0, 1, 0, -0.318288, 0)
layers = 2
mesh = SubResource("CapsuleMesh_ulp21")
skeleton = NodePath("../..")
[node name="MeshInstance3D2" type="MeshInstance3D" parent="Mesh"]
transform = Transform3D(1.41676, 0, 0, 0, 1.31718, 0, 0, 0, 1.22029, 0, 0.415995, 0)
layers = 2
mesh = SubResource("PrismMesh_3c3w1")
skeleton = NodePath("../..")
[node name="MeshInstance3D3" type="MeshInstance3D" parent="Mesh"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, -0.0855882, 0.409407, 0.293333)
layers = 2
mesh = SubResource("SphereMesh_wnvi2")
skeleton = NodePath("../..")
[node name="MeshInstance3D4" type="MeshInstance3D" parent="Mesh"]
transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0.0770122, 0.409407, 0.293333)
layers = 2
mesh = SubResource("SphereMesh_wnvi2")
skeleton = NodePath("../..")
[node name="Label3D" type="Label3D" parent="."] [node name="Label3D" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.887858, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.887858, 0)
billboard = 1 billboard = 1
@@ -66,3 +62,15 @@ text = "Username"
[node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."] [node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."]
replication_config = SubResource("SceneReplicationConfig_ulp21") replication_config = SubResource("SceneReplicationConfig_ulp21")
[node name="Mesh" parent="." instance=ExtResource("2_3c3w1")]
[node name="AnimationPlayer" parent="Mesh" index="1"]
autoplay = "Idle"
[node name="Watch" parent="." instance=ExtResource("4_83hs8")]
transform = Transform3D(0.707107, 0.707107, -2.03718e-08, -0.183013, 0.183013, -0.965926, -0.683013, 0.683013, 0.258819, -0.228015, 0.33104, -0.235279)
visible = false
[editable path="Neck/HeadBoneAttachment3D/head"]
[editable path="Mesh"]

BIN
splunk/player/head.blend Normal file

Binary file not shown.

View File

@@ -0,0 +1,63 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://k6jhk4snc3je"
path="res://.godot/imported/head.blend-dcafcd72c4b2f826b0eba225740d3f47.scn"
[deps]
source_file="res://player/head.blend"
dest_files=["res://.godot/imported/head.blend-dcafcd72c4b2f826b0eba225740d3f47.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
_subresources={
"nodes": {
"PATH:Head": {
"mesh_instance/cast_shadow": 0
},
"PATH:Head-shadows": {
"mesh_instance/cast_shadow": 3,
"mesh_instance/layers": 4
}
}
}
blender/nodes/visible=0
blender/nodes/active_collection_only=false
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/export_geometry_nodes_instances=false
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true

BIN
splunk/player/head.blend1 Normal file

Binary file not shown.

BIN
splunk/player/player.blend Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

BIN
splunk/player/player.blend1 Normal file

Binary file not shown.

View File

@@ -1,24 +1,51 @@
extends CharacterBody3D class_name Player extends CharacterBody3D
class_name Player
@export var speed = 5.0 @export_category("Player Ailments")
@export var jump_velocity = 4.5 @export_range(0, 100, 1.0) var health: int = 100
@export var mouse_sensitivity = 0.002 @export_range(0, 100, 1.0) var toxicity: int = 0
@export_range(0, 100, 1.0) var burns: int = 0
@export_range(0, 100, 1.0) var physical_trauma: int = 0
@export_range(0, 100, 1.0) var hunger: int = 0
@export_range(0, 100, 1.0) var thirst: int = 0
@export_range(0, 100, 1.0) var insanity: int = 0
@export_range(0, 100, 1.0) var drowning: int = 0
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity") @export_category("Player Physics/Attributes")
var camera_node: Camera3D @export_range(1, 35, 1) var speed: float = 5.0
@export_range(10, 400, 1) var acceleration: float = 100.0
@export_range(0.1, 3.0, 0.1) var jump_height: float = 1.0
@export_range(0.1, 3.0, 0.1, "or_greater") var camera_sens: float = 1.0
@export_range(0.1, 3.0, 0.1, "or_greater") var joystick_camera_sens_multiplier: float = 5.0
@export_category("Node References")
@export var camera: Camera3D
@export var neck: Node3D
@export var body: Node3D
@export var head: Node3D
@export var watch_face: MeshInstance3D
@export var animation_player: AnimationPlayer
var jumping: bool = false
var is_using_joystick: bool = false
var move_dir: Vector2 # Input direction for movement
var look_dir: Vector2 # Input direction for look/aim
var walk_vel: Vector3 # Walking velocity
var grav_vel: Vector3 # Gravity velocity
var jump_vel: Vector3 # Jumping velocity
var gravity: float = 9.8 # Gravity
func _ready(): func _ready():
if is_multiplayer_authority(): if is_multiplayer_authority():
print("-> [%s] Authority granted. Setting up camera and input." % name) print("-> [%s] Authority granted. Setting up camera and input." % name)
camera_node = $Camera3D camera.make_current()
camera_node.make_current()
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
$Mesh.hide() #$Mesh.hide() # commented out; we want self-body view
$Label3D.hide()
head.find_child("Head").hide()
func set_player_name(peer_id: String, player_name: String): func set_player_name(peer_id: String, player_name: String):
@@ -26,54 +53,81 @@ func set_player_name(peer_id: String, player_name: String):
$Label3D.text = player_name $Label3D.text = player_name
#@rpc("any_peer", "call_local", "unreliable")
#func update_remote_transform(new_transform: Transform3D):
#global_transform = new_transform
func _physics_process(delta):
if is_multiplayer_authority():
# Apply gravity
if not is_on_floor():
velocity.y -= gravity * delta
# Handle Jump
if Input.is_action_just_pressed("jump") and is_on_floor():
velocity.y = jump_velocity
# Get the input direction and apply movement
var input_dir = Input.get_vector("move_left", "move_right", "move_forward", "move_backward")
var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
if is_on_floor():
if direction:
velocity.x = direction.x * speed
velocity.z = direction.z * speed
else:
velocity.x = move_toward(velocity.x, 0, speed)
velocity.z = move_toward(velocity.z, 0, speed)
else:
# Air control
velocity.x = lerp(velocity.x, direction.x * speed, delta * 5.0)
velocity.z = lerp(velocity.z, direction.z * speed, delta * 5.0)
move_and_slide()
#update_remote_transform.rpc(global_transform)
func _input(event): func _input(event):
if is_multiplayer_authority(): if is_multiplayer_authority():
if Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
if event is InputEventMouseMotion: if event is InputEventMouseMotion:
# Rotate the CharacterBody3D around the Y-axis for horizontal look is_using_joystick = false
rotate_y(-event.relative.x * mouse_sensitivity) look_dir = event.relative * 0.001
_rotate_camera()
elif event is InputEventJoypadMotion:
is_using_joystick = true
# Rotate the Camera3D around its local X-axis for vertical look if Input.is_action_just_pressed("jump"):
var change = -event.relative.y * mouse_sensitivity jumping = true
var new_x_rotation = camera_node.rotation.x + change animation_player.play("Jump")
camera_node.rotation.x = clamp(new_x_rotation, deg_to_rad(-90), deg_to_rad(90))
if event.is_action_pressed("ui_cancel"): # Typically Escape key if event.is_action_pressed("esc") and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
if Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED:
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
else: elif event.is_action_pressed("esc") and not Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
func _physics_process(delta: float) -> void:
if is_multiplayer_authority():
velocity = walk(delta) + _gravity(delta) + _jump(delta)
global_rotation.x = 0.0
global_rotation.z = 0.0
if Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
_handle_joypad_camera_rotation(delta)
move_and_slide()
func _rotate_camera(sens_mod: float = 1.0) -> void:
if is_multiplayer_authority():
var camera_sens_final = camera_sens
if is_using_joystick:
camera_sens_final = camera_sens * joystick_camera_sens_multiplier
rotation.y -= look_dir.x * camera_sens_final * sens_mod
neck.rotation.x = clamp(neck.rotation.x - look_dir.y * camera_sens_final * sens_mod, -1.5, 1.5)
func _handle_joypad_camera_rotation(delta: float, sens_mod: float = 1.0) -> void:
var joypad_dir: Vector2 = Input.get_vector("look_left","look_right","look_up","look_down")
if joypad_dir.length() > 0:
look_dir += joypad_dir * delta
_rotate_camera(sens_mod)
look_dir = Vector2.ZERO
func walk(delta: float) -> Vector3:
if Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
move_dir = Input.get_vector("move_left", "move_right", "move_forward", "move_backward")
var _forward: Vector3 = neck.global_transform.basis * Vector3(move_dir.x, 0, move_dir.y)
var walk_dir: Vector3 = Vector3(_forward.x, 0, _forward.z).normalized()
walk_vel = walk_vel.move_toward(walk_dir * speed * move_dir.length(), acceleration * delta)
if walk_vel:
animation_player.play("Walk")
else:
animation_player.play("Idle")
return walk_vel
func _gravity(delta: float) -> Vector3:
grav_vel = Vector3.ZERO if is_on_floor() else grav_vel.move_toward(Vector3(0, velocity.y - gravity, 0), gravity * delta)
if not is_on_floor() and animation_player.current_animation.begins_with("Idle"):
animation_player.play("Fall")
return grav_vel
func _jump(delta: float) -> Vector3:
if jumping:
if is_on_floor(): jump_vel = Vector3(0, sqrt(4 * jump_height * gravity), 0)
jumping = false
return jump_vel
jump_vel = Vector3.ZERO if is_on_floor() else jump_vel.move_toward(Vector3.ZERO, gravity * delta)
return jump_vel

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://duqmryk4caogn"
path.s3tc="res://.godot/imported/arms.png-c03c798cb61a16c352c998058bb5ba07.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://player/textures/arms.png"
dest_files=["res://.godot/imported/arms.png-c03c798cb61a16c352c998058bb5ba07.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://soon8fejkbpi"
path.s3tc="res://.godot/imported/body.png-8538a92e4d8adfcb74ea6ee2f8ff59b0.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://player/textures/body.png"
dest_files=["res://.godot/imported/body.png-8538a92e4d8adfcb74ea6ee2f8ff59b0.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d1opx7wmrdxie"
path.s3tc="res://.godot/imported/feet.png-5fda5a3596df7f6058e8acac591e0ee2.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://player/textures/feet.png"
dest_files=["res://.godot/imported/feet.png-5fda5a3596df7f6058e8acac591e0ee2.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://8wxeis3pudx7"
path.s3tc="res://.godot/imported/head.png-d658783ec5627f70f3e95905a0beaf97.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://player/textures/head.png"
dest_files=["res://.godot/imported/head.png-d658783ec5627f70f3e95905a0beaf97.s3tc.ctex"]
[params]
compress/mode=2
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
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=0

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d04873hiusc6i"
path="res://.godot/imported/circular_progress_bar.png-f4eb6f895796c7c677474f1ff35715a5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://player/watch/textures/circular_progress_bar.png"
dest_files=["res://.godot/imported/circular_progress_bar.png-f4eb6f895796c7c677474f1ff35715a5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
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/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

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bc8il5eibx7u1"
path="res://.godot/imported/circular_progress_bar_outline.png-f21aab2517811e4994f100e74ba10c8f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://player/watch/textures/circular_progress_bar_outline.png"
dest_files=["res://.godot/imported/circular_progress_bar_outline.png-f21aab2517811e4994f100e74ba10c8f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
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/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

Binary file not shown.

View File

@@ -0,0 +1,53 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://cwjrbynrbn6fh"
path="res://.godot/imported/watch.blend-326c3df72c7fa85f5cf7e4436b5992fc.scn"
[deps]
source_file="res://player/watch/watch.blend"
dest_files=["res://.godot/imported/watch.blend-326c3df72c7fa85f5cf7e4436b5992fc.scn"]
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
_subresources={}
blender/nodes/visible=0
blender/nodes/active_collection_only=false
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/export_geometry_nodes_instances=false
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true

Binary file not shown.

View File

@@ -0,0 +1,11 @@
extends Node3D
@export_category("Watch Properties")
@export_range(0, 100, 1.0) var health: int = 100
@export_range(0, 100, 1.0) var toxicity: int = 0
@export_range(0, 100, 1.0) var burns: int = 0
@export_range(0, 100, 1.0) var physical_trauma: int = 0
@export_range(0, 100, 1.0) var hunger: int = 0
@export_range(0, 100, 1.0) var thirst: int = 0
@export_range(0, 100, 1.0) var insanity: int = 0
@export_range(0, 100, 1.0) var drowning: int = 0

View File

@@ -0,0 +1 @@
uid://pte5bmcl0pup

View File

@@ -0,0 +1,28 @@
[gd_scene load_steps=6 format=3 uid="uid://xnd2p4kstsfw"]
[ext_resource type="PackedScene" uid="uid://cwjrbynrbn6fh" path="res://player/watch/watch.blend" id="1_aow76"]
[ext_resource type="Script" uid="uid://pte5bmcl0pup" path="res://player/watch/watch.gd" id="1_kkuxj"]
[ext_resource type="PackedScene" uid="uid://ifoxqwmyx5pj" path="res://player/watch/watch_interface.tscn" id="3_5wyi7"]
[sub_resource type="ViewportTexture" id="ViewportTexture_tq7ns"]
viewport_path = NodePath("SubViewport")
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vnrqh"]
resource_local_to_scene = true
shading_mode = 0
albedo_texture = SubResource("ViewportTexture_tq7ns")
uv1_scale = Vector3(20.675, 20.675, 20.675)
[node name="Watch" type="Node3D"]
script = ExtResource("1_kkuxj")
[node name="watch" parent="." instance=ExtResource("1_aow76")]
[node name="WatchFace" parent="watch" index="1"]
surface_material_override/0 = SubResource("StandardMaterial3D_vnrqh")
[node name="SubViewport" type="SubViewport" parent="."]
[node name="WatchInterface" parent="SubViewport" instance=ExtResource("3_5wyi7")]
[editable path="watch"]

View File

@@ -0,0 +1,32 @@
[gd_scene load_steps=4 format=3 uid="uid://ifoxqwmyx5pj"]
[ext_resource type="Theme" uid="uid://oe0bmfcnckx8" path="res://player/watch/watch_interface_theme.tres" id="1_b0s04"]
[ext_resource type="Texture2D" uid="uid://d04873hiusc6i" path="res://player/watch/textures/circular_progress_bar.png" id="2_rvv3g"]
[ext_resource type="Texture2D" uid="uid://bc8il5eibx7u1" path="res://player/watch/textures/circular_progress_bar_outline.png" id="3_rvv3g"]
[node name="WatchInterface" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="CenterContainer" type="CenterContainer" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="TextureProgressBar" type="TextureProgressBar" parent="CenterContainer"]
layout_mode = 2
theme = ExtResource("1_b0s04")
value = 78.0
fill_mode = 4
texture_under = ExtResource("2_rvv3g")
texture_over = ExtResource("3_rvv3g")
texture_progress = ExtResource("2_rvv3g")
tint_under = Color(0.444843, 0.444843, 0.444843, 1)
tint_progress = Color(1, 0.35, 0.35, 1)

View File

@@ -0,0 +1,3 @@
[gd_resource type="Theme" format=3 uid="uid://oe0bmfcnckx8"]
[resource]

View File

@@ -20,6 +20,10 @@ config/icon="res://icon.svg"
SteamManager="*res://networking/steam-manager.gd" SteamManager="*res://networking/steam-manager.gd"
GameManager="*res://game-logic/game_manager.gd" GameManager="*res://game-logic/game_manager.gd"
[display]
window/vsync/vsync_mode=0
[editor_plugins] [editor_plugins]
enabled=PackedStringArray("res://addons/freecam_3D/plugin.cfg") enabled=PackedStringArray("res://addons/freecam_3D/plugin.cfg")
@@ -97,10 +101,36 @@ inv_slot_4={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":52,"key_label":0,"unicode":52,"location":0,"echo":false,"script":null) "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":52,"key_label":0,"unicode":52,"location":0,"echo":false,"script":null)
] ]
} }
look_left={
"deadzone": 0.2,
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null)
]
}
look_right={
"deadzone": 0.2,
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null)
]
}
look_down={
"deadzone": 0.2,
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null)
]
}
look_up={
"deadzone": 0.2,
"events": [Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":-1.0,"script":null)
]
}
esc={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
[layer_names] [layer_names]
3d_render/layer_2="player" 3d_render/layer_2="player"
3d_render/layer_3="multiplayer_player_view_shadows_only"
3d_physics/layer_2="player" 3d_physics/layer_2="player"
[physics] [physics]