Thrive in Godot 4 Tech Test

We are attempting to convert Thrive from Godot 3 to Godot 4. This is a huge undertaking as the engine has gotten a ton of changes that impact Thrive. The game is now mostly again playable, though there are some GUI parts and visuals that are not exactly correctly tweaked yet. The gameplay should now work (at least up to the prototypes, I haven’t had time to look at those yet). One thing I’ll note is that the game wants to crash on shutdown due to: Using `InputMap.ActionGetEvents` with StringName from `InputMap.GetActions` causes a crash in Godot 4.2.2 mono · Issue #89941 · godotengine/godot · GitHub (which the only “solution” I’ve found is to disable key rebinding support entirely).

As the game is somewhat testable now, I’m making a public tech test (I’m calling it that instead of a RC as this is way rougher than usual RCs from us are). Especially interesting would be testing with various hardware to see if the game runs and if the fallback opengl renderer is correctly used for older hardware. Also looking out for anything that is worse now than in 0.6.5 would be helpful.

Here’s the downloads:
SHA3: 901e08d947381f90fe0d36812994ba23f44d2b205c9bf6871f7869ae41ef7451
SHA3: 780c3fecb3f563ce2e26775bc0b314107f0793b542a5b657ae49ee9b7e07088b

Also available as the BOTD to our patrons.

Depending on how many problems are found (here’s the already known problems: Godot 4 · GitHub) it might be possible to release 0.6.6 in about a month.

Before reporting issues please check this thread if someone else has already said something. If the game doesn’t work please provide info on which GPU, CPU and operating system you have.


CPU: Intel Core i5-10210U CPU @ 1.60GHz
GPU: Mesa Intel UHD Graphics (CML GT2)
OS: Ubuntu

At least half the organelles are already unlocked in the first editor session. One says ‘new’ - it’s Thermosynthase, even though I used the default settings (which I presume should include only-LAWk, though I can’t look at the advanced settings).

Organelles are not displaying properly (lots of dark areas, and transparent areas not showing properly) [see pic].

The popup message saying I survived long enough to reproduce appeared when i was less than half way there. The screen was greyed-out while gameplay was still active, making it hard to see what was happening [see pic]. This happened after my first editor session. I then got the message that one of my organelles had divided as soon as I filled the reproduction progress bar.

The rusticyanin doesn’t register as producing anything.

No organelle processes show in the popups in the organelle selection window [pic].

Loading saves that were made in the editor (manual or auto) leads to an empty report screen, and the editor can’t be exited, except to the main menu

Evo tree screen is messed up [pic].

Most of the time, no species show in the patch map.

Adding metabolosome to my cell increased costs without increasing the ATP production, at least early on in the game. By about 1.8ga, it was working properly.

Changing to a new cell after death made the new cell constantly move upwards, no matter what I pressed. This stopped after opening the pause menu.

The Membrane tab doesn’t show the cell at all.

The count of microbes digested (for unlocking) doesn’t increase from 0, however many I fully digest.

Part-way though the game, all the loading screens became black, and the loading icon was pivoting strangely [video].

I had a crash when entering the editor.

Pulling cilia are very powerful, pulling in so many organelles that I can’t digest them all, leading the extra ones to swirl round me.

Leaving the editor and then getting to it again can result in different ATP balance.

Minor issues:

the game intro text box needed to be scrolled, which also made the screen zoom out.

The line pointing to glucose jittered about, sometimes looking like 2 lines pointing to the same thing.

Clicking the editor tab button when looking at the patch map usually makes an error noise. The same sound is played if I click ‘undo’ or any of the organelle selection buttons.

The planet in the animated menu showed in black and white [pic].

The sound issues I’ve had in the last couple of game versions are even worse, now. I have to mute the Music, Ambience and Gui effects (or whatever the name is) to prevent noticeable sound jittering.


That sure is a lot, I wrote a bunch of new items on the Godot 4 board. Thanks for being a brave tester.

Finally something that isn’t a bug! This happens because the oxygen in the vents is now set to 0 meaning the rust process cannot run at all as it requires oxygen. The game design team is looking into this.

This is also the same thing (it now requires oxygen):

Doesn’t happen to me… Are you using the build I made or compiling yourself?

Especially this shows completely differently to me.

These don’t happen to me at all. Could you provide more details as what kinds of inputs you did / cell you had so that someone else might be able to reproduce the problem?

Doesn’t happen to me. Immediately after starting to digest a cell, the count went to 1 for me.

The pivot problem is one I know. Godot 4 removed the ability to set custom pivots for items in containers…
As for the black screen, I have no ideas. Did you check your game logs after playing? I hope there’s at least some errors in there.

This should not have been possible to have changed. There’s very few changes to the gameplay code meaning that the gameplay (besides the visuals) should be the exact same as previous version.

What did your cell look like? I don’t get this happening with a simple-ish cell. Could be something like:

Which is a bug that’s been known for years.

The GUI no longer eats inputs the same way as before, which also caused the scrolling behaviour you saw. So the gameplay code gets the input when it shouldn’t.

You don’t want to see how the planet looked before it got any emergency fixing from a programmer. We are still waiting for someone to be able to properly fix the .glb file that no longer imports into Godot 4 anywhere near correct.

I noticed that when a lot of sound effects play for me there is some glitching. I’m not sure what else can be done except forcing Godot to use a higher audio delay value in project settings.

1 Like

It was the linux build you linked to. I ran it straight from the file. It didn’t bring up the launcher on exiting.

This only happened once. I’ll see if it’s possible to get it to reoccur.

Here’s the most recent log (which has many errors and warnings):

I’m pretty sure this was a cell I’d been using, which came up as not producing enough ATP at the start of the next editor ssesion:

This being caused by too many sounds playing would make sense for my system, given that it can get overloaded quite easily.

I’ll try to get a video of this.

1 Like

I just today saw the membrane failing to load in the editor for the first time. This seems like a pretty rare / random bug. It’s now on my list of things to fix.

You seem also be a victim of (someone already reported it yesterday on discord):

USER ERROR: System.NullReferenceException: Object reference not set to an instance of an object.
   at LabelSettingsUtils.CloneWithDifferentColour(LabelSettings settings, Color newColour) in /home/hhyyrylainen/Projects/Thrive/src/general/utils/LabelSettingsUtils.cs:line 13
   at ModifierInfoLabel.<.ctor>b__12_1() in /home/hhyyrylainen/Projects/Thrive/src/microbe_stage/editor/tooltips/ModifierInfoLabel.cs:line 37
   at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
   at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
   at System.Lazy`1.CreateValue()
   at ModifierInfoLabel.AdjustValueColor(Single value, Boolean inverted) in /home/hhyyrylainen/Projects/Thrive/src/microbe_stage/editor/tooltips/ModifierInfoLabel.cs:line 148

Which prevents the editor from fully loading and likely leading to potentially a lot of weird bugs. So that’s something I need to fix as a high priority thing before investigating the other weird editor occurrences as there’s a good chance that is the root cause.

What was it like before that if I could also get that info?

Reading the Godot documentation it says:

Lower values will result in lower audio latency at the cost of increased CPU usage. Low values may result in audible cracking on slower hardware.

(That’s from ProjectSettings — Godot Engine (stable) documentation in English)

There’s a command line flag to override the audio latency: --audio-output-latency 150. If you check the metrics panel (Shift+F3) it shows the current audio latency.

It seems like there’s no runtime way to set that parameter so based on if the crackling is a common problem the default latency setting needs to be increased slightly in Thrive project settings and/or a launcher start workaround needs to be added that allows customizing the audio latency.

1 Like

I don’t still have a save from the previous editor session, but I loaded what seems to be the autosave from the in-game session in between the two. When I next entered the editor, this is what it showed:

And here is a video of the cilia super-suction in action:

I’m pretty sure that cilia suction action is no different than in 0.6.5. I can’t imagine that the unchanged C# code would behave differently in the cilia suction system or the slight update to the Jolt physics engine would cause that. So unless someone can show that that doesn’t happen in 0.6.5 the same way, I’ll consider this a behaviour that is the same as previous version and not a problem with the Godot 4 conversion.

Also I’m still looking for a way to trigger the

System.NullReferenceException: Object reference not set to an instance of an object.
   at LabelSettingsUtils.CloneWithDifferentColour(LabelSettings settings, Color newColour) in /home/hhyyrylainen/Projects/Thrive/src/general/utils/LabelSettingsUtils.cs:line 13

error. So if anyone has any info on how they got that to trigger that would be excellent.

Edit: I just saw that when playing the BOTD, so this might be a difference between the exported game and when I run Thrive through the debugger.

1 Like