Skip to content
smartargs
VantageDocumentation

Tuning reference

Every value on the VtTuning asset, with the default the package ships, the allowed range and what it changes. For how to use it, see Tuning.

VtTuning

Asset. Create it with Create → Vantage → Tuning.

Project-wide gameplay numbers in one asset: combat clamps, ability timing, projectiles, threat, multiplayer limits, party and loot, social limits and movement feel. Read the live values through Instance; VtCombatConstants, VtThreatConstants and VtMovementConstants are read-only views of the same asset.

Inspector fields

Combat clamps

Field Type Default Range Description
Max Resistance (maxResistance) float 0.75 0 to 1 Maximum per-element resistance fraction (hard cap). 0.75 = 75% cap so stacked resistances can’t reach ‘immune’.
Max Evade Chance (maxEvadeChance) float 0.8 0 to 1 Maximum evade chance fraction. 0.80 = at least 20% of hits always land.
Max Crit Chance (maxCritChance) float 1 0 to 1 Maximum crit chance fraction. 1.0 = every swing may crit; stacking past 100% is wasted.
Default Crit Multiplier (defaultCritMultiplier) float 2 ≥ 1 Base multiplier on a successful crit before any stat.crit_multiplier bonus. 2.0 = crit doubles damage; a ‘+50% crit damage’ item adds 0.5 on top.
Armor K (armorK) float 100 ≥ 0.01 K in the armor formula damage × K / (K + armor). Lower = each armor point matters more; higher = smoother diminishing returns.
Min Attack Interval (minAttackInterval) float 0.1 ≥ 0.01 Floor on attack interval (seconds) after attack-speed modifiers. Prevents unbounded DPS from stacked haste.
Max Cooldown Reduction (maxCooldownReduction) float 0.8 0 to 1 Hard cap on cooldown-reduction fraction. 0.80 = a 10s spell bottoms out at 2s.
Thorns Filter (thornsFilter) VtThornsFilter PhysicalOnly Which incoming damage triggers stat.thorns reflection. PhysicalOnly = classic spiked armor (casters punch through); All = every direct hit is reflected.
Out Of Combat Threshold (outOfCombatThreshold) float 5 ≥ 0 Seconds without an incoming or outgoing hit before a unit counts as out of combat. Drives CombatOnly / OutOfCombatOnly regen. 5s is a common choice for action RPGs.

Abilities

Field Type Default Range Description
Global Cooldown (globalCooldown) float 1.5 ≥ 0 Global cooldown in seconds after a GCD-triggering cast. Abilities opt in via triggersGcd and opt out of respecting it via ignoresGcd. 1.5s is typical for MMO-style combat.
Min Cast Time (minCastTime) float 0 ≥ 0 Cast times below this floor (seconds) are treated as instant. 0 = no floor.
Min Ability Cooldown (minAbilityCooldown) float 0 ≥ 0 Floor on ability cooldown (seconds). 0 = zero-cooldown abilities allowed (the GCD still governs them).
Max Ability Queue Depth (maxAbilityQueueDepth) int 1 ≥ 0 How many ability presses a unit buffers while mid-cast. 0 = presses during a cast are dropped; 1 = one buffered press fires when the cast resolves.
Cast Pushback Seconds (castPushbackSeconds) float 0.5 ≥ 0 Seconds a hit adds to the cast bar of an ability whose Damage Reaction is Pushback. The bar never grows past its full cast time.
Channel Pushback Fraction (channelPushbackFraction) float 0.25 0 to 1 Share of the full channel duration a hit removes from a channel whose Damage Reaction is Pushback. 0.25 = each hit takes away a quarter of the channel.
Max Pushbacks (maxPushbacks) int 2 ≥ 0 How many hits can push back one cast, and separately one channel. Later hits do nothing. 0 = hits never push back.

Projectiles

Field Type Default Range Description
Projectile Arrival Radius (projectileArrivalRadius) float 0.3 ≥ 0.01 Distance (world units) from the target at which a projectile counts as arrived and resolves damage.
Projectile Max Lifetime (projectileMaxLifetime) float 10 ≥ 0.1 Safety limit on projectile lifetime (seconds). A projectile that hasn’t arrived by then self-destructs.
Projectile Spawn Height (projectileSpawnHeight) float 1 Spawn height above the caster’s transform.position (world units). 1.0 puts the projectile at roughly shoulder / bow height.

Threat

Field Type Default Range Description
Heal Threat Ratio (healThreatRatio) float 0.5 ≥ 0 Fraction of a heal that becomes threat on the healer, on every hostile already engaging the healed unit. 0.5 = healing 100 adds 50 threat.
Taunt Multiplier (tauntMultiplier) float 1.1 ≥ 1 A taunt sets the caster’s threat to the current top × this. 1.1 = 10% above whoever was leading, so one taunt sticks for a beat under continued damage.
Call For Help Ratio (callForHelpRatio) float 0.25 ≥ 0 Fraction of damage propagated to faction-mates within aggroRange (‘call for help’). 0 disables propagation. Per-unit override on VtThreatAutoSubscriber.

Multiplayer

Field Type Default Range Description
Interact Range Tolerance (interactRangeTolerance) float 1.5 ≥ 0 Extra world units past a pickable’s own radius that the authority still accepts an interact command from a client at. Covers replication lag between the client’s and the authority’s idea of where the player stands.
Max Commands Per Second (maxCommandsPerSecond) float 15 ≥ 0 Commands the authority accepts from one unit per second, on average. 0 = no limit. A burst up to Command Burst is allowed before the average applies.
Command Burst (commandBurst) int 10 ≥ 1 How many commands a unit may send at once before the per-second limit applies.
Interest Margin (interestMargin) float 2 ≥ 0 Extra world units past a viewer’s vision radius within which other units are still sent to that client. Hides the edge of vision from pop-in.
Interest Update Interval (interestUpdateInterval) float 0.25 ≥ 0.05 Seconds between visibility passes on the server when interest management is on.

Party

Field Type Default Range Description
Party Max Size (partyMaxSize) int 5 ≥ 2 Most members a party may have.
Party Share Range (partyShareRange) float 40 ≥ 0 Party members within this many world units of a kill share its XP, currency and quest credit. 0 = any distance.
Party Xp Bonus Per Member (partyXpBonusPerMember) float 0.1 ≥ 0 Extra XP per additional member sharing a kill, as a fraction of the award. 0.1 with three members pays 120% split three ways.
Loot Reserve Seconds (lootReserveSeconds) float 30 ≥ 0 Seconds a drop from a party kill is reserved for that party when its loot rule is Party Reserved. 0 = never reserved.

Dropped items

Field Type Default Range Description
Default World Item Prefab (defaultWorldItemPrefab) GameObject None World item spawned when a unit drops an item from its bag and the item sets no World Item Prefab. Must hold a VtWorldItem. Empty: such items cannot be dropped.
Drop Distance (dropDistance) float 1 ≥ 0 How far in front of the unit a dropped item lands, in world units.

Chat

Field Type Default Range Description
Chat Max Length (chatMaxLength) int 255 ≥ 1 Longest chat line in characters after cleaning.
Chat Say Range (chatSayRange) float 30 ≥ 0 World units a Say line reaches.
Chat Yell Range (chatYellRange) float 120 ≥ 0 World units a Yell line reaches.
Chat Messages Per Second (chatMessagesPerSecond) float 1 ≥ 0 Chat lines one player may send per second on average. 0 = no limit.
Chat Burst (chatBurst) int 5 ≥ 1 Chat lines one player may send at once before the per-second limit applies.
Chat History Size (chatHistorySize) int 100 ≥ 1 Received lines kept per player for the chat window.
Chat Allow Rich Text (chatAllowRichText) bool Off Keep markup tags in player chat. Off strips them so players cannot inject rich text.

Guilds

Field Type Default Range Description
Guild Name Min Length (guildNameMinLength) int 3 ≥ 1 Shortest guild name.
Guild Name Max Length (guildNameMaxLength) int 24 ≥ 1 Longest guild name.
Guild Max Members (guildMaxMembers) int 200 ≥ 1 Most members a guild may have.
Guild Invite Seconds (guildInviteSeconds) float 60 ≥ 1 Seconds a guild invite stays open.
Guild Motd Max Length (guildMotdMaxLength) int 200 ≥ 1 Longest guild message of the day; longer text is cut.

Friends

Field Type Default Range Description
Friends Max Count (friendsMaxCount) int 200 ≥ 1 Most in-game friends one player may have.
Friend Requests Max Pending (friendRequestsMaxPending) int 50 ≥ 1 Most unanswered friend requests one player may receive.
Friend Request Expiry Days (friendRequestExpiryDays) float 30 ≥ 0 Days before an unanswered friend request is dropped. 0 = never.

Mail

Field Type Default Range Description
Mail Subject Max Length (mailSubjectMaxLength) int 64 ≥ 1 Longest mail subject after cleaning.
Mail Body Max Length (mailBodyMaxLength) int 1000 ≥ 1 Longest mail body after cleaning.
Mail Max Attachments (mailMaxAttachments) int 8 ≥ 0 Most item and currency lines one mail may carry.
Mailbox Max Count (mailboxMaxCount) int 100 ≥ 1 Most mails a mailbox holds before players can no longer send to it. System mail ignores the cap.
Mail Expiry Days (mailExpiryDays) float 30 ≥ 1 Days before mail expires. Player mail with attachments returns to its sender; other mail is deleted.

Movement feel

Field Type Default Range Description
Acceleration (acceleration) float 15 ≥ 0 Ramp from 0 to top speed, in units/s². Higher = snappier starts.
Rotation Speed (rotationSpeed) float 720 ≥ 0 Turn rate toward the movement direction, in degrees per second.
Waypoint Reach Distance (waypointReachDistance) float 0.2 ≥ 0.01 Distance at which a waypoint counts as reached and path following advances.
Unreachable Tolerance (unreachableTolerance) float 1 ≥ 0 If a path’s endpoint is farther than this (planar) from the requested destination, the destination is unreachable and movement does not start. Per-request override: MoveTo(…, acceptPartialPath: true).
Stuck Abort Time (stuckAbortTime) float 0.5 ≥ 0 Seconds of sub-threshold movement before stuck recovery skips the current waypoint.
Stuck Movement Threshold (stuckMovementThreshold) float 0.25 0 to 1 Fraction of full speed below which the agent counts as not moving for stuck detection.
Gravity (gravity) float 20 ≥ 0 Downward acceleration while the CharacterController is airborne (units/s²).

Server-authoritative movement

Field Type Default Range Description
Movement Reconcile Threshold (movementReconcileThreshold) float 1 ≥ 0 A predicting client snaps to the authority’s position when the two differ by more than this many world units on the ground plane. Smaller corrects sooner and more visibly.
Movement Reconcile Speed (movementReconcileSpeed) float 8 ≥ 0 How fast a predicting client closes a correction, as a fraction per second. 8 removes most of it in a quarter second; 0 snaps at once.
Replica Follow Speed (replicaFollowSpeed) float 10 ≥ 0 How fast a replica follows the authority’s position, as a fraction per second. 10 closes most of the gap in a tenth of a second; 0 snaps instantly.

Scripting API

Member Description
static VtTuning Instance { get; } The live tuning: the one handed to OverrideInstance, else your Assets/Resources/VtTuning.asset, else the package’s defaults. If neither asset exists, an in-memory instance with the compiled defaults is used and a warning logs once.
static void ResetCache() Forgets the cached tuning so the next Instance read loads the asset again. Use it after swapping the asset in the editor, or in test teardown after OverrideInstance.
static void OverrideInstance(VtTuning instance) Use instance as the live tuning, such as a copy a boot scene references or a test’s CreateInstance<VtTuning>() with a few fields changed. Call it before gameplay starts. Pass null to behave like ResetCache.

Enums

VtThornsFilter

Selects which incoming damage is eligible for stat.thorns reflection. Game-wide toggle via VtCombatConstants.ThornsFilter; default PhysicalOnly.

Value Description
All Every direct hit reflects, except True damage and damage over time.
PhysicalOnly Only incoming VtDamageType.Physical hits reflect, so spell casters are not punished by thorns.