CharacterBody3D vs RB3D for multiplayer performance?

Godot Version

Godot 4.6 Stable Win64x

Question

Hey all, I’m making a “Clash Royale”-style game, and I’m at the point where I needed to figure out how to have multiple matches played on a single headless instance of Godot. I created a test scenario, and it turns out it could only handle about 30-40 troops before the performance started to tank…

TLDR; Would changing my Rigidbody3d Troops into Characterbody3d improve performance, and by how much? (My headless server has to handle multiple matches, averaging 100 path-finding troops between all of them. I need this because hosting servers will be really expensive and I don’t want to do p2p/default GD multiplayer because cheating might occur.)

More Info:

  • My Troops are being moved every physics_process via their NavigationAgent3D

  • My RigidBody3D troops have their axis locked, 0 gravity, 0 friction, and they can sleep. Dampening is also set to replace.

  • I am using Jolt Physics, and the game’s Physics Tick Rate is set to 6, and other physics options are likely also lowered.

  • I am using Nakama, it creates a Headless Godot Server for the game logic once two players are matched, because I do not understand how I can have the game be simulated/server authoritative if Nakama’s modules do not support physics. I am so close to finishing everything back-end wise…If you are more knowledgeable on this PLEASE let me know if I can do this a better way!!!