Hello, is it possible to change the SphereCharacterController into a ellipsoid?
It's just because the FullCharacterController is too expensive, performance wise, and the SimpleCharacterController is giving me a lot of problems like getting stuck on the ground, etc... so I would really like a controller that doesn't rely on ray casting like this one but that can scale properly to my model.
Thanks for your time.
SphereCharacterController
Re: SphereCharacterController
Yes, it is possible, though some logic will need to be changed here and there.
However, the CharacterController should not be that much more expensive than the SphereCharacterController unless it's in a continual process of stepping or attempting to escape a crouch state beneath a complicated mesh. Stress testing showed that both the CharacterController and SphereCharacterController could support many hundreds of characters in real time, all walking on a static mesh and interacting with each other. The extra cost of stepping was very low as it is such a relatively rare event. Most of the (relatively small) performance difference could be explained by the Sphere having faster narrow phase collision detection procedures.
So:
-A SphereCharacterController modified to something other than a sphere will lose the inherent collision detection speed advantage compared to a cylinder.
-A SphereCharacterController modified to a shape with a less 'fat' bottom will lose most of its stepping/obstacle climbing capacity.
-A SphereCharacterController cannot crouch.
It might be better to just disable the CharacterController's stepping and crouching systems if they are actually causing performance problems. It ends up being extremely close to a modified SphereCharacterController. It's even possible to increase the margin on the CharacterController's cylinder to make it closer to a capsule.
There may also be other issues interfering and lowering performance besides the character. It's probably worth checking alternative explanations before throwing out the ability to step/crouch or modifying the SphereCharacterController.
However, the CharacterController should not be that much more expensive than the SphereCharacterController unless it's in a continual process of stepping or attempting to escape a crouch state beneath a complicated mesh. Stress testing showed that both the CharacterController and SphereCharacterController could support many hundreds of characters in real time, all walking on a static mesh and interacting with each other. The extra cost of stepping was very low as it is such a relatively rare event. Most of the (relatively small) performance difference could be explained by the Sphere having faster narrow phase collision detection procedures.
So:
-A SphereCharacterController modified to something other than a sphere will lose the inherent collision detection speed advantage compared to a cylinder.
-A SphereCharacterController modified to a shape with a less 'fat' bottom will lose most of its stepping/obstacle climbing capacity.
-A SphereCharacterController cannot crouch.
It might be better to just disable the CharacterController's stepping and crouching systems if they are actually causing performance problems. It ends up being extremely close to a modified SphereCharacterController. It's even possible to increase the margin on the CharacterController's cylinder to make it closer to a capsule.
There may also be other issues interfering and lowering performance besides the character. It's probably worth checking alternative explanations before throwing out the ability to step/crouch or modifying the SphereCharacterController.
Re: SphereCharacterController
You were right about the FullCharacterController's performance... my static mesh (ground) was too complex and that was the problem. Thanks! 
By the way, can you give me some tips about how I can implement ladder climbing on this controller?
Last but not least I have to say that your dedication to this project and support for the community is amazing! Keep up the good work!

By the way, can you give me some tips about how I can implement ladder climbing on this controller?
Last but not least I have to say that your dedication to this project and support for the community is amazing! Keep up the good work!
Last edited by tehDrop on Wed Feb 29, 2012 2:29 am, edited 2 times in total.
Re: SphereCharacterController
The easiest form to implement is a 'use and release' type ladder which seems to be the preferred approach in many FPS games. Basically, the ladder is a path. "Using" the ladder latches the character onto the path. While the character is on the ladder, regular movement systems are disabled in favor of input moving the character up or down along the ladder path. Once the player reaches an endpoint or "uses" it again, the character is released. In the case that it reaches an endpoint, the ladder can have an 'exit point' for the player to move to so that it doesn't just fall back down.By the way, can you give me some tips about how I can implement ladder climbing on this controller?
If you wanted something closer to a Half-Life 1 ladder where you can move fairly freely across a 'ladder surface,' you could implement a raycast which looks for ladder surfaces. After a ladder surface is found, the raycast continues to fire, checking to see if the surface is still there each frame. So long as the surface is available, the regular character movement handlers are disabled in favor of arbitrary ladder movement.
I'll tryLast but not least I have to say that your dedication to this project and support for the community is amazing! Keep up the good work!
