0.6.7 Release Candidate Testing

After a few releases thin on new features this version of Thrive has focused purely on new features. The main 3 major new features are: endosymbiosis, day/night cycle enabled by default, and toxin customization. These add much more variety to the microbe stage and hopefully make the game significantly more enjoyable. Endosymbiosis allows you to create an endosymbiont organelle from another species giving a free copy of that organelle and unlocking placing that organelle. Day/night cycle has been polished up with some new GUI features in the editor to make it easier to determine if you can survive the night and as such is now enabled by default. The toxin customization feature allows using different toxin types that have different effects for more interesting toxin gameplay. Besides the major features we also have a variety of smaller changes and bug fixes (including one fix for the game freezing during gameplay).

This beta version is available through the launcher (after selecting the option to show beta versions) or through Steam and itch on the beta channels.

Please provide any feedback you have about this new upcoming release, we are especially interested in feedback related to balancing of the new features as well as any major game breaking bugs.

7 Likes

I think i have counter a werid bug there:


That happen right after i have become an multicell and all that pic happen - I have return to obliviant

also because of that, the “Next” button not working or any info about the patch.

I think that’s the general problem of the editor scene randomly failing to load (which seems to be a rare godot bug). If you can get the game logs from when that happened that would confirm the problem.

This has been reported before:


image

Some organelle icons are cut off in Thriveopedia (not just these two).

is there supposed to be a way to place the temporary organelle i’m supposed to keep in my cell to perform endosymbiosis

I’ve known about this problem for a while. I didn’t find an open issue about this so I just created one just to show that this is a known problem:

What do you mean exactly? You get the temporary organelle by engulfing members of the species you are targeting with endosymbiosis.

1 Like

i mean is it supposed to be placed through the editor or just automatically there once i start processing a member of a species

It’s not meant to be placed manually, the temporary organelle only appears once you’ve engulfed a member of that species. It wouldn’t make sense to place something in the editor that wouldn’t be there when you exit the editor. I bet someone would report that as a bug.

Which part of the GUI made you think that you’d need to place the temporary organelle in your cell before being able to progress with endosymbiosis?

mostly the progress bar for the species i was trying to turn into chloroplasts not advancing at all after like, 2 editor cycles
do bigger cells take longer to make into endosymbionts?

It doesn’t, the bar advances by 1 unit each time you get to the editor with the temporary organelle.

Doesn’t the text just above the progress bar tell you to engulf more members of that species? And when you do the HUD message tells you will advance the endosymbiosis operation as long as you get to the editor with the temporary organelle.

the bar did not tell me to eat more members of that species. just that i needed to reach the editor with the temporary organelle
nevermind, apparently i’m just bad at words

I was just about to post this screenshot:

Which I think has pretty clear guidance on what the player needs to do next.

Earlier today I tried to load a save from a few days ago (the save is from the release candidate). After a few seconds of loading I got an error message.

The error I got

Error Loading - An exception happened while loading the save data exception: Newtonsoft.Json.JsonSerializationException: Unable to find a constructor to use for type AgentProperties. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute. Path ‘MicrobeEditor.ReturnToStage.WorldSimulation.entities.Entities[‘Entity 2:148.2’][11].ToxinProperties.Species’, line 1, position 6648005.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at EntityWorldConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer) in /home/hhyyrylainen/Projects/Thrive/src/saving/serializers/EntityWorldConverter.cs:line 120
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at InProgressObjectDeserialization.ReadNextProperty(Boolean ignoreNotConsumed) in /home/hhyyrylainen/Projects/Thrive/src/saving/serializers/InProgressObjectDeserialization.cs:line 164
at InProgressObjectDeserialization.ReadPropertiesUntil(String lookForName) in /home/hhyyrylainen/Projects/Thrive/src/saving/serializers/InProgressObjectDeserialization.cs:line 199
at InProgressObjectDeserialization.CreateDeserializedInstance(Type objectType) in /home/hhyyrylainen/Projects/Thrive/src/saving/serializers/InProgressObjectDeserialization.cs:line 493
at InProgressObjectDeserialization.CreateInstance() in /home/hhyyrylainen/Projects/Thrive/src/saving/serializers/InProgressObjectDeserialization.cs:line 370
at BaseThriveConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer) in /home/hhyyrylainen/Projects/Thrive/src/saving/serializers/ThriveJsonConverter.cs:line 568
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at InProgressObjectDeserialization.ReadNextProperty(Boolean ignoreNotConsumed) in /home/hhyyrylainen/Projects/Thrive/src/saving/serializers/InProgressObjectDeserialization.cs:line 164
at BaseThriveConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer) in /home/hhyyrylainen/Projects/Thrive/src/saving/serializers/ThriveJsonConverter.cs:line 520
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at InProgressObjectDeserialization.ReadNextProperty(Boolean ignoreNotConsumed) in /home/hhyyrylainen/Projects/Thrive/src/saving/serializers/InProgressObjectDeserialization.cs:line 164
at BaseThriveConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer) in /home/hhyyrylainen/Projects/Thrive/src/saving/serializers/ThriveJsonConverter.cs:line 520
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at ThriveJsonConverter.<>c__DisplayClass11_01.<DeserializeObject>b__0(JsonSerializerSettings s) in /home/hhyyrylainen/Projects/Thrive/src/saving/serializers/ThriveJsonConverter.cs:line 94 at ThriveJsonConverter.PerformWithSettings[T](Func2 func) in /home/hhyyrylainen/Projects/Thrive/src/saving/serializers/ThriveJsonConverter.cs:line 223
at ThriveJsonConverter.PerformWithSettings[T](Func`2 func) in /home/hhyyrylainen/Projects/Thrive/src/saving/serializers/ThriveJsonConverter.cs:line 240
at ThriveJsonConverter.DeserializeObject[T](String json) in /home/hhyyrylainen/Projects/Thrive/src/saving/serializers/ThriveJsonConverter.cs:line 94
at Save.LoadFromFile(String file, Boolean info, Boolean save, Boolean screenshot, Action readFinished) in /home/hhyyrylainen/Projects/Thrive/src/saving/Save.cs:line 299
at Save.LoadFromFile(String saveName, Action readFinished) in /home/hhyyrylainen/Projects/Thrive/src/saving/Save.cs:line 86
at InProgressLoad.Step() in /home/hhyyrylainen/Projects/Thrive/src/saving/InProgressLoad.cs:line 104

This save was in the editor. I also tried to load other saves from the same playthrough (an autosave from out of the editor and one in the editor). In hindsight, I probably should’ve tried loading other saves.

Can you provide the save file? I think I know what’s the problem and how to fix it with one line code change, but I wouldn’t be able to test it easily without a save showing the problem.

Edit: here’s the fix I made:

Edit 2: I got access to a save file through here and was able to test that the fix works: Error while loading save file (0.6.7.0 beta)

1 Like

Here is the file
https://drive.google.com/drive/folders/1IEX8uZqQ24xYqPe9vOU76FfPpiDhzUJC?usp=sharing

After merging my fix I was able to confirm that your save works as well (I had already received a save in that linked thread posted in Bug Reports about this same problem).

1 Like

First time I’ve played since a while. Good news: no crashes encountered! Here’s my other observations:
Actual bugs (I think):

  • Drop in Glucose over time seems to not be working (in most of my games, it worked in the first one?). That is a shame, because it means species aren’t pushed to adapt to different energy sources. Can’t quite pin down what causes it to work or not work, but can provide the saves if it helps.

Other observations:
*I like the implementation of the day-night system and the associated predictions in the editor. no complaints here.

It stands out to me that **bolded** text in the tutorial windows is not very obvious:

afbeelding

Seems like the compound display does not scale properly under 1.0 amounts:

afbeelding

  • The target species for endosymbiosis is expelled when you try to engulf more than the one you need. This is extremely frustrating if they are also your main food source.
Evolutionary map now seems a bit broken, with detached extinct species.

  • Excess ATP production is mostly useless, so why do we need 15 (!) of it to unlock the Binding Agent?

Less new features:

  • Fog of war: I like it! But perhaps it would be better to reveal newly adjacent patches after you succesfully make it to the editor in the next round? Right now you can hop your cell around to every currently adjacent patch to unveil much more patches than you should be able to.
  • Unlocks: I like the overall system implementation but some of the choices for unlock conditions really don’t work for me. Will probably discuss that elsewhere.

Prototypes:

Items you pick up seems to float in place instead of moving with you now?

1 Like

Please do. None of the world effects code (which is what a glucose reduction is in patches with species) has been changed at all recently so the game behaviour shouldn’t have been able to change.

The tutorial works even without the bolded text, that text bolding is only a few months old in the game and the tutorial was understandable (I think) to players even before that change.

Can you provide a save for quick checking what’s up?

Well endosymbiosis, is symbiosis so it would be a bit of a belgium move to harm the population you are trying to symbiosise with…

The definition has varied among scientists, with some advocating that it should only refer to persistent mutualisms, while others thought it should apply to all persistent biological interactions (in other words, to mutualism, commensalism, and parasitism, but excluding brief interactions such as predation). In the 21st century, the latter has become the definition widely accepted by biologists.[13]

Symbiosis - Wikipedia

I guess Thrive is not using the most modern definition then, but definitely endosymbiosis in Thrive is meant to mean a purely both sides benefiting thing (for example further benefit to the species being endosymbiosised is planned: Make endosymbiosis target receive a population benefit ¡ Issue #5126 ¡ Revolutionary-Games/Thrive ¡ GitHub)

This is the worst I’ve seen of this problem (it gets occasionally reported that non-optimal placement of extinct species is done). I’ve opened an issue:

Just for fun? It at least proves the player is ready to move forward…
I don’t know really, this is a question for the game design team to solve (but it is a bit unlikely that any of them will see this).

Yes, this broke with Godot 4; their physics nodes now work differently. I just earlier today converted the Godot 4 project board item into an issue tracking this problem:

1 Like

Actually, I checked again, and upon reloading it shows a reduced glucose concentration. Might be a display problem instead?

Of course, right here: https://file.io/iqN8nBJWlv7V

Yeah, it’s not a problem, just figured I would point out the oddness in the font.

Hmmm, am aware of what you’re trying to represent, but I figured trying to integrate a portion of a species as an organelle (essentially creating an off-shoot of their species, not absorbing the whole species) doesn’t mean you can’t digest the ones that aren’t useful to you. The potential for accidental self-harm is quite high right now. But I see your point as well.