 Goro 4.3 has currently over 1500 contributions from almost 300 contributors. These contributions include bug fixes, new features, quality of life improvements and more, but there's no way that we can go through all of this amazing work in a single video. But we've selected the top 10 one that we are most excited about, so let's talk about them. This is by far my favorite one. So in small trivia before we dig it, Huni Netsuke, Goro's lead developer, seems to nurture a passion for music and sound design and especially sound engineering. Juan was the person behind the major overhaul in the auto system in Goro 3.0, leading Goro Engine to have the most advanced auto system among all the major game engines in the market. And with this PR, Juan adds more features to this amazing auto system. So this PR adds three new resources that we can use as audio streams in the audio stream player nodes. We started with the audio stream interactive, which is the resource that allows us to set multiple audio clips, sub-streams of this resource and edit the transition between them. At the bottom of this PR, Juan attached a video, so let's see how this goes. The first feature, of course, is the audio stream interactive, so let's see how this works. And you can see that it will transit. Yeah, perfectly. Very smooth, right? Awesome. So this was the audio stream interactive resource and I can already think about some use cases for that. So let's imagine something like a platformer game that when the player enters in the level, we play a slow-paced song just to set the tone of the level and communicate the theme to the player and communicate the overall feel of the level. And at some point we have something like a fast-paced action-based section of the level that we can use an ARRHD to communicate to the audio stream that the player reached this part of the level. And it will transit the music to a fast-paced and upbeat song that will help the player really get all those feelings and focus on this part of the level. And when the player finishes this fast-paced section, we can communicate through, let's say, an area X state signal or even some other ARRHD that the player is getting close to the end of the level and they can unwind a beat and relax and focus on getting just those missing 10% of the level done so they can complete the level. Sounds pretty cool, right? And the second feature that one added with this PR is the audio stream playlist, which allows us to create a list of audio streams and play them either in sequence or shuffled. And notice that since we can create a list of audio streams, we can create a list of audio stream interactive or a list of audio stream playlists or a list of audio streams synchronized, which is the next feature that we are going to talk about. And of course, a list of common audio stream resources as well. So we can mix and match all these new features and with the older ones as well to create all sorts of complex effects. The third feature that this PR adds is the audio stream synchronized, which allows us to play multiple audio streams together, keeping their playback in sync, but controlling their volume independently. And this is very interesting to create multi-leared music. So I tried to experiment with that in Moon Teaser, one of my first games. So I used Dave Brubeck quartets, take five music, and I broke this music down into four tracks. So we had the saxophone, we had piano, drums and bass. And depending on which element of the game we had on the screen, each of these tracks will increase their volume and will play together. So if we have all the elements of the game on the screen at the same time, we could listen to the whole music. And this was very rare to occur because one of the elements was a power-up that the player could get. But anyway, it was a very interesting experiment and it would be definitely made easier if I had this feature back then. With this next update, we are getting a most weighted feature in Gadot Engine. So thanks to Bastion Elite, with this PR, we are getting the ability to register rendering effects as callbacks in the rendering engine. So the idea is that using a composter, which is a resource that Bastion added in this PR, we can attach a composter to a word environment or a camera 3D node. And based on that, we can create a list of composter effects or composition effects, which is another class that Bastion added in this implementation. Based on that, we can inject the script code into specific steps of the rendering process. So the available steps of the rendering process that we can run this the script code are the pre and post-obey process, steps, actually. The post-sky process or step, and the pre and post-transparent step of the rendering process. So based on that, we can create all sorts of effects. I don't have much experience with that, but I imagine that we can create something like, based on the player's health, we can increase or decrease the screen saturation. So let's say as the player gets progressively near to death, the screen will get progressively less saturated, so towards grayscale. I think that this is something that we can do with that. But to be very honest, I don't actually know what exactly we can do with that. So if you have any idea of some feature or some mechanic that you can implement with this specific update, let us know in the comment. I'm very curious to know about how we can use that. This next update is a quality of life update, but it's a very good one. So in Godot engine, we have the ability to nest scenes, right? So we can instance a scene inside another scene. And to these instance scenes, we give the name of foreign nodes in opposition to local nodes. When we instance a scene inside another scene, so when we create a foreign node, the children of the previous scene get hidden, as if the scene, the foreign node, was made out just by the root node of the previous scene, of the instance scene. This is perfect in the sense that this process encapsulates the implementation details of the foreign node scene, but sometimes we do need to change some properties of the foreign nodes' children. And with that, we don't have access to them. So we can change these properties locally. Due to that, the Godot engine developers added a feature called Editable Children. By taking on the Editable Children option into a foreign node, its children will get exposed. So we can make all the local changes that we want, and it will save locally on the scene that we are editing. But when we took off the Editable Children into a foreign node, all of these properties will reset to the default, and the children will get hide again. But this was never a consistent behavior, so sometimes when we took off the Editable Children into a foreign node, we get some bugs and even some editor crashes. And one of these bugs just got fixed by this PR from Saracemon. Now, when you took off the Editable Children feature, the nodes owned by the current edit scene won't be accidentally lost. Instead, they will become direct children of the foreign node, maintaining the global transform. One major issue that I noticed on Godot 4 is that scenes get corrupted way more often than in Godot 3. But anyway, with this PR from Kobe Wee, Kobe Why, I don't know how to pronounce it, we can now open corrupted end scenes with missing dependencies, so we don't need external tools to fix them manually. I remember that I had a client that got a consistency session, and he was like losing his mind trying to fix a scene, it seems like he put a lot of work, so a lot of time in this scene. And we had to open the scene file using Adam to fix the dependencies and other stuff manually. So this update is much appreciated. Using the parallax background node together with as many parallax layers as you need, was never an intuitive way to achieve parallax effects in Godot engine. For instance, in one of the extra recipes for the platform essentials cookbook, I implemented an infinite background, so infinite moving backgrounds, so we could do some like infinite runners and stuff like this, by using the parallax background and parallax layers to create this fake infinite background. But I don't even remember if I use the parallax background offset properties or the parallax layers motion properties because it's not very intuitive in my mind. And while with this PR mark the barrier just simplified our lives. So this PR basically merges the parallax background node and the parallax layer node into a simpler parallax 2D node, which inherits from node 2D, so this brings a lot of benefits for us, including the ability to use canvas groups. But not only that, on top of merging all these things and making it easier to use, it also adds the auto screw feature, which basically turns my previous infinite background recipe completely obsolete. And if you want to use some features from the previous parallax background node, you can basically use this parallax 2D node, so this newly added node, together with some canvas layers nodes. And this will basically allow you to have the best of both worlds, because all the features from the previous parallax background node will be available for you. And as far as I could understand, for compatibility reasons, there will be a tool, a button basically, that will help us migrate from the previous approach to this new one. So let's say if you have a parallax background node with some parallax layers as its children, you can click on this button and it will turn this structure into a set of parallax 2D nodes. So it's very convenient. Node groups are one of the coolest features in growth engine. It allows us to do batch method calls to tag and filter nodes, among other useful stuff. I really like it when they added a groups manager interface growth 3.0. But it was always limited to the currently edited scene. So it's not very useful. But with this PR from dark messiah, pretty cool username, node groups are going to have a huge improvement because now we are going to have project wide node groups as well, among other features to help us manage these groups. So for instance, we are going to have a groups tab in the project settings that will help us to manage these global groups. And the very groups tab, so the groups option into the node tab, will also have a small change because now we will have some check boxes to include the current node into local and global groups as well. And we also have some other features related to managing these groups. So it's a very good update as well. With the migration to Vulkan as the rendering engine, got a lot of some interesting rendering features, especially for old devices and devices with low end hardware. The compatibility rendering option is a lot behind in terms of feature parity when we compare it to the forward option. But with this PR from the legend, Bessian alleged, the compatibility rendering option gets yet another excellent feature glow and bloom is finally supported on the compatibility rendering option, which will allow us to create pretty beautiful games for low end devices, including old Android phones, yet another quality of life update. So to me, good at engines animation system is its most powerful feature, but I have to admit that the good at engines animation editor is not as powerful as the system itself. So it's still like some animation related features such as curve effects, for instance. But with this PR from Cookie Badger, using the animation editor gets a lot easier. So now we have a more consistent behavior for selections because previously it was not very consistent, especially if we are trying to select multiple keys. And now we also have the ability to copy and paste keys in the timeline. Previously, we just had the ability to duplicate them. And talking about duplicating the keys, now when we right click the timeline to duplicate a key, we are using the right click menu, instead of duplicating them at the timeline cursor position, we will instead duplicate them at the mouse cursor position. So this is a very useful trick, a very useful improvement that we have in the workflow. Good at engine text features are also very advanced. So I remember that once I was with a friend in a game jam, and we were trying to create one of those typing animations type effects for text, and we spent like a whole day, a day and a half trying to figure out how to do that in Unity. It turns out that at least back in these days, and I think that is that way until these days, in Unity, you have to create a script that will separate each individual character into an entity or something like that, that you can toggle on and animate its visibility. So it's very complicated. It's not very intuitive. And in Godot Engine, you just have to basically animate the label's visible characters or the visible ray tool, something like this. So it's way more intuitive, it's way more powerful, it's way easier to do these types of effects in Godot Engine. But anyway, with this PR from brewvzg, I hope I pronounced this nickname correctly, the label node gets yet another powerful method. This method is called get character bounce, and it will ask for a character position into the label's text property. So basically the index of the character into a string. And it will return a rack tool that represents the bounding box of this specific character. brewvzg also mentions that if the character is part of a composite graphene, the bounding box rectangle of the whole graphene is returned. This is very powerful. With this feature, we can create all sorts of effects. For instance, we can create something like adding some particle effects to a given character in the text to give some clues to the players. But also, as mentioned in the Kobe we request, because this PR is also a response to a request to a feature request from Kobe will, he or she was trying to create a text where there will be a texture rack on top of the label representing a button control it. So the button of a controller. I think that this was something for a tutorial or something like this to communicate to the player which button they should press to perform a given action. So this is also a pretty good use case for this kind of feature, but this is a very powerful improvement to the text features of good engine as well. Well, this one is specific for us Linux users. So modern Linux OS use Wayland as the communication protocol. Wayland is a simpler and modern alternative to X11. And with this PR from Hideo Grotto now also supports Wayland. I'll be very honest, I don't know what this PR actually does. I don't understand the technicalities of these things. But it seems that it paves the way for the full support of Wayland, but it doesn't implement full support yet. Well, I'm not a huge fan of Wayland because it doesn't support global input handling. And I use some shortcuts in OBS to record these videos and not supporting global input handling will decrease the production time of these videos by a lot. But nonetheless, having support for Wayland will allow Godot to maintain its position as one of the most modern game engines out there. And what about you? What are your favorite updates so far? Let us know in the comments. Oh, by the way, if you want a second part of this video, there are a long way to go until Godot 4.3 gets released because we I think that 70% or something. So there are some chances that we get some more amazing updates until the official release. So let us know if you want a second part of this video as well. But that's it. Thank you so much for watching. Keep developing and until the next time. See you there.