Author SHA1 Message Date
haylanandClaude Bot 2ec45a574a ci: keep both platform exports running on failure
Coding Quality / Build and analyze (pull_request) Failing after 19s
Gitea 28.0.0 now enforces strategy.fail-fast: true by default. Without
this, a failed Windows export cancels the Linux export job before it
finishes, instead of both platforms completing independently like
before the upgrade.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-01 10:35:59 +02:00
haylan dbe0cbe4a1 Upload files to ".idea/random" 2026-05-16 14:15:17 +02:00
haylan 106ce999c3 Update .gitignore 2026-05-16 14:14:49 +02:00
haylan ec091ed5bc chore:(core) replaced icon svg 2026-03-21 16:55:10 +01:00
haylan a9dd644a26 fix:(core) readded planing resources from ResourceGame 2026-03-21 16:46:50 +01:00
haylan 8d834da76e Merge pull request 'chore:(core) changed folder strukture' (#6) from chore--replacing-folder-structur-to-make-experements-easyer into main
Reviewed-on: #6
2026-03-21 14:14:47 +01:00
haylan 1331bc1d4a chore(ci/cd): replaced worfklow with matrix, added dryrun button
Coding Quality / Build and analyze (pull_request) Successful in 2m19s
2026-03-21 14:15:42 +01:00
haylan 50e6f8b509 chore: restructured project
Coding Quality / Build and analyze (pull_request) Successful in 2m10s
2026-03-19 21:26:44 +01:00
haylan b672d0d26c chore: added structure markdown 2026-03-19 20:07:43 +01:00
haylan 9ab87cc2da feat: added test text into the world 2026-03-18 21:00:16 +01:00
haylan 36ca9ba5ea fix
Build Release / Linux Export (pull_request) Successful in 2m8s
Build Release / Windows Export (pull_request) Successful in 2m44s
Build Release / Create Release (pull_request) Successful in 1m59s
2026-03-18 00:05:41 +01:00
haylan 172fc7669b fixed some problme
Build Release / Linux Export (pull_request) Successful in 2m8s
Build Release / Windows Export (pull_request) Successful in 2m43s
Build Release / Create Release (pull_request) Failing after 2m2s
2026-03-18 00:03:01 +01:00
haylan 0a92f7b461 feat: added version to zip
Build Release / Linux Export (pull_request) Successful in 2m9s
Build Release / Windows Export (pull_request) Successful in 2m43s
Build Release / Create Release (pull_request) Failing after 1m55s
2026-03-17 23:58:46 +01:00
haylan d03874f5e7 fix: zipping exports
Build Release / Linux Export (pull_request) Successful in 2m9s
Build Release / Windows Export (pull_request) Successful in 2m42s
Build Release / Create Release (pull_request) Has been cancelled
2026-03-17 23:57:51 +01:00
haylan 987e4300ab chore: improved artefact upload on relaes
Build Release / Linux Export (pull_request) Successful in 2m9s
Build Release / Windows Export (pull_request) Successful in 2m51s
Build Release / Create Release (pull_request) Successful in 2m2s
2026-03-17 23:52:42 +01:00
haylan 991f9f4bec chore: exporting build files
Build Release / Linux Export (pull_request) Successful in 2m8s
Build Release / Windows Export (pull_request) Successful in 2m50s
Build Release / Create Release (pull_request) Successful in 1m49s
2026-03-17 23:43:04 +01:00
haylan 5c35a1beed fixed linux build
Build Release / Linux Export (pull_request) Successful in 2m8s
Build Release / Windows Export (pull_request) Successful in 2m46s
Build Release / Create Release (pull_request) Successful in 1m49s
2026-03-17 23:36:44 +01:00
haylan 86274ab1bf added linux build
Build Release / Linux Export (pull_request) Failing after 2m1s
Build Release / Windows Export (pull_request) Successful in 2m42s
Build Release / Create Release (pull_request) Has been skipped
2026-03-17 23:33:41 +01:00
haylan 248496db91 chore: fixed pipfall
Build Release / Linux Export (pull_request) Failing after 1m44s
Build Release / Windows Export (pull_request) Successful in 2m48s
Build Release / Create Release (pull_request) Has been skipped
2026-03-17 23:30:11 +01:00
haylan 926a1e8aa0 chore: added blender to build
Build Release / Linux Export (pull_request) Failing after 1m44s
Build Release / Windows Export (pull_request) Failing after 2m31s
Build Release / Create Release (pull_request) Has been skipped
2026-03-17 23:27:53 +01:00
haylan 71e37b0b55 chore: added missing blender in path
Build Release / Windows Export (pull_request) Failing after 2m5s
Build Release / Create Release (pull_request) Has been skipped
2026-03-17 23:12:38 +01:00
haylan 81dca211b5 chore: added checkout 2026-03-17 22:54:31 +01:00
haylan f16838c81c chore lovered version aing
Build Release / Windows Export (pull_request) Successful in 2m14s
Build Release / Linux Export (pull_request) Successful in 2m16s
Build Release / Create Release (pull_request) Failing after 1m47s
2026-03-17 22:52:32 +01:00
haylan 0d14d27a0b chore: reduce upload artifact version, removed mac
Build Release / Windows Export (pull_request) Failing after 2m14s
Build Release / Linux Export (pull_request) Failing after 2m21s
Build Release / Create Release (pull_request) Has been skipped
2026-03-17 22:50:20 +01:00
haylan 3c619c9613 fix: fixed never ending job
Build Release / Windows Export (pull_request) Failing after 2m4s
Build Release / Mac Export (pull_request) Failing after 2m4s
Build Release / Linux Export (pull_request) Failing after 2m5s
Build Release / Create Release (pull_request) Has been skipped
2026-03-17 22:47:50 +01:00
haylan fd52dc9c1c chore: fixed version of godot
Build Release / Create Release (pull_request) Has been cancelled
Build Release / Windows Export (pull_request) Has been cancelled
Build Release / Linux Export (pull_request) Has been cancelled
Build Release / Mac Export (pull_request) Has been cancelled
2026-03-17 22:45:10 +01:00
haylan 40d8d8753d chore: import projekt bevor export
Build Release / Create Release (pull_request) Has been cancelled
Build Release / Linux Export (pull_request) Has been cancelled
Build Release / Windows Export (pull_request) Has been cancelled
Build Release / Mac Export (pull_request) Has been cancelled
2026-03-17 22:39:39 +01:00
haylan 051c822bd5 test
Build Release / Create Release (pull_request) Has been cancelled
Build Release / Linux Export (pull_request) Has been cancelled
Build Release / Mac Export (pull_request) Has been cancelled
Build Release / Windows Export (pull_request) Has been cancelled
2026-03-17 22:35:24 +01:00
haylan 3ab31fe40b test
Build Release / Linux Export (pull_request) Failing after 1m47s
Build Release / Mac Export (pull_request) Failing after 1m46s
Build Release / Create Release (pull_request) Has been cancelled
Build Release / Windows Export (pull_request) Has been cancelled
2026-03-17 22:25:56 +01:00
haylan 376c1b5225 test
Build Release / Mac Export (pull_request) Failing after 1m46s
Build Release / Linux Export (pull_request) Failing after 1m48s
Build Release / Windows Export (pull_request) Failing after 2m4s
Build Release / Create Release (pull_request) Has been skipped
2026-03-17 22:20:53 +01:00
haylan 03787a82fc fix: standardize runner images to use ubuntu-24.04 for all export jobs
Build Release / Windows Export (pull_request) Failing after 1m47s
Build Release / Linux Export (pull_request) Failing after 2m2s
Build Release / Mac Export (pull_request) Failing after 2m3s
Build Release / Create Release (pull_request) Has been skipped
2026-03-17 22:19:46 +01:00
haylan bc9f0b9f27 fix: downgrade actions/checkout to v4 and enable progress display for all export jobs
Build Release / Windows Export (pull_request) Failing after 1m54s
Build Release / Linux Export (pull_request) Failing after 1m53s
Build Release / Mac Export (pull_request) Failing after 1m52s
Build Release / Create Release (pull_request) Has been skipped
2026-03-17 22:17:01 +01:00
haylan 1aa0dbf544 fix: update runner images to use official ubuntu-24.04-github for export jobs
Build Release / Windows Export (pull_request) Failing after 2m3s
Build Release / Linux Export (pull_request) Failing after 2m2s
Build Release / Mac Export (pull_request) Failing after 2m1s
Build Release / Create Release (pull_request) Has been skipped
2026-03-17 22:10:50 +01:00
haylan ebe34e1750 fix: remove redundant Node installation steps from export jobs in release workflow
Build Release / Windows Export (pull_request) Has been cancelled
Build Release / Linux Export (pull_request) Has been cancelled
Build Release / Mac Export (pull_request) Has been cancelled
Build Release / Create Release (pull_request) Has been cancelled
2026-03-17 21:52:18 +01:00
haylan c9743d65b7 fix: update runner images for Windows, Linux, and Mac export jobs in release workflow 2026-03-17 21:51:52 +01:00
haylan 70c407b5f9 fix: streamline Node installation steps in export jobs for all platforms
Build Release / Windows Export (pull_request) Failing after 1m50s
Build Release / Linux Export (pull_request) Failing after 1m51s
Build Release / Mac Export (pull_request) Failing after 1m50s
Build Release / Create Release (pull_request) Has been skipped
2026-03-17 21:50:08 +01:00
haylan aa6ac812cf fix: simplify container definition for export jobs in release workflow
Build Release / Windows Export (pull_request) Failing after 1m46s
Build Release / Mac Export (pull_request) Failing after 1m46s
Build Release / Linux Export (pull_request) Failing after 1m47s
Build Release / Create Release (pull_request) Has been skipped
2026-03-17 21:44:29 +01:00
haylan a34ca8af46 fix: update checkout action to v6 in export jobs
Build Release / Windows Export (pull_request) Failing after 1m46s
Build Release / Linux Export (pull_request) Failing after 1m47s
Build Release / Mac Export (pull_request) Failing after 1m46s
Build Release / Create Release (pull_request) Has been skipped
2026-03-17 21:40:16 +01:00
haylan 72601467e4 fix: add nodejs and npm installation to setup steps for all export jobs
Build Release / Windows Export (pull_request) Failing after 1m46s
Build Release / Linux Export (pull_request) Failing after 1m46s
Build Release / Mac Export (pull_request) Failing after 1m46s
Build Release / Create Release (pull_request) Has been skipped
2026-03-17 21:39:00 +01:00
haylan 7d9d107d65 fix: refactor release workflow to support separate export jobs for Windows, Linux, and Mac
Build Release / Windows Export (pull_request) Failing after 1m51s
Build Release / Linux Export (pull_request) Failing after 1m51s
Build Release / Mac Export (pull_request) Failing after 1m52s
2026-03-17 20:53:59 +01:00
haylan ef8e3d7d15 fix: refactor release workflow to streamline export process and update platform configuration
Build Release / Export (windows) (pull_request) Failing after 2m27s
2026-03-17 20:47:01 +01:00
haylan c287fd8404 fix: remove unnecessary build path normalization and output steps
Build Release / build (Linux/X11) (pull_request) Failing after 2m37s
Build Release / build (Web) (pull_request) Failing after 2m36s
Build Release / build (Windows) (pull_request) Failing after 2m22s
2026-03-16 22:55:21 +01:00
haylan 2c3b9e458d fix: correct formatting in build output message and fix token line in release action 2026-03-16 22:54:17 +01:00
haylan 9322a8f723 fix: improve build path normalization and output logging 2026-03-16 22:52:01 +01:00
haylan 191f94892b fix: remove build path normalization step and update artifact upload parameters
Build Release / build (Linux/X11) (pull_request) Failing after 2m28s
Build Release / build (Web) (pull_request) Failing after 2m33s
Build Release / build (Windows) (pull_request) Failing after 2m17s
2026-03-16 22:40:34 +01:00
haylan 7dfdd4c2c8 fix: enhance build path normalization to check for existence of build directory
Build Release / build (Windows) (pull_request) Failing after 2m33s
Build Release / build (Web) (pull_request) Failing after 2m43s
Build Release / build (Linux/X11) (pull_request) Failing after 2m45s
2026-03-16 22:34:49 +01:00
haylan fbfa81b9aa fix: update release action parameters to correctly reference changelog outputs
Build Release / build (Linux/X11) (pull_request) Successful in 2m36s
Build Release / build (Web) (pull_request) Failing after 2m44s
Build Release / build (Windows) (pull_request) Failing after 2m45s
2026-03-16 22:30:32 +01:00
haylan 6370bb5b09 fix: enhance CHANGELOG extraction to include body and trim empty lines
Build Release / build (Linux/X11) (pull_request) Successful in 2m40s
Build Release / build (Windows) (pull_request) Failing after 2m41s
Build Release / build (Web) (pull_request) Failing after 2m42s
2026-03-16 22:25:23 +01:00
haylan 751a3b1a17 fix: correct formatting for release action parameters in workflow
Build Release / build (Linux/X11) (pull_request) Failing after 2m27s
Build Release / build (Web) (pull_request) Failing after 2m36s
Build Release / build (Windows) (pull_request) Failing after 2m17s
2026-03-16 22:19:57 +01:00
haylan 3aa520203e fix: update release action to include formatted release name and description
Build Release / build (Web) (pull_request) Failing after 2m30s
Build Release / build (Windows) (pull_request) Failing after 2m42s
Build Release / build (Linux/X11) (pull_request) Failing after 2m51s
2026-03-16 22:15:03 +01:00
haylan 4a27ae75d3 test
Build Release / build (Web) (pull_request) Failing after 2m36s
Build Release / build (Linux/X11) (pull_request) Failing after 2m41s
Build Release / build (Windows) (pull_request) Failing after 2m44s
2026-03-16 22:10:04 +01:00
haylan 756281ab0b fix: update server_url reference to use vars in release workflow
Build Release / build (Linux/X11) (pull_request) Failing after 2m36s
Build Release / build (Web) (pull_request) Failing after 2m41s
Build Release / build (Windows) (pull_request) Failing after 2m42s
2026-03-16 22:07:52 +01:00
haylan 651abb6fef fix: correct artifact upload path in release workflow
Build Release / build (Web) (pull_request) Failing after 2m29s
Build Release / build (Linux/X11) (pull_request) Failing after 2m34s
Build Release / build (Windows) (pull_request) Failing after 2m19s
2026-03-16 22:02:23 +01:00
haylan 6b91985c84 fix: update build action to normalize build path and use correct output for uploads
Build Release / build (Web) (pull_request) Failing after 2m31s
Build Release / build (Linux/X11) (pull_request) Failing after 2m35s
Build Release / build (Windows) (pull_request) Failing after 3m6s
2026-03-16 20:44:29 +01:00
haylan b58012bb90 fix: add EXPORT_DIR parameter to build action configuration 2026-03-16 20:40:49 +01:00
haylan b983f41f75 fix: update build action reference to correct repository
Build Release / build (Web) (pull_request) Failing after 2m58s
Build Release / build (Linux/X11) (pull_request) Failing after 3m18s
Build Release / build (Windows) (pull_request) Failing after 2m27s
2026-03-16 20:33:16 +01:00
haylan d788285d18 test
Build Release / build (Web) (pull_request) Failing after 12m36s
Build Release / build (Linux/X11) (pull_request) Failing after 16m5s
Build Release / build (Windows) (pull_request) Failing after 11m21s
2026-03-15 23:21:16 +01:00
haylan 4a6703f79a fix: update build action to use specific fork of godot-build-action
Build Release / build (Linux/X11) (pull_request) Failing after 1m39s
Build Release / build (Web) (pull_request) Failing after 1m33s
Build Release / build (Windows) (pull_request) Failing after 1m33s
2026-03-15 23:00:46 +01:00
haylan 560b04bba2 fix: update exclude_filter for Web and Linux presets to exclude .blend files 2026-03-15 22:44:51 +01:00
haylan 7522d45bbd fix: add Blender support for Android and Web platforms in project configuration
Build Release / build (Linux/X11) (pull_request) Failing after 2m10s
Build Release / build (Web) (pull_request) Failing after 2m10s
Build Release / build (Windows) (pull_request) Failing after 2m11s
2026-03-15 22:38:11 +01:00
haylan 80c905bcef fix: update export presets to use Windows, Linux, and Web platforms
Build Release / build (Linux/X11) (pull_request) Failing after 2m11s
Build Release / build (Web) (pull_request) Failing after 2m11s
Build Release / build (Windows) (pull_request) Failing after 2m10s
2026-03-15 22:31:44 +01:00
haylan ba84004adc fix: update export presets for Web, Linux, and Windows platforms with new configurations 2026-03-15 22:31:38 +01:00
haylan 966951654a fix: add INSTALL_BLENDER parameter to build action in release workflow
Build Release / build (Linux/X11) (pull_request) Failing after 2m11s
Build Release / build (Windows Desktop) (pull_request) Failing after 2m11s
Build Release / build (macOS) (pull_request) Failing after 2m10s
2026-03-15 22:28:33 +01:00
haylan 905c2d7666 fix: improve version extraction logic in release workflow
Build Release / build (Linux/X11) (pull_request) Failing after 2m21s
Build Release / build (Windows Desktop) (pull_request) Failing after 2m11s
Build Release / build (macOS) (pull_request) Failing after 2m11s
2026-03-15 22:26:29 +01:00
haylan de51310f94 fix: replace release-drafter with custom version extraction in release workflow
Build Release / build (Linux/X11) (pull_request) Failing after 1m36s
Build Release / build (Windows Desktop) (pull_request) Failing after 1m37s
Build Release / build (macOS) (pull_request) Failing after 1m37s
2026-03-15 22:22:35 +01:00
haylan 82e3ca5182 fix: remove GHE_HOST setup step and use SERVER_URL directly in release workflow
Build Release / build (Linux/X11) (pull_request) Failing after 1m39s
Build Release / build (Windows Desktop) (pull_request) Failing after 1m38s
Build Release / build (macOS) (pull_request) Failing after 1m38s
2026-03-15 22:20:28 +01:00
haylan d8f6478b18 fix: set GHE_HOST environment variable in release workflow
Build Release / build (Linux/X11) (pull_request) Failing after 1m38s
Build Release / build (Windows Desktop) (pull_request) Failing after 1m38s
Build Release / build (macOS) (pull_request) Failing after 1m38s
2026-03-15 22:18:11 +01:00
haylan 8ae9b00b5a fix: update token usage in release workflow to use GITEA_TOKEN
Build Release / build (Linux/X11) (pull_request) Failing after 1m39s
Build Release / build (Windows Desktop) (pull_request) Failing after 1m39s
Build Release / build (macOS) (pull_request) Failing after 1m38s
2026-03-15 22:11:47 +01:00
haylan aa4a8e9fb3 fix: update actions/checkout to version 6 and adjust token usage in release workflow
Build Release / build (Windows Desktop) (pull_request) Has been cancelled
Build Release / build (macOS) (pull_request) Has been cancelled
Build Release / build (Linux/X11) (pull_request) Has been cancelled
2026-03-15 22:10:35 +01:00
haylan ef88e5e91d fix: update GITHUB_TOKEN to use ACTIONS_TOKEN in release workflow
Build Release / build (Windows Desktop) (pull_request) Has been cancelled
Build Release / build (macOS) (pull_request) Has been cancelled
Build Release / build (Linux/X11) (pull_request) Has been cancelled
2026-03-15 22:06:25 +01:00
haylan 075521b991 fix: update godot-build-action to version 1.3.1
Build Release / build (Linux/X11) (pull_request) Failing after 2m25s
Build Release / build (Windows Desktop) (pull_request) Failing after 1m39s
Build Release / build (macOS) (pull_request) Failing after 1m39s
2026-03-15 22:02:54 +01:00
haylan 99b2a8bbe3 Merge pull request 'feat(resource-test)-an-ui-test' (#4) from feat(resource-test)-an-ui-test into main
Build Release / build (Linux/X11) (push) Failing after 2m9s
Build Release / build (Windows Desktop) (push) Failing after 1m33s
Build Release / build (macOS) (push) Failing after 1m34s
Build Release / build (Linux/X11) (pull_request) Failing after 1m34s
Build Release / build (Windows Desktop) (pull_request) Failing after 1m34s
Build Release / build (macOS) (pull_request) Failing after 1m34s
Reviewed-on: #4
2026-03-15 21:56:10 +01:00
haylan 11dd732cd0 chore: added server url as variable
Coding Quality / Build and analyze (pull_request) Successful in 1m44s
2026-03-15 21:55:34 +01:00
haylan 3bbefa9647 feat: first draft of release workflow 2026-03-15 21:51:53 +01:00
haylan e7e628992a feat: added changelog 2026-03-15 21:51:27 +01:00
haylan de01511619 fix: changed name of quit component 2026-03-15 21:14:14 +01:00
haylan aae15b0b50 chore: added exit button to game 2026-03-15 21:12:16 +01:00
haylan 80f2860ba1 feat: added release pipline 2026-03-15 21:05:23 +01:00
haylan 9c806e5a3e chore: added mouse concept 2026-03-15 20:58:50 +01:00
haylan f2fb6bb2e6 feat: created basic mouse and keyboard movement 2026-03-15 20:58:07 +01:00
haylan 0e5093bb30 chore: saved changes in scene 2026-03-08 22:31:04 +01:00
haylan 01a8d44a29 feat: prepared new game scene 2026-03-08 22:26:25 +01:00
haylan f25aec14c8 feat: added new scene 2026-03-08 21:56:51 +01:00
haylan 8b56427870 feat: importet new resources 2026-03-08 21:55:26 +01:00
haylan b94d92034d Merge pull request 'chore: removed demo aciont' (#3) from feat(sonar-integration) into main
Reviewed-on: #3
2026-03-08 13:04:33 +01:00
haylan fc17fe781f Delete .sonarlint/Experements.json
Coding Quality / Build and analyze (pull_request) Successful in 1m0s
2026-03-08 13:00:58 +01:00
haylan 8cc5b66281 chore: ignoring sonarlint files
Coding Quality / Build and analyze (pull_request) Successful in 1m0s
2026-03-08 13:01:24 +01:00
haylan aef1db2e9a chore: added sonar metadata
Coding Quality / Build and analyze (pull_request) Failing after 57s
2026-03-08 12:40:51 +01:00
haylan 789c4cf2c9 chore: changed runner on pull request
Coding Quality / Build and analyze (pull_request) Failing after 57s
2026-03-08 12:35:28 +01:00
haylan 755d228902 Merge branch 'main' into feat(sonar-integration) 2026-03-08 12:33:15 +01:00
haylan 66ddd5723c chore: removed demo aciont 2026-03-08 12:32:57 +01:00
haylan d8b69d6008 Merge pull request 'feat(sonar-integration)' (#2) from feat(sonar-integration) into main
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 51s
Coding Quality / Build and analyze (push) Failing after 58s
Reviewed-on: #2
2026-03-08 12:29:26 +01:00
haylan c4d96929eb chore: new imported assets
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 55s
2026-03-08 12:29:25 +01:00
haylan 0822f46397 feat: added sona quality controll
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 57s
2026-03-08 12:25:22 +01:00
haylan 780c57575c Merge pull request 'feat-main-menu' (#1) from feat-main-menu into main
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 54s
Reviewed-on: #1
2026-03-08 11:35:39 +01:00
haylan 8ddb818c27 Merge branch 'main' into feat-main-menu
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 1m15s
2026-03-08 11:35:18 +01:00
haylan c654bcb769 chore: prepared new prototype game 2026-03-08 11:35:33 +01:00
haylan 9e634d704d chore: ignoring .idea folder 2026-03-08 11:34:16 +01:00
haylan 6f0604b1fe fix:: removed whitespace 2025-12-23 12:06:50 +01:00
haylan 31eca0b1ca feat: added export config for web 2025-12-23 12:02:24 +01:00
haylan f6f37db335 feat: ignoerd dist folder 2025-12-23 11:46:08 +01:00
haylan 38102f57ef feat: added input update to ui 2025-12-23 11:43:07 +01:00
haylan 45ccd0bedb feat: added pid calculation and better ui 2025-12-23 00:29:18 +01:00
haylan f41b760208 feat: saved changes to pid_test 2025-12-22 18:15:43 +01:00
haylan ba142a3fac feat: added geometry and startet the button 2025-12-22 18:14:44 +01:00
haylan 4e6968ddb1 feat: added back to main menue 2025-12-22 15:29:26 +01:00
64 changed files with 1988 additions and 99 deletions

No files matched your search

-19
View File
@@ -1,19 +0,0 @@
name: Gitea Actions Demo
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on: [push]
jobs:
Explore-Gitea-Actions:
runs-on: ubuntu-latest
steps:
- run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event."
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!"
- run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}."
- name: Check out repository code
uses: actions/checkout@v4
- run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: |
ls ${{ gitea.workspace }}
- run: echo "🍏 This job's status is ${{ job.status }}."
+160
View File
@@ -0,0 +1,160 @@
name: Build Release
on:
push:
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
EXPORT_NAME: Experements
PROJECT_PATH: .
BLENDER_VERSION: 5.0.0
jobs:
export:
name: ${{ matrix.name }} Export
runs-on: ubuntu-24.04
container: barichello/godot-ci:4.6
strategy:
fail-fast: false
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
if [ "${{ matrix.install_blender }}" = "true" ]; then
apt-get install -y blender
fi
- 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
if [ -n "${BLENDER_PATH:-}" ]; then
if grep -q '^filesystem/import/blender/blender_path' "$GODOT_CFG"; then
sed -i "s|^filesystem/import/blender/blender_path = .*|filesystem/import/blender/blender_path = \"$BLENDER_PATH\"|" "$GODOT_CFG"
else
echo "filesystem/import/blender/blender_path = \"$BLENDER_PATH\"" >> "$GODOT_CFG"
fi
fi
echo "Blender path configured in $GODOT_CFG"
- name: Build
shell: bash
run: |
set -Eeuo pipefail
mkdir -v -p build/${{ matrix.artifact_name }}
EXPORT_DIR="$(readlink -f build)"
cd $PROJECT_PATH
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: ${{ matrix.artifact_name }}
path: build/${{ matrix.artifact_name }}
create-release:
name: Create Release
runs-on: ubuntu-latest
needs: [export]
if: github.event_name == 'push'
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download Windows Artifact
uses: actions/download-artifact@v3
with:
name: windows
path: build/windows
- name: Download Linux Artifact
uses: actions/download-artifact@v3
with:
name: linux
path: build/linux
- name: Extract version and body from CHANGELOG
id: changelog
run: |
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
echo "No released version found in CHANGELOG.md"
exit 1
fi
echo "Released version found: $LATEST"
echo "version=$LATEST" >> $GITHUB_OUTPUT
BODY=$(awk -v ver="$LATEST" '
$0 ~ "^## \\[" ver "\\]" {found=1; next}
found && $0 ~ "^## \\[" {exit}
found {print}
' CHANGELOG.md)
BODY=$(echo "$BODY" | sed '/^\s*$/d')
echo "body<<EOF" >> $GITHUB_OUTPUT
echo "$BODY" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Zipping exports
run: |
zip -r windows-${{ steps.changelog.outputs.version }}.zip build/windows
zip -r linux-${{ steps.changelog.outputs.version }}.zip build/linux
- name: Create Release
uses: akkuman/gitea-release-action@v1
with:
server_url: ${{ vars.SERVER_URL }}
tag_name: ${{ steps.changelog.outputs.version }}
name: "${{ steps.changelog.outputs.version }}"
body: ${{ steps.changelog.outputs.body }}
draft: false
token: ${{ secrets.GITEA_TOKEN }}
files: |
windows-${{ steps.changelog.outputs.version }}.zip
linux-${{ steps.changelog.outputs.version }}.zip
+30
View File
@@ -0,0 +1,30 @@
name: Coding Quality
on:
pull_request:
branches:
- main
jobs:
coding_quality:
name: Build and analyze
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- uses: SonarSource/sonarqube-scan-action@v6
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
with:
args: >
-Dsonar.projectKey=${{ secrets.SONAR_PROJECT_KEY }}
# If you wish to fail your job when the Quality Gate is red, uncomment the
# following lines. This would typically be used to fail a deployment.
# - uses: SonarSource/sonarqube-quality-gate-action@v1
# timeout-minutes: 5
# env:
# SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
+2
View File
@@ -1,3 +1,5 @@
# Godot 4+ specific ignores # Godot 4+ specific ignores
.godot/ .godot/
/android/ /android/
/dist/
.sonarlint
+496
View File
@@ -0,0 +1,496 @@
# Aurora 4X — Godot 4.6.2 Remake
## Game Design Document & Developer Preparation
> **Status:** Pre-production / Architecture phase
> **Engine:** Godot 4.6.2
> **Genre:** Real-time 4X Space Strategy with time scaling
> **Reference:** [Aurora 4X](https://aurora4x.com) by AuroraSteve
---
## Table of Contents
1. [Game Vision](#1-game-vision)
2. [Core Gameplay Loop](#2-core-gameplay-loop)
3. [Time System Design](#3-time-system-design)
4. [Resource System Design](#4-resource-system-design)
5. [Planet & Body Design](#5-planet--body-design)
6. [Mining System Design](#6-mining-system-design)
7. [Architecture Overview](#7-architecture-overview)
8. [Threading Model](#8-threading-model)
9. [Class Reference](#9-class-reference)
10. [Developer Checklist](#10-developer-checklist)
11. [Open Questions](#11-open-questions)
---
## 1. Game Vision
A faithful real-time reimagining of Aurora 4X in Godot 4. The goal is to preserve Aurora's depth — procedural star systems, mineral economics, ship design, exploration, and diplomacy — while modernizing the experience with a proper real-time engine, time scaling, and a cleaner UI.
**Design pillars:**
- **Depth over accessibility** — Aurora's complexity is a feature, not a flaw
- **Simulation integrity** — the numbers must hold up at any time scale
- **Modular systems** — each simulation domain (economy, combat, diplomacy) is isolated and independently tickable
- **Performance budget awareness** — late-game with dozens of colonies and hundreds of ships must remain playable
---
## 2. Core Gameplay Loop
```
Explore star systems
→ Survey planets and bodies for minerals
→ Colonize and deploy mines
→ Extract minerals → Build ships & installations
→ Expand to new systems
→ Encounter alien races → Diplomacy or War
→ Repeat at larger scale
```
**Key differences from the original Aurora:**
- Real-time instead of turn-based increments
- Time scaling (1x → 64x+) replaces "advance X days" buttons
- Visual star map and orbit rendering instead of text tables
- Event-driven pause system (game pauses automatically on important events)
---
## 3. Time System Design
### Philosophy
All simulation math is **rate-based**, not tick-based. This means:
- Mining produces X tons **per second** rather than X tons **per turn**
- Any system consuming time receives a `scaled_delta` (real delta × time scale)
- At 64x, `scaled_delta` is simply 64× larger — no special casing anywhere
### Time Scale Ladder
| Level | Scale | Use Case |
|-------|-------|----------|
| 1 | 1× | Combat, diplomacy, precision decisions |
| 2 | 2× | Routine fleet movement |
| 3 | 4× | Short transit legs |
| 4 | 8× | Long transit legs |
| 5 | 16× | Waiting for construction |
| 6 | 32× | Long colonization phases |
| 7 | 64× | Early game exploration stretches |
| 8+ | 128×+ | Optional / player settings |
### Auto-Pause Events
The game automatically drops to paused when:
- A mineral deposit is fully depleted
- An unknown contact appears on sensors
- A construction order completes
- A ship takes damage
- A diplomatic message is received
- A colony falls below minimum supply threshold
### `GameClock` — Autoload
Single source of truth for all time in the game. Nothing reads `delta` directly — everything calls `GameClock.get_scaled_delta(delta)`.
```gdscript
# Autoload: GameClock
const SCALES: Array[float] = [1.0, 2.0, 4.0, 8.0, 16.0, 32.0, 64.0]
var time_scale: float = 1.0
var paused: bool = false
var elapsed_game_time: float = 0.0 # total in-game seconds
func get_scaled_delta(delta: float) -> float
func set_scale(scale: float) -> void
func toggle_pause() -> void
func faster() -> void
func slower() -> void
```
---
## 4. Resource System Design
### The 11 Minerals
Directly ported from Aurora 4X. Each has a distinct role in construction and technology.
| # | Mineral | Primary Use |
|---|---------|-------------|
| 0 | Duranium | Hull plating, construction |
| 1 | Neutronium | Armour, advanced hulls |
| 2 | Corbomite | Electronic components |
| 3 | Tritanium | Engines |
| 4 | Boronide | Power plants |
| 5 | Mercassium | Sensors |
| 6 | Vendarite | Weapons |
| 7 | Sorium | Fuel (found mainly on gas giants) |
| 8 | Uridium | Shields |
| 9 | Corundium | Ground forces equipment |
| 10 | Gallicite | Missile components |
### Deposit Properties
Each deposit on a body has exactly two values:
| Property | Range | Effect |
|----------|-------|--------|
| `amount` | 0 – 999,999 tons | Total remaining; depletes over time |
| `accessibility` | 0.1 – 1.0 | Multiplier on mine output rate |
**Mining rate formula:**
```
tons_per_second = mines_assigned × accessibility
```
At accessibility 1.0, one mine extracts 1 ton/sec of in-game time. At 0.1, ten mines are needed for the same throughput. These base values are tuned during balancing.
### Deposit Distribution by Body Type
Not every mineral appears on every body. Spawn probability during procedural generation:
| Body Type | Spawn Chance per Mineral |
|-----------|-------------------------|
| Rocky planet | 60% |
| Moon | 45% |
| Asteroid | 80% (low amount, high accessibility) |
| Gas giant | 10% (Sorium-weighted) |
| Comet | 25% |
### Survey Mechanic
Deposits are **hidden until surveyed**. A geological survey ship must complete a survey mission on the body before deposits appear. This preserves Aurora's exploration tension.
- `deposit.surveyed = false` by default
- `get_active_deposits()` filters out unsurveyed deposits
- Survey progress is a time-based operation (affected by time scale)
---
## 5. Planet & Body Design
### `PlanetBody` — Plain Class (not Node or Resource)
> **Critical:** `PlanetBody` must NOT extend `Resource` or `Node`. It is mutated from the economy worker thread. Plain GDScript classes are thread-safe to read/write; Godot's built-in base classes are not.
**Properties:**
```
body_name: String
body_type: String # "Rocky", "Moon", "Gas Giant", "Asteroid", "Comet"
gravity: float # relative to Earth (1.0)
temperature: float # Kelvin
deposits: Dictionary # MineralDeposit.Type (int) → MineralDeposit
```
**Save/Load:** Serialized manually to JSON or a custom binary format. Do not rely on `ResourceSaver`.
### Body Types and Gameplay Role
| Type | Mining | Colonization | Notes |
|------|--------|--------------|-------|
| Rocky planet | Yes | Yes | Main colony targets |
| Moon | Yes | Limited | Good early mining |
| Asteroid | Yes | No | High accessibility, low total |
| Gas giant | Sorium only | No | Fuel source |
| Comet | Rare minerals | No | Worth hunting |
---
## 6. Mining System Design
### `MiningOperation` — One Per Colony
Each colonized body that has mines deployed has exactly one `MiningOperation`. It references the body and tracks the deployed mine count and local stockpile.
**Tick behavior:**
1. Get all active (surveyed, non-depleted) deposits
2. Divide `mines_deployed` evenly across active deposits
3. Call `deposit.extract(scaled_delta, mines_share)` on each
4. Accumulate extracted amounts into `stockpile`
5. Collect and return any depletion events
**Mine allocation** (v1 — simple):
Mines split evenly across all active deposits. Future versions can allow player-directed allocation per mineral type.
### Stockpile Flow
```
PlanetBody deposits
→ MiningOperation.stockpile (local buffer)
→ Colony inventory (global pool per empire)
→ Construction queues consume from colony inventory
→ Freighters transport between colonies
```
The local stockpile buffer means mining output doesn't instantly teleport to construction — freighters must move it, preserving Aurora's logistics gameplay.
---
## 7. Architecture Overview
### Node Tree (Main Scene)
```
Main
├── GameClock (Autoload)
├── EconomyManager (Node — _process every frame)
├── StarSystemManager (Node — owns all PlanetBody instances)
├── FleetManager (Node)
├── UILayer (CanvasLayer)
│ ├── StarMap
│ ├── ColonyPanel
│ ├── EventLog
│ └── TimeControls
└── EventBus (Autoload — for cross-system signals)
```
### System Boundaries
| System | Owns | Communicates via |
|--------|------|-----------------|
| EconomyManager | MiningOperations, EconomyWorker | EventBus signals |
| StarSystemManager | PlanetBody, star layout | Direct reference |
| FleetManager | Ship instances, movement | EventBus signals |
| UI | Display only | Reads snapshots, listens to EventBus |
**Rule:** UI never writes to simulation data. It reads snapshots and sends player commands through a command queue.
---
## 8. Threading Model
### Why a Thread
At 16x–64x time scale, the economy tick can process significant simulation work per real frame. Moving it off the main thread keeps rendering and input at full frame rate regardless of simulation load.
### Thread Safety Rules
1. Only plain GDScript classes (`class_name Foo`, no `extends`) are mutated from the worker thread
2. Never call `emit_signal()` from the worker thread — use an event queue instead
3. Never instantiate Nodes from the worker thread
4. Always lock the mutex before reading OR writing shared data from either thread
5. The main thread owns the UI — the worker thread never touches display state
### Architecture
```
Main Thread Worker Thread
───────────────────────────────── ──────────────────────────────────
GameClock._process(delta)
→ EconomyManager._process(delta)
→ worker.push_delta() ──────→ Semaphore wakes _run()
→ worker.poll_events() ←────── _process_tick(scaled_delta)
→ emit via EventBus for each MiningOperation:
→ maybe pause clock deposit.extract()
accumulate stockpile
collect events → queue
```
### `EconomyWorker` Internals
```
_thread: Thread
_semaphore: Semaphore # main posts, worker waits
_mutex: Mutex # guards all shared state
_operations: Array # MiningOperation list
_pending_delta: float # accumulated scaled delta
_pending_events: Array # event queue (drained by main thread)
```
**Delta accumulation:** If the main thread posts faster than the worker can process (unlikely but possible at extreme time scales), `_pending_delta` accumulates rather than dropping ticks. The worker drains the full accumulated delta on its next wake.
### Reading Data from UI
The UI must never read `stockpile` or deposit amounts directly without a mutex-guarded snapshot:
```gdscript
# EconomyWorker — safe snapshot for UI
func get_stockpile_snapshot(op: MiningOperation) -> Dictionary:
_mutex.lock()
var snapshot := op.stockpile.duplicate()
_mutex.unlock()
return snapshot
```
UI refresh timer: every **0.5 real seconds** — not every frame.
---
## 9. Class Reference
### `MineralDeposit`
| | |
|--|--|
| Base | None (plain class) |
| Thread-safe | ✅ |
| File | `mineral_deposit.gd` |
| Member | Type | Notes |
|--------|------|-------|
| `type` | `Type` (enum) | One of 11 mineral types |
| `amount` | `float` | Tons remaining |
| `accessibility` | `float` | 0.1 – 1.0 |
| `surveyed` | `bool` | Hidden until geological survey |
| `get_rate(mines)` | `float` | Tons/sec at given mine count |
| `extract(scaled_delta, mines)` | `float` | Mutates amount, returns extracted |
| `is_depleted()` | `bool` | True when amount ≤ 0 |
---
### `PlanetBody`
| | |
|--|--|
| Base | None (plain class) |
| Thread-safe | ✅ |
| File | `planet_body.gd` |
| Member | Type | Notes |
|--------|------|-------|
| `body_name` | `String` | |
| `body_type` | `String` | Rocky / Moon / Gas Giant / etc. |
| `gravity` | `float` | Earth = 1.0 |
| `temperature` | `float` | Kelvin |
| `deposits` | `Dictionary` | int → MineralDeposit |
| `add_deposit(d)` | `void` | |
| `get_deposit(type)` | `MineralDeposit` | |
| `get_active_deposits()` | `Array` | Surveyed + non-depleted only |
---
### `MiningOperation`
| | |
|--|--|
| Base | None (plain class) |
| Thread-safe | ✅ |
| File | `mining_operation.gd` |
| Member | Type | Notes |
|--------|------|-------|
| `body` | `PlanetBody` | |
| `mines_deployed` | `int` | |
| `stockpile` | `Dictionary` | Type → float (tons) |
| `tick(scaled_delta)` | `Array` | Returns events (depletions) |
| `get_total_rate()` | `Dictionary` | Type → tons/sec, for UI |
---
### `EconomyWorker`
| | |
|--|--|
| Base | None (plain class) |
| Thread-safe | ✅ (internally managed) |
| File | `economy_worker.gd` |
| Member | Type | Notes |
|--------|------|-------|
| `start()` | `void` | Launches thread |
| `stop()` | `void` | Graceful shutdown, waits for thread |
| `push_delta(scaled_delta)` | `void` | Called from main thread each frame |
| `add_operation(op)` | `void` | Register a colony |
| `remove_operation(op)` | `void` | Deregister a colony |
| `poll_events()` | `Array` | Drain event queue (main thread) |
| `get_stockpile_snapshot(op)` | `Dictionary` | Safe UI read |
---
### `EconomyManager`
| | |
|--|--|
| Base | `Node` |
| Thread-safe | Main thread only |
| File | `economy_manager.gd` |
Thin coordinator. Drives `EconomyWorker` each frame, handles events from the worker, emits signals on `EventBus`.
---
### `GameClock`
| | |
|--|--|
| Base | `Node` (Autoload) |
| Thread-safe | Main thread only |
| File | `game_clock.gd` |
All time scaling lives here. Never read `delta` directly anywhere else in the project.
---
### `ResourceGenerator`
| | |
|--|--|
| Base | None (static methods) |
| Thread-safe | ✅ (no state) |
| File | `resource_generator.gd` |
| Member | Notes |
|--------|-------|
| `generate_deposits(body, rng)` | Procedurally populates a PlanetBody |
| `_spawn_chance(body_type)` | Per-type probability table |
---
## 10. Developer Checklist
### Phase 0 — Foundation
- [ ] Set up Godot 4.6.2 project structure (`Core/`, `Systems/`, `UI/`, `Data/`)
- [ ] Implement `GameClock` autoload
- [ ] Implement `EventBus` autoload (for cross-system signals)
- [ ] Write unit tests for `MineralDeposit.extract()` — verify math at 1x, 16x, 64x scale
- [ ] Write unit tests for delta accumulation in `EconomyWorker`
### Phase 1 — Resource System
- [ ] `MineralDeposit` — full implementation + tests
- [ ] `PlanetBody` — full implementation
- [ ] `ResourceGenerator` — procedural deposit generation
- [ ] `MiningOperation` — tick logic + event return
- [ ] `EconomyWorker` — thread, mutex, semaphore
- [ ] `EconomyManager` — main thread coordinator
- [ ] Verify thread shutdown is clean on scene change and game exit
### Phase 2 — Star System
- [ ] Procedural star system generation (stars, planets, moons, asteroid belts)
- [ ] Orbital mechanics (visual only — positions, not physics sim)
- [ ] `StarSystemManager` node
- [ ] Survey mission system (time-based, uses `GameClock`)
### Phase 3 — Colony & UI
- [ ] Colony creation flow (ship delivers colony module)
- [ ] Mine deployment UI
- [ ] Stockpile display (snapshot-based, 0.5s refresh)
- [ ] Event log panel (depletion notices, auto-pause triggers)
- [ ] Time controls UI (pause, scale ladder, keyboard shortcuts)
### Phase 4 — Construction
- [ ] Construction queue system
- [ ] Mineral consumption from colony stockpile
- [ ] Freighter / logistics system (move stockpile between colonies)
### Phase 5 — Ships & Fleets
- [ ] Ship component / design system
- [ ] Fleet movement (real-time, scaled)
- [ ] Basic sensor / detection system
### Phase 6 — Expansion
- [ ] Jump point discovery and inter-system travel
- [ ] Non-Player Race (NPR) basic AI
- [ ] Diplomacy framework
---
## 11. Open Questions
| # | Question | Priority |
|---|----------|----------|
| 1 | What is the base mining rate (tons/sec per mine at 1x)? Needs balancing pass. | High |
| 2 | Should mine allocation be automatic (even split) or player-directed per mineral? | High |
| 3 | At what time scales should auto-pause be suppressible by the player? | Medium |
| 4 | Save file format — JSON (human-readable) or custom binary (performance)? | Medium |
| 5 | Is Sorium (fuel) part of the same mining pipeline or a separate extraction type? | Medium |
| 6 | Should asteroid belts be individual bodies or a single aggregate body? | Low |
| 7 | How many colonies realistically before the thread model needs profiling? | Low |
---
*Document version 0.1 — Initial architecture session*
*Last updated: May 2026*
+5
View File
@@ -0,0 +1,5 @@
{
"conventionalCommits.scopes": [
"ci/cd"
]
}
-25
View File
@@ -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
+31
View File
@@ -0,0 +1,31 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
### Changed
### Removed
## [0.0.1] - 2026-03-15
### Added
- First inital release of the Expremerts
- Created Changelog
- Added pipline for sonar
- Added pipline for releases
- Created UI Elements to exit the game
- added four minigames to test
### Fixed
### Changed
### Removed
Binary file not shown.

After

Width:  |  Height:  |  Size: 533 B

@@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dng410xo7qqfv"
path="res://.godot/imported/a-moon.png-54f8d7810db3be4679f0fc14b17f0770.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Core/Assets/PixelPlanets/a-moon.png"
dest_files=["res://.godot/imported/a-moon.png-54f8d7810db3be4679f0fc14b17f0770.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
+6
View File
@@ -0,0 +1,6 @@
extends Node
var main_menue: PackedScene = preload("res://main.tscn")
func _input(event: InputEvent) -> void:
if event.is_action_pressed("main_menue"):
get_tree().change_scene_to_packed(main_menue)
+1
View File
@@ -0,0 +1 @@
uid://c6n4axv3eoguq
File renamed without changes.
File renamed without changes.
+14
View File
@@ -0,0 +1,14 @@
extends Node
class_name QuitGame
@onready var button: Button = get_parent() as Button
func _ready() -> void:
button.pressed.connect(_on_button_pressed)
button.name = button.text
func _on_button_pressed() -> void:
get_tree().quit(0)
@@ -0,0 +1 @@
uid://lh1hhx4q8nlu
Binary file not shown.
@@ -0,0 +1,42 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://b8yyluxikhlr0"
path="res://.godot/imported/PID_Spinning_Stuff.glb-aa3b93bf47083b9724865d3bff0f5f1e.scn"
[deps]
source_file="res://Experiments/PidTest/Assets/PID_Spinning_Stuff.glb"
dest_files=["res://.godot/imported/PID_Spinning_Stuff.glb-aa3b93bf47083b9724865d3bff0f5f1e.scn"]
[params]
nodes/root_type=""
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
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=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
gltf/naming_version=2
gltf/embedded_image_handling=1
Binary file not shown.
@@ -0,0 +1,42 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://cin3pgpeydkpe"
path="res://.godot/imported/PID_Spinning_Target.glb-b494bd392644136f4ee2f4a9ca10e7bc.scn"
[deps]
source_file="res://Experiments/PidTest/Assets/PID_Spinning_Target.glb"
dest_files=["res://.godot/imported/PID_Spinning_Target.glb-b494bd392644136f4ee2f4a9ca10e7bc.scn"]
[params]
nodes/root_type=""
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
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=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
gltf/naming_version=2
gltf/embedded_image_handling=1
Binary file not shown.
@@ -0,0 +1,60 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://c8ywajojvb7pw"
path="res://.godot/imported/PID_Test_Obj.blend-49d06dd6be02191c02959431b2d686bf.scn"
[deps]
source_file="res://Experiments/PidTest/Assets/PID_Test_Obj.blend"
dest_files=["res://.godot/imported/PID_Test_Obj.blend-49d06dd6be02191c02959431b2d686bf.scn"]
[params]
nodes/root_type=""
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
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=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={}
blender/nodes/visible=0
blender/nodes/active_collection_only=false
blender/nodes/punctual_lights=true
blender/nodes/cameras=true
blender/nodes/custom_properties=true
blender/nodes/modifiers=1
blender/meshes/colors=false
blender/meshes/uvs=true
blender/meshes/normals=true
blender/meshes/export_geometry_nodes_instances=false
blender/meshes/gpu_instances=false
blender/meshes/tangents=true
blender/meshes/skins=2
blender/meshes/export_bones_deforming_mesh_only=false
blender/materials/unpack_enabled=true
blender/materials/export_materials=1
blender/animation/limit_playback=true
blender/animation/always_sample=true
blender/animation/group_tracks=true
gltf/naming_version=2
+221
View File
@@ -0,0 +1,221 @@
[gd_scene format=3 uid="uid://caj5t8q1fii5m"]
[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
background_color = Color(0.14478481, 0.14478481, 0.14478481, 1)
ambient_light_source = 2
[sub_resource type="Theme" id="Theme_sxbsa"]
[sub_resource type="Theme" id="Theme_d03hh"]
[sub_resource type="LabelSettings" id="LabelSettings_sxbsa"]
font_size = 24
[node name="PidTest" type="Node3D" unique_id=409732338]
script = ExtResource("1_sxbsa")
[node name="Target" type="Node3D" parent="." unique_id=1892694980]
[node name="PID_Spinning_Target" parent="Target" unique_id=290681639 instance=ExtResource("1_0c8sw")]
[node name="Spinner" type="Node3D" parent="." unique_id=247778584]
[node name="PID_Spinning_Stuff" parent="Spinner" unique_id=1201678253 instance=ExtResource("2_sxbsa")]
[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="." 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="." 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="." unique_id=1859056208]
layout_mode = 3
anchors_preset = 0
offset_left = 20.0
offset_top = 20.0
offset_right = 20.0
offset_bottom = 20.0
theme = SubResource("Theme_sxbsa")
[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" unique_id=954080507]
layout_mode = 2
theme = SubResource("Theme_d03hh")
[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" unique_id=1794698833]
layout_mode = 2
[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)" 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)" 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" unique_id=64519878]
layout_mode = 2
[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)" unique_id=24991717]
layout_mode = 2
max_value = 1.0
step = 0.01
[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)" 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)" unique_id=2125630530]
layout_mode = 2
max_value = 1.0
step = 0.01
[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" unique_id=730787559]
layout_mode = 2
size_flags_horizontal = 3
text = "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" unique_id=1594734591]
custom_minimum_size = Vector2(0, 20)
layout_mode = 2
[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" unique_id=1817766875]
layout_mode = 2
[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" 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" unique_id=1993364980]
custom_minimum_size = Vector2(0, 20)
layout_mode = 2
[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" unique_id=1710432059]
layout_mode = 2
[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" 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" unique_id=257500719]
layout_mode = 2
[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" unique_id=376634574]
layout_mode = 2
text = "000.00"
horizontal_alignment = 1
uppercase = true
[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" unique_id=1621802829]
layout_mode = 2
size_flags_horizontal = 3
text = "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" unique_id=1485477014]
layout_mode = 2
[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" unique_id=1947341639]
layout_mode = 2
text = "000.00"
horizontal_alignment = 1
uppercase = true
[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" unique_id=1879879740]
layout_mode = 2
size_flags_horizontal = 3
text = "Acceleration"
[node name="Output" type="Label" parent="PID Menue/PanelContainer/VBoxContainer/Acceleration" unique_id=1647345306]
layout_mode = 2
text = "000.00"
horizontal_alignment = 1
uppercase = true
+115
View File
@@ -0,0 +1,115 @@
extends Node3D
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 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 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_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")
target_node = get_node("Target")
p_input = get_node("PID Menue/PanelContainer/VBoxContainer/Proportinal Term (P)/Input")
p_input.value_changed.connect(_update_p_value)
i_input = get_node("PID Menue/PanelContainer/VBoxContainer/Integral (I)/Input")
i_input.value_changed.connect(_update_i_value)
d_input = get_node("PID Menue/PanelContainer/VBoxContainer/Derivative (D)/Input")
d_input.value_changed.connect(_update_d_value)
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.value_changed.connect(_update_target_rot)
error_lable = get_node("PID Menue/PanelContainer/VBoxContainer/Error/Output")
speed_lable = get_node("PID Menue/PanelContainer/VBoxContainer/Speed/Output")
error_derivative_lable = get_node("PID Menue/PanelContainer/VBoxContainer/Error Derivative/Output")
acceleration_label = get_node("PID Menue/PanelContainer/VBoxContainer/Acceleration/Output")
integral_lable = get_node("PID Menue/PanelContainer/VBoxContainer/Integral/Output")
# Set default values
p_input.value = p
i_input.value = i
d_input.value = d
force_input.value = force
func _update_target_rot(value: float) -> void:
target_node.rotation.x = deg_to_rad(value)
func _update_p_value(value: float) -> void:
p = value
func _update_i_value(value: float) -> void:
i = value
func _update_d_value(value: float) -> void:
d = value
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
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)
# Set speed
var next_speed = spinner_speed + acceleration * delta
# Block acceleration that would exceed max speed
if abs(spinner_speed) >= max_speed and sign(acceleration) == sign(spinner_speed):
acceleration = 0.0
next_speed = spinner_speed
spinner_speed = clamp(next_speed, -max_speed, max_speed)
spinner_node.rotation_degrees.x += spinner_speed * delta
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) + " %"
@@ -0,0 +1 @@
uid://b63aqs33qyp0g
@@ -0,0 +1 @@
extends Node2D
@@ -0,0 +1 @@
uid://1c5nfdg2aud4
@@ -0,0 +1,37 @@
[gd_scene format=3 uid="uid://o2egm85y3wul"]
[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")
[node name="Sprite2D" type="Sprite2D" parent="." unique_id=1777467462]
texture_filter = 1
texture_repeat = 1
texture = ExtResource("2_oy8k5")
[node name="Control" type="Control" parent="." unique_id=1752474701]
layout_mode = 3
anchors_preset = 0
offset_left = 20.0
offset_top = 20.0
offset_right = 20.0
offset_bottom = 20.0
[node name="VBoxContainer" type="VBoxContainer" parent="Control" unique_id=61689214]
layout_mode = 0
offset_right = 110.0
offset_bottom = 77.0
[node name="Label" type="Label" parent="Control/VBoxContainer" unique_id=1786036540]
layout_mode = 2
text = "Iron"
[node name="Label2" type="Label" parent="Control/VBoxContainer" unique_id=374559952]
layout_mode = 2
text = "Copper"
[node name="Label3" type="Label" parent="Control/VBoxContainer" unique_id=1739358724]
layout_mode = 2
text = "Copper"
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than draw.io -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent; color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="652px" height="329px" viewBox="-0.5 -0.5 652 329" content="&lt;mxfile host=&quot;Electron&quot; agent=&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/28.0.6 Chrome/138.0.7204.100 Electron/37.2.3 Safari/537.36&quot; version=&quot;28.0.6&quot;&gt;&#10; &lt;diagram name=&quot;Seite-1&quot; id=&quot;8VUDw9VsU7XZE8zAJI22&quot;&gt;&#10; &lt;mxGraphModel dx=&quot;575&quot; dy=&quot;518&quot; grid=&quot;1&quot; gridSize=&quot;10&quot; guides=&quot;1&quot; tooltips=&quot;1&quot; connect=&quot;1&quot; arrows=&quot;1&quot; fold=&quot;1&quot; page=&quot;1&quot; pageScale=&quot;1&quot; pageWidth=&quot;827&quot; pageHeight=&quot;1169&quot; math=&quot;0&quot; shadow=&quot;0&quot;&gt;&#10; &lt;root&gt;&#10; &lt;mxCell id=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-3&quot; value=&quot;2D Movement Drag Conept&quot; style=&quot;shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;10&quot; y=&quot;10&quot; width=&quot;120&quot; height=&quot;80&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-4&quot; value=&quot;When&amp;lt;br&amp;gt;Left Click + Hold&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;aspect=fixed;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;40&quot; y=&quot;120&quot; width=&quot;80&quot; height=&quot;80&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-5&quot; value=&quot;Save Mouse Pos&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;160&quot; y=&quot;130&quot; width=&quot;120&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-6&quot; value=&quot;Movement of mouse&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;aspect=fixed;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;40&quot; y=&quot;250&quot; width=&quot;80&quot; height=&quot;80&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-7&quot; value=&quot;New Mouse pos - old pos = move postions&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;160&quot; y=&quot;260&quot; width=&quot;120&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-8&quot; value=&quot;&quot; style=&quot;endArrow=classic;html=1;rounded=0;&quot; edge=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;440&quot; y=&quot;210&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;600&quot; y=&quot;330&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-10&quot; value=&quot;Click&amp;lt;br&amp;gt;PosA&quot; style=&quot;shape=callout;whiteSpace=wrap;html=1;perimeter=calloutPerimeter;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;380&quot; y=&quot;130&quot; width=&quot;120&quot; height=&quot;80&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-11&quot; value=&quot;Click Move&amp;lt;br&amp;gt;PosB&quot; style=&quot;shape=callout;whiteSpace=wrap;html=1;perimeter=calloutPerimeter;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;540&quot; y=&quot;250&quot; width=&quot;120&quot; height=&quot;80&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-12&quot; value=&quot;Vector: 10x, -5y&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;540&quot; y=&quot;130&quot; width=&quot;120&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;/root&gt;&#10; &lt;/mxGraphModel&gt;&#10; &lt;/diagram&gt;&#10;&lt;/mxfile&gt;&#10;"><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="U4xH48hkQDtbZK23ePJW-3"><g><path d="M 0 0 L 100 0 L 120 20 L 120 80 L 20 80 L 0 60 L 0 0 Z" fill="Line truncated

After

Width:  |  Height:  |  Size: 15 KiB

@@ -0,0 +1,43 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://pyvdyr3pes5o"
path="res://.godot/imported/Movement 2D.svg-4fa99617f74c694e4d2141eda40271bc.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Experiments/Recuration/Planning/Movement 2D.svg"
dest_files=["res://.godot/imported/Movement 2D.svg-4fa99617f74c694e4d2141eda40271bc.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
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/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
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
@@ -0,0 +1,17 @@
[gd_scene format=3 uid="uid://cycayd4l7k7s4"]
[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]
[node name="RecurionCamera" type="Camera2D" parent="." unique_id=997983592]
script = ExtResource("1_002bs")
movement_speed = 10.0
metadata/_custom_type_script = "uid://bqslv86lm78ci"
[node name="Ui" parent="RecurionCamera" unique_id=1649292342 instance=ExtResource("2_qgdyp")]
[node name="TheMoon" parent="." unique_id=1994078602 instance=ExtResource("3_yu4li")]
position = Vector2(-181, -79)
@@ -0,0 +1,52 @@
extends Camera2D
class_name RecurionCamera
@export var movement_speed: float = 1
var mouse_pos_a: Vector2 = Vector2.ZERO
var mouse_pos_b: Vector2 = Vector2.ZERO
func _process(delta: float) -> void:
process_keyboard_input(delta)
process_mouse_input()
func process_keyboard_input(delta: float):
var direction: Vector2 = Vector2.ZERO
if (Input.is_action_pressed("w")):
direction += Vector2.UP
if (Input.is_action_pressed("s")):
direction += Vector2.DOWN
if (Input.is_action_pressed("a")):
direction += Vector2.LEFT
if (Input.is_action_pressed("d")):
direction += Vector2.RIGHT
direction = direction.normalized() * movement_speed
position += direction * delta * 100
func process_mouse_input():
if (Input.is_action_just_pressed("mouse_down")):
mouse_pos_a = get_global_mouse_position()
mouse_pos_b = mouse_pos_a
elif (Input.is_action_pressed("mouse_down")):
mouse_pos_b = get_global_mouse_position()
position = mouse_pos_a - mouse_pos_b + position
elif (Input.is_action_just_released("mouse_down")):
mouse_pos_a = Vector2.ZERO
mouse_pos_b = Vector2.ZERO
mouse_pos_b = mouse_pos_a
func _input(event: InputEvent) -> void:
if (event is InputEventMouseButton):
var zoom_value = Input.get_axis("scroll_down", "scroll_up")
if (zoom.y + zoom_value > 0.0):
zoom += Vector2.ONE * zoom_value
@@ -0,0 +1 @@
uid://bqslv86lm78ci
@@ -0,0 +1 @@
extends Node
@@ -0,0 +1 @@
uid://bqlwhd5slcp0h
+12
View File
@@ -0,0 +1,12 @@
[gd_scene format=3 uid="uid://cbqapc1frbhtv"]
[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
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_0oc4u")
+1
View File
@@ -0,0 +1 @@
extends Control
+1
View File
@@ -0,0 +1 @@
uid://dslwh6krdrhb
@@ -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" path="res://Experiments/SpaceMove/Scripts/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/shipAiComponent.gd" id="2_vr0dq"]
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_tjnu1"] [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_tjnu1"]
radius = 1.48237 radius = 1.48237
@@ -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://cc7e4loxpb1x6" path="res://Experiments/ThrusterCube/Scenes/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://c8tm1q2cp567o" path="res://Experiments/SpaceMove/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://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"] [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"] [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) 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 fov = 50.4
[node name="WorldEnvironment" type="WorldEnvironment" parent="."] [node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=972963566]
environment = SubResource("Environment_hsoxx") environment = SubResource("Environment_hsoxx")
camera_attributes = SubResource("CameraAttributesPractical_1c2mv") 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) 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) 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) 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) 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_direction = Vector3(1, 0.5, 0)
_start_speed = 100.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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.147182, -10.5201)
gizmo_extents = 5.03 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) transform = Transform3D(0.189904, 0, 0, 0, 0.189904, 0, 0, 0, 0.189904, 0, 0, 0)
mesh = SubResource("SphereMesh_0xm2m") 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) 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) transform = Transform3D(11.7541, 0, 0, 0, 1, 0, 0, 0, 11.7541, 0, -7, 0)
mesh = SubResource("PlaneMesh_h2yge") mesh = SubResource("PlaneMesh_h2yge")
skeleton = NodePath("../..") 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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -11.2033)
mass = 200.0 mass = 200.0
script = ExtResource("4_10w3i")
_start_direction = Vector3(0, 0, 0)
_start_speed = 0.0
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -4,20 +4,22 @@ importer="scene"
importer_version=1 importer_version=1
type="PackedScene" type="PackedScene"
uid="uid://crfjfbhjuderh" uid="uid://crfjfbhjuderh"
path="res://.godot/imported/Thruster Cube Collision.glb-e95615f3a01fd673f0dafc758072d75c.scn" path="res://.godot/imported/Thruster Cube Collision.glb-e4567795df54acdcaed8b44a3b1cdf8a.scn"
[deps] [deps]
source_file="res://Assets/Thruster Cube Collision.glb" source_file="res://Experiments/ThrusterCube/Assets/Thruster Cube Collision.glb"
dest_files=["res://.godot/imported/Thruster Cube Collision.glb-e95615f3a01fd673f0dafc758072d75c.scn"] dest_files=["res://.godot/imported/Thruster Cube Collision.glb-e4567795df54acdcaed8b44a3b1cdf8a.scn"]
[params] [params]
nodes/root_type="CollisionShape3D" nodes/root_type="CollisionShape3D"
nodes/root_name="" nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true nodes/apply_root_scale=true
nodes/root_scale=1.0 nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true meshes/ensure_tangents=true
meshes/generate_lods=true meshes/generate_lods=true
@@ -32,6 +34,9 @@ animation/trimming=false
animation/remove_immutable_tracks=true animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false animation/import_rest_as_RESET=false
import_script/path="" import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={} _subresources={}
gltf/naming_version=1 gltf/naming_version=1
gltf/embedded_image_handling=0 gltf/embedded_image_handling=0
@@ -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
File renamed without changes.
@@ -4,20 +4,22 @@ importer="scene"
importer_version=1 importer_version=1
type="PackedScene" type="PackedScene"
uid="uid://cmiwlha25agl4" uid="uid://cmiwlha25agl4"
path="res://.godot/imported/Thruster Cube.glb-02382f7bdc8ae9a0011d286e98d4c123.scn" path="res://.godot/imported/Thruster Cube.glb-591643872d53aaa419a7d06c5a20d845.scn"
[deps] [deps]
source_file="res://Assets/Thruster Cube.glb" source_file="res://Experiments/ThrusterCube/Assets/Thruster Cube.glb"
dest_files=["res://.godot/imported/Thruster Cube.glb-02382f7bdc8ae9a0011d286e98d4c123.scn"] dest_files=["res://.godot/imported/Thruster Cube.glb-591643872d53aaa419a7d06c5a20d845.scn"]
[params] [params]
nodes/root_type="RigidBody3D" nodes/root_type="RigidBody3D"
nodes/root_name="" nodes/root_name=""
nodes/root_script=null
nodes/apply_root_scale=true nodes/apply_root_scale=true
nodes/root_scale=1.0 nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false nodes/import_as_skeleton_bones=false
nodes/use_name_suffixes=true
nodes/use_node_type_suffixes=true nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true meshes/ensure_tangents=true
meshes/generate_lods=true meshes/generate_lods=true
@@ -32,6 +34,9 @@ animation/trimming=false
animation/remove_immutable_tracks=true animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false animation/import_rest_as_RESET=false
import_script/path="" import_script/path=""
materials/extract=0
materials/extract_format=0
materials/extract_path=""
_subresources={} _subresources={}
gltf/naming_version=1 gltf/naming_version=1
gltf/embedded_image_handling=1 gltf/embedded_image_handling=1
@@ -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"] [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) 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)
@@ -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="PackedScene" uid="uid://cmiwlha25agl4" path="res://Experiments/ThrusterCube/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="Script" path="res://Experiments/PidTest/Scripts/pid_test.gd" id="2_j3sme"]
[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_48yjx"] [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) 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)
@@ -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"] [ext_resource type="PackedScene" uid="uid://crfjfbhjuderh" path="res://Assets/Thruster Cube Collision.glb" id="1_v5i77"]
File renamed without changes.
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than draw.io -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" style="background: transparent; background-color: transparent; color-scheme: light dark;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="652px" height="329px" viewBox="-0.5 -0.5 652 329" content="&lt;mxfile host=&quot;Electron&quot; agent=&quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/28.0.6 Chrome/138.0.7204.100 Electron/37.2.3 Safari/537.36&quot; version=&quot;28.0.6&quot;&gt;&#10; &lt;diagram name=&quot;Seite-1&quot; id=&quot;8VUDw9VsU7XZE8zAJI22&quot;&gt;&#10; &lt;mxGraphModel dx=&quot;575&quot; dy=&quot;518&quot; grid=&quot;1&quot; gridSize=&quot;10&quot; guides=&quot;1&quot; tooltips=&quot;1&quot; connect=&quot;1&quot; arrows=&quot;1&quot; fold=&quot;1&quot; page=&quot;1&quot; pageScale=&quot;1&quot; pageWidth=&quot;827&quot; pageHeight=&quot;1169&quot; math=&quot;0&quot; shadow=&quot;0&quot;&gt;&#10; &lt;root&gt;&#10; &lt;mxCell id=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-3&quot; value=&quot;2D Movement Drag Conept&quot; style=&quot;shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;10&quot; y=&quot;10&quot; width=&quot;120&quot; height=&quot;80&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-4&quot; value=&quot;When&amp;lt;br&amp;gt;Left Click + Hold&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;aspect=fixed;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;40&quot; y=&quot;120&quot; width=&quot;80&quot; height=&quot;80&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-5&quot; value=&quot;Save Mouse Pos&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;160&quot; y=&quot;130&quot; width=&quot;120&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-6&quot; value=&quot;Movement of mouse&quot; style=&quot;ellipse;whiteSpace=wrap;html=1;aspect=fixed;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;40&quot; y=&quot;250&quot; width=&quot;80&quot; height=&quot;80&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-7&quot; value=&quot;New Mouse pos - old pos = move postions&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;160&quot; y=&quot;260&quot; width=&quot;120&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-8&quot; value=&quot;&quot; style=&quot;endArrow=classic;html=1;rounded=0;&quot; edge=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#10; &lt;mxPoint x=&quot;440&quot; y=&quot;210&quot; as=&quot;sourcePoint&quot; /&gt;&#10; &lt;mxPoint x=&quot;600&quot; y=&quot;330&quot; as=&quot;targetPoint&quot; /&gt;&#10; &lt;/mxGeometry&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-10&quot; value=&quot;Click&amp;lt;br&amp;gt;PosA&quot; style=&quot;shape=callout;whiteSpace=wrap;html=1;perimeter=calloutPerimeter;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;380&quot; y=&quot;130&quot; width=&quot;120&quot; height=&quot;80&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-11&quot; value=&quot;Click Move&amp;lt;br&amp;gt;PosB&quot; style=&quot;shape=callout;whiteSpace=wrap;html=1;perimeter=calloutPerimeter;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;540&quot; y=&quot;250&quot; width=&quot;120&quot; height=&quot;80&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;mxCell id=&quot;U4xH48hkQDtbZK23ePJW-12&quot; value=&quot;Vector: 10x, -5y&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; vertex=&quot;1&quot; parent=&quot;1&quot;&gt;&#10; &lt;mxGeometry x=&quot;540&quot; y=&quot;130&quot; width=&quot;120&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#10; &lt;/mxCell&gt;&#10; &lt;/root&gt;&#10; &lt;/mxGraphModel&gt;&#10; &lt;/diagram&gt;&#10;&lt;/mxfile&gt;&#10;"><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="U4xH48hkQDtbZK23ePJW-3"><g><path d="M 0 0 L 100 0 L 120 20 L 120 80 L 20 80 L 0 60 L 0 0 Z" fill="Line truncated

After

Width:  |  Height:  |  Size: 15 KiB

-3
View File
@@ -1,3 +0,0 @@
[gd_scene format=3 uid="uid://caj5t8q1fii5m"]
[node name="PidTest" type="Node3D"]
-3
View File
@@ -1,3 +0,0 @@
[gd_scene format=3 uid="uid://jynlgkm41y8d"]
[node name="SpaceMove" type="Node3D"]
+134
View File
@@ -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.
+168
View File
@@ -0,0 +1,168 @@
[preset.0]
name="Web"
platform="Web"
runnable=false
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter="*.blend"
export_path=""
patches=PackedStringArray()
patch_delta_encoding=false
patch_delta_compression_level_zstd=19
patch_delta_min_reduction=0.1
patch_delta_include_filters="*"
patch_delta_exclude_filters=""
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=true
encrypt_directory=false
script_export_mode=2
[preset.0.options]
custom_template/debug=""
custom_template/release=""
variant/extensions_support=false
variant/thread_support=false
vram_texture_compression/for_desktop=true
vram_texture_compression/for_mobile=false
html/export_icon=true
html/custom_html_shell=""
html/head_include=""
html/canvas_resize_policy=2
html/focus_canvas_on_start=true
html/experimental_virtual_keyboard=false
progressive_web_app/enabled=false
progressive_web_app/ensure_cross_origin_isolation_headers=true
progressive_web_app/offline_page=""
progressive_web_app/display=1
progressive_web_app/orientation=0
progressive_web_app/icon_144x144=""
progressive_web_app/icon_180x180=""
progressive_web_app/icon_512x512=""
progressive_web_app/background_color=Color(0, 0, 0, 1)
threads/emscripten_pool_size=8
threads/godot_pool_size=4
[preset.1]
name="Linux/X11"
platform="Linux"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter="*.blend"
export_path="<null>"
patches=PackedStringArray()
patch_delta_encoding=false
patch_delta_compression_level_zstd=19
patch_delta_min_reduction=0.1
patch_delta_include_filters="*"
patch_delta_exclude_filters=""
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.1.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=false
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
shader_baker/enabled=false
binary_format/architecture="x86_64"
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="#!/usr/bin/env bash
export DISPLAY=:0
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
\"{temp_dir}/{exe_name}\" {cmd_args}"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
pkill -x -f \"{temp_dir}/{exe_name} {cmd_args}\"
rm -rf \"{temp_dir}\""
[preset.2]
name="Windows"
platform="Windows Desktop"
runnable=true
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter="*.blend"
export_path=""
patches=PackedStringArray()
patch_delta_encoding=false
patch_delta_compression_level_zstd=19
patch_delta_min_reduction=0.1
patch_delta_include_filters="*"
patch_delta_exclude_filters=""
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.2.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=false
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
shader_baker/enabled=false
binary_format/architecture="x86_64"
codesign/enable=false
codesign/timestamp=true
codesign/timestamp_server_url=""
codesign/digest_algorithm=1
codesign/description=""
codesign/custom_options=PackedStringArray()
application/modify_resources=true
application/icon=""
application/console_wrapper_icon=""
application/icon_interpolation=4
application/file_version=""
application/product_version=""
application/company_name=""
application/product_name=""
application/file_description=""
application/copyright=""
application/trademarks=""
application/export_angle=0
application/export_d3d12=0
application/d3d12_agility_sdk_multiarch=true
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
$trigger = New-ScheduledTaskTrigger -Once -At 00:00
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
Start-ScheduledTask -TaskName godot_remote_debug
while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
Remove-Item -Recurse -Force '{temp_dir}'"
+95 -1
View File
@@ -1 +1,95 @@
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><rect width="124" height="124" x="2" y="2" fill="#363d52" stroke="#212532" stroke-width="4" rx="14"/><g fill="#fff" transform="translate(12.322 12.322)scale(.101)"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042" transform="translate(12.322 12.322)scale(.101)"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></svg> <svg xmlns="http://www.w3.org/2000/svg" width="100%" viewBox="0 0 400 400">
<!-- Outer badge — square 1:1 -->
<rect width="396" height="396" x="2" y="2" fill="#2b3148" stroke="#181d2e" stroke-width="4"
rx="20"
style="fill:rgb(43, 49, 72);stroke:rgb(24, 29, 46);color:rgb(255, 255, 255);stroke-width:4px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto" />
<!-- Subtle inner glow border -->
<rect width="372" height="372" x="14" y="14" fill="none" stroke="#3a4460" stroke-width="1" rx="14"
style="fill:none;stroke:rgb(58, 68, 96);color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto" />
<!-- Top label: CATTLE GAMES -->
<text x="200" y="46" font-family="sans-serif" font-size="13" font-weight="700" fill="#7a8eb0"
letter-spacing="4" text-anchor="middle"
style="fill:rgb(122, 142, 176);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:sans-serif;font-size:13px;font-weight:700;text-anchor:middle;dominant-baseline:auto">CATTLE
GAMES</text>
<!-- Godot robot — centered, large -->
<g transform="translate(200,195) scale(0.155)"
style="fill:rgb(0, 0, 0);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
<g transform="translate(-512,-512)"
style="fill:rgb(0, 0, 0);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
<g fill="#fff"
style="fill:rgb(255, 255, 255);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
<path d="M105 673v33q407 354 814 0v-33z"
style="fill:rgb(255, 255, 255);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto" />
<path fill="#478cbf"
d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"
style="fill:rgb(71, 140, 191);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto" />
<path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"
style="fill:rgb(255, 255, 255);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto" />
<circle cx="725" cy="526" r="90"
style="fill:rgb(255, 255, 255);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto" />
<circle cx="299" cy="526" r="90"
style="fill:rgb(255, 255, 255);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto" />
</g>
<g fill="#2b2d3a"
style="fill:rgb(43, 45, 58);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto">
<circle cx="307" cy="532" r="60"
style="fill:rgb(43, 45, 58);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto" />
<circle cx="717" cy="532" r="60"
style="fill:rgb(43, 45, 58);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto" />
</g>
</g>
</g>
<!-- Horizontal divider above bottom section -->
<line x1="30" y1="300" x2="370" y2="300" stroke="#3a4460" stroke-width="1"
style="fill:rgb(0, 0, 0);stroke:rgb(58, 68, 96);color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto" />
<!-- Bottom section: two columns -->
<!-- Left: Powered by Godot -->
<text x="40" y="325" font-family="sans-serif" font-size="9" fill="#5a6a8a" letter-spacing="1.5"
style="fill:rgb(90, 106, 138);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:sans-serif;font-size:9px;font-weight:400;text-anchor:start;dominant-baseline:auto">POWERED
BY</text>
<text x="40" y="346" font-family="sans-serif" font-size="17" font-weight="700" fill="#478cbf"
style="fill:rgb(71, 140, 191);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:sans-serif;font-size:17px;font-weight:700;text-anchor:start;dominant-baseline:auto">Godot
Engine</text>
<!-- Vertical divider -->
<line x1="215" y1="308" x2="215" y2="372" stroke="#3a4460" stroke-width="1"
style="fill:rgb(0, 0, 0);stroke:rgb(58, 68, 96);color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto" />
<!-- Right: Experimental Port badge -->
<text x="232" y="325" font-family="sans-serif" font-size="9" fill="#5a6a8a" letter-spacing="1.5"
style="fill:rgb(90, 106, 138);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:sans-serif;font-size:9px;font-weight:400;text-anchor:start;dominant-baseline:auto">RELEASE
TYPE</text>
<!-- Warning triangle -->
<polygon points="232,355 240,341 248,355" fill="#e8922a"
style="fill:rgb(232, 146, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto" />
<text x="240" y="353" font-family="sans-serif" font-size="7.5" font-weight="700" fill="#2b3148"
text-anchor="middle" dominant-baseline="central"
style="fill:rgb(43, 49, 72);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:sans-serif;font-size:7.5px;font-weight:700;text-anchor:middle;dominant-baseline:central">
!</text>
<text x="253" y="350" font-family="sans-serif" font-size="13" font-weight="700" fill="#e8922a"
style="fill:rgb(232, 146, 42);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:sans-serif;font-size:13px;font-weight:700;text-anchor:start;dominant-baseline:auto">
Experimental</text>
<text x="253" y="366" font-family="sans-serif" font-size="11" fill="#8a9ab8"
style="fill:rgb(138, 154, 184);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:sans-serif;font-size:11px;font-weight:400;text-anchor:start;dominant-baseline:auto">
Port</text>
<!-- Corner accent dots -->
<circle cx="30" cy="30" r="3" fill="#3a4460"
style="fill:rgb(58, 68, 96);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto" />
<circle cx="370" cy="30" r="3" fill="#3a4460"
style="fill:rgb(58, 68, 96);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto" />
<circle cx="30" cy="370" r="3" fill="#3a4460"
style="fill:rgb(58, 68, 96);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto" />
<circle cx="370" cy="370" r="3" fill="#3a4460"
style="fill:rgb(58, 68, 96);stroke:none;color:rgb(255, 255, 255);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;opacity:1;font-family:&quot;Anthropic Sans&quot;, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, sans-serif;font-size:16px;font-weight:400;text-anchor:start;dominant-baseline:auto" />
</svg>

Before

Width:  |  Height:  |  Size: 994 B

After

Width:  |  Height:  |  Size: 11 KiB

+45 -17
View File
@@ -1,11 +1,27 @@
[gd_scene load_steps=5 format=3 uid="uid://djelupqdj4wgd"] [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="Script" path="res://Core/Components/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://dgst4apmowe53" path="res://Experiments/SpaceMove/Scenes/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://Experiments/PidTest/Scenes/pid_test.tscn" id="4_7mycd"]
[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://Experiments/Recuration/Scenes/Recuration.tscn" id="5_lquwl"]
[ext_resource type="Script" path="res://Core/Components/quit_game_component.gd" id="6_7mycd"]
[node name="Main" type="Control"] [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 layout_mode = 3
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
@@ -13,7 +29,7 @@ anchor_bottom = 1.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
[node name="VBoxContainer" type="VBoxContainer" parent="."] [node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=1674123930]
layout_mode = 1 layout_mode = 1
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
@@ -25,30 +41,42 @@ offset_bottom = -55.0
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
[node name="Button" type="Button" parent="VBoxContainer"] [node name="Button" type="Button" parent="VBoxContainer" unique_id=1520219681]
layout_mode = 2 layout_mode = 2
text = "space_test" text = "space_test"
[node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button"] [node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button" unique_id=1834050455]
script = ExtResource("1_ig7tw") script = ExtResource("1_ig7tw")
level = ExtResource("2_1bvp3") level = ExtResource("2_1bvp3")
metadata/_custom_type_script = "uid://bel5yfuiqithe"
[node name="Button2" type="Button" parent="VBoxContainer"] [node name="Button2" type="Button" parent="VBoxContainer" unique_id=93954602]
layout_mode = 2 layout_mode = 2
text = "space_move text = "space_move
" "
[node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button2"] [node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button2" unique_id=1732413263]
script = ExtResource("1_ig7tw") script = ExtResource("1_ig7tw")
level = ExtResource("3_lquwl") level = SubResource("PackedScene_lquwl")
metadata/_custom_type_script = "uid://bel5yfuiqithe"
[node name="Button3" type="Button" parent="VBoxContainer"] [node name="Button3" type="Button" parent="VBoxContainer" unique_id=1480596145]
layout_mode = 2 layout_mode = 2
text = "pid_test" text = "pid_test"
[node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button3"] [node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button3" unique_id=1820153918]
script = ExtResource("1_ig7tw") script = ExtResource("1_ig7tw")
level = ExtResource("4_7mycd") level = ExtResource("4_7mycd")
metadata/_custom_type_script = "uid://bel5yfuiqithe"
[node name="Button4" type="Button" parent="VBoxContainer" unique_id=955421861]
layout_mode = 2
text = "Recuration"
[node name="OpenLevelComponent" type="Node" parent="VBoxContainer/Button4" unique_id=292657034]
script = ExtResource("1_ig7tw")
level = ExtResource("5_lquwl")
[node name="Button5" type="Button" parent="VBoxContainer" unique_id=630288499]
layout_mode = 2
text = "Exit Experements"
[node name="QuitGame" type="Node" parent="VBoxContainer/Button5" unique_id=1111277542]
script = ExtResource("6_7mycd")
+34 -1
View File
@@ -8,14 +8,23 @@
config_version=5 config_version=5
[animation]
compatibility/default_parent_skeleton_in_mesh_instance_3d=true
[application] [application]
config/name="Experements" config/name="Experements"
run/main_scene="uid://djelupqdj4wgd" run/main_scene="uid://djelupqdj4wgd"
config/features=PackedStringArray("4.5", "Forward Plus") config/features=PackedStringArray("4.6", "Forward Plus")
boot_splash/bg_color=Color(0, 0, 0, 1) boot_splash/bg_color=Color(0, 0, 0, 1)
config/icon="res://icon.svg" config/icon="res://icon.svg"
[filesystem]
import/blender/enabled.android=true
import/blender/enabled.web=true
[input] [input]
w={ w={
@@ -48,6 +57,26 @@ e={
"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":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null) "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
] ]
} }
main_menue={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
scroll_up={
"deadzone": 0.2,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":8,"position":Vector2(275, 26),"global_position":Vector2(287, 86),"factor":1.0,"button_index":4,"canceled":false,"pressed":true,"double_click":false,"script":null)
]
}
scroll_down={
"deadzone": 0.2,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":16,"position":Vector2(339, 31),"global_position":Vector2(351, 91),"factor":1.0,"button_index":5,"canceled":false,"pressed":true,"double_click":false,"script":null)
]
}
mouse_down={
"deadzone": 0.2,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(253, 29),"global_position":Vector2(265, 89),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null)
]
}
[physics] [physics]
@@ -57,3 +86,7 @@ e={
3d/default_angular_damp=0.0 3d/default_angular_damp=0.0
3d/sleep_threshold_linear=0.01 3d/sleep_threshold_linear=0.01
3d/sleep_threshold_angular=0.00872665 3d/sleep_threshold_angular=0.00872665
[rendering]
environment/defaults/default_clear_color=Color(0, 0, 0, 1)