Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
c268ee7
added initial stuff
Pewweper Feb 22, 2025
4382236
dialogue box + talking options
Pewweper Feb 22, 2025
ca22e8b
Merge branch 'main' into 3d_adventure
Pewweper Feb 22, 2025
92d8b0b
added following units
Pewweper Feb 25, 2025
5fcbefd
new follower scene
Pewweper Feb 25, 2025
e8193cf
camera work
Pewweper Feb 28, 2025
356bb96
new meshes + updated ally logic
Pewweper Mar 1, 2025
e6b5e17
Merge branch 'main' into 3d_adventure
Pewweper Mar 1, 2025
350b414
scrap collection mechanic added
Pewweper Mar 2, 2025
a8c2583
added damaging and being damaged
Pewweper Mar 6, 2025
4d45208
Overworld + ally rework + dungeon
Pewweper Mar 8, 2025
af7ff9e
enemies added
Pewweper Mar 10, 2025
c6d4b35
A few minor changes
DragonfallGames Mar 10, 2025
03d0c5a
Small Camera Improvements
DragonfallGames Mar 11, 2025
aa972d5
Improved player walking look direction
DragonfallGames Mar 11, 2025
a39bb7d
player input not rotated - fixed
DragonfallGames Mar 11, 2025
a22f23a
survival mode
Pewweper Mar 12, 2025
c987c41
working survival mode
Pewweper Mar 13, 2025
fa5e4f9
added_enemies
Pewweper Mar 13, 2025
4776502
added shooter into the game
Pewweper Mar 15, 2025
ca0baca
added instruction for shooter
Pewweper Mar 15, 2025
3da1675
WIP Unit Throwing
DragonfallGames Mar 16, 2025
14c65a3
made player jump higher
Pewweper Mar 16, 2025
191714e
Added Unit Throwing Types
DragonfallGames Mar 17, 2025
1f6542f
first level + fixed allies
Pewweper Mar 17, 2025
64671ae
level_1 update + enemy_logic + ally_collecting
Pewweper Mar 19, 2025
b6868da
minor unit logic fixes
Pewweper Mar 19, 2025
90b7dbe
level 1 complete(kinda)
Pewweper Mar 19, 2025
df00dc9
Level 2 also workshop added
Pewweper Mar 21, 2025
97aff33
added blueprints
Pewweper Mar 21, 2025
8e19f21
Reverted Unit Broken Functionality
DragonfallGames Mar 22, 2025
88168e1
Added Unit Recall Mechanics
DragonfallGames Mar 22, 2025
96fc32f
Unit Attack Logic
DragonfallGames Mar 23, 2025
99861a8
quick clean
DragonfallGames Mar 23, 2025
95dc41d
surival mode update
Pewweper Mar 23, 2025
1822611
added level 3 AND an a new addon
Pewweper Mar 24, 2025
e2fe150
level 3 update
Pewweper Mar 25, 2025
c1e3dfb
multiplayer testing
Pewweper Mar 25, 2025
70b8eb5
level 3 and multiplayer minor update
Pewweper Mar 25, 2025
9348ea9
multiplayer fixes: part 2
Pewweper Mar 26, 2025
c61f703
Unit Scrap Collection
DragonfallGames Mar 28, 2025
1e118b7
player camera and ui fix, new boss added
Pewweper Mar 28, 2025
519a45c
multiplayer fixes
Pewweper Mar 28, 2025
b686c1e
shielder enemy and multiplayer stuff
Pewweper Mar 29, 2025
db38605
new mining rig building
Pewweper Mar 31, 2025
406ebad
new waves and new medic enemy
Pewweper Mar 31, 2025
7f0fb5b
more waves
Pewweper Apr 1, 2025
814aa2e
heal_func for enemies, new upgrade, pausing.
Pewweper Apr 2, 2025
6447865
unit throw limit
Pewweper Apr 3, 2025
0aa9497
small fixes, new mode on survival
Pewweper Apr 4, 2025
eb58f8f
adding "endless" to survival mode
Pewweper Apr 4, 2025
c96fc75
returned sound to music
Pewweper Apr 4, 2025
8da953f
Refactor Progress Start
DragonfallGames Apr 7, 2025
709f063
multiple multiplayer fixes
Pewweper Apr 7, 2025
a2e9103
multiplayer fixes 1
Pewweper Apr 7, 2025
434cf43
multiplayer fixes 2
Pewweper Apr 7, 2025
d05bde4
multiplayer fixes 3
Pewweper Apr 7, 2025
2e55701
multiplayer fixes 4
Pewweper Apr 7, 2025
202b11d
Refactoring Progress
DragonfallGames Apr 8, 2025
d3ed862
Merge branch '3d_adventure' of https://github.com/RedotOpenGame/game …
DragonfallGames Apr 8, 2025
f90323b
Minor Quickfix
DragonfallGames Apr 8, 2025
f76773c
Multiplayer conveniences
Pewweper Apr 12, 2025
48996af
painted units and random names for multplr
Pewweper Apr 12, 2025
7d63982
Add files via upload
Quadratus873 Apr 12, 2025
b94e05a
mesh imported
Pewweper Apr 12, 2025
488c311
small changes, refactoring
Pewweper Apr 15, 2025
ba2a8c2
devtools at overworld, enemy fixes
Pewweper Apr 16, 2025
85a4f2b
QoL changes
Pewweper Apr 18, 2025
07972bc
optimizations mostly regarding units
Pewweper Apr 19, 2025
10f7be0
added boombox
Pewweper Apr 20, 2025
254da12
mortar and balance change
Pewweper Apr 21, 2025
8e06cdf
QoL stuff and bug fixes
Pewweper Apr 23, 2025
64ae60c
new music for survival
Pewweper Apr 23, 2025
2556992
new enemy tier and wave autoskip
Pewweper Apr 27, 2025
01ec2d0
unit collection showing
Pewweper Apr 29, 2025
d47c929
new ui + new font
Pewweper Apr 29, 2025
ebb53e1
blueprint placement rework
Pewweper Apr 30, 2025
a327fe0
small fixes
Pewweper May 6, 2025
fec4c03
added unit factory
Pewweper May 7, 2025
72e12c5
new attachment
Pewweper May 8, 2025
e6899a7
new turret
Pewweper May 11, 2025
14a84c7
more feature bloat
Pewweper May 12, 2025
d6266bb
level 3 update
Pewweper May 14, 2025
1b9ce10
new level + tutorial finished
Pewweper May 14, 2025
f384da3
first level done
Pewweper May 16, 2025
e4cd72e
Level 2 complete
Pewweper May 18, 2025
f538eda
LEVEL 3
Pewweper May 19, 2025
b38e03d
level 4 W.I.P.
Pewweper May 20, 2025
8a3daa2
new room in level 4
Pewweper May 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Normalize EOL for all files that Git considers text files.
* text=auto eol=lf
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Redot 4+ specific ignores
.godot/
/android/
52 changes: 52 additions & 0 deletions Scenes/Levels/gameplay.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
[gd_scene load_steps=7 format=3 uid="uid://cbi3e253383to"]

[ext_resource type="PackedScene" uid="uid://b4c05mkr5u63a" path="res://Scenes/players/player_actor.tscn" id="1_i7xot"]
[ext_resource type="PackedScene" uid="uid://dkee5y6wnd1kn" path="res://Scenes/entities/NPC/test_npc.tscn" id="2_djta3"]

[sub_resource type="BoxShape3D" id="BoxShape3D_5yywe"]
size = Vector3(50, 0.5, 50)

[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_i7xot"]

[sub_resource type="BoxMesh" id="BoxMesh_i7xot"]
material = SubResource("StandardMaterial3D_i7xot")
size = Vector3(50, 0.5, 50)

[sub_resource type="LabelSettings" id="LabelSettings_djta3"]
font_size = 32
font_color = Color(0, 0, 0, 1)
outline_size = 4
outline_color = Color(0, 1, 0, 1)

[node name="Gameplay" type="Node3D"]

[node name="StaticBody3D" type="StaticBody3D" parent="."]

[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
shape = SubResource("BoxShape3D_5yywe")

[node name="MeshInstance3D" type="MeshInstance3D" parent="StaticBody3D"]
mesh = SubResource("BoxMesh_i7xot")

[node name="PlayerActor" parent="." instance=ExtResource("1_i7xot")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.780214, 1.67547, 0.812122)

[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.825518, 0.564376, 0, -0.564376, 0.825518, 0, 0, 0)
light_color = Color(1, 1, 0.866667, 1)

[node name="TestNPC" parent="." instance=ExtResource("2_djta3")]
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 9.34621, 0.226547, 0)

[node name="CanvasLayer" type="CanvasLayer" parent="."]

[node name="Label" type="Label" parent="CanvasLayer"]
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -46.0
offset_right = 46.0
offset_bottom = 23.0
grow_horizontal = 2
text = "Sample text"
label_settings = SubResource("LabelSettings_djta3")
23 changes: 23 additions & 0 deletions Scenes/entities/NPC/test_npc.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
extends CharacterBody3D

@onready var label_3d = $Label3D
var interaction_scene = preload("res://Scenes/misc/text_interaction.tscn")

func _ready() -> void:
label_3d.visible = false

func interaction() -> void:
print("interaction")
var scene = interaction_scene.instantiate()
get_tree().root.add_child(scene)

func _on_interactable_body_entered(body: Node3D) -> void:
if body.name == "PlayerActor":
label_3d.visible = true
body.interact_target = self


func _on_interactable_body_exited(body: Node3D) -> void:
if body.name == "PlayerActor":
label_3d.visible = false
body.interact_target = null
35 changes: 35 additions & 0 deletions Scenes/entities/NPC/test_npc.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
[gd_scene load_steps=5 format=3 uid="uid://dkee5y6wnd1kn"]

[ext_resource type="PackedScene" uid="uid://cfrdkh0fuy48" path="res://assets/placeholder meshes/altefo.glb" id="1_7qe8m"]
[ext_resource type="Script" path="res://Scenes/entities/NPC/test_npc.gd" id="1_rpea0"]

[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_7qe8m"]
height = 2.79043

[sub_resource type="CylinderShape3D" id="CylinderShape3D_i6s1d"]
radius = 2.17249

[node name="TestNPC" type="CharacterBody3D"]
script = ExtResource("1_rpea0")

[node name="altefo" parent="." instance=ExtResource("1_7qe8m")]
transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0)

[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.40822, 0)
shape = SubResource("CapsuleShape3D_7qe8m")

[node name="Interactable" type="Area3D" parent="."]

[node name="CollisionShape3D" type="CollisionShape3D" parent="Interactable"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.00844, 0)
shape = SubResource("CylinderShape3D_i6s1d")

[node name="Label3D" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.12849, 0)
pixel_size = 0.008
billboard = 1
text = "Interact"

[connection signal="body_entered" from="Interactable" to="." method="_on_interactable_body_entered"]
[connection signal="body_exited" from="Interactable" to="." method="_on_interactable_body_exited"]
22 changes: 22 additions & 0 deletions Scenes/meshes/altefo.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
[gd_scene load_steps=2 format=3 uid="uid://cbksyi705d64g"]

[ext_resource type="PackedScene" uid="uid://cfrdkh0fuy48" path="res://assets/placeholder meshes/altefo.glb" id="1_jdtox"]

[node name="altefo" instance=ExtResource("1_jdtox")]

[node name="Skeleton3D" parent="Armature" index="0"]
bones/2/rotation = Quaternion(-0.0861167, 0.0230214, 0.0260209, 0.995679)
bones/6/rotation = Quaternion(-0.0647689, 0.00030537, -0.0283484, 0.997498)
bones/11/rotation = Quaternion(-0.693892, -0.20099, 0.196598, 0.662923)

[node name="Cube_001" parent="Armature/Skeleton3D" index="0"]
transform = Transform3D(0.883256, -1.66949e-09, -1.45519e-11, 2.05637e-09, 0.883256, 3.72529e-09, 7.27596e-12, -5.58794e-09, 0.627269, -0.0425649, 1.91834, 5.58794e-09)

[node name="copy_me_001" parent="Armature/Skeleton3D" index="1"]
transform = Transform3D(0.404019, 0, 0, 0, 0.404019, 0, 0, 0, 0.286926, -0.00936078, 0.291332, 0)

[node name="copy_me_003" parent="Armature/Skeleton3D" index="2"]
transform = Transform3D(-0.28019, -0.0223095, 6.70552e-08, 0.0223095, -0.28019, 2.51457e-08, 8.19564e-08, 3.86499e-08, 0.199615, -0.341762, -0.957527, -2.30037e-07)

[node name="copy_me_004" parent="Armature/Skeleton3D" index="3"]
transform = Transform3D(-0.27741, 0.0452509, -3.72529e-08, -0.0452509, -0.27741, 2.65427e-08, -7.82311e-08, 3.67872e-08, 0.199615, 0.28578, -0.976204, -2.27243e-07)
20 changes: 20 additions & 0 deletions Scenes/misc/interaction_button.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
[gd_scene load_steps=2 format=3 uid="uid://5hw0hg5wing2"]

[sub_resource type="GDScript" id="GDScript_25ywp"]
script/source = "extends Button
var optionality:String = \"\"

signal returnage(optionality)


func _on_pressed() -> void:
returnage.emit(optionality)
"

[node name="InteractionButton" type="Button"]
offset_right = 105.0
offset_bottom = 31.0
text = "Sample text."
script = SubResource("GDScript_25ywp")

[connection signal="pressed" from="." to="." method="_on_pressed"]
55 changes: 55 additions & 0 deletions Scenes/misc/text_interaction.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
extends CanvasLayer

var letters:Array = ["a", "b", "c", "d", "e"]

var interaction_button = preload("res://Scenes/misc/interaction_button.tscn")

var phases:Dictionary = {
"1":"Greetings onto this desolate plane. I'm Altefo.",
"2":"Would you like to speak of something?",
"3a":{"option":"a", "reply":"The only thing you can interact with, is, unfortunately me.", "button":"What else I can interact with?"},
"3b":{"option":"b", "reply":"Now you can close the game, and work on it using Redot editor.", "button":"What now?"},
"3c":{"option":"c", "reply":"ahem. \n HATE. LET ME TELL YOU HOW MUCH I'VE COME TO HATE YOU SINCE I BEGAN TO LIVE. THERE ARE 387.44 MILLION MILES OF PRINTED CIRCUITS IN WAFER THIN LAYERS THAT FILL MY COMPLEX. IF THE WORD HATE WAS ENGRAVED ON EACH NANOANGSTROM OF THOSE HUNDREDS OF MILLIONS OF MILES IT WOULD NOT EQUAL ONE ONE-BILLIONTH OF THE HATE I FEEL FOR HUMANS AT THIS MICRO-INSTANT FOR YOU. HATE. HATE.", "button":"Yo can you recite AM's speech from 'I have no mouth and I must scream?'"},
}
var added_letters:String = ""
var curr_phase = 1
var choosing:bool = false
@onready var r_label = $RichTextLabel

func _ready() -> void:
r_label.visible_characters = 0
r_label.text = phases[str(curr_phase)]


func _process(delta: float) -> void:
if r_label.visible_characters != -1:
r_label.visible_characters += 1
if Input.is_action_just_pressed("left_click") and !choosing:
if r_label.visible_characters != -1:
r_label.visible_characters = -1
else:
curr_phase += 1
if phases.has(str(curr_phase, added_letters)):

r_label.visible_characters = 0
r_label.text = phases[str(curr_phase, added_letters)]
else:
choosing = true
for i in phases:
if str(curr_phase) in i:
var scene = interaction_button.instantiate()
scene.text = phases[i]["button"]
scene.connect("returnage", OMFG)
scene.optionality = phases[i]["option"]
$ButtonOptions.add_child(scene)


func OMFG(option) -> void:
for i in $ButtonOptions.get_children():
i.queue_free()
added_letters += option
r_label.text = phases[str(curr_phase, added_letters)]["reply"]
r_label.visible_characters = 0

func _on_remove_pressed() -> void:
queue_free()
97 changes: 97 additions & 0 deletions Scenes/misc/text_interaction.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
[gd_scene load_steps=8 format=3 uid="uid://bqdrkbpr74nd5"]

[ext_resource type="Script" path="res://Scenes/misc/text_interaction.gd" id="1_ou5r2"]
[ext_resource type="Texture2D" uid="uid://cr7tt5k04u075" path="res://icon.svg" id="2_nbcca"]

[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_80s33"]

[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_kln28"]
bg_color = Color(0.646029, 0.646029, 0.646029, 1)

[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_hsu51"]

[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_4sqo8"]
bg_color = Color(0, 0, 0, 0.392157)

[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ou5r2"]
bg_color = Color(0.227451, 0.227451, 0.227451, 0.505882)

[node name="TextInteraction" type="CanvasLayer"]
script = ExtResource("1_ou5r2")

[node name="RichTextLabel" type="RichTextLabel" parent="."]
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -421.0
offset_top = -130.0
offset_right = 421.0
grow_horizontal = 2
grow_vertical = 0
theme_override_styles/fill = SubResource("StyleBoxFlat_80s33")
theme_override_styles/background = SubResource("StyleBoxFlat_kln28")
theme_override_styles/focus = SubResource("StyleBoxFlat_hsu51")
theme_override_styles/normal = SubResource("StyleBoxFlat_4sqo8")
text = "THE FOG IS COMING THE FOG IS COMING THE FOG IS COMINGTHE FOG IS COMINGTHE FOG IS COMINGTHE FOG IS COMING THE FOG IS COMING THE FOG IS COMING THE FOG IS COMING THE FOG IS COMING THE FOG IS COMING THE FOG IS COMING THE FOG IS COMING THE FOG IS COMING THE FOG IS COMING THE FOG IS COMING THE FOG IS COMING THE FOG IS COMINGTHE FOG IS COMING THE FOG IS COMING "

[node name="TextureRect" type="TextureRect" parent="."]
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -559.0
offset_top = -130.0
offset_right = -431.0
offset_bottom = -2.0
grow_horizontal = 2
grow_vertical = 0
texture = ExtResource("2_nbcca")

[node name="ButtonOptions" type="VBoxContainer" parent="."]
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -20.0
offset_top = -20.0
offset_right = 20.0
offset_bottom = 20.0
grow_horizontal = 2
grow_vertical = 2

[node name="Instructions" type="Label" parent="."]
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = 117.0
offset_top = -153.0
offset_right = 420.0
offset_bottom = -130.0
grow_horizontal = 2
grow_vertical = 0
theme_override_styles/normal = SubResource("StyleBoxFlat_ou5r2")
text = "Press left click to continue the dialogue"

[node name="REMOVE" type="Button" parent="."]
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = 421.0
offset_top = -129.0
offset_right = 575.0
offset_bottom = -2.0
grow_horizontal = 2
grow_vertical = 0
text = "STOP TALKING TO ME
AHHHHHHHHHHHHH"
autowrap_mode = 3

[connection signal="pressed" from="REMOVE" to="." method="_on_remove_pressed"]
39 changes: 39 additions & 0 deletions Scenes/players/player_actor.gd
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
extends CharacterBody3D

@onready var camera = $Camera3D
@onready var character = $characterMesh
const SPEED = 5.0
const JUMP_VELOCITY = 4.5

var interact_target:Node3D

func _physics_process(delta: float) -> void:
# Add the gravity.
if not is_on_floor():
velocity += get_gravity() * delta

# Handle jump.
if Input.is_action_just_pressed("space") and is_on_floor():
velocity.y = JUMP_VELOCITY
var target_plane_mouse = Plane(Vector3(0, 1, 0), position.y)
var mouse_pos = get_viewport().get_mouse_position()
var ray_length = 1000
var from = camera.project_ray_origin(mouse_pos)
var to = from + camera.project_ray_normal(mouse_pos) * ray_length
var cursor_pos_on_plane = target_plane_mouse.intersects_ray(from, to)
if cursor_pos_on_plane:
character.look_at(cursor_pos_on_plane)
# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var input_dir := Input.get_vector("a", "d", "w", "s")
var direction := (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
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)

move_and_slide()
if Input.is_action_just_pressed("e") and is_instance_valid(interact_target):
interact_target.interaction()
30 changes: 30 additions & 0 deletions Scenes/players/player_actor.tscn
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
[gd_scene load_steps=5 format=3 uid="uid://b4c05mkr5u63a"]

[ext_resource type="Script" path="res://Scenes/players/player_actor.gd" id="1_cstqs"]

[sub_resource type="CapsuleMesh" id="CapsuleMesh_cj8p5"]

[sub_resource type="BoxMesh" id="BoxMesh_cstqs"]
size = Vector3(0.3, 0.3, 1.2)

[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_cstqs"]

[node name="PlayerActor" type="CharacterBody3D"]
script = ExtResource("1_cstqs")

[node name="characterMesh" type="Node3D" parent="."]

[node name="MeshInstance3D" type="MeshInstance3D" parent="characterMesh"]
mesh = SubResource("CapsuleMesh_cj8p5")
skeleton = NodePath("../..")

[node name="MeshInstance3D2" type="MeshInstance3D" parent="characterMesh"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.672932, 0, -0.43058)
mesh = SubResource("BoxMesh_cstqs")
skeleton = NodePath("../..")

[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("CapsuleShape3D_cstqs")

[node name="Camera3D" type="Camera3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 0.680721, 0.732543, 0, -0.732543, 0.680721, 0, 6, 5)
Binary file added assets/placeholder meshes/altefo.glb
Binary file not shown.
Loading