Devblog #41: Godot 4 is Here

Thrive

An evolution simulation game. Take control of your species in the environment and edit your species as a whole. Compete with other evolving species for resources on an alien planet.

After over a year since Godot 4 was released, Thrive has finally made the huge leap to go from Godot 3 to 4. This release is sadly thin on new features as Godot 4 is so different from 3 that it took a lot of time to go over everything that needed to be updated to work with Godot 4, as the automatic upgrade process was missing a ton of things. Also we needed to bugfix and tweak a lot of our code that relied on how Godot 3 worked which was changed in 4. [img]https://i0.wp.com/revolutionarygamesstudio.com/wp-content/uploads/Image-4.jpg?w=1430&ssl=1[/img] This conversion didn’t require us to fix the gameplay once again thanks to the ECS rework that was done last year. That protected our gameplay code from all of the Godot changes. A lot of the GUI needed to be tweaked and fixed, though. This upgrade to Godot 4 now allows us to use a modern C# runtime and language version features. As an added bonus the new runtime has increased the game performance. While Godot 4 initially looked like it made the game a bit slower, that runtime upgrade should have the net effect of the game being again just a bit more performant. All this background work is setting up for the future of Thrive. For the next release we’ll get back to working on [url=https://wiki.revolutionarygamesstudio.com/wiki/Release_Roadmap]microbe roadmap features[/url] so hopefully everyone can have a bit more patience with us before we can bring out some new major features. Unless of course an overwhelming amount of new high priority bugs are discovered after this release, but here’s hoping that that doesn’t happen. [previewyoutube=45Fy6j_gNx4;full][/previewyoutube] See our patch notes at the end for full details, or read on for some of the highlights. [h1]Godot 4.2.2[/h1] This is a massive upgrade to the Godot engine, as such it has been pretty painful to upgrade to, but we got it done. Godot 4 has overhauled their rendering, improved and changed almost all of their systems, it’s not a brand new engine but this is almost that level of overhauling the engine. The biggest visible changes are the new Vulkan-based renderer, which requires a more recent GPU than before. Thrive can be played with the OpenGL 3 fallback renderer, with very few graphical problems, which is an improvement compared to the GLES2 fallback renderer. This upgrade finally allowed us to switch to .NET 8 runtime, which we have been wanting to use for a longtime now and have had to do various workarounds in Thrive due to being stuck on an ancient runtime while using Godot 3. This runtime upgrade also nicely has improved the performance of our C# code. The engine upgrade also now allows the Thrive Launcher to set an audio delay override which when increased enough can fix crackling audio in the game. [h1]Engulfing Animations[/h1] [img]https://i0.wp.com/revolutionarygamesstudio.com/wp-content/uploads/Image2.jpg?w=1434&ssl=1[/img] Through the magic of shaders, cells no longer flash blue when they try to eat something. You can now feast your eyes on the hypnotic undulations of predatory engulfment each time a cell is engulfing it’s prey! [h1]Varied Environmental Conditions[/h1] [img]https://i0.wp.com/revolutionarygamesstudio.com/wp-content/uploads/Image3.jpg?w=1435&ssl=1[/img] Returning players may notice that oxygen levels now have a little bit of variation between oceanic patches. Make sure to account for this fluctuation in available energy generation in your cell as you make your way through the sea! Moving forward, these values may be subject to change, and someday might even be determined by the activities of life itself. [h1]Other Notable Changes[/h1] [list] [*]There’s now a native library variant that doesn’t require AVX, this should make Thrive playable again on some older CPUs [*]Osmoregulation cost values are now shown in red as it is a negative property [*]Engulfment storage full tutorial now has an end trigger once the player has digested enough things [*]Memory usage metrics now works on Windows [*]Removed our custom checkbox implementation now that Godot’s has all the needed features [/list] [h1]Looking Ahead[/h1] We have recently spent quite a lot of development time working on background systems that don’t have much visible impact on the gameplay. We feel like this has been necessary for the long-term future of Thrive as the game will take at least more than a decade to “complete.” As a result we can’t neglect keeping the game architecture clean and on up to date engine versions, as what we have now would be extremely ancient by the time the game is complete. Now with the engine upgrade done, we will focus on new features for the next release, 0.6.7, from our roadmap to get us closer to a complete microbe stage. Of course we’ll need to correct any new impactful bugs that still exist in the game. But hopefully there isn’t too many of those so that there’s enough time to make many new features for 0.6.7 which is probably going to be released by the end of June. As always, remember to join us for our developer Thrivestream later today, where we’ll cover the changes in this release and answer any questions you might have about the future of development. You can watch the stream here: [previewyoutube=Vt4RvqKzr_Y;full][/previewyoutube] You can comment below or visit [url=https://community.revolutionarygamesstudio.com/t/0-6-6-general-feedback-thread/7430]our feedback thread[/url] to give your thoughts on this update. [h1]Patch Notes[/h1] [list] [*]Updated to Godot 4.2.2 (we were previously on 3.5 so this is a massive upgrade) [*]Updated to .NET 8 runtime and C# 12 as it turns out this can be used with Godot 4 [*]New engulf animation that creates wave lines instead of the old just flashing blue animation [*]Oxygen now has different levels in different patches which affects the utility of certain parts a ton [*]There's now a native library variant that doesn't require AVX, this should make Thrive playable again on some older CPUs [*]Arabic fallback font had to be removed as it caused buggy line heights in all text in Godot 4 [*]Osmoregulation cost values are now shown in red as it is a negative property [*]Engulfment storage full tutorial now has an end trigger once the player has digested enough things [*]Fixed new player species name not immediately applying after exiting the editor [*]Fixed new cell button crashing multicellular freebuild editor [*]Fixed data cache disposed errors that only seemed to trigger in exported version of the game [*]Fixed no changes in editor tutorial being able to prevent multicellular editor exit [*]Memory usage metrics now works on Windows [*]Fixed CPU check only checking AVX and not AVX 2 which was then used anyway causing a crash on CPUs that have AVX but not AVX2 [*]Switched the AVX feature check to use standard C# function, which is hopefully more accurate than the previous approach that we got reports about false negatives [*]Tweaked wording on the fallback opengl renderer use and disabled the 3D backgrounds again for that as they still aren't fully correct [*]Updated our colour picker customizations for Godot 4 (pick from game window seems to not work currently on Linux) [*]Removed our custom checkbox implementation now that Godot's has all the needed features [*]Switched from the previously used tar compression library to C# standard one which shouldn't have any save corruption issues (due to this we were stuck on an old version of the compression library) [*]Added check to tools against omitting part of a version number this removes potential for a mistake that almost was in 0.6.5 [*]Added simple C#-code-only unit tests for a few things [*]Converted some things to use direct references instead of NodePaths [*]There's now a nix flake for Thrive developers [*]Updated our documentation impacted by the upgrade to Godot 4 [*]Updated Jolt physics engine to newest version [*]Updated YamlDotNet fro 15.1.1 to 15.1.2 [*]Updated AngleSharp from 1.1.0 to 1.1.2 [*]Updated code checking tools version [*]Updated translations [/list]