From b672d0d26cb88ed5b1a0e6ca4df8166511bbdaed Mon Sep 17 00:00:00 2001 From: ArthurErlich Date: Thu, 19 Mar 2026 20:07:43 +0100 Subject: [PATCH 1/3] chore: added structure markdown --- PROJECT_STRUCTURE.md | 134 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 PROJECT_STRUCTURE.md diff --git a/PROJECT_STRUCTURE.md b/PROJECT_STRUCTURE.md new file mode 100644 index 0000000..5888ea7 --- /dev/null +++ b/PROJECT_STRUCTURE.md @@ -0,0 +1,134 @@ +# Godot Experiments - Project Structure + +## Overview + +One Godot project containing multiple self-contained experiments. +Each experiment lives in its own folder under `Experiments/` with its own scenes, scripts, assets and UI. +Shared code and assets used across experiments live in `Core/`. + +--- + +## Folder Tree + +``` +res:// +│ +├── main.tscn # Project entry point / experiment selector +├── project.godot +│ +├── Core/ # Shared across ALL experiments +│ ├── Components/ +│ │ ├── back_to_main.gd # Navigation: return to main menu +│ │ ├── open_level_component.gd # Navigation: open a level +│ │ └── quit_game_component.gd # Navigation: quit game +│ └── Assets/ +│ └── PixelPlanets/ # Shared planet sprites/textures +│ +├── Experiments/ +│ │ +│ ├── Recuration/ # Top-down space game with solar system generation +│ │ ├── Scenes/ +│ │ │ ├── Recuration.tscn # Main scene +│ │ │ ├── SolarSystem.tscn # Solar system root node +│ │ │ ├── Planet.tscn # Reusable planet scene +│ │ │ └── Star.tscn # Star scene +│ │ ├── Scripts/ +│ │ │ ├── recuration_camera.gd # Top-down pan + zoom camera +│ │ │ ├── resource_component.gd # Planet resource data +│ │ │ └── solar_system_generator.gd # Procedural system generation +│ │ ├── UI/ +│ │ │ ├── UI.tscn # HUD root +│ │ │ ├── ui.gd # HUD logic +│ │ │ └── planet_info_panel.tscn # Click-to-inspect planet panel +│ │ ├── Assets/ +│ │ │ └── TheMoon/ +│ │ │ ├── TheMoon.tscn +│ │ │ └── TheMoon.gd +│ │ └── Planning/ +│ │ └── Movement 2D.svg # Design / planning diagrams +│ │ +│ ├── SpaceMove/ # 2D space movement experiment +│ │ ├── Scenes/ +│ │ │ ├── space_move.tscn +│ │ │ └── space_test.tscn +│ │ ├── Scripts/ +│ │ │ ├── player_ship.gd +│ │ │ └── ship_ai_component.gd +│ │ └── Assets/ +│ │ └── player_ship.tscn +│ │ +│ ├── ThrusterCube/ # Physics thruster experiment +│ │ ├── Scenes/ +│ │ │ ├── thruster_cube.tscn +│ │ │ ├── thruster_cube_collision.tscn +│ │ │ └── obstacle.tscn +│ │ ├── Scripts/ +│ │ │ └── thruster_cube.gd +│ │ └── Assets/ +│ │ ├── Thruster Cube.glb +│ │ └── Thruster Cube Collision.glb +│ │ +│ └── PidTest/ # PID controller experiment +│ ├── Scenes/ +│ │ └── pid_test.tscn +│ ├── Scripts/ +│ │ └── pid_test.gd +│ └── Assets/ +│ ├── PID_Spinning_Stuff.glb +│ ├── PID_Spinning_Target.glb +│ └── PID_Test_Obj.blend +│ +└── dist/ # Web export output (auto-generated, do not edit) +``` + +--- + +## Rules + +### 1. Each experiment is self-contained + +All scenes, scripts, assets and UI for an experiment live inside its own folder. +Deleting an experiment folder should not break anything else. + +### 2. Core is for shared things only + +Only put something in `Core/` if **two or more** experiments use it. +When in doubt, keep it inside the experiment. + +### 3. Move files inside Godot, not in Explorer + +Always use Godot's **FileSystem panel** to move files. +This keeps UID references intact and prevents broken scene paths. + +### 4. Naming conventions + +| Type | Convention | Example | +| --------- | ---------------------- | --------------------------------------- | +| Folders | `PascalCase` | `Recuration/`, `ThrusterCube/` | +| Scenes | `snake_case.tscn` | `solar_system.tscn` | +| Scripts | `snake_case.gd` | `recuration_camera.gd` | +| Classes | `PascalCase` | `class_name RecurationCamera` | +| Variables | `snake_case` | `var orbit_radius: float` | +| Constants | `SCREAMING_SNAKE_CASE` | `const AU_TO_PIXELS := 100.0` | +| Signals | `snake_case` | `signal planet_clicked(planet: Planet)` | + +--- + +## Adding a New Experiment + +1. Create a new folder under `Experiments/YourExperimentName/` +2. Add the standard subfolders: `Scenes/`, `Scripts/`, `Assets/` +3. Add a `UI/` folder if the experiment needs one +4. Add an entry in `main.tscn` to open it +5. Only move shared code to `Core/` once a second experiment needs it + +--- + +## Gitea CI + +CI workflows live in `.gitea/workflows/`: + +- `release.yml` — builds and publishes a release +- `sonar.yml` — code quality analysis + +Web export output is in `dist/` and should be in `.gitignore` if you do not want to commit build artifacts. From 50e6f8b5092e5816e75099e38d1170bb5f7bc6e3 Mon Sep 17 00:00:00 2001 From: ArthurErlich Date: Thu, 19 Mar 2026 21:26:44 +0100 Subject: [PATCH 2/3] chore: restructured project --- Assets/Thruster Cube Collision.obj.import | 25 ----- .../Assets}/PixelPlanets/a-moon.png | Bin .../Assets}/PixelPlanets/a-moon.png.import | 6 +- .../Components/back_to_main.gd | 0 .../Components/back_to_main.gd.uid | 0 .../Components/open_level_component.gd | 0 .../Components/open_level_component.gd.uid | 0 .../Components/quit_game_component.gd | 0 .../Components/quit_game_component.gd.uid | 0 .../PidTest/Assets}/PID_Spinning_Stuff.glb | Bin .../Assets}/PID_Spinning_Stuff.glb.import | 6 +- .../PidTest/Assets}/PID_Spinning_Target.glb | Bin .../Assets}/PID_Spinning_Target.glb.import | 6 +- .../PidTest/Assets}/PID_Test_Obj.blend | Bin .../PidTest/Assets}/PID_Test_Obj.blend.import | 6 +- .../PidTest/Scenes}/pid_test.tscn | 102 +++++++++--------- .../PidTest/Scripts}/pid_test.gd | 71 ++++++------ .../PidTest/Scripts}/pid_test.gd.uid | 0 .../Recuration}/Assets/TheMoon/TheMoon.gd | 0 .../Recuration}/Assets/TheMoon/TheMoon.gd.uid | 0 .../Recuration}/Assets/TheMoon/TheMoon.tscn | 4 +- .../Recuration/Planning}/Movement 2D.svg | 0 .../Planning}/Movement 2D.svg.import | 8 +- .../Recuration/Scenes}/Recuration.tscn | 6 +- .../Recuration}/Scripts/RecurionCamera.gd | 0 .../Recuration}/Scripts/RecurionCamera.gd.uid | 0 .../Recuration}/Scripts/ResourceComponent.gd | 0 .../Scripts/ResourceComponent.gd.uid | 0 .../Recuration}/UI/UI.tscn | 2 +- .../Recuration}/UI/ui.gd | 0 .../Recuration}/UI/ui.gd.uid | 0 .../SpaceMove/Assets}/player_ship.tscn | 6 +- .../SpaceMove/Scenes}/space_test.tscn | 36 ++++--- .../SpaceMove/Scripts}/player_ship.gd | 0 .../SpaceMove/Scripts}/player_ship.gd.uid | 0 .../SpaceMove/Scripts}/shipAiComponent.gd | 0 .../SpaceMove/Scripts}/shipAiComponent.gd.uid | 0 .../Assets}/Thruster Cube Collision.glb | Bin .../Thruster Cube Collision.glb.import | 11 +- .../Assets}/Thruster Cube Collision.mtl | 0 .../Assets}/Thruster Cube Collision.obj | 0 .../Assets/Thruster Cube Collision.obj.import | 25 +++++ .../ThrusterCube/Assets}/Thruster Cube.glb | Bin .../Assets}/Thruster Cube.glb.import | 11 +- .../ThrusterCube/Scenes}/obstacle.tscn | 2 +- .../ThrusterCube/Scenes}/thruster_cube.tscn | 6 +- .../Scenes}/thruster_cube_collision.tscn | 2 +- .../ThrusterCube/Scripts}/thruster_cube.gd | 0 .../Scripts}/thruster_cube.gd.uid | 0 Levels/space_move.tscn | 3 - main.tscn | 33 +++--- project.godot | 4 - 52 files changed, 204 insertions(+), 177 deletions(-) delete mode 100644 Assets/Thruster Cube Collision.obj.import rename {Assets => Core/Assets}/PixelPlanets/a-moon.png (100%) rename {Assets => Core/Assets}/PixelPlanets/a-moon.png.import (76%) rename back_to_main.gd => Core/Components/back_to_main.gd (100%) rename back_to_main.gd.uid => Core/Components/back_to_main.gd.uid (100%) rename open_level_component.gd => Core/Components/open_level_component.gd (100%) rename open_level_component.gd.uid => Core/Components/open_level_component.gd.uid (100%) rename quit_game_component.gd => Core/Components/quit_game_component.gd (100%) rename quit_game_component.gd.uid => Core/Components/quit_game_component.gd.uid (100%) rename {Assets => Experiments/PidTest/Assets}/PID_Spinning_Stuff.glb (100%) rename {Assets => Experiments/PidTest/Assets}/PID_Spinning_Stuff.glb.import (76%) rename {Assets => Experiments/PidTest/Assets}/PID_Spinning_Target.glb (100%) rename {Assets => Experiments/PidTest/Assets}/PID_Spinning_Target.glb.import (76%) rename {Assets => Experiments/PidTest/Assets}/PID_Test_Obj.blend (100%) rename {Assets => Experiments/PidTest/Assets}/PID_Test_Obj.blend.import (85%) rename {Levels => Experiments/PidTest/Scenes}/pid_test.tscn (67%) rename {Levels => Experiments/PidTest/Scripts}/pid_test.gd (69%) rename {Levels => Experiments/PidTest/Scripts}/pid_test.gd.uid (100%) rename {Games/SpaceResources => Experiments/Recuration}/Assets/TheMoon/TheMoon.gd (100%) rename {Games/SpaceResources => Experiments/Recuration}/Assets/TheMoon/TheMoon.gd.uid (100%) rename {Games/SpaceResources => Experiments/Recuration}/Assets/TheMoon/TheMoon.tscn (85%) rename {Games/SpaceResources/Planing => Experiments/Recuration/Planning}/Movement 2D.svg (100%) rename {Games/SpaceResources/Planing => Experiments/Recuration/Planning}/Movement 2D.svg.import (73%) rename {Levels => Experiments/Recuration/Scenes}/Recuration.tscn (71%) rename {Games/SpaceResources => Experiments/Recuration}/Scripts/RecurionCamera.gd (100%) rename {Games/SpaceResources => Experiments/Recuration}/Scripts/RecurionCamera.gd.uid (100%) rename {Games/SpaceResources => Experiments/Recuration}/Scripts/ResourceComponent.gd (100%) rename {Games/SpaceResources => Experiments/Recuration}/Scripts/ResourceComponent.gd.uid (100%) rename {Games/SpaceResources => Experiments/Recuration}/UI/UI.tscn (69%) rename {Games/SpaceResources => Experiments/Recuration}/UI/ui.gd (100%) rename {Games/SpaceResources => Experiments/Recuration}/UI/ui.gd.uid (100%) rename {Assets => Experiments/SpaceMove/Assets}/player_ship.tscn (85%) rename {Levels => Experiments/SpaceMove/Scenes}/space_test.tscn (64%) rename {Assets => Experiments/SpaceMove/Scripts}/player_ship.gd (100%) rename {Assets => Experiments/SpaceMove/Scripts}/player_ship.gd.uid (100%) rename {Assets => Experiments/SpaceMove/Scripts}/shipAiComponent.gd (100%) rename {Assets => Experiments/SpaceMove/Scripts}/shipAiComponent.gd.uid (100%) rename {Assets => Experiments/ThrusterCube/Assets}/Thruster Cube Collision.glb (100%) rename {Assets => Experiments/ThrusterCube/Assets}/Thruster Cube Collision.glb.import (69%) rename {Assets => Experiments/ThrusterCube/Assets}/Thruster Cube Collision.mtl (100%) rename {Assets => Experiments/ThrusterCube/Assets}/Thruster Cube Collision.obj (100%) create mode 100644 Experiments/ThrusterCube/Assets/Thruster Cube Collision.obj.import rename {Assets => Experiments/ThrusterCube/Assets}/Thruster Cube.glb (100%) rename {Assets => Experiments/ThrusterCube/Assets}/Thruster Cube.glb.import (65%) rename {Assets => Experiments/ThrusterCube/Scenes}/obstacle.tscn (98%) rename {Assets => Experiments/ThrusterCube/Scenes}/thruster_cube.tscn (95%) rename {Assets => Experiments/ThrusterCube/Scenes}/thruster_cube_collision.tscn (76%) rename {Assets => Experiments/ThrusterCube/Scripts}/thruster_cube.gd (100%) rename {Assets => Experiments/ThrusterCube/Scripts}/thruster_cube.gd.uid (100%) delete mode 100644 Levels/space_move.tscn diff --git a/Assets/Thruster Cube Collision.obj.import b/Assets/Thruster Cube Collision.obj.import deleted file mode 100644 index dab6e69..0000000 --- a/Assets/Thruster Cube Collision.obj.import +++ /dev/null @@ -1,25 +0,0 @@ -[remap] - -importer="wavefront_obj" -importer_version=1 -type="Mesh" -uid="uid://c7f1y6fhexbhm" -path="res://.godot/imported/Thruster Cube Collision.obj-b25b556e6c42aebde4547600bcacd901.mesh" - -[deps] - -files=["res://.godot/imported/Thruster Cube Collision.obj-b25b556e6c42aebde4547600bcacd901.mesh"] - -source_file="res://Assets/Thruster Cube Collision.obj" -dest_files=["res://.godot/imported/Thruster Cube Collision.obj-b25b556e6c42aebde4547600bcacd901.mesh", "res://.godot/imported/Thruster Cube Collision.obj-b25b556e6c42aebde4547600bcacd901.mesh"] - -[params] - -generate_tangents=true -generate_lods=true -generate_shadow_mesh=true -generate_lightmap_uv2=false -generate_lightmap_uv2_texel_size=0.2 -scale_mesh=Vector3(1, 1, 1) -offset_mesh=Vector3(0, 0, 0) -force_disable_mesh_compression=false diff --git a/Assets/PixelPlanets/a-moon.png b/Core/Assets/PixelPlanets/a-moon.png similarity index 100% rename from Assets/PixelPlanets/a-moon.png rename to Core/Assets/PixelPlanets/a-moon.png diff --git a/Assets/PixelPlanets/a-moon.png.import b/Core/Assets/PixelPlanets/a-moon.png.import similarity index 76% rename from Assets/PixelPlanets/a-moon.png.import rename to Core/Assets/PixelPlanets/a-moon.png.import index 96da253..7cdf7f5 100644 --- a/Assets/PixelPlanets/a-moon.png.import +++ b/Core/Assets/PixelPlanets/a-moon.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dng410xo7qqfv" -path="res://.godot/imported/a-moon.png-bce2eccded710c90add850f3ca7cb2e1.ctex" +path="res://.godot/imported/a-moon.png-54f8d7810db3be4679f0fc14b17f0770.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Assets/PixelPlanets/a-moon.png" -dest_files=["res://.godot/imported/a-moon.png-bce2eccded710c90add850f3ca7cb2e1.ctex"] +source_file="res://Core/Assets/PixelPlanets/a-moon.png" +dest_files=["res://.godot/imported/a-moon.png-54f8d7810db3be4679f0fc14b17f0770.ctex"] [params] diff --git a/back_to_main.gd b/Core/Components/back_to_main.gd similarity index 100% rename from back_to_main.gd rename to Core/Components/back_to_main.gd diff --git a/back_to_main.gd.uid b/Core/Components/back_to_main.gd.uid similarity index 100% rename from back_to_main.gd.uid rename to Core/Components/back_to_main.gd.uid diff --git a/open_level_component.gd b/Core/Components/open_level_component.gd similarity index 100% rename from open_level_component.gd rename to Core/Components/open_level_component.gd diff --git a/open_level_component.gd.uid b/Core/Components/open_level_component.gd.uid similarity index 100% rename from open_level_component.gd.uid rename to Core/Components/open_level_component.gd.uid diff --git a/quit_game_component.gd b/Core/Components/quit_game_component.gd similarity index 100% rename from quit_game_component.gd rename to Core/Components/quit_game_component.gd diff --git a/quit_game_component.gd.uid b/Core/Components/quit_game_component.gd.uid similarity index 100% rename from quit_game_component.gd.uid rename to Core/Components/quit_game_component.gd.uid diff --git a/Assets/PID_Spinning_Stuff.glb b/Experiments/PidTest/Assets/PID_Spinning_Stuff.glb similarity index 100% rename from Assets/PID_Spinning_Stuff.glb rename to Experiments/PidTest/Assets/PID_Spinning_Stuff.glb diff --git a/Assets/PID_Spinning_Stuff.glb.import b/Experiments/PidTest/Assets/PID_Spinning_Stuff.glb.import similarity index 76% rename from Assets/PID_Spinning_Stuff.glb.import rename to Experiments/PidTest/Assets/PID_Spinning_Stuff.glb.import index d58a275..073ee8c 100644 --- a/Assets/PID_Spinning_Stuff.glb.import +++ b/Experiments/PidTest/Assets/PID_Spinning_Stuff.glb.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://b8yyluxikhlr0" -path="res://.godot/imported/PID_Spinning_Stuff.glb-977aece4b561e834c064e6c1c7e53471.scn" +path="res://.godot/imported/PID_Spinning_Stuff.glb-aa3b93bf47083b9724865d3bff0f5f1e.scn" [deps] -source_file="res://Assets/PID_Spinning_Stuff.glb" -dest_files=["res://.godot/imported/PID_Spinning_Stuff.glb-977aece4b561e834c064e6c1c7e53471.scn"] +source_file="res://Experiments/PidTest/Assets/PID_Spinning_Stuff.glb" +dest_files=["res://.godot/imported/PID_Spinning_Stuff.glb-aa3b93bf47083b9724865d3bff0f5f1e.scn"] [params] diff --git a/Assets/PID_Spinning_Target.glb b/Experiments/PidTest/Assets/PID_Spinning_Target.glb similarity index 100% rename from Assets/PID_Spinning_Target.glb rename to Experiments/PidTest/Assets/PID_Spinning_Target.glb diff --git a/Assets/PID_Spinning_Target.glb.import b/Experiments/PidTest/Assets/PID_Spinning_Target.glb.import similarity index 76% rename from Assets/PID_Spinning_Target.glb.import rename to Experiments/PidTest/Assets/PID_Spinning_Target.glb.import index 89350c3..96f104a 100644 --- a/Assets/PID_Spinning_Target.glb.import +++ b/Experiments/PidTest/Assets/PID_Spinning_Target.glb.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://cin3pgpeydkpe" -path="res://.godot/imported/PID_Spinning_Target.glb-739e3becae2412e2332407d1fc9f1fc7.scn" +path="res://.godot/imported/PID_Spinning_Target.glb-b494bd392644136f4ee2f4a9ca10e7bc.scn" [deps] -source_file="res://Assets/PID_Spinning_Target.glb" -dest_files=["res://.godot/imported/PID_Spinning_Target.glb-739e3becae2412e2332407d1fc9f1fc7.scn"] +source_file="res://Experiments/PidTest/Assets/PID_Spinning_Target.glb" +dest_files=["res://.godot/imported/PID_Spinning_Target.glb-b494bd392644136f4ee2f4a9ca10e7bc.scn"] [params] diff --git a/Assets/PID_Test_Obj.blend b/Experiments/PidTest/Assets/PID_Test_Obj.blend similarity index 100% rename from Assets/PID_Test_Obj.blend rename to Experiments/PidTest/Assets/PID_Test_Obj.blend diff --git a/Assets/PID_Test_Obj.blend.import b/Experiments/PidTest/Assets/PID_Test_Obj.blend.import similarity index 85% rename from Assets/PID_Test_Obj.blend.import rename to Experiments/PidTest/Assets/PID_Test_Obj.blend.import index 2a76843..63ddd8e 100644 --- a/Assets/PID_Test_Obj.blend.import +++ b/Experiments/PidTest/Assets/PID_Test_Obj.blend.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://c8ywajojvb7pw" -path="res://.godot/imported/PID_Test_Obj.blend-06d5e64216d0d8667c2f9c3cb6d12c34.scn" +path="res://.godot/imported/PID_Test_Obj.blend-49d06dd6be02191c02959431b2d686bf.scn" [deps] -source_file="res://Assets/PID_Test_Obj.blend" -dest_files=["res://.godot/imported/PID_Test_Obj.blend-06d5e64216d0d8667c2f9c3cb6d12c34.scn"] +source_file="res://Experiments/PidTest/Assets/PID_Test_Obj.blend" +dest_files=["res://.godot/imported/PID_Test_Obj.blend-49d06dd6be02191c02959431b2d686bf.scn"] [params] diff --git a/Levels/pid_test.tscn b/Experiments/PidTest/Scenes/pid_test.tscn similarity index 67% rename from Levels/pid_test.tscn rename to Experiments/PidTest/Scenes/pid_test.tscn index 4df0798..6c9b195 100644 --- a/Levels/pid_test.tscn +++ b/Experiments/PidTest/Scenes/pid_test.tscn @@ -1,8 +1,8 @@ -[gd_scene load_steps=8 format=3 uid="uid://caj5t8q1fii5m"] +[gd_scene format=3 uid="uid://caj5t8q1fii5m"] -[ext_resource type="PackedScene" uid="uid://cin3pgpeydkpe" path="res://Assets/PID_Spinning_Target.glb" id="1_0c8sw"] -[ext_resource type="Script" uid="uid://b63aqs33qyp0g" path="res://Levels/pid_test.gd" id="1_sxbsa"] -[ext_resource type="PackedScene" uid="uid://b8yyluxikhlr0" path="res://Assets/PID_Spinning_Stuff.glb" id="2_sxbsa"] +[ext_resource type="PackedScene" uid="uid://cin3pgpeydkpe" path="res://Experiments/PidTest/Assets/PID_Spinning_Target.glb" id="1_0c8sw"] +[ext_resource type="Script" uid="uid://b63aqs33qyp0g" path="res://Experiments/PidTest/Scripts/pid_test.gd" id="1_sxbsa"] +[ext_resource type="PackedScene" uid="uid://b8yyluxikhlr0" path="res://Experiments/PidTest/Assets/PID_Spinning_Stuff.glb" id="2_sxbsa"] [sub_resource type="Environment" id="Environment_d03hh"] background_mode = 2 @@ -16,31 +16,31 @@ ambient_light_source = 2 [sub_resource type="LabelSettings" id="LabelSettings_sxbsa"] font_size = 24 -[node name="PidTest" type="Node3D"] +[node name="PidTest" type="Node3D" unique_id=409732338] script = ExtResource("1_sxbsa") -[node name="Target" type="Node3D" parent="."] +[node name="Target" type="Node3D" parent="." unique_id=1892694980] -[node name="PID_Spinning_Target" parent="Target" instance=ExtResource("1_0c8sw")] +[node name="PID_Spinning_Target" parent="Target" unique_id=290681639 instance=ExtResource("1_0c8sw")] -[node name="Spinner" type="Node3D" parent="."] +[node name="Spinner" type="Node3D" parent="." unique_id=247778584] -[node name="PID_Spinning_Stuff" parent="Spinner" instance=ExtResource("2_sxbsa")] +[node name="PID_Spinning_Stuff" parent="Spinner" unique_id=1201678253 instance=ExtResource("2_sxbsa")] -[node name="OmniLight3D" type="OmniLight3D" parent="Spinner/PID_Spinning_Stuff"] +[node name="OmniLight3D" type="OmniLight3D" parent="Spinner/PID_Spinning_Stuff" unique_id=2090020750] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.40560818, 0.6382216, 0) light_color = Color(0.99999994, 0.20727095, 0.32746297, 1) light_energy = 0.2 shadow_enabled = true -[node name="Camera3D" type="Camera3D" parent="."] +[node name="Camera3D" type="Camera3D" parent="." unique_id=1282499222] transform = Transform3D(-4.3597606e-08, -0.072106734, 0.99739695, -3.1518854e-09, 0.99739695, 0.072106734, -1, 0, -4.371139e-08, 4.3431935, 0.43207824, 0) environment = SubResource("Environment_d03hh") -[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=1522897878] transform = Transform3D(0.25000006, 0.9659258, 0.06698735, -0.2588191, -1.9081726e-08, 0.9659258, 0.93301266, -0.25881913, 0.25000003, 0, 3.3288543, 0) -[node name="PID Menue" type="Control" parent="."] +[node name="PID Menue" type="Control" parent="." unique_id=1859056208] layout_mode = 3 anchors_preset = 0 offset_left = 20.0 @@ -49,172 +49,172 @@ offset_right = 20.0 offset_bottom = 20.0 theme = SubResource("Theme_sxbsa") -[node name="PanelContainer" type="PanelContainer" parent="PID Menue"] +[node name="PanelContainer" type="PanelContainer" parent="PID Menue" unique_id=1246871103] layout_mode = 0 offset_right = 40.0 offset_bottom = 40.0 -[node name="VBoxContainer" type="VBoxContainer" parent="PID Menue/PanelContainer"] +[node name="VBoxContainer" type="VBoxContainer" parent="PID Menue/PanelContainer" unique_id=954080507] layout_mode = 2 theme = SubResource("Theme_d03hh") -[node name="Spinner Header" type="Label" parent="PID Menue/PanelContainer/VBoxContainer"] +[node name="Spinner Header" type="Label" parent="PID Menue/PanelContainer/VBoxContainer" unique_id=1483799622] layout_mode = 2 text = "Spinner Controll" label_settings = SubResource("LabelSettings_sxbsa") -[node name="Proportinal Term (P)" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"] +[node name="Proportinal Term (P)" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer" unique_id=1794698833] layout_mode = 2 -[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Proportinal Term (P)"] +[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Proportinal Term (P)" unique_id=1317903797] layout_mode = 2 size_flags_horizontal = 3 text = "Proportinal Term (P)" -[node name="MarginContainer" type="MarginContainer" parent="PID Menue/PanelContainer/VBoxContainer/Proportinal Term (P)"] +[node name="MarginContainer" type="MarginContainer" parent="PID Menue/PanelContainer/VBoxContainer/Proportinal Term (P)" unique_id=1758759405] custom_minimum_size = Vector2(20, 0) layout_mode = 2 -[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Proportinal Term (P)"] +[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Proportinal Term (P)" unique_id=1823143898] layout_mode = 2 max_value = 1.0 step = 0.01 value = 0.5 -[node name="Integral (I)" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"] +[node name="Integral (I)" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer" unique_id=64519878] layout_mode = 2 -[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Integral (I)"] +[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Integral (I)" unique_id=1114350133] layout_mode = 2 size_flags_horizontal = 3 text = "Integral (I)" -[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Integral (I)"] +[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Integral (I)" unique_id=24991717] layout_mode = 2 max_value = 1.0 step = 0.01 -[node name="Derivative (D)" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"] +[node name="Derivative (D)" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer" unique_id=373567523] layout_mode = 2 -[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Derivative (D)"] +[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Derivative (D)" unique_id=1005009217] layout_mode = 2 size_flags_horizontal = 3 text = "Derivative (D)" -[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Derivative (D)"] +[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Derivative (D)" unique_id=2125630530] layout_mode = 2 max_value = 1.0 step = 0.01 -[node name="Force" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"] +[node name="Force" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer" unique_id=372036544] layout_mode = 2 -[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Force"] +[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Force" unique_id=730787559] layout_mode = 2 size_flags_horizontal = 3 text = "Force" -[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Force"] +[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Force" unique_id=664419913] layout_mode = 2 -[node name="MarginContainer" type="MarginContainer" parent="PID Menue/PanelContainer/VBoxContainer"] +[node name="MarginContainer" type="MarginContainer" parent="PID Menue/PanelContainer/VBoxContainer" unique_id=1594734591] custom_minimum_size = Vector2(0, 20) layout_mode = 2 -[node name="Target Header" type="Label" parent="PID Menue/PanelContainer/VBoxContainer"] +[node name="Target Header" type="Label" parent="PID Menue/PanelContainer/VBoxContainer" unique_id=840305492] layout_mode = 2 text = "Target" label_settings = SubResource("LabelSettings_sxbsa") -[node name="Target Rotation" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"] +[node name="Target Rotation" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer" unique_id=1817766875] layout_mode = 2 -[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Target Rotation"] +[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Target Rotation" unique_id=434163315] layout_mode = 2 size_flags_horizontal = 3 text = "Target Rotation" -[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Target Rotation"] +[node name="Input" type="SpinBox" parent="PID Menue/PanelContainer/VBoxContainer/Target Rotation" unique_id=702580921] layout_mode = 2 max_value = 1439.96 step = 0.01 custom_arrow_step = 10.0 -[node name="MarginContainer2" type="MarginContainer" parent="PID Menue/PanelContainer/VBoxContainer"] +[node name="MarginContainer2" type="MarginContainer" parent="PID Menue/PanelContainer/VBoxContainer" unique_id=1993364980] custom_minimum_size = Vector2(0, 20) layout_mode = 2 -[node name="Solution" type="Label" parent="PID Menue/PanelContainer/VBoxContainer"] +[node name="Solution" type="Label" parent="PID Menue/PanelContainer/VBoxContainer" unique_id=1363644963] layout_mode = 2 text = "Solution" label_settings = SubResource("LabelSettings_sxbsa") -[node name="Error" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"] +[node name="Error" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer" unique_id=1710432059] layout_mode = 2 -[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Error"] +[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Error" unique_id=20360049] layout_mode = 2 size_flags_horizontal = 3 text = "Error" -[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Error"] +[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Error" unique_id=220452512] layout_mode = 2 text = "000.00" horizontal_alignment = 1 uppercase = true -[node name="Error Derivative" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"] +[node name="Error Derivative" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer" unique_id=257500719] layout_mode = 2 -[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Error Derivative"] +[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Error Derivative" unique_id=520180909] layout_mode = 2 size_flags_horizontal = 3 text = "Error Derivative" -[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Error Derivative"] +[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Error Derivative" unique_id=376634574] layout_mode = 2 text = "000.00" horizontal_alignment = 1 uppercase = true -[node name="Integral" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"] +[node name="Integral" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer" unique_id=1906698794] layout_mode = 2 -[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Integral"] +[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Integral" unique_id=1621802829] layout_mode = 2 size_flags_horizontal = 3 text = "Integral" -[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Integral"] +[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Integral" unique_id=1321401490] layout_mode = 2 text = "000.00" horizontal_alignment = 1 uppercase = true -[node name="Speed" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"] +[node name="Speed" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer" unique_id=1485477014] layout_mode = 2 -[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Speed"] +[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Speed" unique_id=363468111] layout_mode = 2 size_flags_horizontal = 3 text = "Speed" -[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Speed"] +[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Speed" unique_id=1947341639] layout_mode = 2 text = "000.00" horizontal_alignment = 1 uppercase = true -[node name="Acceleration" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer"] +[node name="Acceleration" type="HBoxContainer" parent="PID Menue/PanelContainer/VBoxContainer" unique_id=1814146417] layout_mode = 2 -[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Acceleration"] +[node name="Label" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Acceleration" unique_id=1879879740] layout_mode = 2 size_flags_horizontal = 3 text = "Acceleration" -[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Acceleration"] +[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Acceleration" unique_id=1647345306] layout_mode = 2 text = "000.00" horizontal_alignment = 1 diff --git a/Levels/pid_test.gd b/Experiments/PidTest/Scripts/pid_test.gd similarity index 69% rename from Levels/pid_test.gd rename to Experiments/PidTest/Scripts/pid_test.gd index 3c0858e..3baaa84 100644 --- a/Levels/pid_test.gd +++ b/Experiments/PidTest/Scripts/pid_test.gd @@ -1,33 +1,34 @@ extends Node3D -var p:float = 0.4 -var i:float = 0.0 -var d:float = 1 +var p: float = 0.4 +var i: float = 0.0 +var d: float = 1 -var force:float = 200.0 -var error:float = 0.0 +var force: float = 200.0 +var error: float = 0.0 var last_error = 0.0 -var error_derivative:float = 0.0 -var integral:float = 0.0 -var target:float = 0.0 #0.0 -> 359.99 +var error_derivative: float = 0.0 +var integral: float = 0.0 +var target: float = 0.0 #0.0 -> 359.99 -var p_input:SpinBox -var i_input:SpinBox -var d_input:SpinBox -var force_input:SpinBox -var target_input:SpinBox +var p_input: SpinBox +var i_input: SpinBox +var d_input: SpinBox +var force_input: SpinBox +var target_input: SpinBox -var spinner_node:Node3D -var target_node:Node3D -var error_lable:Label -var speed_lable:Label -var acceleration_label:Label -var error_derivative_lable:Label -var integral_lable:Label +var spinner_node: Node3D +var target_node: Node3D +var error_lable: Label +var speed_lable: Label +var acceleration_label: Label +var error_derivative_lable: Label +var integral_lable: Label + +var spinner_speed: float = 0.0 +var max_speed: float = 120 # deg/m -> 1/360/60s = 1rpm +var acceleration: float -var spinner_speed:float = 0.0 -var max_speed:float = 120 # deg/m -> 1/360/60s = 1rpm -var acceleration:float func _ready() -> void: spinner_node = get_node("Spinner") @@ -45,7 +46,7 @@ func _ready() -> void: force_input = get_node("PID Menue/PanelContainer/VBoxContainer/Force/Input") force_input.value_changed.connect(_update_force_value) - target_input =get_node("PID Menue/PanelContainer/VBoxContainer/Target Rotation/Input") + target_input = get_node("PID Menue/PanelContainer/VBoxContainer/Target Rotation/Input") target_input.value_changed.connect(_update_target_rot) error_lable = get_node("PID Menue/PanelContainer/VBoxContainer/Error/Output") @@ -60,29 +61,34 @@ func _ready() -> void: d_input.value = d force_input.value = force -func _update_target_rot(value:float) -> void: + +func _update_target_rot(value: float) -> void: target_node.rotation.x = deg_to_rad(value) -func _update_p_value(value:float) -> void: + +func _update_p_value(value: float) -> void: p = value -func _update_i_value(value:float) -> void: + +func _update_i_value(value: float) -> void: i = value -func _update_d_value(value:float) -> void: + +func _update_d_value(value: float) -> void: d = value -func _update_force_value(value:float) -> void: + +func _update_force_value(value: float) -> void: force = value + func _process(delta: float) -> void: # PID Stuff target = rad_to_deg(target_node.rotation.x) error = target - rad_to_deg(spinner_node.rotation.x) - error_derivative = (error - last_error) /delta + error_derivative = (error - last_error) / delta integral += error * delta - # Clamp acceleration between min and max force var pid_output := (p * error) + (i * integral) + (d * error_derivative) acceleration = clampf(pid_output, -force, force) @@ -99,10 +105,11 @@ func _process(delta: float) -> void: last_error = error + func _physics_process(delta: float) -> void: #UI Updats error_lable.text = str(error).pad_decimals(2).pad_zeros(3) + " deg" error_derivative_lable.text = str(error_derivative).pad_decimals(2).pad_zeros(3) integral_lable.text = str(integral).pad_decimals(2).pad_zeros(3) speed_lable.text = str(spinner_speed).pad_decimals(2).pad_zeros(3) + " deg/m" - acceleration_label.text = str(acceleration/force*100).pad_decimals(2).pad_zeros(3) + " %" + acceleration_label.text = str(acceleration / force * 100).pad_decimals(2).pad_zeros(3) + " %" diff --git a/Levels/pid_test.gd.uid b/Experiments/PidTest/Scripts/pid_test.gd.uid similarity index 100% rename from Levels/pid_test.gd.uid rename to Experiments/PidTest/Scripts/pid_test.gd.uid diff --git a/Games/SpaceResources/Assets/TheMoon/TheMoon.gd b/Experiments/Recuration/Assets/TheMoon/TheMoon.gd similarity index 100% rename from Games/SpaceResources/Assets/TheMoon/TheMoon.gd rename to Experiments/Recuration/Assets/TheMoon/TheMoon.gd diff --git a/Games/SpaceResources/Assets/TheMoon/TheMoon.gd.uid b/Experiments/Recuration/Assets/TheMoon/TheMoon.gd.uid similarity index 100% rename from Games/SpaceResources/Assets/TheMoon/TheMoon.gd.uid rename to Experiments/Recuration/Assets/TheMoon/TheMoon.gd.uid diff --git a/Games/SpaceResources/Assets/TheMoon/TheMoon.tscn b/Experiments/Recuration/Assets/TheMoon/TheMoon.tscn similarity index 85% rename from Games/SpaceResources/Assets/TheMoon/TheMoon.tscn rename to Experiments/Recuration/Assets/TheMoon/TheMoon.tscn index 6a1f5e9..6a3c21b 100644 --- a/Games/SpaceResources/Assets/TheMoon/TheMoon.tscn +++ b/Experiments/Recuration/Assets/TheMoon/TheMoon.tscn @@ -1,7 +1,7 @@ [gd_scene format=3 uid="uid://o2egm85y3wul"] -[ext_resource type="Script" uid="uid://1c5nfdg2aud4" path="res://Games/SpaceResources/Assets/TheMoon/TheMoon.gd" id="1_sr6fy"] -[ext_resource type="Texture2D" uid="uid://dng410xo7qqfv" path="res://Assets/PixelPlanets/a-moon.png" id="2_oy8k5"] +[ext_resource type="Script" path="res://Experiments/Recuration/Assets/TheMoon/TheMoon.gd" id="1_sr6fy"] +[ext_resource type="Texture2D" uid="uid://dng410xo7qqfv" path="res://Core/Assets/PixelPlanets/a-moon.png" id="2_oy8k5"] [node name="TheMoon" type="Node2D" unique_id=1994078602] script = ExtResource("1_sr6fy") diff --git a/Games/SpaceResources/Planing/Movement 2D.svg b/Experiments/Recuration/Planning/Movement 2D.svg similarity index 100% rename from Games/SpaceResources/Planing/Movement 2D.svg rename to Experiments/Recuration/Planning/Movement 2D.svg diff --git a/Games/SpaceResources/Planing/Movement 2D.svg.import b/Experiments/Recuration/Planning/Movement 2D.svg.import similarity index 73% rename from Games/SpaceResources/Planing/Movement 2D.svg.import rename to Experiments/Recuration/Planning/Movement 2D.svg.import index 0eef834..5a04c45 100644 --- a/Games/SpaceResources/Planing/Movement 2D.svg.import +++ b/Experiments/Recuration/Planning/Movement 2D.svg.import @@ -3,11 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://pyvdyr3pes5o" -valid=false +path="res://.godot/imported/Movement 2D.svg-4fa99617f74c694e4d2141eda40271bc.ctex" +metadata={ +"vram_texture": false +} [deps] -source_file="res://Games/SpaceResources/Planing/Movement 2D.svg" +source_file="res://Experiments/Recuration/Planning/Movement 2D.svg" +dest_files=["res://.godot/imported/Movement 2D.svg-4fa99617f74c694e4d2141eda40271bc.ctex"] [params] diff --git a/Levels/Recuration.tscn b/Experiments/Recuration/Scenes/Recuration.tscn similarity index 71% rename from Levels/Recuration.tscn rename to Experiments/Recuration/Scenes/Recuration.tscn index 521091d..31256b3 100644 --- a/Levels/Recuration.tscn +++ b/Experiments/Recuration/Scenes/Recuration.tscn @@ -1,8 +1,8 @@ [gd_scene format=3 uid="uid://cycayd4l7k7s4"] -[ext_resource type="Script" uid="uid://bqslv86lm78ci" path="res://Games/SpaceResources/Scripts/RecurionCamera.gd" id="1_002bs"] -[ext_resource type="PackedScene" uid="uid://cbqapc1frbhtv" path="res://Games/SpaceResources/UI/UI.tscn" id="2_qgdyp"] -[ext_resource type="PackedScene" uid="uid://o2egm85y3wul" path="res://Games/SpaceResources/Assets/TheMoon/TheMoon.tscn" id="3_yu4li"] +[ext_resource type="Script" path="res://Experiments/Recuration/Scripts/RecurionCamera.gd" id="1_002bs"] +[ext_resource type="PackedScene" uid="uid://cbqapc1frbhtv" path="res://Experiments/Recuration/UI/UI.tscn" id="2_qgdyp"] +[ext_resource type="PackedScene" uid="uid://o2egm85y3wul" path="res://Experiments/Recuration/Assets/TheMoon/TheMoon.tscn" id="3_yu4li"] [node name="Recuration" type="Node2D" unique_id=1741828961] diff --git a/Games/SpaceResources/Scripts/RecurionCamera.gd b/Experiments/Recuration/Scripts/RecurionCamera.gd similarity index 100% rename from Games/SpaceResources/Scripts/RecurionCamera.gd rename to Experiments/Recuration/Scripts/RecurionCamera.gd diff --git a/Games/SpaceResources/Scripts/RecurionCamera.gd.uid b/Experiments/Recuration/Scripts/RecurionCamera.gd.uid similarity index 100% rename from Games/SpaceResources/Scripts/RecurionCamera.gd.uid rename to Experiments/Recuration/Scripts/RecurionCamera.gd.uid diff --git a/Games/SpaceResources/Scripts/ResourceComponent.gd b/Experiments/Recuration/Scripts/ResourceComponent.gd similarity index 100% rename from Games/SpaceResources/Scripts/ResourceComponent.gd rename to Experiments/Recuration/Scripts/ResourceComponent.gd diff --git a/Games/SpaceResources/Scripts/ResourceComponent.gd.uid b/Experiments/Recuration/Scripts/ResourceComponent.gd.uid similarity index 100% rename from Games/SpaceResources/Scripts/ResourceComponent.gd.uid rename to Experiments/Recuration/Scripts/ResourceComponent.gd.uid diff --git a/Games/SpaceResources/UI/UI.tscn b/Experiments/Recuration/UI/UI.tscn similarity index 69% rename from Games/SpaceResources/UI/UI.tscn rename to Experiments/Recuration/UI/UI.tscn index 25c18b1..f7d9609 100644 --- a/Games/SpaceResources/UI/UI.tscn +++ b/Experiments/Recuration/UI/UI.tscn @@ -1,6 +1,6 @@ [gd_scene format=3 uid="uid://cbqapc1frbhtv"] -[ext_resource type="Script" uid="uid://dslwh6krdrhb" path="res://Games/SpaceResources/UI/ui.gd" id="1_0oc4u"] +[ext_resource type="Script" path="res://Experiments/Recuration/UI/ui.gd" id="1_0oc4u"] [node name="Ui" type="Control" unique_id=1649292342] layout_mode = 3 diff --git a/Games/SpaceResources/UI/ui.gd b/Experiments/Recuration/UI/ui.gd similarity index 100% rename from Games/SpaceResources/UI/ui.gd rename to Experiments/Recuration/UI/ui.gd diff --git a/Games/SpaceResources/UI/ui.gd.uid b/Experiments/Recuration/UI/ui.gd.uid similarity index 100% rename from Games/SpaceResources/UI/ui.gd.uid rename to Experiments/Recuration/UI/ui.gd.uid diff --git a/Assets/player_ship.tscn b/Experiments/SpaceMove/Assets/player_ship.tscn similarity index 85% rename from Assets/player_ship.tscn rename to Experiments/SpaceMove/Assets/player_ship.tscn index 98c6334..f41616c 100644 --- a/Assets/player_ship.tscn +++ b/Experiments/SpaceMove/Assets/player_ship.tscn @@ -1,7 +1,7 @@ -[gd_scene load_steps=6 format=3 uid="uid://c8tm1q2cp567o"] +[gd_scene format=3 uid="uid://c8tm1q2cp567o"] -[ext_resource type="Script" uid="uid://ccnbhjxglgw12" path="res://Assets/player_ship.gd" id="1_3yydb"] -[ext_resource type="Script" uid="uid://ci33hs6nbuhqr" path="res://Assets/shipAiComponent.gd" id="2_vr0dq"] +[ext_resource type="Script" path="res://Experiments/SpaceMove/Scripts/player_ship.gd" id="1_3yydb"] +[ext_resource type="Script" path="res://Experiments/SpaceMove/Scripts/shipAiComponent.gd" id="2_vr0dq"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_tjnu1"] radius = 1.48237 diff --git a/Levels/space_test.tscn b/Experiments/SpaceMove/Scenes/space_test.tscn similarity index 64% rename from Levels/space_test.tscn rename to Experiments/SpaceMove/Scenes/space_test.tscn index c82650d..fd78999 100644 --- a/Levels/space_test.tscn +++ b/Experiments/SpaceMove/Scenes/space_test.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=10 format=3 uid="uid://dgst4apmowe53"] +[gd_scene format=3 uid="uid://dgst4apmowe53"] -[ext_resource type="PackedScene" uid="uid://cc7e4loxpb1x6" path="res://Assets/obstacle.tscn" id="1_ig7tw"] -[ext_resource type="PackedScene" uid="uid://c8tm1q2cp567o" path="res://Assets/player_ship.tscn" id="2_0xm2m"] -[ext_resource type="PackedScene" uid="uid://1al1ysn5q5yk" path="res://Assets/thruster_cube.tscn" id="3_h2yge"] +[ext_resource type="PackedScene" uid="uid://cc7e4loxpb1x6" path="res://Experiments/ThrusterCube/Scenes/obstacle.tscn" id="1_ig7tw"] +[ext_resource type="PackedScene" uid="uid://c8tm1q2cp567o" path="res://Experiments/SpaceMove/Assets/player_ship.tscn" id="2_0xm2m"] +[ext_resource type="PackedScene" uid="uid://1al1ysn5q5yk" path="res://Experiments/ThrusterCube/Scenes/thruster_cube.tscn" id="3_h2yge"] +[ext_resource type="Script" path="res://Experiments/SpaceMove/Scripts/player_ship.gd" id="4_10w3i"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_hsoxx"] @@ -22,46 +23,49 @@ ambient_light_color = Color(1, 1, 1, 1) [sub_resource type="PlaneMesh" id="PlaneMesh_h2yge"] -[node name="TestLevel" type="Node3D"] +[node name="TestLevel" type="Node3D" unique_id=652844344] -[node name="Camera3D" type="Camera3D" parent="."] +[node name="Camera3D" type="Camera3D" parent="." unique_id=150721961] transform = Transform3D(0.998445, -0.0179374, 0.0527875, -9.30799e-10, 0.946829, 0.321737, -0.0557519, -0.321236, 0.945357, 0.181835, 5.6324, 24.1051) fov = 50.4 -[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +[node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=972963566] environment = SubResource("Environment_hsoxx") camera_attributes = SubResource("CameraAttributesPractical_1c2mv") -[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="." unique_id=419392911] transform = Transform3D(0.933305, -0.340159, 0.115038, 0, 0.320365, 0.947294, -0.359085, -0.884114, 0.298998, 0, 1.65681, 0) -[node name="Node" type="Node3D" parent="."] +[node name="Node" type="Node3D" parent="." unique_id=1060338205] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.112919, -16.6481, 0.0137749) -[node name="Obstacle" parent="Node" instance=ExtResource("1_ig7tw")] +[node name="Obstacle" parent="Node" unique_id=1151336365 instance=ExtResource("1_ig7tw")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.528058, 1.09307, -4.11262) -[node name="PlayerShip" parent="Node" instance=ExtResource("2_0xm2m")] +[node name="PlayerShip" parent="Node" unique_id=1169721436 instance=ExtResource("2_0xm2m")] transform = Transform3D(-0.0337657, 0, -0.99943, 0, 1, 0, 0.99943, 0, -0.0337657, -20.7388, 9.76772, -1.42542) _start_direction = Vector3(1, 0.5, 0) _start_speed = 100.0 -[node name="Marker3D" type="Marker3D" parent="Node"] +[node name="Marker3D" type="Marker3D" parent="Node" unique_id=1294508738] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.147182, -10.5201) gizmo_extents = 5.03 -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node/Marker3D"] +[node name="MeshInstance3D" type="MeshInstance3D" parent="Node/Marker3D" unique_id=545308513] transform = Transform3D(0.189904, 0, 0, 0, 0.189904, 0, 0, 0, 0.189904, 0, 0, 0) mesh = SubResource("SphereMesh_0xm2m") -[node name="Obstacle2" parent="Node" instance=ExtResource("1_ig7tw")] +[node name="Obstacle2" parent="Node" unique_id=579337740 instance=ExtResource("1_ig7tw")] transform = Transform3D(0.635485, -0.772113, 0, 0.772113, 0.635485, 0, 0, 0, 1, -6.93043, 24.3938, -1.34355) -[node name="MeshInstance3D" type="MeshInstance3D" parent="Node"] +[node name="MeshInstance3D" type="MeshInstance3D" parent="Node" unique_id=257615271] transform = Transform3D(11.7541, 0, 0, 0, 1, 0, 0, 0, 11.7541, 0, -7, 0) mesh = SubResource("PlaneMesh_h2yge") skeleton = NodePath("../..") -[node name="Thruster Cube" parent="." instance=ExtResource("3_h2yge")] +[node name="Thruster Cube" parent="." unique_id=580986924 instance=ExtResource("3_h2yge")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -11.2033) mass = 200.0 +script = ExtResource("4_10w3i") +_start_direction = Vector3(0, 0, 0) +_start_speed = 0.0 diff --git a/Assets/player_ship.gd b/Experiments/SpaceMove/Scripts/player_ship.gd similarity index 100% rename from Assets/player_ship.gd rename to Experiments/SpaceMove/Scripts/player_ship.gd diff --git a/Assets/player_ship.gd.uid b/Experiments/SpaceMove/Scripts/player_ship.gd.uid similarity index 100% rename from Assets/player_ship.gd.uid rename to Experiments/SpaceMove/Scripts/player_ship.gd.uid diff --git a/Assets/shipAiComponent.gd b/Experiments/SpaceMove/Scripts/shipAiComponent.gd similarity index 100% rename from Assets/shipAiComponent.gd rename to Experiments/SpaceMove/Scripts/shipAiComponent.gd diff --git a/Assets/shipAiComponent.gd.uid b/Experiments/SpaceMove/Scripts/shipAiComponent.gd.uid similarity index 100% rename from Assets/shipAiComponent.gd.uid rename to Experiments/SpaceMove/Scripts/shipAiComponent.gd.uid diff --git a/Assets/Thruster Cube Collision.glb b/Experiments/ThrusterCube/Assets/Thruster Cube Collision.glb similarity index 100% rename from Assets/Thruster Cube Collision.glb rename to Experiments/ThrusterCube/Assets/Thruster Cube Collision.glb diff --git a/Assets/Thruster Cube Collision.glb.import b/Experiments/ThrusterCube/Assets/Thruster Cube Collision.glb.import similarity index 69% rename from Assets/Thruster Cube Collision.glb.import rename to Experiments/ThrusterCube/Assets/Thruster Cube Collision.glb.import index d9f1fad..1ff64a7 100644 --- a/Assets/Thruster Cube Collision.glb.import +++ b/Experiments/ThrusterCube/Assets/Thruster Cube Collision.glb.import @@ -4,20 +4,22 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://crfjfbhjuderh" -path="res://.godot/imported/Thruster Cube Collision.glb-e95615f3a01fd673f0dafc758072d75c.scn" +path="res://.godot/imported/Thruster Cube Collision.glb-e4567795df54acdcaed8b44a3b1cdf8a.scn" [deps] -source_file="res://Assets/Thruster Cube Collision.glb" -dest_files=["res://.godot/imported/Thruster Cube Collision.glb-e95615f3a01fd673f0dafc758072d75c.scn"] +source_file="res://Experiments/ThrusterCube/Assets/Thruster Cube Collision.glb" +dest_files=["res://.godot/imported/Thruster Cube Collision.glb-e4567795df54acdcaed8b44a3b1cdf8a.scn"] [params] nodes/root_type="CollisionShape3D" nodes/root_name="" +nodes/root_script=null nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true @@ -32,6 +34,9 @@ animation/trimming=false animation/remove_immutable_tracks=true animation/import_rest_as_RESET=false import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" _subresources={} gltf/naming_version=1 gltf/embedded_image_handling=0 diff --git a/Assets/Thruster Cube Collision.mtl b/Experiments/ThrusterCube/Assets/Thruster Cube Collision.mtl similarity index 100% rename from Assets/Thruster Cube Collision.mtl rename to Experiments/ThrusterCube/Assets/Thruster Cube Collision.mtl diff --git a/Assets/Thruster Cube Collision.obj b/Experiments/ThrusterCube/Assets/Thruster Cube Collision.obj similarity index 100% rename from Assets/Thruster Cube Collision.obj rename to Experiments/ThrusterCube/Assets/Thruster Cube Collision.obj diff --git a/Experiments/ThrusterCube/Assets/Thruster Cube Collision.obj.import b/Experiments/ThrusterCube/Assets/Thruster Cube Collision.obj.import new file mode 100644 index 0000000..a1a90f1 --- /dev/null +++ b/Experiments/ThrusterCube/Assets/Thruster Cube Collision.obj.import @@ -0,0 +1,25 @@ +[remap] + +importer="wavefront_obj" +importer_version=1 +type="Mesh" +uid="uid://c7f1y6fhexbhm" +path="res://.godot/imported/Thruster Cube Collision.obj-c54c1e160e870d82560d1c443ddeae58.mesh" + +[deps] + +files=["res://.godot/imported/Thruster Cube Collision.obj-c54c1e160e870d82560d1c443ddeae58.mesh"] + +source_file="res://Experiments/ThrusterCube/Assets/Thruster Cube Collision.obj" +dest_files=["res://.godot/imported/Thruster Cube Collision.obj-c54c1e160e870d82560d1c443ddeae58.mesh", "res://.godot/imported/Thruster Cube Collision.obj-c54c1e160e870d82560d1c443ddeae58.mesh"] + +[params] + +generate_tangents=true +generate_lods=true +generate_shadow_mesh=true +generate_lightmap_uv2=false +generate_lightmap_uv2_texel_size=0.2 +scale_mesh=Vector3(1, 1, 1) +offset_mesh=Vector3(0, 0, 0) +force_disable_mesh_compression=false diff --git a/Assets/Thruster Cube.glb b/Experiments/ThrusterCube/Assets/Thruster Cube.glb similarity index 100% rename from Assets/Thruster Cube.glb rename to Experiments/ThrusterCube/Assets/Thruster Cube.glb diff --git a/Assets/Thruster Cube.glb.import b/Experiments/ThrusterCube/Assets/Thruster Cube.glb.import similarity index 65% rename from Assets/Thruster Cube.glb.import rename to Experiments/ThrusterCube/Assets/Thruster Cube.glb.import index cb656fb..ae670d0 100644 --- a/Assets/Thruster Cube.glb.import +++ b/Experiments/ThrusterCube/Assets/Thruster Cube.glb.import @@ -4,20 +4,22 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://cmiwlha25agl4" -path="res://.godot/imported/Thruster Cube.glb-02382f7bdc8ae9a0011d286e98d4c123.scn" +path="res://.godot/imported/Thruster Cube.glb-591643872d53aaa419a7d06c5a20d845.scn" [deps] -source_file="res://Assets/Thruster Cube.glb" -dest_files=["res://.godot/imported/Thruster Cube.glb-02382f7bdc8ae9a0011d286e98d4c123.scn"] +source_file="res://Experiments/ThrusterCube/Assets/Thruster Cube.glb" +dest_files=["res://.godot/imported/Thruster Cube.glb-591643872d53aaa419a7d06c5a20d845.scn"] [params] nodes/root_type="RigidBody3D" nodes/root_name="" +nodes/root_script=null nodes/apply_root_scale=true nodes/root_scale=1.0 nodes/import_as_skeleton_bones=false +nodes/use_name_suffixes=true nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true @@ -32,6 +34,9 @@ animation/trimming=false animation/remove_immutable_tracks=true animation/import_rest_as_RESET=false import_script/path="" +materials/extract=0 +materials/extract_format=0 +materials/extract_path="" _subresources={} gltf/naming_version=1 gltf/embedded_image_handling=1 diff --git a/Assets/obstacle.tscn b/Experiments/ThrusterCube/Scenes/obstacle.tscn similarity index 98% rename from Assets/obstacle.tscn rename to Experiments/ThrusterCube/Scenes/obstacle.tscn index 7e66e58..d6272cd 100644 --- a/Assets/obstacle.tscn +++ b/Experiments/ThrusterCube/Scenes/obstacle.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=3 format=3 uid="uid://cc7e4loxpb1x6"] +[gd_scene format=3 uid="uid://cc7e4loxpb1x6"] [sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_lapuk"] points = PackedVector3Array(-0.5, -1, 0, -0.497651, -1, -0.0490407, -0.497651, -1, 0.0489429, -0.5, 1, 0, -0.490407, -1, -0.097592, -0.497651, 1, -0.0490407, -0.490407, -1, 0.0974941, -0.497651, 1, 0.0489429, -0.478563, -1, -0.145164, -0.490407, 1, -0.097592, -0.478563, -1, 0.145067, -0.490407, 1, 0.0974941, -0.46202, -1, -0.191366, -0.478563, 1, -0.145164, -0.46202, -1, 0.191269, -0.478563, 1, 0.145067, -0.440975, -1, -0.235709, -0.46202, 1, -0.191366, -0.440975, -1, 0.235611, -0.46202, 1, 0.191269, -0.415818, -1, -0.2778, -0.440975, 1, -0.235709, -0.415818, -1, 0.277702, -0.440975, 1, 0.235611, -0.386551, -1, -0.317247, -0.415818, 1, -0.2778, -0.386551, -1, 0.31715, -0.415818, 1, 0.277702, -0.353563, -1, -0.353563, -0.386551, 1, -0.317247, -0.353563, -1, 0.353465, -0.386551, 1, 0.31715, -0.317247, -1, -0.386551, -0.353563, 1, -0.353563, -0.317247, -1, 0.386453, -0.353563, 1, 0.353465, -0.2778, -1, -0.415818, -0.317247, 1, -0.386551, -0.2778, -1, 0.41572, -0.317247, 1, 0.386453, -0.235709, -1, -0.440975, -0.2778, 1, -0.415818, -0.235709, -1, 0.440877, -0.2778, 1, 0.41572, -0.191366, -1, -0.46202, -0.235709, 1, -0.440975, -0.191366, -1, 0.461922, -0.235709, 1, 0.440877, -0.145164, -1, -0.478563, -0.191366, 1, -0.46202, -0.145164, -1, 0.478465, -0.191366, 1, 0.461922, -0.097592, -1, -0.490407, -0.145164, 1, -0.478563, -0.097592, -1, 0.490309, -0.145164, 1, 0.478465, -0.0490407, -1, -0.497651, -0.097592, 1, -0.490407, -0.0490407, -1, 0.497553, -0.097592, 1, 0.490309, 0, -1, -0.5, -0.0490407, 1, -0.497651, 0, -1, 0.5, -0.0490407, 1, 0.497553, 0.0489429, -1, -0.497651, 0, 1, -0.5, 0.0489429, -1, 0.497553, 0, 1, 0.5, 0.0974941, -1, -0.490407, 0.0489429, 1, -0.497651, 0.0974941, -1, 0.490309, 0.0489429, 1, 0.497553, 0.145067, -1, -0.478563, 0.0974941, 1, -0.490407, 0.145067, -1, 0.478465, 0.0974941, 1, 0.490309, 0.191269, -1, -0.46202, 0.145067, 1, -0.478563, 0.191269, -1, 0.461922, 0.145067, 1, 0.478465, 0.235611, -1, -0.440975, 0.191269, 1, -0.46202, 0.235611, -1, 0.440877, 0.191269, 1, 0.461922, 0.277702, -1, -0.415818, 0.235611, 1, -0.440975, 0.277702, -1, 0.41572, 0.235611, 1, 0.440877, 0.31715, -1, -0.386551, 0.277702, 1, -0.415818, 0.31715, -1, 0.386453, 0.277702, 1, 0.41572, 0.353465, -1, -0.353563, 0.31715, 1, -0.386551, 0.353465, -1, 0.353465, 0.31715, 1, 0.386453, 0.386453, -1, -0.317247, 0.353465, 1, -0.353563, 0.386453, -1, 0.31715, 0.353465, 1, 0.353465, 0.41572, -1, -0.2778, 0.386453, 1, -0.317247, 0.41572, -1, 0.277702, 0.386453, 1, 0.31715, 0.440877, -1, -0.235709, 0.41572, 1, -0.2778, 0.440877, -1, 0.235611, 0.41572, 1, 0.277702, 0.461922, -1, -0.191366, 0.440877, 1, -0.235709, 0.461922, -1, 0.191269, 0.440877, 1, 0.235611, 0.478465, -1, -0.145164, 0.461922, 1, -0.191366, 0.478465, -1, 0.145067, 0.461922, 1, 0.191269, 0.490309, -1, -0.097592, 0.478465, 1, -0.145164, 0.490309, -1, 0.0974941, 0.478465, 1, 0.145067, 0.497553, -1, -0.0490407, 0.490309, 1, -0.097592, 0.497553, -1, 0.0489429, 0.490309, 1, 0.0974941, 0.5, -1, 0, 0.497553, 1, -0.0490407, 0.497553, 1, 0.0489429, 0.5, 1, 0) diff --git a/Assets/thruster_cube.tscn b/Experiments/ThrusterCube/Scenes/thruster_cube.tscn similarity index 95% rename from Assets/thruster_cube.tscn rename to Experiments/ThrusterCube/Scenes/thruster_cube.tscn index 1ad7b71..85c93a5 100644 --- a/Assets/thruster_cube.tscn +++ b/Experiments/ThrusterCube/Scenes/thruster_cube.tscn @@ -1,7 +1,7 @@ -[gd_scene load_steps=4 format=3 uid="uid://1al1ysn5q5yk"] +[gd_scene format=3 uid="uid://1al1ysn5q5yk"] -[ext_resource type="PackedScene" uid="uid://cmiwlha25agl4" path="res://Assets/Thruster Cube.glb" id="1_48yjx"] -[ext_resource type="Script" uid="uid://dd3ns5mckarbj" path="res://Assets/thruster_cube.gd" id="2_j3sme"] +[ext_resource type="PackedScene" uid="uid://cmiwlha25agl4" path="res://Experiments/ThrusterCube/Assets/Thruster Cube.glb" id="1_48yjx"] +[ext_resource type="Script" path="res://Experiments/PidTest/Scripts/pid_test.gd" id="2_j3sme"] [sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_48yjx"] points = PackedVector3Array(5.05799, 3.09144, 8.02469, 5.05799, -3.09243, 8.02469, 5.05799, 3.72121, 7.41253, 4.99561, 3.99253, 9.40488, 5.05799, -3.7222, 7.41253, 4.99561, -3.99352, 9.40488, 5.05799, 3.72121, -8.54888, 4.99561, 4.98769, 8.4087, 4.99165, 4.00936, 9.40714, 4.98769, 3.99253, 9.41165, 4.99165, 4.99165, 8.42677, 4.99561, -4.98868, 8.4087, 5.05799, -3.7222, -8.54888, 4.98769, -3.99352, 9.41165, 4.99165, -4.01035, 9.40714, 4.99165, -4.99264, 8.42677, 5.05799, 3.09144, -9.15878, 4.99561, 3.99253, -10.539, 4.99561, 4.98769, -9.54505, 1.20608, 0.951591, 11.8535, 4.00936, 4.99165, 9.40714, 4.98769, 4.99561, 8.4087, 3.99253, 4.99561, 9.40488, 4.99561, -4.98868, -9.54505, 4.99561, -3.99352, -10.539, 5.05799, -3.09243, -9.15878, 1.20608, -0.952582, 11.8535, 4.00936, -4.99264, 9.40714, 4.98769, -4.9966, 8.4087, 3.99253, -4.9966, 9.40488, 4.99165, 4.00936, -10.5435, 4.99165, 4.99165, -9.56086, 0.951591, 1.20608, 11.8535, 3.99253, 4.98769, 9.41165, 3.72121, 5.05799, 7.41253, 4.98769, 4.99561, -9.54505, -3.99352, 4.99561, 9.40488, 3.09144, 5.05799, 8.02469, 4.99165, -4.99264, -9.56086, 4.99165, -4.01035, -10.5435, 0.951591, -1.20707, 11.8535, 3.99253, -4.98868, 9.41165, 3.72121, -5.05799, 7.41253, 4.98769, -4.9966, -9.54505, -3.99352, -4.9966, 9.40488, 3.09144, -5.05799, 8.02469, 4.98769, 3.99253, -10.548, 3.08153, 3.08153, -11.2234, 4.00936, 4.99165, -10.5435, -0.952582, 1.20608, 11.8535, -3.99352, 4.98769, 9.41165, 3.72121, 5.05799, -8.54888, 3.99253, 4.99561, -10.539, -4.01035, 4.99165, 9.40714, -3.09243, 5.05799, 8.02469, -3.7222, 5.05799, 7.41253, -4.98868, 4.99561, 8.4087, -4.99264, 4.99165, 8.42677, 4.00936, -4.99264, -10.5435, 3.08153, -3.08252, -11.2234, 4.98769, -3.99352, -10.548, -0.952582, -1.20707, 11.8535, -3.99352, -4.98868, 9.41165, 3.72121, -5.05799, -8.54888, 3.99253, -4.9966, -10.539, -4.01035, -4.99264, 9.40714, -4.99264, -4.99264, 8.42677, -4.98868, -4.9966, 8.4087, -3.7222, -5.05799, 7.41253, -3.09243, -5.05799, 8.02469, 3.1152, 2.99935, -11.2234, 2.99935, 3.1152, -11.2234, 3.99253, 4.98769, -10.548, -1.20707, 0.951591, 11.8535, 3.09144, 5.05799, -9.15878, -3.99352, 4.99561, -10.539, -4.99264, 4.00936, 9.40714, -3.7222, 5.05799, -8.54888, -4.98868, 4.99561, -9.54505, -4.9966, 4.98769, 8.4087, -4.9966, 3.99253, 9.40488, 3.99253, -4.98868, -10.548, 2.99935, -3.11619, -11.2234, 3.1152, -3.00034, -11.2234, -1.20707, -0.952582, 11.8535, 3.09144, -5.05799, -9.15878, -3.99352, -4.9966, -10.539, -4.99264, -4.01035, 9.40714, -4.9966, -3.99352, 9.40488, -4.9966, -4.98868, 8.4087, -4.98868, -4.9966, -9.54505, -3.7222, -5.05799, -8.54888, -3.00034, 3.1152, -11.2234, -3.99352, 4.98769, -10.548, -4.98868, 3.99253, 9.41165, -3.09243, 5.05799, -9.15878, -4.01035, 4.99165, -10.5435, -4.99264, 4.99165, -9.56086, -5.05799, 3.72121, 7.41253, -4.9966, 4.98769, -9.54505, -5.05799, 3.09144, 8.02469, -3.99352, -4.98868, -10.548, -3.00034, -3.11619, -11.2234, -4.98868, -3.99352, 9.41165, -3.09243, -5.05799, -9.15878, -4.01035, -4.99264, -10.5435, -5.05799, -3.09243, 8.02469, -5.05799, -3.7222, 7.41253, -4.9966, -4.98868, -9.54505, -4.99264, -4.99264, -9.56086, -3.08252, 3.08153, -11.2234, -4.99264, 4.00936, -10.5435, -5.05799, 3.72121, -8.54888, -4.9966, 3.99253, -10.539, -3.08252, -3.08252, -11.2234, -4.99264, -4.01035, -10.5435, -5.05799, -3.7222, -8.54888, -4.9966, -3.99352, -10.539, -3.11619, 2.99935, -11.2234, -4.98868, 3.99253, -10.548, -5.05799, 3.09144, -9.15878, -3.11619, -3.00034, -11.2234, -4.98868, -3.99352, -10.548, -5.05799, -3.09243, -9.15878) diff --git a/Assets/thruster_cube_collision.tscn b/Experiments/ThrusterCube/Scenes/thruster_cube_collision.tscn similarity index 76% rename from Assets/thruster_cube_collision.tscn rename to Experiments/ThrusterCube/Scenes/thruster_cube_collision.tscn index 3c51cfc..2f6dfe0 100644 --- a/Assets/thruster_cube_collision.tscn +++ b/Experiments/ThrusterCube/Scenes/thruster_cube_collision.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=2 format=3 uid="uid://bp7um84bpvhmx"] +[gd_scene format=3 uid="uid://bp7um84bpvhmx"] [ext_resource type="PackedScene" uid="uid://crfjfbhjuderh" path="res://Assets/Thruster Cube Collision.glb" id="1_v5i77"] diff --git a/Assets/thruster_cube.gd b/Experiments/ThrusterCube/Scripts/thruster_cube.gd similarity index 100% rename from Assets/thruster_cube.gd rename to Experiments/ThrusterCube/Scripts/thruster_cube.gd diff --git a/Assets/thruster_cube.gd.uid b/Experiments/ThrusterCube/Scripts/thruster_cube.gd.uid similarity index 100% rename from Assets/thruster_cube.gd.uid rename to Experiments/ThrusterCube/Scripts/thruster_cube.gd.uid diff --git a/Levels/space_move.tscn b/Levels/space_move.tscn deleted file mode 100644 index 98e549e..0000000 --- a/Levels/space_move.tscn +++ /dev/null @@ -1,3 +0,0 @@ -[gd_scene format=3 uid="uid://jynlgkm41y8d"] - -[node name="SpaceMove" type="Node3D"] diff --git a/main.tscn b/main.tscn index b84a7b8..b2c6d54 100644 --- a/main.tscn +++ b/main.tscn @@ -1,11 +1,25 @@ [gd_scene format=3 uid="uid://djelupqdj4wgd"] -[ext_resource type="Script" uid="uid://bel5yfuiqithe" path="res://open_level_component.gd" id="1_ig7tw"] -[ext_resource type="PackedScene" uid="uid://dgst4apmowe53" path="res://Levels/space_test.tscn" id="2_1bvp3"] -[ext_resource type="PackedScene" uid="uid://jynlgkm41y8d" path="res://Levels/space_move.tscn" id="3_lquwl"] -[ext_resource type="PackedScene" uid="uid://caj5t8q1fii5m" path="res://Levels/pid_test.tscn" id="4_7mycd"] -[ext_resource type="PackedScene" uid="uid://cycayd4l7k7s4" path="res://Levels/Recuration.tscn" id="5_lquwl"] -[ext_resource type="Script" uid="uid://lh1hhx4q8nlu" path="res://quit_game_component.gd" id="6_7mycd"] +[ext_resource type="Script" path="res://Core/Components/open_level_component.gd" id="1_ig7tw"] +[ext_resource type="PackedScene" uid="uid://dgst4apmowe53" path="res://Experiments/SpaceMove/Scenes/space_test.tscn" id="2_1bvp3"] +[ext_resource type="PackedScene" uid="uid://caj5t8q1fii5m" path="res://Experiments/PidTest/Scenes/pid_test.tscn" id="4_7mycd"] +[ext_resource type="PackedScene" uid="uid://cycayd4l7k7s4" path="res://Experiments/Recuration/Scenes/Recuration.tscn" id="5_lquwl"] +[ext_resource type="Script" path="res://Core/Components/quit_game_component.gd" id="6_7mycd"] + +[sub_resource type="PackedScene" id="PackedScene_lquwl"] +_bundled = { +"conn_count": 0, +"conns": PackedInt32Array(), +"editable_instances": [], +"id_paths": [], +"names": PackedStringArray("SpaceMove", "Node3D"), +"node_count": 1, +"node_ids": PackedInt32Array(0), +"node_paths": [], +"nodes": PackedInt32Array(-1, -1, 1, 0, -1, 0, 0), +"variants": [], +"version": 3 +} [node name="Main" type="Control" unique_id=834120395] layout_mode = 3 @@ -34,7 +48,6 @@ text = "space_test" [node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button" unique_id=1834050455] script = ExtResource("1_ig7tw") level = ExtResource("2_1bvp3") -metadata/_custom_type_script = "uid://bel5yfuiqithe" [node name="Button2" type="Button" parent="VBoxContainer" unique_id=93954602] layout_mode = 2 @@ -43,8 +56,7 @@ text = "space_move [node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button2" unique_id=1732413263] script = ExtResource("1_ig7tw") -level = ExtResource("3_lquwl") -metadata/_custom_type_script = "uid://bel5yfuiqithe" +level = SubResource("PackedScene_lquwl") [node name="Button3" type="Button" parent="VBoxContainer" unique_id=1480596145] layout_mode = 2 @@ -53,7 +65,6 @@ text = "pid_test" [node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button3" unique_id=1820153918] script = ExtResource("1_ig7tw") level = ExtResource("4_7mycd") -metadata/_custom_type_script = "uid://bel5yfuiqithe" [node name="Button4" type="Button" parent="VBoxContainer" unique_id=955421861] layout_mode = 2 @@ -62,7 +73,6 @@ text = "Recuration" [node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button4" unique_id=292657034] script = ExtResource("1_ig7tw") level = ExtResource("5_lquwl") -metadata/_custom_type_script = "uid://bel5yfuiqithe" [node name="Button5" type="Button" parent="VBoxContainer" unique_id=630288499] layout_mode = 2 @@ -70,4 +80,3 @@ text = "Exit Experements" [node name="QuitGame" type="Node" parent="VBoxContainer/Button5" unique_id=1111277542] script = ExtResource("6_7mycd") -metadata/_custom_type_script = "uid://lh1hhx4q8nlu" diff --git a/project.godot b/project.godot index a586555..d5ef972 100644 --- a/project.godot +++ b/project.godot @@ -20,10 +20,6 @@ config/features=PackedStringArray("4.6", "Forward Plus") boot_splash/bg_color=Color(0, 0, 0, 1) config/icon="res://icon.svg" -[autoload] - -BackToMain="*res://back_to_main.gd" - [filesystem] import/blender/enabled.android=true From 1331bc1d4ab08f6335be5c083dfdbba40696d7ac Mon Sep 17 00:00:00 2001 From: ArthurErlich Date: Sat, 21 Mar 2026 14:15:42 +0100 Subject: [PATCH 3/3] chore(ci/cd): replaced worfklow with matrix, added dryrun button --- .gitea/workflows/release.yml | 109 +++++++++++------------------------ .vscode/settings.json | 5 ++ 2 files changed, 38 insertions(+), 76 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index f8bb3c6..2b4d749 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -5,6 +5,11 @@ on: branches: [release] pull_request: branches: [release] + workflow_dispatch: + inputs: + dummy: + description: "Dry Run — tests the build process without creating a release" + required: false env: GODOT_VERSION: 4.6.1 @@ -13,16 +18,32 @@ env: BLENDER_VERSION: 5.0.0 jobs: - export-windows: - name: Windows Export - runs-on: ubuntu-24.04 # Use 24.04 with godot 4 + export: + name: ${{ matrix.name }} Export + runs-on: ubuntu-24.04 container: barichello/godot-ci:4.6 + strategy: + matrix: + include: + - name: Windows + godot_preset: "Windows" + artifact_name: windows + output_ext: ".exe" + install_blender: true + - name: Linux + godot_preset: "Linux/X11" + artifact_name: linux + output_ext: ".x86_64" + install_blender: true + steps: - name: Update and install dependencies run: | apt-get update apt-get install -y curl gnupg - apt-get install -y blender + if [ "${{ matrix.install_blender }}" = "true" ]; then + apt-get install -y blender + fi - name: Install Node.js run: | @@ -48,96 +69,36 @@ jobs: exit 1 fi - # Set the Blender path if [ -n "${BLENDER_PATH:-}" ]; then if grep -q '^filesystem/import/blender/blender_path' "$GODOT_CFG"; then - # Replace existing path sed -i "s|^filesystem/import/blender/blender_path = .*|filesystem/import/blender/blender_path = \"$BLENDER_PATH\"|" "$GODOT_CFG" else - # Append new path echo "filesystem/import/blender/blender_path = \"$BLENDER_PATH\"" >> "$GODOT_CFG" fi fi echo "Blender path configured in $GODOT_CFG" - - name: Windows Build + - name: Build shell: bash run: | set -Eeuo pipefail - mkdir -v -p build/windows + mkdir -v -p build/${{ matrix.artifact_name }} EXPORT_DIR="$(readlink -f build)" cd $PROJECT_PATH - godot --headless --export-release "Windows" "$EXPORT_DIR/windows/$EXPORT_NAME.exe" - - name: Upload Artifact - uses: actions/upload-artifact@v3 - with: - name: windows - path: build/windows - - export-linux: - name: Linux Export - runs-on: ubuntu-24.04 # Use 24.04 with godot 4 - container: barichello/godot-ci:4.6 - steps: - - name: Update and install dependencies - run: | - apt-get update - apt-get install -y curl gnupg - - - name: Install Node.js - run: | - curl -fsSL https://deb.nodesource.com/setup_20.x | bash - - apt-get install -y nodejs - - - name: Checkout - uses: actions/checkout@v4 - with: - lfs: true - - name: Setup - shell: bash - run: | - set -Eeuo pipefail - BLENDER_PATH="/usr/bin/blender" - mkdir -pv ~/.config/godot - mkdir -pv ~/.local/share/godot/export_templates/ - GODOT_CFG="$(find ~/.config/godot -name "editor_settings-*.tres" | head -n 1 || true)" - - if [ -z "$GODOT_CFG" ]; then - echo "# Missing Godot editor settings" > "$GODOT_CFG" - exit 1 - fi - - # Set the Blender path - if [ -n "${BLENDER_PATH:-}" ]; then - if grep -q '^filesystem/import/blender/blender_path' "$GODOT_CFG"; then - # Replace existing path - sed -i "s|^filesystem/import/blender/blender_path = .*|filesystem/import/blender/blender_path = \"$BLENDER_PATH\"|" "$GODOT_CFG" - else - # Append new path - echo "filesystem/import/blender/blender_path = \"$BLENDER_PATH\"" >> "$GODOT_CFG" - fi - fi - echo "Blender path configured in $GODOT_CFG" - - - name: Linux Build - shell: bash - run: | - set -Eeuo pipefail - mkdir -v -p build/linux - EXPORT_DIR="$(readlink -f build)" - cd $PROJECT_PATH - godot --headless --export-release "Linux/X11" "$EXPORT_DIR/linux/$EXPORT_NAME.x86_64" + godot --headless --export-release "${{ matrix.godot_preset }}" \ + "$EXPORT_DIR/${{ matrix.artifact_name }}/$EXPORT_NAME${{ matrix.output_ext }}" - name: Upload Artifact uses: actions/upload-artifact@v3 with: - name: linux - path: build/linux + name: ${{ matrix.artifact_name }} + path: build/${{ matrix.artifact_name }} create-release: name: Create Release runs-on: ubuntu-latest - needs: [export-linux, export-windows] + needs: [export] + if: github.event_name == 'push' steps: - name: Checkout uses: actions/checkout@v4 @@ -157,7 +118,6 @@ jobs: - name: Extract version and body from CHANGELOG id: changelog run: | - # Extract the latest released version (skip Unreleased) LATEST=$(grep -E '^## \[[0-9]+\.[0-9]+\.[0-9]+\]' CHANGELOG.md | head -n1 | sed -E 's/^## \[([0-9]+\.[0-9]+\.[0-9]+)\].*/\1/') if [ -z "$LATEST" ]; then @@ -168,17 +128,14 @@ jobs: echo "Released version found: $LATEST" echo "version=$LATEST" >> $GITHUB_OUTPUT - # Extract the body: lines until the next ## header BODY=$(awk -v ver="$LATEST" ' $0 ~ "^## \\[" ver "\\]" {found=1; next} found && $0 ~ "^## \\[" {exit} found {print} ' CHANGELOG.md) - # Trim leading/trailing empty lines BODY=$(echo "$BODY" | sed '/^\s*$/d') - # Output body safely for GitHub Actions echo "body<> $GITHUB_OUTPUT echo "$BODY" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..4c367a5 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "conventionalCommits.scopes": [ + "ci/cd" + ] +} \ No newline at end of file