[RELEASED] Ultimate Character Controller (UFPS 3 / Third Person Controller 3)

Ultimate Character Controller
Available on the Asset Store
Available on the Opsive Store

Overview | Documentation | Videos | Opsive Forum | Discord

For technical support please post on the Opsive Forums or Discord for community support.

Introducing the most powerful character controller on the Asset Store. Opsive's Ultimate Character Controller is a professional, kinematic character controller designed for flexibility, modularity, and performance.

✔️Unique Features
The controller contains many features not typically found in other character controllers - from the seamless first and third person perspective switch to the spring system which allows for fluid, procedural first person animations. Character models can be switched at runtime. The modular item system allows you to tune an item’s behavior to your exact specifications. Other unique features include the ability system, dynamic gravity, and being able to change the time scale on a per-character basis.

✔️Exceptional Quality and Modularity
Many assets try to do too much. The entire focus of the Ultimate Character Controller is to be a great character controller. The modular design allows for integrations with assets that excel in other areas.

✔️Just Getting Started?
Use the videos to get an overview of the system and then hit the ground running with the Character and Item Builder. You'll have a new character exploring your world in seconds.

✔️Advanced User?
You'll love the modular design and customization that the controller offers. More than 300 pages of documentation explains how the system works.

Our controllers have been used by tens of thousands of users. The controller was initially created in 2012 and it has been in active development ever since. Join our community to see where we are headed!

✔️Controller Features
• Kinematic Character Controller
• First & Third Person Camera Controller
• Seamlessly Switch Perspectives
• Dynamic Gravity System
• Character Model Switch
• Advanced Moving Platform System
• Extensible Ability System
• Procedural Spring Animations
• Full Body Awareness
• Split Screen Support
• Inverse Kinematics (IK)
• Dynamic Effects with Surface System
• Damage System
• Build Characters in Seconds

✔️Item Features
• Modular Design
• Wide Variety of Shootable Weapons
• Wide Variety of Melee Weapons
• Melee Block, Parry & Counter Attacks
• Jumping Melee Attacks
• Melee Recoil Animations
• Magic Items
• Throwable Items
• Flashlight
• Special Attacks
• Visible Trajectory Curve
• Pickup Objects
• Object Pooler
• Build Items in Seconds

• Align to Ground
• Align to Gravity Zone
• Damage Visualization
• Die
• Drive
• Fall
• Follow 2.5D Path
• Generic
• Height Change
• Idle
• Interact
• Item Equip Verifier
• Item Pullback
• Jump
• Lean
• Look At
• Move Towards
• NavMesh Movement
• Pickup Item
• Quick Start
• Quick Stop
• Quick Turn
• Ragdoll
• Restrict Position
• Restrict Rotation
• Revive
• Ride
• Rideable
• Rotate Towards
• Slide
• Speed Change
• Stop Movement Animatio
• Target Orbit

✔️Movement Types
• First Person Combat
• First Person Free Look
• Third Person 2.5D
• Third Person Adventure
• Third Person Combat
• Third Person Point & Click
• Third Person RPG
• Third Person Top Down


How is update pricing going to work for Ultimate Character Controller?
Will get a discount if you already have UFPS or THC?
Will you get a bigger discount if you have both?

Its looking great can't wait to try it out........


Regarding the VR Addon,
will it support Oculus GO/Gear VR?

That’s a good question. I haven’t played with the upgrade system within the Asset Store admin portal yet so I don’t know how it is all going to fit together, but we’d like to offer a way to upgrade from UFPS or TPC to UCC.

I think that we’ll offer a small discount if you already have UFPS or TPC. After we release the beta I’ll put together a post that includes what assets we will be submitting as well as how to upgrade from one to another. Honestly we’re still trying to figure out the best way on this :slight_smile:

Thanks! We can’t wait to get it released!


Yes, it should. I’ve tested it on a Gear VR and though I don’t have a Oculus GO I imagine that it’ll be a similar setup. We will be focused on releasing the VR addon pretty quickly after we release v2 because this addon is already pretty far along. For completeness I’ve tested it on these platforms:

Oculus Rift
HTC Vive
Oculus Gear VR


The Ultimate Character Controller is a kinematic, deterministic character controller. This basically means that the movements can be predicted and they can also be replayed. This is extremely useful in a networked environment where the server needs to ensure the position and rotation are valid on the client.

When we first started on the Ultimate Character Controller one of the first things that we did was take apart the UFPS locomotion system to understand how it works since UFPS is known for its ultra-smooth movements. UFPS uses the Unity Character Controller component for its locomotion but for the Ultimate Character Controller we wanted to have more flexibility so we developed our own locomotion system which does its own collision detection. You can do some really neat things with this and I'll get to that in a later post. For now here's a gif showing the editor view of the character walking into a wall:


When the character approaches an object a red debug line will be drawn with the direction of the normal that was hit. On the locomotion component there is a Wall Glide Curve field which allows you to determine how much extra force is added when the character slides against a wall. As the character slides against the wall there is then a yellow debug line that appears on the second object that the character would collide with. The character will eventually settle between the first and second object because there is no where else for the character to go.


This looks terrific, Opsive folks! I've seen nothing but great code from you so far, and I can't wait to get my hands on the beta and start testing. I'm eagerly awaiting the network capability and have voted on the blocking Unity bug to help get them moving on a fix.

1 Like

Thanks! It has really evolved a lot since you last saw it at Unite last year. Thanks also for the network vote - for anybody else the direct link to the issue tracker is here:


1 Like

The ability system within the Third Person Controller has worked out really well so was it definitely brought over to version 2. For those unfamiliar with the ability system it is a way to extend the controller without having to change any of the core classes. The ability system can be used for simple functionality, such as an idle, to more advanced functionality, such as climbing or swimming.

In version 2 the ability system has largely stayed the same in terms of how it works, though some new features have been added. Here's a look at what the ability list looks like within the demo scene (the Ride ability won't be in this beta):


New abilities in version 2 include:

Revive, Move Towards, Item Equip Verifier, First Person Lean, Start Movement, Stop Movement, Quick Turn, Restrict Position, Restrict Rotation, Slide, Idle.

Out of these the Move Towards and Item Equip Verifier abilities are special abilities in that they are activated by other abilities. The Move Towards ability will move the character towards a position so another ability can start (such as moving the character to the correct location in front of a door so the animation will play from the correct location). The Item Equip verifier ability will ensure the correct item slots are equipped/unequipped for that ability.

Another new piece of functionality includes this foldout with general options for each ability that allows you to specify how the ability affects the controller:


In version 1 of the Third Person Controller the abilities were separate from the character using an item (such as fire, reload, aim, etc). In version 2 there are now a special type of ability class called Item Abilities and it has been working out really well:


Item Abilities inherit all of the functionality from the ability class, except they also have easy access to the objects related to the items (such as the inventory). In the VR world you are physically performing most of the actions yourself (such as aiming or equipping the next weapon) so a set of Item Abilities have been developed specifically for the VR addon:



What can be expected in terms of third party asset compatibility? Would a third party asset that had easy UFPS 1 integration / support easily be integrated with UFPS 2 (I assume that some alterations would need to be done to scripts / editor settings for the third party assets to be integrated with UFPS 2)?

Is there an integration in particular that your interested in? In general any art assets (hands, weapons, characters) that worked with version 1 will work with version 2 as well. In 99.9% of cases any asset that adds integration via scripting that integration will need to be updated.

@opsive will this support Unity's playable API? I've been looking for a character controller that will support the Playable API in the asset store and haven't really been able to find it :(

The controller does still use an Animator. A Playable API version could definitely be added in a future update but from what we’ve played with the Playable API is great for runtime/dynamic content but it doesn’t as useful for a pre-authored character animations. I’m definitely not an expert in it though so am I missing something on that? We could definitely add support for it sooner rather than later if there was a large use case for it.

Yupz… I’m looking at dynamic content as the major use case. It can be painful to hook up lots of animations statically or animations tied to environment (or particular gameplay areas where the player is wounded and has to somewhat drag one feet while walking).While in theory it’s possible to hardcode most of this it’ll be great to be able to do it in a generic way :stuck_out_tongue:

1 Like

UFPS and the Third Person Controller will be sold separately on the Asset Store but they will share many of the same components. If you have both assets imported you'll be able to seamlessly switch perspectives, such as going from third to first:

(edit: it doesn't look like the gifs are showing for me - you can see this image by clicking here).

This works between all perspectives - here's another example of switching from third person to 2.5D:

(edit: it doesn't look like the gifs are showing for me - you can see this image by clicking here).

This perspective change occurs by changing view types:


In the Third Person Controller you could use your own independent camera controller by attaching the Camera Monitor component to your camera but in version 2 the Camera Monitor component doesn't exist. If you'd like to use your own camera controller with version 2 what you'll now need to do is create a new view type that acts as the bridge between your camera controller and the version 2 camera controller. I don't think that I'll have it done for release but shortly after release I plan on doing this and create a Cinemachine integration.


Would the foot dragging thing be implementable by using a separate animation layer for wounding, with a direct blend tree having sliders per body part, and then control the amount of wounding by using C# to dynamically set the layer’s blend weight? I just used this technique in a project for something unrelated to wounding, but it worked pretty well for me as long as I had the avatar masks right.

I’m a little confused by this, Justin. A lot of the Playables also use Animators to control the keyframing of parameters. I’m not disagreeing with your design choice, just unclear on this specific post. :slight_smile:

1 Like

You’re right - I misspoke in my previous post - instead of Animator I should have said Animator Controller. I could see using the Playables API to blend the Animator parameters, but when I tested the API I just used it to dynamically play/blend animation clips. In this case no Animator Controller was used at all.

Version 2 isn’t tied to the animator controller - it can’t be because in a first person view you aren’t required to have a character model. This should make switching it out for another animation system possible, though I’d probably have to create an abstract animation class so the ability system doesn’t depend on which animation implementation is being used.


On the topic of what integration's might be wanted for the new versions ..

Personally, I would like to see Emerald AI and Horse Animset Pro integration, I don't see either developer leaving
Unity anytime soon :) So to me I think this integration ads value to each of the developers packages.

It is my understanding that both of these developers are aware and it is being planned. Just saying I think
many people would like to see happen, and am really excited about this!:)

1 Like

Pro Tip - Use http://imgur.com for images. Automatically converts them to gifv and such.