Third Person Controller (Third Person Shooter, Adventure, RPG, etc)

For the past few months we have been working on a third person controller for the Asset Store and I am excited to finally be able to show our progress:

The Third Person Controller is the ultimate framework for any third person genre such as third person shooters, adventure, and RPGs. A large set of professionally made Mecanim animations and a set of high quality artwork is also included.

The Third Person Controller uses a flexible inventory system allowing for everything from pistols to rocket launchers and grenades. Inverse Kinematics (IK) will correctly position the limbs and ragdolls are used to enhance the death sequence.

On the Third Person Controller webpage you can see the current set of features and sign up to receive an email when it has been released.

Nice work.

I hope you don’t end up sticking a ragdoll on the main character? it’s a waste of performance. It’s fine on enemies though.

Would be nice to see other weapons, like crossbow, bow, throwing axes etc… make it a bit different from the current assets in store.

Are you planing to make it work in FPS mode?

ETA?

ps. increase the tiling on that metal part he’s standing on :slight_smile:

Regards
Moe

1 Like

Appreciate it!

Right now we do have a ragdoll on the main character, but all of the ragdoll colliders are disabled until they are needed. I have been running some performance tests and Physics.Simulate takes 1-2% of the total CPU time, with Camera.Render taking the most amount of time at about 10%. All of the Third Person Controller Scripts are at about 1% or much less (with IK taking the most amount of time). None of the Third Person Controller scripts perform any allocations after they have been initialized.

The scene in these screenshots demonstrates more of the third person shooter aspect of the controller. We are planning on having an adventure scene as well, which the weapons that you described would be perfect for. If we don’t have this scene available at launch it will be added shortly after in an update. We’ve been working on this project for awhile and are itching to get it out there :slight_smile:

We are not but you did give me an idea to integrate it with UFPS. I’ll add that integration in an update.

If we had to we could probably submit it within a couple of weeks, but we don’t really want to launch during Christmas/New Years so it’ll be at the start of the year.

Will do :slight_smile:

We just got grenades in and working. Here’s a before picture:

And after:

The grenades are considered a “Quick Use Item”. What this means is that you can use a grenade at any point in time and it doesn’t have to be equipped like the pistol. When the grenade is thrown it uses standard Rigidbody physics and activates after a certain amount of time. It will then spawn whatever objects you want (such as an explosion) and be placed back in the object pool. When the explosion object spawns it applies a force to any Rigibodies nearby, and also decrements the health of any objects nearby. In this case the barrel has a Health component attached to it and will spawn an explosion object as well when its health reaches zero.

1 Like

Looks very good so far!

Are you looking to add ledge/wall climbing, swimming etc?

Thanks!

Not in the first release but definitely shortly after. It is pretty easy to add new functionality/animations with the way everything is structured. Things like climbing and swimming would be perfect for the adventure scene that we are planning on creating.

I have been meaning to give an update but for the past few days we have been mostly working on polishing the animation/documentation so screenshots don’t work too well.

Hella cool! Subscribing to thread.

web demo ?

@jerotas -

Appreciate it!

@blackbird -

We’ll definitely have one, just not yet. Shortly before we submit we plan on adding a web demo and a set of videos showing how everything works. We plan on submitting early/mid January so things will start to be released shortly before then.

any pictures for RPG type ?

When the controller is initially released it will include the warehouse scene that we’ve been taking screenshots of and a smaller scene showing off the adventure/rpg functionality. We haven’t made this scene yet but I imagine it will just contain a lot of the generic Unity prototype assets.

Really the only thing that changes between the third person shooter genre and an RPG are the controls and a different set of animations. In an RPG the camera doesn’t always face in the same direction as the player which allows the player to always look in the direction they are moving. Compare that to a TPS which allows you to strafe and move backwards. Both of these control types will be included in the first version (you’ll only have to toggle a Boolean on the controller).

For the most part everything else is still the same. The inventory, event system, interaction system, etc. are the same. Of course, each genre has their own set of features which are not in any other genre so as we see how people are using the controller we will add features to make that task easier. I am imagining that we will be updating this asset a lot and the first version will look nothing like what it looks like six months down the road.

Hey Justin,

Thanks for your reply. Will the character animations be driven by root motion?

Yes, it will be. This took me awhile to figure out because I wanted the controller to use root motion but also still be able to respond to external rigidbody forces (such as explosions). You can see an example of what I didn’t want if you take a look at the Unity Sample Assets on the Asset Store - you’ll see that Ethan uses root motion but you can’t apply any external forces to him because of the root motion.

The components within the Third Person Controller are very modular. Don’t want the character to have any health? No problem, just don’t add the CharacterHealth component (which is a subclass of the Health component). Or what if you don’t want the character to respawn after death? Don’t add the CharacterRespawner component (which is a subclass of the Respawner component).

The disadvantage of this approach is that it takes some work to initially setup your character because you can’t just add a single component to the GameObject. To help alleviate this problem, we are going to have builders for every type of object. I’m working on the Character Builder now which will add all of the components for you. It will even open Unity’s Ragdoll Builder up for you with some of the fields already defined.

Here’s a preview of the first two sections of the Character Builder:

1888610--121520--Base.png

1888610--121518--Controller.png

This Character Builder should make it really easy to get a new character up and running.

1 Like

Looking good!

Have you considered supporting cover, like in Gears of War? It would be great for the Asset Store to finally have a drop-in controller with cover animations (entering/exiting cover, sliding left/right in cover, peeking, etc.) and auto-alignment to objects such as walls that are marked as cover areas. With other projects going on, I don’t have the time to get my in-house system ready for the Asset Store any time soon, so someone should do it at least!

Hmm … did you see the “Use Cover” checkbox in the picture above? :slight_smile:

I have no real suggestions on how to do it, but maybe this can be designed so it is more easily adapted for multiplayer?

Yes, cover similar to Gears of War will be supported with the first release. It will be a runtime cover system in that any object in the specified layers can be used for cover.

In terms of multiplayer, I haven’t done any networking in Unity so I don’t know how to approach it yet either but it is something that I have planned. If it is a viable solution, I am almost thinking that I’ll add Unity 5’s networking just so the controller isn’t reliant on a third party. The Third Person Controller is going to ship using Unity 4.3, and maybe if you want networking then you need to use Unity 5.

And @TonyLi , I’ll probably be talking to you in a few months about Dialogue System integration with the Third Person Controller :slight_smile:

Nope! :slight_smile: Glad to see it’s going to be in there!

Sounds good. As someone who has no practical knowledge of networking, I think the main thing would be to have a modular setup where an input script interprets button / axis states and sets a command state, and then an action script checks the command state and takes the appropriate action. Inventory checks would be similarly split as well, as the items possessed list could be on a server as opposed to locally held.