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.