-
-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Add "Upgrading from Godot 4.4 to Godot 4.5" page #11223
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
**GLTFAccessor** | ||
Property ``byte_offset`` changes type metadata from ``int32`` to ``int64`` |✔️| |❌| |❌| `GH-106220`_ | ||
Property ``component_type`` changes type from ``int`` to ``GLTFAccessor::GLTFComponentType`` |✔️| |❌| |❌| `GH-106220`_ | ||
Property ``count`` changes type metadata from ``int32`` to ``int64`` |✔️| |❌| |❌| `GH-106220`_ | ||
Property ``sparse_count`` changes type metadata from ``int32`` to ``int64`` |✔️| |❌| |❌| `GH-106220`_ | ||
Property ``sparse_indices_byte_offset`` changes type metadata from ``int32`` to ``int64`` |✔️| |❌| |❌| `GH-106220`_ | ||
Property ``sparse_indices_component_type`` changes type from ``int`` to ``GLTFAccessor::GLTFComponentType`` |✔️| |❌| |❌| `GH-106220`_ | ||
Property ``sparse_values_byte_offset`` changes type metadata from ``int32`` to ``int64`` |✔️| |❌| |❌| `GH-106220`_ | ||
**GLTFBufferView** | ||
Property ``byte_length`` changes type metadata from ``int32`` to ``int64`` |✔️| |❌| |❌| `GH-106220`_ | ||
Property ``byte_offset`` changes type metadata from ``int32`` to ``int64`` |✔️| |❌| |❌| `GH-106220`_ | ||
Property ``byte_stride`` changes type metadata from ``int32`` to ``int64`` |✔️| |❌| |❌| `GH-106220`_ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seem like a big breaking change, and these APIs seem to have existed for a while (since 4.0). I don't know if there are many C# users that were using them and would be affected, but it seems we should avoid breaking compatibility in these APIs.
cc @godotengine/import
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@aaronfranke Has changed these. Would like your opinion.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we silently upgraded our apis from 32bit to 64bit due to various errors.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Compatibility methods are registered for these. I know that fixes GDExtension, but I'm not sure about C#? Anyway...
I don't know if there are many C# users that were using them and would be affected
No, almost nobody was using these APIs. Before PR godotengine/godot#108853 is merged for Godot 4.6, the functions to read/write glTF accessor and buffer data are internal to GLTFDocument, so in the current master of Godot, most of these exposed values aren't useful to user scripts unless they do a lot of manual work.
**TextServerExtension** | ||
Method ``_font_draw_glyph`` adds a new ``oversampling`` optional parameter |❌| |❌| |❌| `GH-104872`_ | ||
Method ``_font_draw_glyph_outline`` adds a new ``oversampling`` optional parameter |❌| |❌| |❌| `GH-104872`_ | ||
Method ``_shaped_text_draw`` adds a new ``oversampling`` optional parameter |❌| |❌| |❌| `GH-104872`_ | ||
Method ``_shaped_text_draw_outline`` adds a new ``oversampling`` optional parameter |❌| |❌| |❌| `GH-104872`_ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems users could not have been implementing TextServerExtension
in a scripting language (like GDScript or C#) because it has required virtual methods that use pointers (e.g. shaped_text_get_ellipsis_glyphs
). As for GDExtensions, compat methods were registered. So it seems fine to break compatibility here.
cc @godotengine/gui-nodes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Implementing text server with scripts doesn't make much sense. The only practical use case might be adding support for system font/text rendering API (e.g, macOS CoreText or Windows DirectWrite).
**EditorExportPlatformExtension** | ||
Method ``_get_option_icon`` changes return type from ``ImageTexture`` to ``Texture2D`` |✔️| |❌| |❌| `GH-108825`_ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unfortunately, we can't avoid breaking compat in C# if the method changed the return type. However, this class was added recently (in 4.4), and it's probably not implemented often by C# users (although we can't know for sure). So maybe breaking compatibility here is fine.
cc @godotengine/docks @godotengine/_platforms
This documents all the breaking changes in 4.5, like we did for previous versions:
Area maintainers should review the changes listed for their area. Also feel free to suggest any addition that I might have missed or make follow-up PRs.
Updated as of commit godotengine/godot@d5ad055
Preview: https://github.com/raulsntos/godot-docs/blob/breaking_changes_4.5/tutorials/migrating/upgrading_to_godot_4.5.rst