Let's talk character controllers...

So I keep going back and forth on this in my mind and I’m looking for input…

Roll your own character controller vs a premade asset. Thoughts?

I’ve messed around with Game Creator and Opsive UCC, character controller pro, and a couple others. Can’t remember if I tried invector.

I like the character controller that comes with GC largely for its locomotion animations which are pretty good and I also like the extensibility with the modules like traversal and inventory etc, but I also don’t really want to go down the whole road of using actions and triggers, it seems too limiting and I’m more interested in coding things than trying to visually script them.

Opsive seems really good but also so complex that by the time I learn everything I might as well have just made my own. But I do again like that it has some additional extensions already available and I also think the integration with ultimate inventory system and behavior designer is very appealing.

Rolling your own gives you ultimate control but on the other hand there is a lot more to it. Every little thing needs to be set up and you don’t have the benefit of easy add on modules but in the end you know everything about it because you made it. Plus I feel the knowledge gained in coding my own system will be more useful in general than knowledge of someone else’s system. “I created my own character controller in C#” is maybe a better achievement than “I learned someone else’s character controller really well”. So there’s that.

Looking for input from others especially those who have either released a game or are at least fairly far toward completion of a game, but all input is welcome… For purposes of this discussion let’s also say that the purchase price of the assets in question is not relevant in terms of deciding what to use (for me personally).

I think it’s best to roll your own core systems, it’s risk off asset flip feel otherwise.

1 Like

That’s definitely a concern as well. Especially for inventory systems, I definitely don’t want mine looking too generic. Thanks for your input.

Generally speaking, I’ll roll my own or use one I’ve already created as a basis to expand upon. My main issue is that every single asset I’ve come across for character controllers that require anything more complex than I’d want to code myself, the sheer amount of parameters you have to manually adjust and the amount of configuration required makes it so I’ll just go right back to the code.

Opsive is good and all, Behaviour Designer is a constant tool in my projects, but it’s also a very complex tool that has to cover a lot of ground to support the variety of games people will want to make with it, and ultimately that means you’re probably going to run really close to its base settings (you can do this pretty easily in C#), or you’ll be adjusting so much and tweaking enough features that you really could make something that’ll work as a basis for your own future projects.

Kitchen sink solutions for character controllers are a bit of a hassle to get good movement out of, imo, and that makes them less appealing to me than feeling proud of a character controller or looking like an asset flip to me.

2 Likes

So let me also put this out here for discussion- what about animations for a 3rd person controller?

Even if I write my own controller, I’m unlikely to be able to make all my own animations. I’m terrible at keyframe animation and I’m just one guy so I’m not about to go try doing my own mocap or anything so it still comes down to using purchased animations, mixamo, etc which then risks the “asset flip feel” again… Just thinking out loud here I guess.

Most people won’t notice animations unless they’re specifically stylized or broken in some way, so pretty much any available animation library compatible with mecanim will do you fine.

3 Likes

Roll your own. It is not difficult.

1 Like

I recommend umotion Pro, it can be used to clean asset store animations.

I do not think you have to worry with most animations. I play a lot of games and I am a hobbyist who has seen a lot of the animations you can get on the Asset Store as I consider what to use for my projects. Even when I know a game is made in Unity and has been using the Asset Store, I rarely recognize any animations. The few exceptions are:

  • They used a specific character I happen to own and so know what animations are in it.
  • They use a distinct asset like a dance.
  • A specific animation is used across multiple games for the same company.
1 Like

Unity uses mecanim system which allows you to reuse animations from one character on another.
Similar animations are also significantly harder to spot than, say, Daz model.

It is also possible to roll your own animations by:

  1. Getting decent.
  2. Aiming at “old school” animation quality without pursuing mocap quality.
  3. Or rotoscopying yourself. (two video cameras or cellphones + treadmill == walk cycle).

Be aware, that dending on the genre you can save a lot of work by cutting down anything that is not absolutely necessary. For example, if you’re not making a 1st/3rd person shooter, then you might not need “strafing” animations. For example, a JRPG-like could have something like 5 clips per character. “attack 1”, “attack 2”, “walk forward”, “receive damage”, “die”. That’s quite extreme, but might be viable depending on your usecase.

Personally, my strong preference is to make it in-house.

Partly because that gives someone on my team full knowledge and control over how it works. It has to feel good, so it’s worth the effort. And if we want to achieve a specific thing at some point then knowing the implementation details is incredibly helpful.

Partly because I don’t want to be reliant on a 3rd party where I don’t need to be. Their updates might not go in the direction I want, and I could find my future decisions being impacted by their legacy ones.

But mostly because it’s a core part of the game that is going to directly or indirectly impact all sorts of stuff throughout. So I want it to be designed in tandem with everything else, rather than being a 3rd party generic thing bolted on the side. For instance, if your character can climb then there are different approaches to implement that, which are going to have a massive impact on how you build levels. Or perhaps there are systems which any character has to be able to interact with whether or not they’re player controlled. I don’t want my content workflows or my broader architecture to be dictated by an off-the-shelf character controller asset made by someone who knew nothing about the rest of my game.

On that same point, off-the-shelf stuff has to be designed to suit arbitrary use cases rather than specific ones. This could mean either compromise or over-complication. At the start of a game that doesn’t feel like a big deal. However, carrying that baggage around for a whole, large project definitely adds up over time, especially if your own needs diverge from the assumptions it was originally developed with.

Note that all of these things can be worked around with 3rd party controllers, particularly if they’re well designed in the first place. But to an experienced developer creating a good controller isn’t usually a difficult thing, so I’d prefer the work of creating something specific to the project’s needs in the first place than the work of familiarising with and modifying a 3rd party thing.

The potentially strong counter-case that springs to mind is if you’re making a game which needs a character controller of a type which is both common and specific, from which you don’t need to deviate much. For instance, if I were making a game which needed the Tomb Raider / Uncharted type of run/clumb/shoot 3rd person controller, that does take a heck of a lot of combined effort to get everything just right, with all of the animations included and the edge cases ironed out and so on. Thanks to Mecanim you can theoretically re-target the animations onto your own character, and then just mod things from there rather than start from scratch. So if someone has made a genuinely high-quality implementation which I could purchase off-the-shelf as a starting point I’d be sorely tempted.

7 Likes

I’ve asked a similar question in the past:
https://discussions.unity.com/t/822324

I was planning to read through the implementations of 1 or 2 assets and then roll my own, but shortly after that I got swept up in freelance work again and didn’t have time to get started. Then I thought some more about my total time budget and how much time it would take me to make the controller that I’d want in a first person game, and couldn’t think of a game concept where that all would make sense.

You didn’t mention in your post that it was a POC the answers you got was for actual game project not POC

As someone who uses the asset store as both customer and creator, I think this thread is full of whims and misunderstandings.

First of all, I challenge you to re-create Opsive’s character controller in less than a year. Once you’ve done that, sit back and consider whether the 3 or 4 days of dedicated learning it would take to master it would have been a better choice.

Secondly, I would like you to go through the character controllers or inventories or whatever of your 10 favorite games and make a list of all the features (not graphics!) that are so different amongst them that they could never exist in the same asset store product if it was sold as one. You’ll realize that they are all so much the same that they might as well have been using the same asset store product with different graphics and a few tweaked settings.

Thirdly, ask yourself if you want to ship a game, or if you’d rather end up in the same backwater where 99% of other devs end up after burning through all their time, savings and motivation trying to reinvent the wheel just so, while avoiding the fact that they don’t really know for sure what makes a game fun in the first place.

Now, as a programmer, I love to faff around and ‘roll my own’ as much as anyone, and I can always do a better job than anyone else. But does that mean I gain anything by it? If I have spare time and that’s the best way I can think to enjoy it, sure. But if I need to get something done like I don’t have forever, it’s probably going to be a non optimal choice.

That said, be prepared to mold your game design slightly toward whatever an asset happens to offer. Things can always be added and modified, but again the question is, is it worth it? Is your game going to go from divine to ugly because something wasn’t done precisely the way you envisioned?

A dev always needs to have clear goals, a plan and a timeline, and then you can roll this or buy that as your schedule allows. But operating on vague moralities and sensibilities about what’s the ‘right’ way to do things would never work in any other enterprise, and it sure doesn’t work here. The only question is, what’s the way that will work to get the thing that I want to create, completed?

17 Likes

These are all very good points and I appreciate the input.

2 Likes

Its a balance, we use alot of asset store stuff, mostly art but some code and shader related stuff too. Things like decal system can save time and no one will know its a asset store asset.

But character control is such a core part of your game. Plus it might be harder to integrate it gracefully than a custom one.

1 Like

One thing though that I would suggest to consider, is to think of your favorite commercially successful games made with Unity.

For me the top three are Valheim, Stranded Deep, and The Long Dark.

I bet dollars to donuts none of them use a purchased controller.

I wouldn’t be surprised if Valheim’s controller was just a pretty standard run-and-swim-and-jump built off of the Character Controller feature built into Unity and I think The Long Dark, at least for a while, used the FPS controller that used to ship with the Standard Assets pack. You wouldn’t need to buy a controller for either of those games because they have incredibly simple mobility.

Mobility is only half the battle really. I’m thinking of inventory systems, interactivity with the world, etc

Are you trying to make the statement that commercial games of that quality do not use third party controllers? Because if you check the Opsive showcase there are a number of games in it that are on the level of Valheim, Stranded Deep, and The Long Dark that make use of their controllers.

https://opsive.com/showcase/

Same for Invector.

https://invector.proboards.com/board/8/showcase

1 Like