How many characters can UCC run?

Shadowing

Member
I did some performance tests today in the editor. I just want to post my findings. I feel its a bit low.
Each test is spawning 60 characters with the character Nolan.
First test is with just the model no animator.
Second test is with the model and a animator playing a Idle in a loop.
Third test is with UCC scripts running

With the old Version 1 of the controller I could run 300 at 50fps. I haven't done any profiler tests yet. I will here in a bit.

Just the Model. Runs at around 600 fps (890 fps when culled)

Just the model and animator runs at 380 fps (795 fps when culled)

UCC AI controller runs at 14 fps (315 fps when culled)


Videos are recorded from a separate computer to ensure max frame rate when recording.
Elgato Game Capture HD

6359930_sd.jpg


System Stats
  • i7-800K 3.7ghz CPU
  • Unity Running on a 2Tb m.2 drive (Samsung 970 EVO)
  • Project running on a separate 2Tb m.2 drive (Samsung 970 EVO)
  • 64Gb of Memory DDR4 2400
  • EVGA GeForce GTX 1080 8GB
  • Unity 2019.2.18
 
Last edited:
I've done some tests with the old controller and my findings are a bit surprising. But I was already aware of some things. Same Version of Unity.
For starters with the new controller and no AI spawned frame rates are 1,000. With the old controller frame rates stay at around 70 for some reason.
So I don't know what is with that lol.

First test is Dough spawned 60 times. 70 fps (70 fps when culled) This is why I could never get past 70fps the old controller. Seems to be a consistent 70fps forced.


Second test is Dough spawned 200 times. 35 fps (6 fps when culled. What?)



If I spawn like 150 i'm back to 70 fps.
 
Last edited:
The controller is updated in FixedUpdate so when there are a lot of objects it can get behind and make the framerate really drop. In version 2.2 I've already added an option to be able to run within Update which should help with this situation. The true improvement will happen though when we switch to the jobs system.

1580300437966.png
 
Did the job system update ever happen. Just curious.

I'll probably do another one of these tests using the update option here in a month.
Probably get higher to just from using a newer version of Unity. That test was with Unity 2019 and honestly 2019 is one of the worse versions I've used. Will probably test with 2020. I usually don't use versions that are not in Long term support.
 
I did similar test recently on latest Unity/UCC, over 50 or so characters it drops in sub 60 fps, 100 or so drops into single digits. It does seem to be caused primarily by physics and animator when I looked at profiler stats. I dont know if there's a solution to this outside of moving DOTs. I would really love to have an ability to build a zombie horde game with ragdoll physics and hundreds of zombies, but maybe I am asking for too much - I am completely new to this area :)
 
Did the job system update ever happen. Just curious.

I'll probably do another one of these tests using the update option here in a month.
Probably get higher to just from using a newer version of Unity. That test was with Unity 2019 and honestly 2019 is one of the worse versions I've used. Will probably test with 2020. I usually don't use versions that are not in Long term support.
Please do. And test 2.3.6 version against the newest one as I stopped using newer versions because it's visibly less smoother and even slower in fps for me. I don't think they're running identically.
 
I hear ya. 50 isn't to bad though. Can do a lot with 50. I've seen lots of zombie games with only 50 zombies on screen at a time. Even a zombie game. Might be possible if a character is further away disable animator and move the character with out the animator. May even be able code some slight rotations to make it look like the zombie is walking zombie like in a distance.

Maybe i'll do a test that removes animation at certain distances that I can set to kinda see whats possible.
Remember when making a game you just need to make it convincing to the player. what they don't see won't hurt them.
 
no 50 on a beefy rig getting sub 60 fps is pretty bad. That is without any other thing going on as well. Realistically this number is cut by at least half if I want it to work on lower spec machines in an actual game, not an empty scene. Yes I know there are 'cheats' to play around this number, but what we have to work from the beginning still is too limiting imo. But again I am completely new to this area, so maybe this normal? Maybe I am doing something wrong?

It kinda reminded me of Cyberpunk having cardboard cutout people in the distance :LOL:
 
Not for the foreseeable future - UCC requires a lot of Unity systems that are not DOTS compatible. This year I will be working on a DOTS version of Behavior Designer, though.
 
Not for the foreseeable future - UCC requires a lot of Unity systems that are not DOTS compatible. This year I will be working on a DOTS version of Behavior Designer, though.
That will be awesome!! Behavior designer can add some overhead. I currently use it to prototype and then once finalised, I convert to a C# program.
 
Top