Skip to content

Data Cheat Sheet

Basic Terms:

  • id
    • The unique identifier that Unity uses to identify and link the asset
    • Naming conventions are flexible and at the user's discretion
  • dataName
    • The filename of the Unity asset to be created
    • Naming conventions are flexible and at the user's discretion
    • Doesn't need to match the ID
  • Generator
    • An element that produces currency over time
    • Analogous to a business in TPB or a scheme in Always Sunny
  • Content
    • The "environment" of the current game, a container for stages, generators, etc
    • Ex: In TPB, the main game would be one content, while an event would be its own content.
  • Stage
    • The gameplay in between ascensions, made up a generators, a set of goals, and usually a plotline.
    • Ex: In TPB, each "season" is a stage.
  • Ascension
    • The act of moving from one stage to the next.
    • The player loses all their Generator Units and Game Currency, but retains all other progress.
  • isContentSpecific
    • Defines whether an asset is tracked across all contents or is tracked separately for each content it is included within
    • TRUE would mean that any game data will be ignored for this asset when not in the content it originated in
    • FALSE would mean that game data for this asset will persist across all Content
    • Ex: In TPB, liquor (a soft currency) is Content specific because you cannot access it while in events, while hashcoins (a hard currency) are Content non-specific as the balance carries over from main game to events.

Modifier Category:

  • categoryType
    • can be either GeneratorPayout, GeneratorSpeed, AscensionPower, GeneratorUnitCost
  • operation
    • Can be either * or + to set as multiplicative or additive
  • Priority
    • The order in which modifiers are applied
    • The lowest number goes first
    • On TPB we use modifier logic = (Sum of Additive Modifiers)*(Product of Multiplicative Modifiers)

Ascension Reward:

  • allowAsRewardWhenUnowned
    • Setting as TRUE will allow the designer to award upgradeableCurrency that the player has never received before.
    • Setting as FALSE will limit rewards to only ones that have been previously rewarded.
    • For example, this could be used in TPB to control whether the reward will give out a new character unlock from a boss trunk, or limit to only cards for previously owned characters.
  • ascendPower
    • Value used to determine what reward a player gets when ascending
    • How it is used is determined by the game team. Could be used in a tapping mini-game like the Fuck Off fights in TPB or could just be compared to the ascendPowerRequired with no player interaction to return the reward (a la Always Sunny)
  • ascensionRewardGroups/"x"/ascendPowerRequired
    • The ascendPower needed to return a specific reward
    • Functionally, the threshold for each prize tier in the ascension reward
    • The "x" indicates the position in the array. Functionally, this is the level or tier of the reward.
  • ascensionRewardGroups/"x"/rewardIds/"y"
    • The rewards given for reaching "x" tier
    • Can receive more than one reward. The "y" indicates which reward in the array.
    • In TPB, the convention was to give one more reward per tier to clearly communicate value to the player in the boss fight.
    • Ex: Tier 1 = 1 Reward, Tier 2 = 2 Rewards, Tier 3 = 3 Rewards, etc.
    • Note: this is not a requirement, columns can be adding to the CSV to alter the number of rewards per tier by simply incrementing the "y" value by 1

Generator Data:

  • associatedCurrencyIds
    • Linkage to an upgradeableCurrency object
    • Used to associate the modifiers from the upgradeableCurrency to the Generator
    • Ex: In Always Sunny, the Patty's Pub scheme (a Generator) is linked to the Patty's Pub card (an Upgradeable Currency) via this field

Generator Unit Target Data (conversationally: "Target")

  • Generator Unit
    • A number associated with a Generator used to calculate its payout
    • Ex: Customers in TPB or Always Sunny
    • Usually purchased with game currency
  • Generator Unit Target
    • A numerical threshold for Generator Units that will give the player a modifier and a reward when reached
    • Ex: Customer Bonuses in TPB.
    • Functional Case: Get 1000 customers for the Dirty Dancer to apply a x5 modifier to the business payout and get some random cards.
  • Generator Unit Target Data
    • This data defines a singular Generator Unit Target to be used and re-used in Generator Unit Target Sequence Data
  • generatorUnitAmount
    • The number of Generator Units needed by the player to hit a Generator Unit Target
  • rewardId
    • The currency/gacha reward given to the player when they achieve the target
  • NOTE: Target Modifiers are defined in Generator Balance Data

Generator Unit Target Sequence Data (conversationally: "Target Sequence")

  • generatorUnitTargetIds/n
    • An Id that references the Target Data
    • "n" must be sequential and can be extended to any length
    • Leaving a row blank after your last desired value will end the sequence

Generator Balance Data:

  • This data defines the variables for a generator that change on a stage by stage basis.
  • costToBuy/buyCurrencyId
    • Cost and currency to "build/open" the generator for the first time in the stage
  • costToAutomate/automateCurrencyId
    • Cost and currency to automate the generator for the stage
    • KNOWN ISSUE: Currently you must have a cost here or the game will throw a null reference. Expected behavior would be, that if there is no values defined, then the generator is not able to be automated. Bug is logged.
  • upgradeableCurrencyAutomationRequirements/n/upgradeableCurrencyId
    • Used to specify an upgradeable currency level requirement for being able to purchase automation
    • n can incremented to add more than one requirement
    • The currency is not spent in the upgrade, it acts as a gate to purchasing it
    • Leaving this blank results in no requirement
  • upgradeableCurrencyAutomationRequirements/n/upgradeableCurrencyLevel
    • Specify the level of the n requirement that gates access to purchasing automation
  • basePayout
    • The payout of the generator with no modifiers applied
  • payoutCurrencyId
    • The currency of the Generator payout
  • baseGeneratorUnitCost
    • The cost of the first Generator Unit
  • generatorUnitCurrencyId
    • The currency used to purchase Generator Units
  • baseSpeed
    • Time in seconds that a Generator will take to payout
  • rampingCoefficient
    • A variable used to control how quickly the cost of Generator Units ramps
    • Formula: payout = x+x(y^n), where:
      • x = Generator Base Cost
      • y = Ramping Coefficient
      • n = the number of Generator Units owned
    • A higher ramping coefficient will result in the cost of Generator Units getting more expensive faster as you buy them
  • upgradeableCurrencyBuyRequirements/n/(upgradeableCurrencyId/upgradeableCurrencyLevel)
    • The requirement of a specific upgradeable currency at a certain level to gate buying/building the business for the first time in each season
    • Example: I can't open Kitten Mittens unless I have Charlie Level 3
    • Only acts as a gate, these resources are not used in the purchase
    • Note: This is not used in TPB and was introduced in Sunny
    • Leaving it blank results in having no requirement
  • generatorUnitTargetModifierDatas/0/affectAll
    • TRUE/FALSE
    • TRUE: GeneratorTargets affect all generators in the stage
    • FALSE: GeneratorTargets do not affect all generators in the stage and you must define a specific Generator in the following field
  • generatorUnitTargetModifierDatas/0/modifiableId
    • The specific Generator to be affected by Target modifiers
    • If affectAll = TRUE, leave this field blank
    • Most commonly the Generator affects itself
  • generatorUnitTargetModifierDatas/0/modifierCategory
    • What parameter the Target modifier affects
    • Attach a ModifierCategory data asset here (ex: category_generator_payout_multiplicative)
  • generatorUnitTargetModifierDatas/x/amounts/y
    • The modifier value at the yth place in in the Target Data Sequence
    • These values overwrite the previous value and set a new modifier, they do not act on each other.

Content Data:

  • stagePlaythroughStyle
    • 0 = non-looping
    • 1 = looping
    • Looping playthough is currently being proven out in Sunny, recommendation is to use non-looping to start. Can be converted later if desired.
  • startingCurrencyAmounts/n/(currencyId/currencyAmount)
    • The currencies that the player starts the content with
    • Includes upgradeable currency, which is used to unlock characters at the start of the game
    • You can increment n to add more entries in the array
  • timerGachaId
    • Specifies the gacha data to use for the timer gacha feature
    • NOTE: Feature not currently implemented
  • currencyBonusIds/n
    • Populates an array with upgradeable currency IDs that have a currency bonus modifier
    • Currency Bonus Modifier is a bonus to the amount of currency you get from the timer gacha
    • NOTE: Feature is not currently implemented
  • stageSequenceData
    • Number of stages in the content
    • Sequence will be played in order by the player when ascending
  • playthroughIterationData
    • Used to force specific Stage Data based on number of playthroughs the player has done
    • This is used with a looping playthrough style to account for reusing stages that were part of the FTUE or for making bigger balance changes not handled by the automatic scaling of the looping system
  • stageSequenceData/x/playthroughIterationData/y/
    • x = the stage number
    • y = the number of iterations of stage data for looping playthroughs
  • stageSequenceData/x/playthroughIterationData/y/playthrough
    • The playthrough threshold at which the game will serve a new stage data when replaying a stage
  • playthroughIterationData/x/playthroughSeasonPairs/y/stageDataId
    • The Id of the stage data to serve to the player
  • INSERT SCREENSHOT OF UNITY DATA
  • Content Data also has some data for dynamically scaling stage data based on playthough count. This will be filled in once proved out in Sunny.
  • Requirement Increments are for scaling playthroughs for looping stages, not required for non-looping data.

Currency Reward:

  • Define specific rewards for use in goals, gacha, ascension rewards, etc
  • Can be either currency or upgradeable currency

Random Rarity Currency Reward:

  • Define a rarityId and when rewarded the game will return a random currency of that rarity
  • All items in the pool have an equal weight
  • Most commonly used for giving rewards like "5 Rare Character Cards" or "10 Common Business Cards"

Gacha Reward:

  • Gachas can have a configurable number of slots
  • Each slot has its own pool of items
  • Each item in a pool has its own weight
  • A gacha will always return one item for each slot (ie: # of slots = # of items)
  • gachaSlots/x/gachaItems/y
    • You can increase the number of slots by incrementing x
    • You can increase the number of items in the pool by incrementing y
  • gachaSlots/x/gachaItems/y/allowAsRandomReward
    • TRUE/FALSE
    • TRUE will allow rewards that you have never owned in the past (ie new unlocks)
    • FALSE will exclude any unowned rewards from the pool

Goals:

  • rewardID
    • This can be a currency reward or gacha reward
  • Difficulty Increment
    • Only used for looping stages. Not currently used in the provided balance.
    • Set as "1"
  • AutomateGeneratorsGoal
    • Automate a number of generators
    • Ex: "Automate 3 businesses"
  • AutomateSpecificGeneratorGoal
    • Automate a single specific generator, referenced by id
    • Ex: "Automate the Dirty Dancer"
  • BuySpecificGeneratorGoal
    • Buy a single specific generator, referenced by id
    • Ex: "Build the Dirty Dancer"
  • CollectCurrenciesOfRarityGoal
    • Collect x number of items from a specific rarity
    • Ex: "Collect 10 Common Cards"
  • CollectCurrencyGoal
    • Collect a specific amount of Currency
    • Ex: "Collect 5.00E+08 Cash"
    • "any" field would allow you to collect any currency, value should be TRUE or FALSE, if TRUE, then the currencyId field should be left empty
  • CollectUpgradeableCurrencyGoal
    • Collect a specific amount of Upgradeable Currency
    • Ex: "Collect 10 Ricky Cards"
    • "any" field would allow you to collect any currency, value should be TRUE or FALSE, if TRUE, then the currencyId field should be left empty
  • CollectFromSpecificGeneratorGoal
    • Collect a specific amount of Currency from a specific business
    • Ex: "Collect 5.00E+08 Cash from the Dirty Dancer"
  • DynamicCollectCurrencyGoal
    • Collect a variable amount of Currency
    • This goal will look at what generators you currency have automated, calculate the currency per second and sets a currency target based on the secondsUntilComplete value
    • This value is calculated when the goal is reached by the player and doesn't change once created
    • The "amount" field is for a manual fallback value in case no generators are automated
      • This will be replaced with an automatic calculation in the future based on non-automated business power
    • To the player, this goal is not distinguishable from a standard Collect Currency goal
  • GetGeneratorUnitsForAllGeneratorsGoal
    • Get all Generators to a specific number of Generator Units
    • Ex: "Get 1000 Customers for all Businesses"
  • GetGeneratorUnitsForGeneratorsGoal
    • Get a specific number of Generators to a specific number of Generator Units
    • Ex: "Get 1000 Customers for 5 Businesses"
  • GetGeneratorUnitsForSpecificGeneratorGoal
    • Get a specific Generator to a specific number of Generator Units
    • Ex: "Get 1000 Customers for the Dirty Dancer"
  • GetTotalGeneratorUnitsGoal
    • Get a total number of Generator Units from any Generator
    • Ex: "Get 10000 Total Customers"
  • GetUpgradesForSpecificCurrencyGoal
    • Upgrade
    • Ex: "Upgrade Ricky 3 times"
  • HitGeneratorUnitTargetsGoal
    • Hit Generator Targets
    • Starts count after the goal is created, not retroactive for stage
    • Ex: "Get 100 Customer Bonuses"
  • SpendCurrencyGoal
    • Spend a specific amount of Currency
    • Ex: "Spend 1000 Liquor"
  • UpgradeAnyCurrencyGoal
    • Upgrade any Upgradeable Currency
    • Ex: "Perform 3 Upgrades"

Stage Data:

  • Start Currency
    • Currency credited to the player at the start of the stage
    • Commonly used to give the player enough soft currency to purchase their first generator
  • ascensionRewardId
    • Linkage to asset
  • plotpointSequenceControllerId
    • Not yet implemented. Can be left blank.
    • Plot Points are cutscenes, which are triggered by completing x number of goals in a stage.
  • generatorStageData/n/generatorId
    • Reference for the nth Generator Data
  • generatorStageData/n/generatorBalanceId
    • Reference for the nth Generator's Balance Data
  • generatorStageData/n/generatorUnitTargetSequenceId
    • Reference for the nth Generator's UnitTargetSequence Data
  • goalDataSequences/n/goalIds/0
    • GoalId = the individual goal
    • GoalDataSequence = an array of goals
    • Commonly there are 1-3 Goal Sequences running parallel in each Stage
    • The reference id for the 0th goal in the nth sequence of goals

Upgradeable Currency:

  • upgradeLevelDatas/n/upgradeRequirements/0/requirementId
    • The 0th requirement id for the nth level of the Upgradeable Currency
  • modifierDatas/n/affectAll
    • TRUE/FALSE
    • TRUE: Upgrades affect all generators
    • FALSE: Upgrades do not affect all generators and you must define a specific Generator in the following field
  • modifierDatas/n/modifiableId
    • The specific Generator to be affected by upgrades
    • If affectAll = TRUE, leave this field blank
  • modifierDatas/n/modifierCategoryId
    • Reference the desired ModifierCategory asset here
  • modifierDatas/n/amounts/0
    • The 0th modifier for the nth upgrade bonus
    • An Upgradeable Currency can affect more than one Generator, or a single Generator's speed and payout within a single upgrade level

Exchangeables:

  • An entity that can be exchanged. The only requirement of an exchangable is that it must have an exchangable value. A Currency is an example of a Exchangeable. \

Tag:

  • Used to define a special property that can be applied to an entity such as an exchangable asset within the game. See Tags for more details.

Rarity:

  • A specific type of tag used to define how rare an exchangable asset is within the game. Rarity can be used when trading exchangables. See Rarity for more details.

Exchange Rate:

  • An entity that can be used to calculate a rate when trading two exchangable items, such as currencies. See Exchange Rate for more details.