Tribute — Battle Pass & Season Track Generator for Unity
A downloadable asset pack
The battle pass screen, drawn from your own reward table. Claim a reward and it redraws.
Tribute composes the season track a live game shows its players: a season banner with its own motif, a progress rail, and one plate per tier in a free lane and a premium lane, each carrying a drawn emblem chosen from the reward's own name. Locked, claimable and claimed rewards each get their own treatment, so a player sees what is left to take without reading a label.
Hand it a season (a name, the tiers, the free and premium reward on each, and the player's progress) and it hands back an ordinary Texture2D. Nothing on the page is an imported image: every emblem, banner, plate and letter is drawn by the C# in the package, and the package ships no font.
What it draws: 61 hand-authored emblems
- 51 reward emblems: coins and coin stacks, gems, crystals, ingots, tokens, chests, pouches, crates, card packs, outfits, hats, capes, masks, banners, portrait frames, swords, shields, bows, helms, axes, staffs, wands, potions, scrolls, keys, tickets, boosts, stars, crowns, trophies, medals, pets, mounts, eggs, emotes, sprays, stickers, music tracks, maps, food, laurels, rings, amulets, feathers, dice, gifts, hearts, hourglasses, lanterns and books.
- 10 season banner motifs: snowflake, flame, leaf, wave, moon, crown, circuit, sun, skull and star.
The emblem comes from the reward's own words, whole-word: "Epic Chest" draws a chest, "XP Boost" draws a bolt. A name the corpus does not know gets a stable emblem from a hash of itself, so a tier is never blank.
What your data does to the screen
- The season's name picks the livery: seven of them (Frost, Ember, Verdant, Tide, Dusk, Gilt, Neon), and the banner motif. "Frostfall" is Frost; "Pirate Tide" is Tide.
- A rarity word colours the rim: common, uncommon, rare, epic, legendary and mythic in the colours players already read. It comes from a Rarity field, or from the name itself ("Legendary Skin"). Nothing is guessed.
- Later tiers are richer: more points on a crown, more coins in a stack, more facets on a gem at tier 50 than at tier 1.
- Progress: the rail fills to the current tier, claimed rewards read pressed and ticked, the claimable ones get a halo, and locked ones stay visible under a light veil with a small padlock, because a locked reward is the incentive.
- Amounts are set under the emblem in drawn figures (250, 1,250).
Built to be recomposed
TributeTrack.Baketouches no Unity object, so it runs off the main thread (the Readme's recipe usesTask.Run);ToTextureuploads the result.- Emblem tiles are cached: claiming one reward and composing again redraws only the emblem that changed.
- Tiles are drawn on worker threads. The pixels are identical either way, and the test suite compares them byte for byte.
- Long seasons are paged, and the default page is the one holding the player's current tier.
var season = new SeasonPass { Name = "Frostfall", Subtitle = "Season 7" };
season.Tiers.Add(new TierEntry(new RewardEntry("Gold", 250), new RewardEntry("Legendary Skin")));
season.Tiers.Add(new TierEntry(null, new RewardEntry("Epic Chest")));
season.Progress.CurrentTier = 1;
season.Progress.PremiumOwned = true;
TrackBake bake = await Task.Run(() => TributeTrack.Bake(season, new TrackOptions { Width = 1920, Height = 720 }));
myRawImage.texture = TributeTrack.ToTexture(bake);
Demo scene and editor window
Assets/CSAF/Tribute/Demo/Scenes/TributeDemo.unity: press Play. LEFT and RIGHT change season, UP and DOWN change page, and C claims the next reward and redraws. Assets > Create > CSAF > Tribute > Season makes a season you fill in the Inspector, and Window > CSAF > Tribute composes it, pages through it, lists every emblem and rarity with the word that chose it, and saves a PNG.
Compatibility
- Unity 2022.3 and newer, including Unity 6. Built and tested against 6000.5.7f1.
- Render pipeline agnostic: Built-in, URP and HDRP. The page is rasterised on the CPU into a texture.
- Three named assembly definitions (Runtime, Editor, Demo). No
Resourcesfolder, no shaders, no images, no fonts, no network calls, no third-party packages. - Full, readable C# source: 19 scripts. The same season composes to the same pixels on every machine.
Performance, measured
In a blank project on an AMD Ryzen 7 5825U, a new 1920x720 page took 8.0 to 8.6 s at the default emblem antialiasing and 5.0 to 5.4 s at MarkSamples = 2. Recomposing the same page after a claim took 2.7 to 4.9 s, with 46 of 48 emblem tiles served from the cache. That is a span on one shared machine, not a ceiling, and it scales with pixels: compose when the season or the progress changes, off the main thread for anything a player opens, and never per frame.
Limitations, stated plainly
- The drawn letterforms cover Latin capitals, the figures and a small set of marks. A title outside that set is left empty rather than printed as boxes; set it in your own UI.
- One composition draws one page of one season.
- Tribute draws the screen. It does not store progress, grant rewards or talk to a server; your game already does that and hands Tribute the result.
Documentation: the full guide, also included in the package.
AI disclosure
Code: yes. Graphics: yes, because the code that draws the season track was AI-written; there is no image model anywhere in the art path the buyer runs, and every page is rasterised by the shipped code from hand-authored geometry. The store cover and one gallery plate use a generated illustration as their background. Sounds: no, the package contains no audio. Text and dialog: no.
| Published | 2 days ago |
| Status | Released |
| Category | Assets |
| Author | CSAF — Core Systems Asset Factory |
| Made with | Unity |
| Tags | battle-pass, Generator, Graphical User Interface (GUI), Icons, Loot, Procedural Generation, rewards, sourcecode, Unity, User Interface (UI) |
| Languages | English |
| Links | Homepage |
| AI Disclosure | AI Assisted, Code, Graphics |
Purchase
In order to download this asset pack you must purchase it at or above the minimum price of $14.99 USD. You will get access to the following files:








Leave a comment
Log in with itch.io to leave a comment.