6. Packs¶
6.1 Rarities (UQuickCardsRarities, Content Browser > QuickCards > Rarities)¶
The rarities a deck's cards can have and how likely each is in a pack, from the most common to the rarest ("Rare or rarer" = Rare and every rarity after it).
| Setting | Default | Notes |
|---|---|---|
| Total | (shown) | The chances added up and what that means; chances not adding up to 1 are each shared out of the total |
| Rarities | empty | Name and Chance (0–1) per line |
Blueprint: GetTotalChance, GetChance (Rarity) (its share of the total), FindRarity, GetRarityNames.
Shipped: DA_QC_Rarities_Basic (QuickCards/Data/Rarities): Common 0.60, Uncommon 0.30, Rare 0.08, Legendary 0.02.
6.2 Pack (UQuickCardsPackDefinition, Content Browser > QuickCards > Pack)¶
| Setting | Default | Notes |
|---|---|---|
| Problems | (shown) | What's wrong, checked when the pack's Details open and on every change; also warnings on save and in Validate Assets |
| Display Name | the asset's name | |
| Deck | none | The cards; the chances are its Rarities' |
| Cards Per Pack | 5 | |
| Allow Duplicates (Rules) | on | On: a card can come out as often as its copies in the deck. Off: each card at most once |
| Guaranteed Rarity (Rules) | off | Every pack holds a card of this rarity or rarer (a list of the deck's rarities); if not, its last card goes back and one of those is drawn |
| Pity Rarity (Rules) | off | After Pity Packs packs in a row without this rarity or rarer, the next pack holds one |
| Pity Packs (Rules) | 10 | |
| Own Chances (Rules) | off | A Rarities asset with the same names whose chances replace the deck's for this pack (e.g. a premium pack) |
| Pack Art (Look) | none | The pack's front picture; shown whole, then torn. Empty: a plain Pack Color pack |
| Pack Color (Look) | white | The color of a pack without a picture, and the tint of its picture |
| Tear Line (Look) | 0.12 | Where it tears, from the top (0.02–0.5) |
| Reveal Mode (Look) | Stack | Stack: one at a time, tap or swipe for the next. Fan: all face down in a row, tap each to turn it over |
| Build Up Rarity (Look) | none | This rarity and rarer get a build-up before they're shown |
| Hint Rare Inside (Look) | on | With a Build Up Rarity card inside, gold sparkles and light burst out as it opens |
How a card is drawn (like drawing from a pile): a rarity by its chance, among rarities with copies left; then one of its copies left, so a card with 3 copies is 3 times as likely as a 1-copy card of its rarity, and comes out at most 3 times (once without duplicates). A rarity with no cards (or none left) gives its chance to the others. Asking for more cards than the deck can give makes a shorter pack.
Problems lists: no deck; a deck without Rarities; cards with no rarity (never in packs); a rarity with a chance but no cards; Own Chances missing a rarity; a guarantee or pity with no rarity picked or no card that can keep it; "8 cards per pack, but the deck has only 7 unique cards: packs will hold 7" (or only N cards, with duplicates).
Blueprint: GetRarities (the deck's), GetChances (Own Chances or the deck's), HasBuildUp (Rarity), FindProblems.
Example: DA_QC_Pack_Example (QuickCards/Data/Examples): the example deck, 5 cards, at least one Rare or rarer,
pity on Legendary after 10 packs; the placeholder pouch (T_QC_Placeholder_Pack), Tear Line 0.07, Stack, build-up
from Rare.
6.3 Opening a pack (UQuickCardsPackOpener, palette: QuickCards > Packs)¶
Open Pack (Pack, Seed, Packs Without Pity Card = 0) returns a Pack Result: Cards (in reveal order), Rarities (each card's, for reveal effects), Packs Without Pity Card (save it with the player and pass it to the next Open Pack), Pity Used, Guarantee Used. The same seed and count always give the same pack; Make Random Seed gives a new seed each call. Seeds are mixed, so packs 1, 2, 3... are unrelated. Tested over 100,000 packs: rarity shares within 0.5% of their chance, copies weighting and caps, duplicates off, short packs, guarantee, pity, Own Chances.
6.4 QuickCards Pack Opening (UQuickCardsPackOpeningWidget, palette: QuickCards)¶
Opens a pack on screen. Steps (each fires On State Changed): Entering (the pack slides in from below) → Awaiting Tear (a dotted line marches along the tear line with an arrow sweeping across) → the player drags across the tear line, starting on its left half, all the way past the far edge (the strip peels with the drag, a jagged white paper edge opens along the line, paper flecks fly off and a rip sound plays as it goes; let go before Tear To Open and it snaps back), or taps the pack, or presses Enter / Space / the gamepad's confirm button → Opening (the strip flies off; the cards rise slowly out of the pack's top, then the pack drops away and they come forward; with a rare inside and the pack's Hint Rare Inside, gold sparkles and light rays burst out) → Revealing → Summary (every card side by side, as big as the screen allows, in as many rows as needed; build-up cards keep a calm glow) → Done (On Pack Finished).
Revealing, Stack: the top card shows face up. Tap or flick it: it flies off (the way it was flicked) and the next shows. Drag it slowly: it leans and follows, and the cards behind it fan out so their frames peek out (a special border on a card further down shows); let go and the stack settles back. Hold it: it opens big (the inspect view). Fan: the cards lie face down side by side; tap each (or Enter for the next) to turn it over, hold a turned card to see it big. Build-up (Build Up Rarity and rarer): the card stays face down, glows (Build Up Color, pulsing) and shakes harder and harder for Build Up Duration, then turns over with a reveal sweep; a tap skips the wait. Summary: tap a card to see it big; tap anywhere else (or Enter) to finish.
| Setting | Default | Notes |
|---|---|---|
| Pack Height | 580 | The pack's height on screen, in UI units (about half of a 1080-pixel screen; its width follows its picture; at most 60% of the widget's height) |
| Pack Same Height As Cards | off | The pack is exactly as tall as a revealed card (Card Height, with its 72% limit) instead of Pack Height; its width still follows its picture, so a card-shaped picture (63 × 88) gives a pack the cards' size (the demo's) |
| Card Height | 640 | A card's height while revealed; at most 72% of the widget's height |
| Summary Card Height | 440 | The most a card's height can be side by side (summary, fan); smaller when the screen needs it |
| Show Rarity Labels | off | Each card's rarity under it in the summary (build-up rarities in Build Up Color) |
| Show Tear Hint | on | The dotted line and arrow; Tear Hint Color (white, 0.9) |
| Tap To Tear | on | A tap on the pack (or Enter) tears it too |
| Tear To Open | 1 | How far across a drag must go: 1 = all the way through; lower lets a shorter drag finish by itself |
| Inspect Cards | on | Hold a card (or tap one in the summary) to open it big; Inspect Widget Class (QuickCards Inspect or yours) |
| Peek Angle | 12° | How far the cards behind the top one fan out when it's dragged |
| Build Up Duration | 1.2 s | |
| Build Up Color | gold | The build-up glow, the summary's glow and labels, a rare inside's sparkles and rays |
| Flip Duration | 0.5 s | A card turning over |
| Card Feel Preset | none | The cards' feel |
| Tear / Open / Rare Inside / Card Show / Flip / Build Up / Rare Reveal Sound (Sound) | QuickCards/Audio/S_QC_* |
Placeholder sounds (original, made in code); replace with yours or clear one. Tear plays every tenth of the tear, a little higher or lower each time |
| Sound Volume (Sound) | 1 | 0 = silent |
| Enter Duration (Advanced) | 0.45 s | |
| Open Duration (Advanced) | 1.8 s | Rising out (the first 45%, slowly), then forward |
| Swipe Distance (Advanced) | 12 | Screen units a press moves before it's a drag or tear, not a tap |
| Flick Speed (Advanced) | 900 | Units per second a drag must be let go at to send the card away (slower: a peek) |
| Hold Time (Advanced) | 0.5 s | |
| Move Speed (Advanced) | 12 | How quickly cards glide |
| Card Class (Advanced) | QuickCards Card | Or your subclass |
Blueprint: StartOpening (Pack, Packs Without Pity Card) (a random draw), StartOpeningWithSeed,
StartOpeningResult (Pack, Result) (a pack opened elsewhere, e.g. on your server), TearOpen (your own button),
Advance (what a tap does now), SkipToSummary, Clear, GetState, GetResult, GetPack, GetCardWidgets,
GetRevealedCount, GetTearProgress, HasRareInside. Inspect Card (Card, Index) is overridable in a Widget
Blueprint made from it (your own card details screen). A Widget Blueprint may also hold a Canvas Panel named "Stage" for
the pack and cards.
Events: On State Changed, On Pack Torn, On Build Up Started and On Card Revealed (widget, card, index, rarity, build-up), On Pack Finished (the result: save the pity count, add the cards to the collection).
Not yet: per-rarity build-up colors, a foil on the pack (planned).