AI prompts
base on Godot Jolt is a Godot extension that integrates the Jolt physics engine <p align="center">
<a href="https://github.com/godot-jolt/godot-jolt">
<img alt="Godot Jolt" src="docs/logo.svg">
</a>
</p>
Godot Jolt is a native extension for the [Godot game engine][god] that allows you to use the [Jolt
physics engine][jlt] to power Godot's 3D physics.
It functions as a drop-in replacement for Godot Physics, by implementing the same nodes that you
would use normally, like `RigidBody3D` or `CharacterBody3D`.
> [!IMPORTANT]
>
> This extension has now been merged into Godot itself in the form of an engine module, the pull
> request for which you can find [here][mod]. As such, this extension will be considered to be in
> maintenance mode going forward, where only bug fixes will be considered for merging.
>
> At the time of writing, the Godot engine module does not have full feature parity with this
> extension, and is lacking things like the joint interface changes (`JoltHingeJoint3D`, etc.) that
> this extension exposes. However, once the engine module does reach feature parity in some way, and
> a new stable release of Godot is out with said feature parity, this extension will be considered
> fully deprecated and this repository will likely be archived entirely.
>
> Until that time, new releases of this extension will continue to be published, which should be
> able to co-exist with the Godot engine module in some form.
## Table of Contents
- [What features are there?](#what-features-are-there)
- [What about determinism?](#what-about-determinism)
- [What's not supported?](#whats-not-supported)
- [What else is different?](#what-else-is-different)
- [What versions of Godot are supported?](#what-versions-of-godot-are-supported)
- [What platforms are supported?](#what-platforms-are-supported)
- [How do I get started?](#how-do-i-get-started)
- [What settings are there?](#what-settings-are-there)
- [How do I build from source?](#how-do-i-build-from-source)
- [What's the license?](#whats-the-license)
## What features are there?
Better performance, mainly, but also generally having a more stable simulation compared to Godot
Physics.
There are also (completely optional) substitute nodes available for all the joints, which line up
better with the interface that Jolt offers than what the default joints do. This allows for things
like breakable joints, soft limits and the ability to override solver iterations per-joint.
## What about determinism?
While Jolt itself offers deterministic simulations, Godot Jolt is not able to make such guarantees.
Simulations in Godot Jolt may look deterministic, and may even happen to be deterministic, but this
should not be relied upon if determinism is a hard requirement.
## What's not supported?
- The physics server is not thread-safe
- Memory usage is not reflected in Godot's performance monitors
- `SoftBody3D` does not support any interactions with `Area3D`
## What else is different?
- Scale is actually used for all bodies, shapes and shape queries, except for `SoftBody3D`
- `Area3D` detecting static bodies is opt-in, at a potentially [heavy performance/memory cost][jst]
- Joints only support soft limits through their substitutes (`JoltHingeJoint3D`, etc.)
- Springs and linear motors are actually implemented in `Generic6DOFJoint3D`
- Single-body joints will make `node_a` be the "world node" rather than `node_b`
- Ray-casts returning `face_index` is opt-in, at a potentially [heavy memory cost][jst]
- Shape-casts should be more accurate, but their cost also scale with the cast distance
- Shape margins are used, but are treated as an upper bound and scale with the shape's extents
- Manipulating a body's shape(s) after it has entered a scene tree can be costly
- Contact impulses are estimations and won't be accurate when colliding with multiple bodies
- Contact reporting for kinematic bodies is partially opt-in, at a potentially [heavy
performance/memory cost][jst]
- `ConvexPolygonShape3D` uses a more accurate center-of-mass and inertia
Also consider this note from Jolt's [documentation][jdc]:
> In order for the simulation to be accurate, dynamic objects should be in the order of 0.1 to 10 m
> long, have speeds in the order of 0 to 500 m/s and have gravity in the order of 0 to 10 m/s^2.
> Static object should be in the order of 0.1 to 2000 m long.
## What versions of Godot are supported?
Currently the **only** supported version is **Godot 4.3** (including 4.3.x).
## What platforms are supported?
- Windows (x86-64, x86)
- Linux (x86-64, x86)
- macOS (x86-64 + Apple Silicon)
- iOS
- Android (ARM64, ARM32, x86-64, x86)
Note that Linux support is limited to glibc 2.31 or newer, which for Ubuntu means 20.04 (Focal
Fossa) or newer.
## How do I get started?
1. Download it from [GitHub][rls] or from [Godot Asset Library][ast]
2. Extract the files to your project directory
3. Start (or restart) Godot
4. Open your project settings
5. Make sure "Advanced Settings" is enabled
6. Go to "Physics" and then "3D"
7. Change "Physics Engine" to "JoltPhysics3D"
8. Restart Godot
## What settings are there?
See [`docs/settings.md`][set] for information about the project settings available in Godot Jolt.
## How do I build from source?
See [`docs/building.md`][bld] for information about how to build Godot Jolt from source.
## What's the license?
Godot Jolt is distributed under the MIT license. See [`LICENSE.txt`][lic] for more details and
[`THIRDPARTY.txt`][trd] for third-party licenses.
[god]: https://godotengine.org/
[jlt]: https://github.com/jrouwe/JoltPhysics
[mod]: https://github.com/godotengine/godot/pull/99895
[jst]: docs/settings.md#jolt-3d
[jdc]: https://jrouwe.github.io/JoltPhysics/
[rls]: https://github.com/godot-jolt/godot-jolt/releases/latest
[ast]: https://godotengine.org/asset-library/asset/1918
[set]: docs/settings.md
[bld]: docs/building.md
[lic]: LICENSE.txt
[trd]: THIRDPARTY.txt
", Assign "at most 3 tags" to the expected json: {"id":"1741","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"