Before you create a new scene or import the asset's functionality into your existing one, I recommend taking a look at the demo maps that come with the asset.
Main character component used by every entity in the game. It acts as a hub for accessing modules.
Integrations
Integrated Third-Party assets
Universal AI 2.0
Info on how to use this integration:
Installation Guide
If you're having problems with installing STP, this guide can help you.
Preparation
Considering STP is a template, make sure you're creating a new project for it instead of merging it with another project.
Make sure you're using Unity 2020.3 or newer.
Currently the only supported Rendering Pipeline is Built-In.
Make sure your storage at least 10gb left.
Installation
Recommended Steps:
Navigate to: "Edit / Project Settings / Player / Configuration" and set the Input Handling to New or Both.
2. Navigate to: "Window / Package Manager / My Assets" and find STP: Survival Template PRO.
3. After downloading the asset make sure to import the necessary project settings.
That is all, STP should function perfectly fine now. In case you encountered any problems with the installation feel free to ask for support.
Scene Setup
Whether you created a new scene or want to import the asset functionality into your existing one, you'll need a few objects to make sure the scene will function properly.
After you're in your scene that you want to setup. Navigate to: "Tools / STP / Scene Setup"
After pressing on "Setup Scene" your scene will become fully usable.
Don't forget to place some spawn points otherwise the Player will be spawned where the PlayerSetup object is placed.
Path: "PolymindGames / Survival Template Pro / Samples / Player / Player_SpawnPoint".
Item Container
At their core item containers are just a list of items.
Name: The name of the item container. If you need to get access to this container you can use the Inventory.GetContainerWithName() method and pass in the name of this container.
Max Weight: The max weight that this container can hold, no item can be added if it exceeds the limit.
Flag: Acts as a container type.
Size: Number of item slots that this container has (e.g. Holster 8, Backpack 25 etc.).
Inventory
Here you'll learn what each character inventory components does.
Initial Containers: The initial item containers. You can also add more containers at runtime using the AddContainer() method.
For more information on item containers see:
Drop Obstacle Mask: The layer mask that will be used in checking for obstacles when items are dropped.
Drop Transform: Dropped items are spawned relative to this transform.
Drop Force Mode: The force mode that will be added to the rigidbody of the dropped item.
Item Drop Settings: Position, rotation offsets etc.
Movement
Here you'll learn what each character movement component does.
Acceleration: How fast can this character achieve max state velocity.
Damping: How fast will the character stop when there's no input (a high value will make the movement more snappy).
Airborne Control: How well can this character move while airborne.
Step Length: How much distance does this character need to cover to be considered a step.
Forward Speed: The forward speed of this character.
Back Speed: The backward speed of this character.
Health
Here you'll learn what each character health component does.
Starting Health: The starting health of this character (can't be higher than the max).
Starting Max Health: The starting highest health of this character (can be modified at runtime).
Regeneration Rate: How fast will the stamina regenerate.
Regeneration Pause: How much time the stamina regeneration will be paused after it gets lowered.
Run Decrease Rate: By how much will the stamina decrease per second when running.
Jump Take: By how much will the stamina decrease after jumping.
Building
Here you'll learn what each character building component does.
Follow Character Rotation: Should the "placeables" follow the rotation of the character?
View Angle Threshold: Max angle for detecting nearby sockets.
Rotation Speed: How fast can the "placeables" be rotated.
Build Range: "Max building range.
Buildable Mask: Tells the controller on what layers the "buildables" are.
Free Placement Mask: Tells the controller on what layers can "placeables" be placed.
Here you'll learn what each character interaction component does.
Player Interaction Input (Behaviour)
Delegates interaction inputs (using the new Unity Input System) to the IInteractionHandler module.
Interaction Handler (Module)
View: The transform used in raycasting.
Raycast Distance: The raycast max distance, anything further away will be ignored.
Raycast Radius: The raycast radius, if you're not looking directly at an object you can still interact with that said object if it's in the given radius.
Layer Mask: Interaction layer mask, everything this handler can "see".
Object Carry
Here you'll learn what each character object carry component does.
Player Object Carry Input (Behaviour)
Delegates object carry input (using the new Unity Input System) to the IObjectCarryController.
Object Carry Controller (Module)
Handles everything regarded object carrying except the visuals.
Drop Obstacle Mask: The layer mask that will be used in checking for obstacles when carriables are dropped.
Drop Transform: Dropped carriables are spawned relative to this transform.
Drop Force Mode: The force mode that will be added to the rigidbody of the dropped carriable.
Crafting
Here you'll learn what each character crafting component does.
Crafting Manager (Module)
Handles item crafting.
Craft Sound: Sound that will be played after crafting an item.
Audio
Here you'll learn what each character audio component does.
Audio Player (Module)
The main audio player of this character, can play sounds with delays, loop sounds etc.
Human Sounds Manager (Behaviour)
Responsible for listening to events raised by other modules (e.g. health, movement etc.) and playing "humanoid" sounds accordingly.
Footsteps Manager (Behaviour)
Responsible for playing footsteps sound based on the current IMover's module step length. See:
Makes this object follow the player's look without parenting.
Removes the need for long transform hierarchies.
Damage UI
Player UI Inventory Input
Delegates input (using the new Unity Input System) to sub behaviours using Unity Events.
Inventory Panels Manager
Handles the inventory panels.
Item Auto Mover
Item Drag Handler
Hide Duration: Representshow much time it takes for the stamina bar to start fading after not decreasing.
Alpha Lerp Speed: How fast will the stamina bar alpha fade in & out.
Will be refactored into generic vitals in the future.
Player Vitals UI
Player Stamina UI
Create Item
Here you'll learn how to create an item
UI_Sleep
Here you'll learn what each UI Sleeping behaviour does.
Sleep UI
Canvas Group: The canvas group used to fade the sleep UI in & out.
Max Canvas Alpha: The max alpha that will be reached when fading in.
Canvas Lerp Speed: The speed at which the sleep UI will be faded in & out.
Current Time Text: A UI text component that's used for displaying the current time while sleeping.
Background Rect: The background rect of this UI piece.
Animator: Reference to the animator used for the sleeping UI.
Show Trigger: The "show" animator trigger.
Hide Trigger: The "hide" animator trigger.
Number of Templates: How many time templates should be spawned each side.
Time Text Template: A prefab with a text component on it that will be instantiated.
Text Size Over Distance: How will the text scale over the duration of its lifetime.
Text Y Position Over Distance: How will the text y position change over the duration of its lifetime.
Text Color Over Distance: How will the color of the text change over the duration of its lifetime.
Animator: Reference to the animator used for the Ammo UI.
Magazine Text: A UI text component that's used for displaying the current ammo in the magazine.
Inventory Text: A UI text component that's used for displaying the current ammo in the storage.
Canvas Group: The canvas group used to fade the stamina bar in & out.
Charge Fill Images: UI images that will have their fill amount value set to the current charge value.
Fill Gradient: A gradient used in determining the color of the charge image relative to the current charge value.
Scope
Crosshairs
Ammo
Charge
UI_Interaction
Here you'll learn what each UI Interaction behaviour does.
Interactable Info Display UI
Check the type of the interactable that the Player has interacted with and finds the corresponding displayer for it.
Displayers
Panel: The UI panel used in showing / hiding the underlying images.
Interactable Name Text: A UI text component that's used for displaying the current interactable's name.
Separator: An image that separate the name text from the description text (optional).
It gets disabled when the current interactable doesn't have a description.
Description Text: A UI text component that's used for displaying the current interactable's description.
Interact Progress Image: An image that used in showing the time the current interactable has been interacted with.
Rect Transform: The main rect transform that will move the interactable's center (should be parent of everything else).
Canvas Group: The canvas group used to fade the item pickup displayer in & out.
Interact Progress Image: An image that used in showing the time the current interactable has been interacted with.
Name Text: A UI text that's used for displaying the observed item pickup's name.
Description Text: A UI text that's used for displaying the observed item pickup's description.
Interactable
Explanation
Interaction Enabled: Is this object interactable, if not, this object will be treated like a normal one.
Hold Duration: How time it takes to interact with this object. (e.g. for how many seconds should the Player hold the interact button).
Interaction Text: Interactable text (could be used as a name), shows up in the UI when looking at an object.
Description: Interactable description, shows up in the UI when looking at an object.
On Interact Callback: Unity event that will be called when a character interacts with this object.
Sleep Position Offset: Position offset for the player sleeping handler. (Where the camera will be positioned).
Sleep Position Offset: Rotation offset for the player sleeping handler. (In which direction will the camera be pointed).
Overview
A Wizard that helps creating new Wieldables is in the works, for now the best way to do that is copy and pasting any of the existing wieldable prefabs. Here's where you can find them:
To start creating an item pickup, add an "Item Pickup" component to your object:
After that you'll need to set the corresponding item to the one that you want:
Item: Corresponding item id.
Item Info
To create any item navigate to: "Tools / STP / Item Management".
While there, you'll see the items organized by category. Choose a category, or create your own, and then create your item in that category, just click the "+" button for adding new elements.
Item Settings
Here you can learn what every item setting means
Name: Item name.
Id: Unique id (auto generated).
Category: Category of this item.
Icon: Item Icon.
Description: Item description to display in the UI.
Pickup: Corresponding pickup for this item, so you can actually drop it, or pick it up from the ground.
Properties & Tags
To create a property press on the "+" button and set it's name and type.
Boolean: Can be true or false.
Integer: Basic integer, just a number.
The wieldable system is currently getting overhauled.
Repair Duration: The time it takes to repair an item at this workbench.
Durability Property: The id of the durability property. After repairing an item the workbench will increase the value of that property for the repaired item.
Repair Audio: Repair sound to be played after successfully repairing an item.
Open Rotation: Open rotation offset (how much should this door rotate when it opens).
Animation Speed: Open animation rotation speed.
Interaction Threshold: Open/Close door time cooldown.
Locked Animation Duration: How much time should the locked animation last.
Locked Animation Range: How much should the locked animation move the door.
Locked Random Rotation: Locked animation randomness.
Door Open: Audio to play when the door opens.
Door Locked: Audio to play when the tries to open while locked.
Item Count: How many items of the same type is this item going to contain.
Primary Flags: The first type of container that this item will be added to (e.g. a weapon would be added to the holster at first).
Pick Up Sound: Sound that will be played upon picking the item up.
How to Create
Explanation
Good To Know! Since this is an item pickup, there's no need to fill up the interaction and description texts, the pickup will do that automatically using the corresponding item.
When you've added a new item in your desired category, click on it, you'll see all of it's info in the Item Inspector.
Stack Size: How many items of this type can be stacked in a single slot.
Tag: String tag (similar to GameObject.Tag), it can have many use cases but the main one is to limit the item from being placed in certain item containers (e.g. stop this item from being placed in the holster container if it's not tagged as a wieldable). You can also define custom tags (see next tab).
Properties: all the item's properties, like Durability, Health Restore, Fuel and so on.
You can also define custom properties (see next tab).
Has Blueprint: Does this item have a blueprint? (Required for crafting and dismantling)
Blueprint: A list with all the "ingredients" necessary to craft this item, it's also used in dismantling.
IsCraftable: If enabled this item will show up in the survival book as a craftable item.
Craft Duration: How much time does it take to craft this item, in seconds.
Allow Dismantle: Can this item be dismantled?
Dismantle Efficiency: An efficiency of 1 will result in getting all of the item back after dismantling, while 0 means that no item from the blueprint will be made available.
Float: Decimal number.
Item Id: Holds an item id..
To create a property press on the "+" button and set it's name.
Properties
Property Types:
Tags
Camera
Here you'll learn what each character camera component does.
Player Look Input (Behaviour)
Delegates camera/look input (using the new Unity Input System) to the ILookHandler module.
Player Look Handler (Module)
Handles look updating the look direction of a character.
X Transform: Transform to rotate Up & Down.
Y Transform: Transform to rotate Left & Right.
Invert: If enabled, the up-down direction will be inverted.
Look Limits: Vertical look limits (in angles).
Sensitivity: Rotation Speed.
Raw: If enabled, the rotation will not be smoothed.
Smooth Steps: Smooth steps amount (a bigger sample will make means the rotations will be more smoothed).
Smooth Weight: Smoothness affect modifier, a value of 0 means that the rotation will be raw while 1 as smooth as possible.
FOV Camera: Used in lowering/increasing the current sensitivity based on the FOV.
Camera: The camera that will be rotated using a spring.
Camera Root: The camera root that will be rotated through bobbing.
Motion Lerp Speed: How smooth should the motion spring movement be.
Bob Transition Speed: How fast should the camera bob be.
Input: Input settings.
Sway: Sway forces (applied when moving the camera).
Fall Impact: Fall impact forces.
Idle State: Idle camera motion state.
Walk State: Walk camera motion state.
Run State: Run camera motion state.
Crouch State: Crouch camera motion state.
Shake Lerp Speed: How smooth should the shake spring movement be.
Explosion Shake: The explosion shake settings.
Shake Spring Settings: The default shake spring force settings (Stiffness and Damping).
Force Lerp Speed: How smooth should the force spring movement be.
Default Force Spring Settings: The default spring force settings (Stiffness and Damping), when external forces are being applied.
Background Blur: Background blur component.
Foreground Blur: Foreground blur component.
Background Color Tweaks: Background color tweaks component.
Foreground Color Tweaks: Foreground color tweaks component.
Y Lerp Speed: How fast should the camera adjust to the current Y position (up - down).
Crouch Offset: An offset that will be applied to the camera position after crouching.
Crouch Easing: Crouch movement easing type.
Camera Motion Handler (Module)
Will be refactored in the future.
Camera Effects Handler (Module)
Camera Height Controller (Behaviour)
Extension
Example (inherit from Interactable)
namespace SurvivalTemplatePro
{
public class InteractableTest : Interactable
{
public override void OnInteract(ICharacter character)
{
base.OnInteract(character);
// Do something when a character interacts with this.
// e.g. press a button
}
public override void OnHoverStart(ICharacter character)
{
base.OnHoverStart(character);
// Do something when a character starts looking at this object.
// e.g. Enable outline effect
}
public override void OnHoverEnd(ICharacter character)
{
base.OnHoverEnd(character);
// Do something when a character stops looking at this object.
// e.g. Disable outline effect
}
}
}
Example (Implement the IInteractable interface)
namespace SurvivalTemplatePro
{
public class InteractableTest : MonoBehaviour, IInteractable
{
public bool InteractionEnabled { get; set; }
public string InteractionText => "Interaction Text";
public string DescriptionText => "Description Text";
public float HoldDuration => 0f;
public event UnityAction onInteracted;
public event UnityAction onDescriptionTextChanged;
public event UnityAction<bool> onInteractionEnabledChanged;
public void OnInteract(ICharacter character)
{
// Do something when a character interacts with this.
// e.g. press a button
}
public void OnHoverStart(ICharacter character)
{
// Do something when a character starts looking at this object.
// e.g. Enable outline effect
}
public void OnHoverEnd(ICharacter character)
{
// Do something when a character stops looking at this object.
// e.g. Disable outline effect
}
}
}
UI Behaviours Manager
Responsible for attaching and detaching UI behaviours to a player.
Create Surface
Create
Duplicate one of the existing surfaces or create a new one at:
"PolymindGames / SurvivalTemplatePro / Resources / Surfaces"
You can configure your new surface either through the inspector or the management window:
"Tools / STP / Surface Management"
Configure
Registered Textures: Specify which textures correspond to this surface.
Foot StepsSoft and Hard footsteps (usually walk and run respectively)
Fall ImpactFall impact effects and audio that correspond to this surface.
Bullet Hit EffectBullet hit effects and audio that correspond to this surface.
Slash & Stab
Slash & Stab effects that correspond to this surface.
Note:
If your collider is not a (e.g. box, sphere etc.) you'll need to add a surface identity component to it instead of registering it's corresponding texture.
After adding the component select a corresponding surface info.
Official documentation/wiki for Survival Template Pro.
Overview
Welcome to the official STP Documentation/Wiki!
Survival Template Pro is a powerful toolkit designed to be as modular and scalable as possible, while also offering a lot of features found in modern survival games. It can be used as a starting place for your survival game or simply as a learning experience.
This documentation is OUTDATED, a new one is in the works
Since this asset is still in an early stage, many systems could change drastically or get removed over the course of the next few months.
Good to know! This documentation is constantly updated, if you're not finding what you're looking for please join our discord server and let me know. I'll add it as soon as possible.
If you like STP and want to support its development, please consider reviewing it on the Unity Asset Store.
Links
If this wiki doesn't cover what you were looking for or just want more insight into the asset, please don't hesitate to ask for support on either Discord or E-Mail.