Say hello to the new Starter Asset packages

As part of our dedication to empowering creators, our dev team has released the new Starter Asset packages. Find out what this means for your workflow below.

— update —

Overview video on the Starter Assets project:

https://www.youtube.com/watch?v=4QuPlKzdq14


What are Starter Assets?

Starter Assets are Unity-created free and lightweight first- and third-person character base controllers for the latest Unity 2020 LTS and above, using Cinemachine and the Input System packages. Older versions of Unity may also work with Starter Assets, in some cases with slight modifications. They are designed to give you a quick start into prototyping and building character controllers for various game genres, through systems and methods that allow you to easily build and expand on just about any type of project.

The Starter Assets are split into two separate Asset Store packages: A first-person character controller and a third-person character controller. You can quickly download and import the controller you need for your project directly from the Asset Store. Both controllers are built in the same modular way and based on the same scripts and logic.

The project uses the built-in render pipeline, but the default materials can be upgraded to either URP or HDRP through the standard upgrade paths.

What’s inside the new Starter Asset packages?

  • Character controllers: At the core of the new Starter Assets is a set of two lightweight character base controllers, adapted for third-person and first-person control.

  • Input System: Starter Assets utilize the Input System. This way, you can modify controller input for various input methods, such as a gamepad, mouse, and keyboard setup, or a touchscreen mobile device (supporting both joysticks and touch zones). If your project is using the old Input Manager, you can enable simultaneous support for both systems in the Project Settings.

  • Cinemachine: With the help of Cinemachine, the camera settings are customizable so they can be tailored to your project’s needs. The character prefabs have several exposed values that are easy to adjust to your liking, so you can speedily customize the character’s movement and Cinemachine camera settings to suit your project.

  • Visual assets: The Starter Asset packages are supplied with a humanoid-rigged armature that can support various animations, as well as an environment for testing character movement, and a basic joystick set for touchscreen controls.

  • Compatibility: Both packages are separate and highly modular, which makes them adaptable to a large variety of use cases. The packages also include ready-to-use prefabs for more efficient integration.

How are the packages used?

Whether you’re completely new to Unity and want to add a player character into your scene, or you’re an experienced game developer looking to quickly test your own features and functionality, the Starter Assets can get you up and running before you know it!

The Third Person Controller package includes an original armature, fully rigged with custom animations that use a humanoid character rig. This simplifies replacing the armature with another character that uses a humanoid avatar. Even more, animations can be changed and adjusted to create an original character for your own project.

How does this change improve the user experience?

The Starter Asset packages allow you to jump right into Unity 2020 LTS – no matter your previous experience or expertise. These starter packages provide a solid base to practice using Cinemachine and the Input System in a character controller with the built-in CharacterController component.

Be sure to check out the package documentation located in the download package to learn how to leverage Starter Assets for your next project. We aim to ensure that these assets remain readily available and up to date for your use. Stay tuned for more announcements as we expand our support for Starter Assets.

You can find the Starter Assets on the Asset Store here:

We would love to get your feedback on these packages by filling out our survey.

FAQ and common issues

Q: How can I add my own character model?
A: You can easily exchange the Player Armature for your own character model by following the steps in the Youtube overview video (timestamp 7:30).

Q: Why don’t the mobile inputs work? I can add the UI overlay, but I can’t move using the UI on my phone.
A: It’s possible that you haven’t hooked up the Player Prefab to the UI Canvas.
Select the UI Canvas. In the Inspector in the UI Canvas Controller Component, make sure to assign the Player Prefab to Starter Assets Inputs under Output. You can see more information in the documentation (linked in this post) or in the Youtube overview video (timestamp 6:50).

Q: The camera is jittering/stuttering and the character controller does not move smoothly
A: This can happen if you have the Player selected in the Hierarchy. This is due to the Editor updating the Inspector UI and is not directly related to the Starter Assets. If you unselect all elements from the Hierarchy, minimize the Transform Component, or enter Playmode in the maximized view, the issue should disappear.

Q: Where can I adjust look sensitivity and inversion?
A: You can control the camera speed in the inputactions file (Assets/StarterAssets/InputSystem/StarterAssets.inputactions). Open the file (click Edit Assets in the Inspector while it’s selected). under Player > Look there’s a configuration for Pointer and Gamepad. On each of those configurations there’s a “Scale Vector 2” processor, this is your sensitivity. The Pointer and Gamepad configurations are separate so you could set different sensitivity for Keyboard/Mouse and Gamepads.

If you’re working on Mobile, the UI_Virtual_Joystick and UI_Virtual_TouchZone prefabs have a field called “Magnitude Multiplier” which will control the sensitivity of those components.

Q: How can I replace the default third person character (Armature) with my own character?
A: To replace the character with your own, replace the Armature’s geometry with the character of your choice, and set the Avatar to your new character. Please be aware that the character rig needs to use the Humanoid system. To see the full process, see our YouTube overview video (timestamp: 7:30).

Q: How can I add a new Input Action?
A: Please take a look in the documentation PDF which is included in the project for steps on setting up new Input Actions (Assets > StarterAssets > Documentation.pdf).

Q: Why do I get an error on Unity 2019 LTS?
A: Starter Assets have mainly been designed and tested for 2020 LTS and 2021 LTS. On 2019 LTS, there is a known error caused by the Lighting Data. To fix it, delete the LightingData.asset from the Playground folder. Open the Playground Scene. Then go to Rendering > Lighting Settings and press Generate Lighting to generate a LightingData.asset that works correctly with 2019 LTS.

Please leave all your questions or comments in the replies below!

15 Likes

Great to see work being done on character controllers!
If you don’t mind me asking, how does this compare to:

  • The built in PhysX character controller
  • Your previous open source controller on Github

The one on Github seemed to be going into the right direction, but seems like it was abandoned.

In particular I am wondering:

  • What’s the motivation behind this new one, over say incrementally improving the previous attempt from Github?

  • Is there anything fundamentally wrong with the one from Github? There must have been a reason to abandon that one.

  • What about the built in PhysX controller? Why is this one better?

  • What’s nice about the PhysX controller is that we have one that’s battle tested, made by some of the greatest in the field working on Nvidia. The only problem is that sliding down slopes is not available in the Unity one, even though it’s built into the original one in PhysX. Is there any chance you guys could enable just that one missing feature? There is a lot of value in the PhysX controller, it was probably used by thousands of games already. Lack of sliding makes this unusable though.

  • What’s the long term plan with your new controller? Is someone going to maintain this over a long period, and how is this different than the last attempt from Github? What’s the lessons learned / issues / changes?

A new 95% finished character controller every two years is useful.
A 100% finished controller that is maintained by some physics PhD over a decade to be used in thousands of projects and millions of players would be extremely useful :slight_smile:

10 Likes

These new starter assets were developed as a starting point rather than an endpoint. They’re more like a lightweight base upon which you could build the character controller that’s right for your game. They’re geared towards pre-production and prototyping rather than being production-ready character controllers, so I don’t believe they’d fit your use-case.

There are a lot of different kinds of character controllers out there, and the CC lies at the heart of many games. For many games it encompasses all of the game feel, so CCs tend to be very carefully crafted and personal to their project in my experience. So on that note, personally, I would love to see users take this base, expand upon it, and share it back with the community because I think together we could cover a lot more possibilities.

If you’re looking for a solid character controller that you can use today, I think @PhilSA does an excellent job with his assets.

7 Likes

On the plus side it’s finally good to see an actual character controller using the new input system and cinemachine…

I haven’t tried it out so i can’t comment on much else… other than I hope these can be combined to have a switchable first & third person controller all in one… if not disappointed.

Now to see if there will any addons or user made improvements coming and more support by other addons like mirror, vehicle assets, animancer etc

If that is so it would be great for Unity to bring such an asset in-house, as a free starter package, rather than a pay-for asset store item (which you never really are sure on quality-wise), but wishful thinking perhaps…

2 Likes

I agree! That’s my ideal as well, but I was offering an immediate solution.

If you want to help me push for more starter assets and more advanced versions of these assets, filling out the survey truly goes a long way. I’m personally grateful for everyone who can take the time to fill it out and add comments like these into the additional feedback so that we know beyond the shadow of a doubt that these assets are valuable and it’s worth pursuing them further.

1 Like

All of these things are on my personal wishlist as well!

2 Likes

How to block camera movement on the FPS Controller?
One of the most important things is to hop in and out of the game, looking at different inspectors while the game is playing. It became a common thing for us, to use the middle-mouse-button to either lock or free the mouse (Cursor.Visibility and Cursor.lockState) combined with the camera movement.
The Cursor-Lock didn’t change but how to freeze the Camera in Cinemachine, so that when you jump back in, it doesn’t turn the Camera around?
Disabling the Virtual Camera Component or the Cinemachine Brain Component will turn the camera when jumping back in (re-enabling the component).

That doesn’t sound like a roadmap though, guessing there is none for these assets… so may never happen.

The number of demo scenes on the asset store that don’t even bother to get that basic Cursor.Visibility and Cursor.lockState stuff implemented so that you can press esc to move the mouse over inspector without the ingame viewport moving around is unbelievable retarded shame on every asset store dev who doesn’t get that done properly, how assets are even approved for the store without get that basic stuff right is pretty bad.

There’s a field in the StarterAssetsInput component called CursorInputForLook. You can disable this to lock the camera, and then re-enable it when you’re done. In my experience it doesn’t cause the camera to jump.

Will try ^^

This is finally an essential tool to have.

Out of the box works fine but after replacing the third person robot with my character it doesn’t work correctly.

Once I hit the jump button it starts jumping and repeats this animation flying up to the sky.

I’ve carefully checked that the robot setup is the same as my character, my character walks, run, camera works, all good, except the jump. It never manages to play the JumpLand animation till the end (around 40% if we look at the animator why the game is running) then it loops trough JumpStart and InAir forever

The virtual joystick is constantly stuck on the smartphone :frowning:
and here: UI_Canvas_StarterAssetsInputs_TouchZones
and here : UI_Canvas_StarterAssetsInputs_Joysticks

Are there any errors in the console? It’s hard to say exactly what’s happening without looking at the project, but I suppose the GroundedCheck() is failing to execute correctly.

Have you double checked the section of the documentation on setting up the Mobile controls? Perhaps the StarterAssetsInput field in the UICanvasControllerInput isn’t assigned? That’s the first possibility that comes to mind.

1 Like

Ok I’ve got it working here was the issue.

The unity version is 2021.1.11f1

How the asset works as downloaded

New project with both the fps and third character imported from the assets store, with the cinemachine and the new input system set up correctly.

The third person controller works correctly because the “PlayerArmature” object does not have a layer selected in the Inspector.

The attached “Third Person controller” script for “PlayerArmature” have the option “Ground layers” set to Mixed… but when selecting the drop down menu we see only the “Default” selected. Normally if we see mixed we should see at least two layers selected.

With this out of the box setup all works fine because “PlayerArmature” doesn’t appear to have a layer selected (or at least is different that Default)

How the asset behaves if you add your character

Now the custom part that breaks everything

You add to the scene your fbx that is a humanoid character. You add the exact components from the “PlayerArmature” paying attention to have the same settings, no root motion, input configured correctly, you create a “PlayerCameraRoot” object and you feed it to “Cinemachine Camera Target” in “Third Person controller” script.

All works except when jumping the character will fly in the air and jump continuously

Why this happens

you character will have the Default layer applied and you can’t remove it not like the “PlayerArmature” which appear to have the layer option empty in the inspector.

since in the script “Third Person controller” the option “Ground layers” is set to Mixed/Default the script code will also take in consideration your character, which is set to the “Default” layer. This breaks the code and your character will start flying.

How to fix it

I’ve created a new layer called Player

I’ve applied this layer to my character, from Default to Player

done, this should fix the issue

How to fix the camera to follow your character

Don’t forget to change the Follow field in the component “CinemachineVirtualCamera” that is attached to the object “Player Follow Camera”,

this needs to point to your “PlayerCameraRoot” object attached to your character so the camera can follow along.

6 Likes

Question: Should CinemachineVirtualCamera be parented to the character or be an independent GameObject that only points to target?

@altepTest Thank you so much for taking the time to write that up! I’ll investigate this further and see if we can improve the setup.

As a general rule, CinemachineVirtualCameras should always be independent as far as I understand it.

2 Likes

Looks good. :slight_smile:

What about Starter Asset packages 2D?