Search Unity

Idea: Updating the Unity Character Controller

Discussion in 'General Discussion' started by Phelan-Simpson, May 4, 2019.

  1. Phelan-Simpson

    Phelan-Simpson

    Joined:
    Jan 1, 2014
    Posts:
    31
    Hello,

    Just finished watching a lot of Unity's videos on upcoming "Artist Friendly" features for the 2019 release cycle. As I seen over the past few years with Unity implementing quality features for artists that come native with Unity (i.e. Shader Graph or Cinemachine, and soon to be Visual Scripting). I was wondering why Unity's native solution for a Character Controller is so minimal. I understand that it is supposed to be a low level start for creating your own, but as an Artist without extensive knowledge it is quite hard to code non-buggy, grounding solvers, smooth step height solvers, sliding solvers, and rigidbody interactions. I have seen on some of the Asset Store character controller, that people with a lot more knowledge than I, spent years developing working solutions. Before anyone points out the asset store as a solution here, I would have to argue that as I have seen many Character Controllers come and go off the asset store, I am quite reluctant to invest upwards of 50$ to 180$ on someone else's Character Controller that could potentially not be updated then have compile errors in subsequent Unity updates.

    What is so great about Unity's Character Controller right now are: Native integration with Unity, no mandatory input source, native root motion support (checking on use root motion on the animator and having the Character Controller properly detect collision is AWESOME!), and simplicity of use.

    My theoretical proposal here is to have more advanced features within the Unity's Character Controller. As I you probably guessed, I do not have an extensive background in C#, so I am not sure what is possible here. Maybe adding some toggleable options, exposed properties, and public methods on the Character Controller for things like sliding, smooth stepping, grounding, ground snapping, gravity, rigidbody interactions, relative gravity, orienting to ground normal, platform solver, edge detection, collision layers, and custom body shapes.

    Again, this is not an input solution, Input is easy, simulating accurate physics and collisions is the hard part.

    Maybe I am crazy here, but there has been a large push towards Artist friendly plugins and packages as of late.

    I would like to know if I am the only one that feels this way.

    Thanks for reading.
    P.
     
  2. Sadly you're not. And here is why I used the word sadly: CC is an FPS character controller, which means you have first person perspective. FPS games usually rely on the movement to define how the character feels and acts and thinks.
    Ideally you write your own movement system, because it has to be game specific, unique, it should mirror the things happening in your game.
    If you use a generic FPS movement package and you don't customize it, you will end up with a boring game play, it will be lack of character (pun intended, sorry).
    I'm advocating against a full-fledged solution from Unity because of this. If you want to make a game without character, just download a CC from the asset store and go with it. But if you want to put the consideration into your game, your thoughts and your attention to detail, you develop your own movement. Or you work with someone who can help you to develop it.
     
  3. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    6,493
    They are working on it thought, there is a thread somewhere.
     
  4. konsic

    konsic

    Joined:
    Oct 19, 2015
    Posts:
    995
    I think there is a bug with CC when entering trigger collider.
    When Maximize on Play is turned off, there is more chance that collider triggers. If Maximize on Play is turned on, trigger has less chance to make event.

    I think it's connected with framerate and physics.
    CC collider shouldn't depend on framerate.
     
  5. This is completely off-topic here.
     
  6. konsic

    konsic

    Joined:
    Oct 19, 2015
    Posts:
    995
    I responded to Phelan with my suggestion that I would like that new CC would have instant physics detection no matter of framerate.
     
  7. Murgilod

    Murgilod

    Joined:
    Nov 12, 2013
    Posts:
    10,157
    No, you used the thread for a bug report when there is already a bug reporting system.
     
  8. Phelan-Simpson

    Phelan-Simpson

    Joined:
    Jan 1, 2014
    Posts:
    31
    @neoshaman Interesting I must have missed that, did they present that at a conference or is a thread?

    So lets toss the asset store out of the equation, looking purely at what the CC can be used for. Humanoid characters that need precise control, and thats about it. So if the CC is designed for humanoid characters why not make everything except basic collision optional features. You can build the CC entirely yourself with custom gameplay interactions, but why cant it also have the features that can be a good starting point for building your own CC as getting complex interactions with the Character and environment is often tough.

    For example, as the CC as I have seen it is built for Humanoids, 90% of the time you are probably going to want it to have a grounding solver and a slope slide solver to help simulate humanoid behaviour when moving throughout a game world.

    I would propose that make everything optional counting the features it already has to give developers the widest range off possibilities when looking to build their own character system, but not having to start from scratch and spend hundred upon hundreds of hours iterating upon your system.

    P.
     
  9. wccrawford and neoshaman like this.
  10. kdgalla

    kdgalla

    Joined:
    Mar 15, 2013
    Posts:
    4,639
    Unity's CharacterController seems like a weird, hacky thing to get a simple, basic character up-and-running quickly (it's pretty useful for that, actually). You could definitely use it in a finished game too, but only for certain genres.

    As a core engine feature, though, it just seems too specialized in its functionality and not extensible enough. In my opinion, it would make more sense if they converted it to on or more monobehaviour scripts and then included it with the Standard Assets package.
     
  11. kdgalla

    kdgalla

    Joined:
    Mar 15, 2013
    Posts:
    4,639
    Didn't know that. I always assumed it was some sort collider-sweep/raycasting dee'ly-bop. :)
     
  12. Now you know. :)
    It is, but it isn't Unity's collider-sweep/raycasting dee'ly-bop, but Nvidia's collider-sweep/raycasting dee'ly-bop.