CharacterController is slowing down (to 2-3 fps) a really simple scene. What I am doing wrong?

I have a really simple scene, with a terrain of 20x20, three separated capsules on the terrain with a CharacterController, and the next script attached to each one of them.

using UnityEngine;
using System.Collections;

public class test : MonoBehaviour {
		
	private CharacterController _controller;
	
	void Start(){
		this._controller = this.GetComponent<CharacterController>();
	}
	
	void FixedUpdate (){
		_controller.SimpleMove(Vector3.forward);
	}
	
}

In execution, it drops from 80 to 2-3 fps very fast. Changing FixedUpdate for Update results in the fps dropping to 35-40 fps instead.

This isn’t a problem with only 1 or 2 capsules, which run at 80 and 50 fps respectively (with FixedUpdate).

Another funny thing is that the capsules are not affected by gravity for some time, and finally dropping somewhen.

Does anyone has an idea of why this is happening? I did this test because I’m working with another project that will have between 5-20 NPCs in the scene moving independently, and I don’t know if Character Controller is suitable for this task, or if have to deal with another class.

Well, found a replacement more than a solution.

This bad boy uses RigidBodies for the physics, and works out of the box for a FPS type of game. I made some modifications and works for what I needed, with an excellent performance (>80 fps).

That’s weird: I tested your script with 1 character, and the fps was about 110; repeated the test with 20 clones, and the frame rate reduced to 88 fps, which seems very reasonable! Repeated the tests with Update instead of FixedUpdate, and the results were basically the same.

Is there any other script running in the characters? And how are you calculating the FPS?