The 26.3 Beta release for Redot is here! This is our biggest release yet, with new features, enhancements, and bugfixes. A lot of work into Redot 26.3, and it adds quite a bit, including three of the top five most requested features for Godot. (Structs, traits, and nullable static types.)
You can download Redot 26.3-beta 1 over on our releases page.
New Features
Worldscape3D
Worldscape 3D is a built-in terrain editor for 3D games, based on the Terrain 3D extension by Cory Petkovsek. Most of the work here was already done by OldDev78 in our one and only ReX release, but he still took the extra time to polish it for it’s debut in Redot.
3D Redot devs can now edit terrain directly in the engine without the need for addons or extensions.
Mode7Sprite2D and Manual Scroll for Parallax2D
The Mode7Sprite2D Node recreates SNES Mode7 effects in Redot, which gives 2D games the illusion of having 3D effects.
Manual Scroll allows devs to dynamically change the scroll effect of Parllax2D while the game is running.
You can see both of these features being used in the video above to achieve the nostalgic feeling of navigating an airship through the overworld of a 2D game.
Structs
Structs are a data type allow devs to group related variables of different data types under a single name. While this does sound like what dictionaries already do, structs differ by allowing you to use typed variables, which improves performance, and they don’t rely on strings like dictionaries do to access the data inside.
You can check out this example to see how you can use structs in Redot.
Traits
Traits represent a set of methods that can be used to extend the functionality of a class. Basically, this is a way for you to use code from one or more scripts, without having that class inherit from those scripts. It’s a very powerful feature focused on composition and reusable code.
Nullable static types
This is a feature that allows a typed variable to hold a null value, which represents the absence of a value. This becomes very useful when you need to declare a variable in code and dynamically assign or remove values to it as the game is running.
For an example on how to declare and use nullable types in Redot, click here.
Full changelog
Below is the full 26.3 Beta 1 changelog, which contains many other things that were not highlighted above.
GDScript Enhancements
- Simplify
ScriptServer::get_global_class_listby YYF233333 & Cherrypicked by Arctis Fireblight - Core: Fix ClassDB class list sorting regression- #115923 by GusatuDamianAlexandru
& Cherrypicked by Arctis Fireblight - Introduced Traits to GDScript by SeremTitus & Arctis Fireblight
- Add nullable static types to GDScript by mcdubhghlas
- Introduced structs to GDScript by mcdubhghlas & decryptedchaos
UI Changes
- “create new node” description panel is now resizable by joey-wheeler99
- add margin to file thumbnails in file explorer window by joey-wheeler99
- Move script name to top by KoBeWi & ported by joey-wheeler99
Editor Enhancements
- Cherry pick: Path3d snap to collider by GustJc Cherrypicked by Tekkitslime
- Add custom folder coloring by JoltedJon
- Cherrypick [Add game speed controls to the embedded game window] by DexterFstone & cherrypicked by JoltedJon
- Animation selection in sprite or sprite frames editor are now undo-able by GeneralProtectionFault
2D Enhancements
Parallax2DExpose manual scroll for manual control of infinite scrolling by GeneralProtectionFault- Add Mode7Sprite2D Node – Replicate Super Nintendo Mode 7 graphics by GeneralProtectionFault
3D Enhancements
- Introduce 3D Terrain Editor – World Scape 3D by OldDev78 – Port based on Terrain 3D by Cory Petkovsek
Performance Enhancements
- Improved clustered rendering efficiency by reducing unnecessary buffer updates by mcdubhghlas
- Added Math::sin_cos() and strategically replaced trigonometric calls to increase performance by mcdubhghlas
- Enhanced performance of Vector3::slerp() by mcdubhghlas
Networking Ehancements
General Enhancements
- Enable C++20 standard by OldDev78
- Add option to save default project path on project creation by GeneralProtectionFault
- Refactored, cleaned up, and optimized theming system internals by GeneralProtectionFault
- Misc enhancements to MCP server implementation by MichaelFisher1997
- Add function OS::get_real_path() by samuelvenable
- Engine now respects end user’s power settings by default by addmix
- Move server files into their subfolders by aaronfranke cherrypicked by JoltedJon
Rendering Enhancements
Bugs Squashed
- Fixed incorrect app_id in Wayland config by JoltedJon
- Fixed edge case where invalid casts were allowed in GDScript, such as int → string by mcdubhghlas
- Fixed subviewport renderer flicker by GeneralProtectionFault
- Fixed import error in EmbeddedGodotGame.kt during Android editor build by Daniyal09
- Replacement text in the find-and-replace tool now correctly interprets C-style escape sequences before applying replacements by JoltedJon
- Render targets now initialize newly created color textures to transparent black, preventing undefined visual results on first use by GeneralProtectionFault
- Fix sky shader
SCREEN_UVbuiltin in Compatibility renderer by DaveTheEggman - Fix window wrapper disabling prematurely on close request by DaveTheEggman
- Fix AO Light Affect in Compatibility renderer by DaveTheEggman
- Fixed missing icon for monotonic cubic interpolation by VictorSohier
- Fix
SpotLight3D/OmniLight3Dlight_projectordoesn’t render whenshadow_enabledisfalseby DaveTheEggman - Revert fposmod implementation code to match Godot more closely by OldDev78
- Revert broken is_normalized checks by OldDev78
- Fixed GH-1354 Modern Godot Animations not importing Properly by JoltedJon & mcdubhghlas
- Fix AtlasTexture not appearing until restart GH-1307 by JoltedJon
- Fixed Typed Arrays cannot erase pairs with null/invalid keys by JoltedJon
- Fix incorrectly mapped move & drag icons on Linux by GeneralProtectionFault
- Fix trait type constraint validation in GDScript by Arctis Fireblight
As always, we’d like to thank our contributors, supporters, and anyone who chooses Redot to make games. Like I mentioned earlier, this is our biggest release yet, and we still have a lot more things planned for engine.
Want to contribute?
If you’d like to help contribute to Redot or Draconic, or would like an internship at Redot Foundation, send an email to [email protected]
If you’d like to help support development, you can go to redotfoundation.org and make a donation. Redot and Draconic are FOSS projects made by passionate devs in their free time, and every donation helps!

