This gives visual feedback when not starting Godot from a terminal.
This could lead to confusion when placing a Godot binary within a
project folder that has no main scene defined.
Three attack points, all after the regular calculations:
1. Prevent negative physics timestep counts. They could occur if
physics_jtter_fix is changed at runtime.
2. idle_step is not allowed to go below 1/8th of the input step.
That could happen on physics_jitter_fix changes or heavily
fluctuating performance.
3. Prevent that the idle_step modification breaks the promise
that Engine.get_physics_interpolation_fraction() is between
0 and 1 by doing more physics steps than the base system wants.
Fixes#26887
Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
Allow starting the editor debugger server for the given protocol (and
optionally bound to the given ip/port combination:
godot -e --debug-server tcp://*:8080
If enabled, key/touch/joystick events will be flushed just before every idle and physics frame.
Enabling this can greatly improve the responsiveness to input, specially in devices that need to run multiple physics frames per each idle frame, because of not being powerful enough to run at the target frame rate.
This will only work for platforms using input buffering (regardless event accumulation). Currenly, only Android does so, but could be implemented for iOS in an upcoming PR.
Input buffering is implicitly used by event accumulation, but this commit makes it more generic so it can be enabled for other uses.
For desktop OSs it's currently not feasible given main and UI threads are the same).
* Only apply final actions to attachments used in the last pass.
* Fixes to draw list final action (was using continue instead of read/drop).
* Profiling regions inside draw lists now properly throw errors.
* Ability to enable gpu profile printing from project settings. (used to debug).
This makes it clearer that this property is only about physics FPS,
not rendering FPS.
The `physics_fps` project setting was also renamed to
`physics_ticks_per_second` for consistency.
* Most resource types now have unique identifiers.
* Applies to text, binary and imported resources.
* File formats reference both by text and UID (when available). UID always has priority.
* Resource UIDs are 64 bits for better compatibility with the engine.
* Can be represented and used textually, example `uuid://dapwmgsmnl28u`.
* A special binary cache file is used and exported, containing the mappings.
Example of how it looks:
```GDScript
[gd_scene load_steps=2 format=3 uid="uid://dw86wq31afig2"]
[ext_resource type="PackedScene" uid="uid://bt36ojelx8q6c" path="res://subscene.scn" id="1_t56hs"]
```
GDScript, shaders and other special resource files can't currently provide UIDs, but this should be doable with special keywords on the files.
This will be reserved for future PRs.
There are many issues with using multiple windows by default:
- Taking screenshots of a specific window will not capture subwindows.
This also applies when recording a video using tools such as OBS.
- Subwindows may not behave correctly when fullscreen mode is enabled,
especially if exclusive fullscreen is implemented in the future
to decrease input lag on Windows.
"Subwindows" is quite general here, and also refers to dropdown menus
(e.g. those spawned by OptionButton) and Control tooltips.
Therefore, it's safer to embed subwindows by default in projects.
Multi-window mode remains the default in the editor.
* This PR adds the ability to disable classes when building.
* For now it's only possible to do this via command like:
`scons disable_classes=RayCast2D,Area3D`
* Eventually, a proper UI will be implemented to create a build config file to do this at large scale, as well as detect what is used in the project.
* Fixed and redone the process to obtain render information from a viewport
* Some stats, such as material changes are too difficult to guess on Vulkan, were removed.
* Separated visible and shadow stats, which causes confusion.
* Texture, buffer and general video memory can be queried now.
* Fixed the performance metrics too.
* Deprecates GDNative in favor of a simpler, lower level interface.
* New extension system allows registering core engine classes.
* Simple header interface in gdnative_interace.h
This makes Godot avoid distortion when resizing the window to an aspect
ratio that doesn't match the project's base aspect ratio.
Since this setting has no effect when the stretch mode is `disabled`
(the default), this won't impact projects not using the `canvas_items`
or `viewport` stretch modes.
WARNING: Hacks everywhere!
The logic in `main.cpp` is due a full rewrite as it's extremely hacky,
splitting argument parsing over several functions, with a mess of global state
and assumptions about what combinations of arguments or lack thereof should
mean in terms of what we want to read: game, editor, project manager, or
command line tools such as `--doctool`, `--export` or `--script`.
Until this is fully rewritten, this patch hacks things some more to ensure
that we don't fall back to the project manager in cases where it's not
warranted, and especially not *too late*, as it can mean that we haven't
properly initialized stuff like `EditorPaths` needed by the PM (which in turn
impacts what kind of path will be used for logs and the shader cache, etc...
the rabbit hole goes deep).
Fixes#41435.
Fixes#49392.
Fixes#49658.
Fixes https://github.com/godotengine/godot/issues/38202#issuecomment-773158477.