commit c90da1eda22a66684ccb08d6c5d4e1edb33716ec Author: Haze Weathers Date: Fri Mar 14 04:37:01 2025 -0400 initial experiments diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f28239b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,4 @@ +root = true + +[*] +charset = utf-8 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..8ad74f7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0af181c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +/android/ diff --git a/assets/levels/test_level/Cliffs.tres b/assets/levels/test_level/Cliffs.tres new file mode 100644 index 0000000..e226c65 --- /dev/null +++ b/assets/levels/test_level/Cliffs.tres @@ -0,0 +1,7 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://bse18s1snidh4"] + +[resource] +resource_name = "Cliffs" +cull_mode = 2 +albedo_color = Color(0.906332, 0.906332, 0.906332, 1) +roughness = 0.5 diff --git a/assets/levels/test_level/test_level.blend b/assets/levels/test_level/test_level.blend new file mode 100644 index 0000000..c107781 Binary files /dev/null and b/assets/levels/test_level/test_level.blend differ diff --git a/assets/levels/test_level/test_level.blend1 b/assets/levels/test_level/test_level.blend1 new file mode 100644 index 0000000..df75d16 Binary files /dev/null and b/assets/levels/test_level/test_level.blend1 differ diff --git a/assets/levels/test_level/test_level.glb b/assets/levels/test_level/test_level.glb new file mode 100644 index 0000000..f86e43b Binary files /dev/null and b/assets/levels/test_level/test_level.glb differ diff --git a/assets/levels/test_level/test_level.glb.import b/assets/levels/test_level/test_level.glb.import new file mode 100644 index 0000000..54abfb8 --- /dev/null +++ b/assets/levels/test_level/test_level.glb.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bw3pwwp5iqwfi" +path="res://.godot/imported/test_level.glb-8c974807ad516a5888d2ebb9918fb9d4.scn" + +[deps] + +source_file="res://assets/levels/test_level/test_level.glb" +dest_files=["res://.godot/imported/test_level.glb-8c974807ad516a5888d2ebb9918fb9d4.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={ +"materials": { +"Cliffs": { +"use_external/enabled": true, +"use_external/path": "res://assets/levels/test_level/Cliffs.tres" +} +} +} +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/assets/textures/sg_idle_color.png b/assets/textures/sg_idle_color.png new file mode 100644 index 0000000..3df2774 Binary files /dev/null and b/assets/textures/sg_idle_color.png differ diff --git a/assets/textures/sg_idle_color.png.import b/assets/textures/sg_idle_color.png.import new file mode 100644 index 0000000..a7eec77 --- /dev/null +++ b/assets/textures/sg_idle_color.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://befg6ydw61eov" +path="res://.godot/imported/sg_idle_color.png-bab58dade3f7ce6882f810c067f83831.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/textures/sg_idle_color.png" +dest_files=["res://.godot/imported/sg_idle_color.png-bab58dade3f7ce6882f810c067f83831.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=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 diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..9d8b7fa --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..1eda161 --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bluus5ymkdsg" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.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 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/levels/test_level.tscn b/levels/test_level.tscn new file mode 100644 index 0000000..f92e294 --- /dev/null +++ b/levels/test_level.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=4 format=3 uid="uid://cnwgryo1nj2a1"] + +[ext_resource type="PackedScene" uid="uid://bw3pwwp5iqwfi" path="res://assets/levels/test_level/test_level.glb" id="1_46lwt"] +[ext_resource type="PackedScene" uid="uid://bquyryhfcp8y7" path="res://objects/player/player.tscn" id="2_x25rp"] + +[sub_resource type="Curve3D" id="Curve3D_46lwt"] +_data = { +"points": PackedVector3Array(-1.26348, 0, -0.203417, 1.26348, 0, 0.203417, -6.88307, 0, -0.894118, -1.50946, 0, 0.585966, 1.50946, 0, -0.585966, 4.42538, 0, -0.129086, -0.680172, 0, 1.36703, 0.680172, 0, -1.36703, 6.9523, 0, -2.57396, 0.22647, 0, 1.7587, -0.22647, 0, -1.7587, 8.27033, 0, -8.20324, 0.571661, 0, 0.487944, -0.571661, 0, -0.487944, 6.64078, 0, -11.6749, 1.24906, 0, 0.0725613, -1.24906, 0, -0.0725613, 2.74404, 0, -13.021, 1.32889, 0, -0.529663, -1.32889, 0, 0.529663, -2.28629, 0, -12.4188, 0.806547, 0, -1.2679, -0.806547, 0, 1.2679, -6.50186, 0, -8.94716, 0.106077, 0, -1.74292, -0.106077, 0, 1.74292, -7.45833, 0, -4.87329, -0.271801, 0, -1.92385, 0.271801, 0, 1.92385, -7.24578, 0, 0.12162, -1.13926, 0, -2.82601, 1.13926, 0, 2.82601, -5.43911, 0, 6.53353, -2.63552, 0, -2.76206, 2.63552, 0, 2.76206, -1.05201, 0, 12.4522, -1.67377, 0, -0.91955, 1.67377, 0, 0.91955, 2.95101, 0, 16.0656, -2.65928, 0, 0.0071373, 2.65928, 0, -0.0071373, 9.15037, 0, 16.8803, 0, 0, 0, 0, 0, 0, 28.9123, 0, 16.2836), +"tilts": PackedFloat32Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) +} +point_count = 15 + +[node name="TestLevel" instance=ExtResource("1_46lwt")] + +[node name="Path3D" type="Path3D" parent="." index="1"] +curve = SubResource("Curve3D_46lwt") + +[node name="Player" parent="." index="2" node_paths=PackedStringArray("level_path") instance=ExtResource("2_x25rp")] +transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, 0, 1.88228, 0) +level_path = NodePath("../Path3D") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." index="3"] +transform = Transform3D(1, 0, 0, 0, 0.464162, 0.88575, 0, -0.88575, 0.464162, 0, 10.1106, 0) diff --git a/objects/player/player.gd b/objects/player/player.gd new file mode 100644 index 0000000..8cf0ec9 --- /dev/null +++ b/objects/player/player.gd @@ -0,0 +1,30 @@ +extends CharacterBody3D + + +@export var walk_speed: float +@export var gravity: float +@export var jump_force: float + +@export var level_path: Path3D + + +func _physics_process(delta: float) -> void: + # snap player horizontally to path + var path_offset = level_path.curve.get_closest_offset(level_path.to_local(global_position)) + var path_trans = level_path.curve.sample_baked_with_rotation(path_offset, true) + global_position.x = path_trans.origin.x + global_position.z = path_trans.origin.z + global_transform.basis.x = -path_trans.basis.x + global_transform.basis.z = -path_trans.basis.z + + # horizontal movement + var h_movement = global_transform.basis.z * Input.get_axis(&"walk_left", &"walk_right") * walk_speed + velocity.x = h_movement.x + velocity.z = h_movement.z + + # vertical movement + velocity.y -= gravity * delta + if Input.is_action_just_pressed(&"jump"): + velocity.y = jump_force + + move_and_slide() diff --git a/objects/player/player.gd.uid b/objects/player/player.gd.uid new file mode 100644 index 0000000..0412456 --- /dev/null +++ b/objects/player/player.gd.uid @@ -0,0 +1 @@ +uid://daswmtow3mr37 diff --git a/objects/player/player.tscn b/objects/player/player.tscn new file mode 100644 index 0000000..b131cfe --- /dev/null +++ b/objects/player/player.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=4 format=3 uid="uid://bquyryhfcp8y7"] + +[ext_resource type="Texture2D" uid="uid://befg6ydw61eov" path="res://assets/textures/sg_idle_color.png" id="1_cqmt1"] +[ext_resource type="Script" uid="uid://daswmtow3mr37" path="res://objects/player/player.gd" id="1_g7ett"] + +[sub_resource type="CylinderShape3D" id="CylinderShape3D_ssrue"] +height = 1.0 +radius = 0.25 + +[node name="Player" type="CharacterBody3D"] +script = ExtResource("1_g7ett") +walk_speed = 6.0 +gravity = 15.0 +jump_force = 8.0 + +[node name="Sprite3D" type="Sprite3D" parent="."] +offset = Vector2(0, 9) +flip_h = true +pixel_size = 0.0556 +axis = 0 +texture_filter = 0 +texture = ExtResource("1_cqmt1") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) +shape = SubResource("CylinderShape3D_ssrue") + +[node name="Camera3D" type="Camera3D" parent="."] +transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, -5, 1.5, 0) diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..414ebd7 --- /dev/null +++ b/project.godot @@ -0,0 +1,44 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="Revolution 3064" +run/main_scene="uid://cnwgryo1nj2a1" +config/features=PackedStringArray("4.4", "GL Compatibility") +config/icon="res://icon.svg" + +[filesystem] + +import/blender/enabled=false + +[input] + +walk_left={ +"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":4194319,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +walk_right={ +"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":4194321,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +jump={ +"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":90,"key_label":0,"unicode":122,"location":0,"echo":false,"script":null) +] +} + +[rendering] + +textures/canvas_textures/default_texture_filter=0 +renderer/rendering_method="gl_compatibility" +renderer/rendering_method.mobile="gl_compatibility"