0.5.9 Release Canditate Testing

Thermosynthase seems to produce less ATP than indicated in the editor prediction?

Haven’t reached macroscopic prototype yet due to crashes in multicellular (though I think mostly because of too many cells).

As a side note, it would be nice to have an in-game explanation on how speed is calculated, especially for multicellular organisms.

In the early Multicellular stage, I am not able to load previous saves in the environment. The same happens in the microbe stage environment whenever I am in a cell colony:

Error Loading - An exception happened while loading the save data exception: Newtonsoft.Json.JsonSerializationException: Could not create an instance of type Species. Type is an interface or abstract class and cannot be instantiated. Path ‘MicrobeStage.DynamicEntities[72].Species.IsBacteria’, line 1, position 9027015.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateNewObject (Newtonsoft.Json.JsonReader reader, Newtonsoft.Json.Serialization.JsonObjectContract objectContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, Newtonsoft.Json.Serialization.JsonProperty containerProperty, System.String id, System.Boolean& createdFromNonDefaultCreator) [0x000b9] in :0
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject (Newtonsoft.Json.JsonReader reader, System.Type objectType, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, System.Object existingValue) [0x00148] in :0
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal (Newtonsoft.Json.JsonReader reader, System.Type objectType, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, System.Object existingValue) [0x0006d] in :0
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType, System.Boolean checkAdditionalContent) [0x000db] in :0
at Newtonsoft.Json.Serialization.JsonSerializerProxy.DeserializeInternal (Newtonsoft.Json.JsonReader reader, System.Type objectType) [0x00008] in :0
at Newtonsoft.Json.JsonSerializer.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType) [0x00000] in :0
at InProgressObjectDeserialization.ReadNextProperty (System.Boolean ignoreNotConsumed) [0x001a5] in :0
at BaseThriveConverter.ReadJson (Newtonsoft.Json.JsonReader reader, System.Type objectType, System.Object existingValue, Newtonsoft.Json.JsonSerializer serializer) [0x00090] in :0
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable (Newtonsoft.Json.JsonConverter converter, Newtonsoft.Json.JsonReader reader, System.Type objectType, System.Object existingValue) [0x00055] in :0
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateList (System.Collections.IList list, Newtonsoft.Json.JsonReader reader, Newtonsoft.Json.Serialization.JsonArrayContract contract, Newtonsoft.Json.Serialization.JsonProperty containerProperty, System.String id) [0x00173] in :0
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList (Newtonsoft.Json.JsonReader reader, System.Type objectType, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonProperty member, System.Object existingValue, System.String id) [0x000dc] in :0
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal (Newtonsoft.Json.JsonReader reader, System.Type objectType, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, System.Object existingValue) [0x0007f] in :0
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType, System.Boolean checkAdditionalContent) [0x000db] in :0
at Newtonsoft.Json.Serialization.JsonSerializerProxy.DeserializeInternal (Newtonsoft.Json.JsonReader reader, System.Type objectType) [0x00008] in :0
at Newtonsoft.Json.JsonSerializer.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType) [0x00000] in :0
at InProgressObjectDeserialization.ReadNextProperty (System.Boolean ignoreNotConsumed) [0x001a5] in :0
at BaseThriveConverter.ReadJson (Newtonsoft.Json.JsonReader reader, System.Type objectType, System.Object existingValue, Newtonsoft.Json.JsonSerializer serializer) [0x00090] in :0
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable (Newtonsoft.Json.JsonConverter converter, Newtonsoft.Json.JsonReader reader, System.Type objectType, System.Object existingValue) [0x00055] in :0
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue (Newtonsoft.Json.Serialization.JsonProperty property, Newtonsoft.Json.JsonConverter propertyConverter, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerProperty, Newtonsoft.Json.JsonReader reader, System.Object target) [0x00052] in :0
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject (System.Object newObject, Newtonsoft.Json.JsonReader reader, Newtonsoft.Json.Serialization.JsonObjectContract contract, Newtonsoft.Json.Serialization.JsonProperty member, System.String id) [0x00280] in :0
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject (Newtonsoft.Json.JsonReader reader, System.Type objectType, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, System.Object existingValue) [0x00161] in :0
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal (Newtonsoft.Json.JsonReader reader, System.Type objectType, Newtonsoft.Json.Serialization.JsonContract contract, Newtonsoft.Json.Serialization.JsonProperty member, Newtonsoft.Json.Serialization.JsonContainerContract containerContract, Newtonsoft.Json.Serialization.JsonProperty containerMember, System.Object existingValue) [0x0006d] in :0
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType, System.Boolean checkAdditionalContent) [0x000db] in :0
at Newtonsoft.Json.JsonSerializer.DeserializeInternal (Newtonsoft.Json.JsonReader reader, System.Type objectType) [0x00054] in :0
at Newtonsoft.Json.JsonSerializer.Deserialize (Newtonsoft.Json.JsonReader reader, System.Type objectType) [0x00000] in :0
at Newtonsoft.Json.JsonConvert.DeserializeObject (System.String value, System.Type type, Newtonsoft.Json.JsonSerializerSettings settings) [0x0002d] in :0
at Newtonsoft.Json.JsonConvert.DeserializeObject[T] (System.String value, Newtonsoft.Json.JsonSerializerSettings settings) [0x00000] in :0
at ThriveJsonConverter+<>c__DisplayClass10_01[T].<DeserializeObject>b__0 (Newtonsoft.Json.JsonSerializerSettings settings) [0x00000] in <d36b01e60e134fad865b3f0fc9dba8ba>:0 at ThriveJsonConverter.PerformWithSettings[T] (System.Func2[T,TResult] func) [0x00068] in :0
at ThriveJsonConverter.PerformWithSettings[T] (System.Func`2[T,TResult] func) [0x000a5] in :0
at ThriveJsonConverter.DeserializeObject[T] (System.String json) [0x0000d] in :0
at Save.LoadFromFile (System.String file, System.Boolean info, System.Boolean save, System.Boolean screenshot, System.Action readFinished) [0x000a6] in :0
at Save.LoadFromFile (System.String saveName, System.Action readFinished) [0x00006] in :0
at InProgressLoad.Step () [0x00082] in :0

Do you mind putting that in a summery? Aka hide details

Summary

Also

Its here!

Trying out the macroscopic editor now (I know, early prototype, so not important), metaballs seem to be randomly jumping around whenever I move one, though it seems to be the same “cells” that were moving on their own in the early multicellular editor.

This made it impossible to exit the editor because of disconnected metaballs (I guess their real locations are different from what was displayed) until I eventually deleted a bunch, then it worked. And I was greeted by the sun-lit featureless grey plain. I know this is just a prototype so I don’t mind, but you could consider throwing up a message stating that is the end of the prototype just in case.

Using metaballs to build an organism seems a bit too loose and structureless for now, but I look forward to seeing how it develops.

As to the easter egg: I didn’t see it for three playthroughs, then kept seeing it later on every time. So, it’s about as consistent as the rest of the spawn system.


Early version looks simple, yet promising

I think you need to change it from cells to tissues, but you have already planned that so I don’t mind.

thrive keeps crashing before i get to macroscopic

Enable cheats, in options f6

I was playing with LAWK-only and oxytoxysome and toxin vacuoles were available. Shouldn’t they be disabled as oxytoxy does not exist?


I was thinking: maybe disable the music only for the audio page, otherwise just make it a little softer?

I mean you can lower the art gallery’s bg music volume by going to the settings. By the way doesn’t the background music pauses by itself whenever you listen to one of the audio items?

  1. I just think that it’s too loud in proportion to other music like the menu music. Of course I could dial it down, but picture this: I am playing with what I think is a comfortable menu volume; I then enter the gallery and its music is the same volume as the menu one. That (in my opinion) is jarring. It should be a tad lower so I can focus on looking at the pictures and models.

  2. Yes it does, but… it’s still too cacophonic as there is basically no transition. One second it’s blasting the gallery theme, the very next one it’s playing the sound I want to hear. Then I stop it and it’s the jazz theme again (which I love, this is not a dig to it). That is super jarring, don’t you think?

  1. No worries, Oliveriver has made a pull request addressing this (along with some other volume tweaks) here: Minor release candidate fixes by Oliveriver · Pull Request #3497 · Revolutionary-Games/Thrive · GitHub.

  2. There are transitions for the background music, if you listen carefully it fades in or out whenever you play or stop the audio items, though for the audio item itself there are no transitions, I guess this is what makes it so jarring?

I noticed it fades out, I wrote “basically no transition” because I think it’s too fast anyway.


Maybe the Disco Mode theme could be added to the gallery?

1 Like

Didn’t caves have lots of Iron in the previous version? They seem to have less than anywhere but the epipelagic now. Is that intended?

Found the easter egg real fast, three whole times, think frequency should go down. Game unexplainedly crashed after about 10 minutes afk, didnt see the crash and it didnt leave a crash report, so maybe thats a me problem. lots of fun, really enjoy the new features!

1 Like

There seems to be a lot of report about unexplained crashes, even one of the dev in the team had it once. Without any clear crash stack trace or reproducible steps this can very well be our first mystery bug in this release.

Several of my crashes were preceded by lots of stuttering and the game actually speeding up massively. Pausing, lowering the cell limit and moving away from other cells while occasionally pausing when the stuttering was stronger seemed to fix it eventually without crashing. This seemed to occur when I was in the multicellular and actively engulfing cells. I’m not sure if that helps any.

Regarding performance: multicellular organisms seem to have a large impact sometimes even compared to an equal amount of cells as seperate organisms.

Game only crashed for me during the multicell stage.

Easy mode feels nice to me. However, having the mutation cost multiplier as 0.8 doesn’t change much because you can’t place down any more organelles. If you make it 0.6, then you’ll be able to place three organelles instead of the usual two, which feels pretty good to me. Also, maybe player death population penalty could be lower. It’s currently the same as on normal mode. Its minimum could perhaps be 0. It’d be nice to be able turn off extinction in the world settings.

Hard mode is harder but also more tedious. You can only evolve one organelle per editor session, and ammonia and phosphate clouds take longer to find. Personally I don’t like the kind of difficulty that makes the game more grindy but that’s subjective. I do like the other changes like increased osmoregulation cost, decreased resource density and especially the increased AI mutation rate. Here are some more ideas that could increase meaningful difficulty without making the game more tedious:

  1. Make AI more intelligent or aggressive.
  2. Lower player health.
  3. Increase damage and speed punishment from zero ATP.
  4. Reduce rate of healing.
  5. Lower compound cloud density except for ammonia and phosphate.
  6. Reduce the starting resources you spawn with.

The reverse of these could be done for easy mode. There could also be a hardcore mode or setting where dying leads to extinction immediately.

Miscellaneous issues I encountered
  • Mutation points spent by moving the membrane rigidity slider can vary from 0 to 5 per step. I got this after moving the rigidity to minimum or maximum, then going to play and then entering the editor again. Also it would first say it cost 1 or 2 per step and then 0 regardless of how much it actually took. Both of these happened regardless of difficulty.

  • Iron density seems to have been divided by 10 in Cave and Ice Shelf. I’m guessing that’s unintentional.

  • Surface patches can vary significantly in depth (0-5m or 0-200m). Considering that they all have just as much light regardless of depth, the depth should perhaps be the same for all of them.

  • Lines in the patch map can go under a patch (Cave) or group of patches (middle column) without connecting to them. It can look confusing.

  • Graphical glitch, there’s a line even though there’s no patch to connect to.

1 Like

What do you mean with this one? That the Ai can plan ahead? improved pathfinding?

If the AI starts to outgrow you, it will become more aggresive. The AI constantly tries to swallow, stab or poison me whenever i get close. If your bigger it will usually be afraid to fight you.

I hope they add a harder difficulty though as hard isnt that hard even if you screw the settings up to the max for yourself.

I do feel the movement between patch are not very visible, hard to see wat patch led to other separate patch.
I think its better to be clear about the UI of that part