IMPUNES: GTA-like game

Junior_Djjr

New member
I'm creating a GTA-like game with a small team using Opsive assets.


Still only 7 months of work, lots of placeholders (mostly the map, that will be reformulated). More info here.

I'm using Third Person Character Controller 2 (manually tweaked by me, mostly locomotion/animations), animations by Kubold Animset Pro (also with some tweaks) and I'll be using Behavior Trees for A.I.

I'm happy with the progress, this character controller looks great for open world games like GTA.

Too bad it doesn't have procedural systems for detecting climb, cover etc. Large non-linear games are completely unfeasible to place climb and cover triggers manually across the map. I've also been concerned about the performance of having multiple NPCs using this system.
 
That's quite impressive ! Although I hope you won't be overwhelmed by such a project :0
Having many UCC characters in a scene can be a challenge, but if I remember correctly the main performance issue actually comes from Animator components which are not DOTS compatible yet. In any case the only way to be sure about that is to make a stress test of your own as soon as you can in order to scale your expectations and limitations.
Good luck !
 
which are not DOTS compatible yet
What do you mean? DOTS Animation? Would this be helpful for UCC? I haven't been following.

Googling around some time ago I saw people saying the same thing, disabling IK helps and maybe the cause is too animations inside it so we can try to remove them and use Animancer (I'm already using Animancer for driving animations etc). Well, we'll see. I have GPU Instancer too but may not help with this.
In last cases I can try a "dummy" animator (or even a controller) for peds walking normally on the sidewalk, and activate a real one only if really necessary (getting close or being influenced by an AI). A LOD system, just like using fake physics for vehicles.

At the moment I tested with 35 characters, there really is a significant FPS drop, caused by Animator and KinematicObjectManager.FixedUpdate. I'm starting with NPC characters currently so I will keep testing and trying to improve.
 
Uh sorry I can't remember what I read exactly, but I think it was more specifically about the Animator component itself not being DOTS compatible - take that with a grain of salt anyway, I can't find the post where I read that. UCC is not planned to be compatible with DOTS in the near future either, however Justin said somewhere that he will be working on DOTS for Behavior Designer !
 
I'm thinking of using some DOTS/ECS in my game, probably for distant cars and people (i.e. minimal representation of fake cars far away from you, like GTA V does, then we always keep processing distant cars with a minimal load, and render a LOD silhuete there), but I'm still a noob in this subject.

I thought about using Motion Matching (MxM), but it would be necessary to readapt the whole way that UCC works, and I gave up on the idea after seeing a message here in this forum that a small team did it, succeeded, but it took months... And probably the performance would be the same or worse. It's better to keep your feet on the ground.

Ah, another interesting thing is that I used UMA: this character is completely created at runtime using UMA dynamic avatar, then add UCC component and every ability, item etc). And I'll use this for NPCs too.
 
In last cases I can try a "dummy" animator (or even a controller) for peds walking normally on the sidewalk, and activate a real one only if really necessary (getting close or being influenced by an AI). A LOD system, just like using fake physics for vehicles.
Really helps.
From 7.37 ms to 4.95 ms for 50 characters if I just remove weapons, jump etc, keeping the minimal for normal pedestrians (i5 9600KF).

ucc-animator-optimization-test.jpg

Still not good, but not terrible.

edit: forgot to remove some more stuff, about 4.7 ms now.

edit: removed IK, 3.6 ms now.
 
Last edited:
That is great data, thanks for sharing. Would you mind posting a screen shot of the components (collapsed) you have on your NPC's?
 
That is great data, thanks for sharing. Would you mind posting a screen shot of the components (collapsed) you have on your NPC's?
imagem_2023-02-13_175611899.png
I still haven't worked on Behavior Trees (only some tests), it's still very early.
I still don't know if I'm going to try to have as few components as possible and keep adding and removing them, or continue as it is now (all added but disabled).
It uses same prefab as player.
 
Thanks. I have been meaning to find out what the minimal Character Controller components required are. This helps a lot :)

BTW, your progress video looks amazing. I hope you keep posting updates, I would love to see how your project progresses.
 
I have been meaning to find out what the minimal Character Controller components required are
What I actually did was take Nolan and build it at runtime in the same way, comparing side by side. This took days and still some things are missing (like some states), it seems to me that UCC was not meant to be built at runtime but works.
So Ultimate Character Locomotion component is almost the same as original Nolan.

If anyone has more tips on how to optimize the UCC for various NPCs, let me/us know here, mainly animator and physics, use some asset/mod etc. Mainly on the CPU side (after all, a GTA-like game is much more problematic on CPU than GPU).
 
Top