0.5.8 Feedback thread

Would you prefer it to be a floating point number between 0 and 1 instead?
I think it’s pretty natural to start off with 100 and all organelles costing then a whole number of points.

1 Like

Why not? Then you will be able to make it a floating value between 0 and 1,5

I meant it as a joke… and part of it was that it was like a fraction of how many changes you can make, so once again sadly the maximum value would be 1. Similarly to how it doesn’t make sense for a probability to be over 1, it doesn’t make sense to be able to make more changes than the maximum.

In fact, an idea I just had is to stop showing organelles for smaller cells altogether while playing. Removing collision between them could also be a further optimization as large groups of them also cause lag.

1 Like

It is also worth noting that it is possible to get stuck inside of one of your larger builds after multiplying.

I suggest making the split make both cells unicellular in order to keep that from happening.

Okay, so… As someone who has a BEEFY computer, the fact that the multicellular stage lags my computer so hard is a very large issue. The multicellular stage should be optimized. I believe this could be caused by the fact that my computer is having to draw so many polygons. I feel that this stage should automatically zoom out a bit and therefore simplify the organelles of the cells. This could also simplify the soft-body sim of the cells (If they’re using one). I have not looked at the source code at all, so I don’t know what’s causing the issue yet. I’m just spouting ideas I know work well to reduce lag. I also suggest looking through the code itself to try to optimize processes from there. I have some experience in game development, but not enough to know all the ins and outs of optimization.

There’s also the chance my theories are wrong. I could be wrong about the poly rendering. It could also be the other cell’s ai that could be causing lag.

im pretty sure this is the wrong thread for this, try the 0.5.8 feedback thread maybe?

Yeah probably. I’ll copy and paste it there.

I’m nearly certain that you are wrong about what is the performance sink, I’d love to see any profiling numbers or numbers from when you turned off those things you think are the performance sinks.

I’ve done my own profiling and turning off gameplay features, I posted a link very recently:

Yes. I actually noticed that after I posted these. But something I can note is that the player model size is correlated with lag. However, there does seem to be a limit in which lag stabilizes to a certain extent. It might be the resources that cause it but I don’t have the necessary resources to test this. It could also be the variables within each of the cells on the screen, or even in the background. I’m going to run a test where I limit the size of the microbe to see if I still see the lag.

I’m going to try to go into a deeper look once I get home. Something to note: The bgm/Sfx (I wasn’t paying much attention to SFX so I don’t know if it has any) also lags which leads me to believe something audio-wise might be causing it. I’ll see about turning the volumes all the way down. If you can run the same test but with the code for the audio disabled or removed entirely we can compare the results.

Disclaimer:
All of my theories were plausible. None of them were correct. Looking at the logs tomorrow to save the devs some time. Please be patient I have SOME idea of what I am doing. Not much.

I work with audio and music every day and I know that bitrate drops when there are too many processes happening at once. It could be the AISO that the engine uses (which depends on the sample rate (How many things play at once)) So A variable for how many “Voices” could play at the same time would give you complete control over testing for this purpose. I also suggest reducing the quality of audio files if this is the case.

Here’s the logs from gameplay. A couple of errors, I think. After going through my notes on my little speedrun. I think that the errors were what caused the lag, as my CPU stayed at around 50% usage while my GPU stayed at around 36%. Disk usage stayed at around 0-2% when it started to lag. The fact that my computer wasn’t straining to run while it was lagging indicates that something is looping somewhere in the background when it doesn’t need to be looping.

I recognise this issue from a lot of game engines. (Still possible based off of the errors) Most have made it harder to make “Repeat indefinite” lines but not all. I don’t know about the engine Thrive runs on so I couldn’t say for sure if that’s the issue. One thing that’s caused a lot of programmers(Jonny Lonach) to move from unity to unreal engine is the fact that unreal can handle larger projects. I’m not saying this is the issue now (because it isn’t) but in the future Thrive might have to change game engines again in order to run smoothly. I could be wrong entirely I only have some minor experience in coding. (~3 years)

I know I’m adding a Ton of edits but old knowledge is coming back to me. Also a disclaimer: I have not actually coded anything in the past 5 months so I am missing like 90% of what I know. Don’t take everything I say as fact as I am most probably wrong here. (It was) As I said above, I work mostly with audio. That’s partially why I’m not sure about what could be causing all of this. I’m just suggesting things I think might be causing it based off of my experiences when I did code a lot. (Possible things that could lag in simular ways that happened.)

Okay I’m tired and feel like torturing myself so here’s what a minute of looking at the logs did: Based off of what I experienced I can finally conclude that… The issue is actually trying to eat other organisms. Something’s gone wrong somewhere that’s caused eating other organisms in a haphazardly way to cause an error that overwrites areas of the logging process immediately (Literally interrupting sentences). This causes a loop where other cells that evolved this behavior off of the player cell will also trigger an error like this but it isn’t brought up in the log for some reason. This causes a chain reaction that eventually leads to a lot of lag that looks/acts like an accidental loop, interrupts data (i.e. variables like ATP and glucose (Which yes, they were lagging too) and guess what else? Audio!) and it also causes a perceived performance drop because each error is being processed before each frame by the game engine. THUS MY COMPUTER’S RESOURCES AREN’T USED IN THE PROCESS!!!

I think I figured it out. Try fixing whatever causes that error. And then we can see if that fixes the lag. If it doesn’t, I’ll take a deeper dive into the actual data. That covers all the experiences in game along with my computer’s resource usage during that time.

An example of a playthrough WITH lag:

An example of a playthrough WITHOUT lag:

Clearly the errors have SOMETHING to do with it. I’m not sure what causes them though. I’ll have to figure that out tomorrow.

(Most recent edit: Disclaimer “:”)
(Most recent edit 2 electricboogaloo: Clarifying things before I get misunderstood.)
(Edit: Based)

What are your plans to fix eukaryotic life not branching off from you?

I got a professional to look over the logs instead. I was right on this. “Okay I’m tired and feel like torturing myself so here’s what a minute of looking at the logs did: Based off of what I experienced I can finally conclude that… The issue is actually trying to eat other organisms. Something’s gone wrong somewhere that’s caused eating other organisms in a haphazardly way to cause an error that overwrites areas of the logging process immediately (Literally interrupting sentences). This causes a loop where other cells that evolved this behavior off of the player cell will also trigger an error like this but it isn’t brought up in the log for some reason. This causes a chain reaction that eventually leads to a lot of lag that looks/acts like an accidental loop, interrupts data (i.e. variables like ATP and glucose (Which yes, they were lagging too) and guess what else? Audio!) and it also causes a perceived performance drop because each error is being processed before each frame by the game engine. THUS MY COMPUTER’S RESOURCES AREN’T USED IN THE PROCESS!!!”

Uhh, yeah, I’m not going to understand that… if you want to show something that would improve things, please open a PR showing off your changes.

In other news I did today a PR that improves the game performance quite a bit (turns out the despawn logic could not keep up with all of the stuff spawning in the game):

Okay. You’re gonna have to give me a while to figure out where in the code the error starts. Once found and fixed, all the lag problems experienced so far will be over. Because it’s an error loop, it just continues to repeat itself even after the event that caused it stopped. Errors seem to have priority in the game engine so that’s why it lags the audio. it’s being loaded each frame.

Okay, I was right about the errors. Wrong about the cause.

List of errors:

  1. A node failed to be set up (scene/main/node.cpp:1135) after moving to a different scene.

  2. Shape value is at 25 when 24 is the set maximum → Shape value is at (Increasing numerical value over 25) when 24 is the set maximum (scene/3d/collision_object.cpp:529)
    Apparently this error was some sort of N+1 variable spawning. It cuts out after trying to spawn in 529 of something after moving to a different scene. (I have no idea what this is for.)

  3. Touched microbe has been disposed before engulfing could start Touched microbe has been disposed before engulfing could start (I don’t know where this is happening at. It just is.)

Those three errors seem to be the entire problem. All three of them loop. That’s the problems found, why they cause lag, and where to find them. There’s a very high chance that I don’t find out how to fix them. I can find errors and point out why they happen and why they cause the effects that they do but I can’t actually fix them because I’m not fluent in C# anymore.

The errors happen a lot they don’t loop in my opinion. That third one is the only error from us, those other two are engine problems. You can try commenting out that third print and see if it fixes the performance.

There’s an open issue about the print:

I did that because the game would have crashed, without my changes there. I added the print because I assumed that as we weren’t getting crash reports every 5 minutes, the error condition wouldn’t be hit so much.

Also Godot engine actually has a maximum logging rate after which it just skips printing output. So the engine has safeguards stopping logging from consuming all of processing time.

The game engine kinda dumb.

Smart save.

Just a heads up for future reference; try to avoid double/triple-posting as it can quickly clutter the forums.

1 Like