CozyCrate Docs
Customer documentation · August 2026 edition

Build your own cozy packing game.

A practical guide to running, reskinning, balancing, extending, testing, and shipping the CozyCrate Unity asset.

Unity 6000.0.62f1 Universal Render Pipeline 17.0.4 Input System 1.11.2 uGUI + TextMesh Pro Windows, Android & WebGL build tools

No matching section

Try a broader search such as “item”, “day”, “save”, or “build”.

01 · Overview

What this asset gives you

CozyCrate is a complete, data-driven 2D packing-sim foundation. Runtime rules live in plain C# services; content and tuning live in ScriptableObjects; the presentation is assembled by event-driven uGUI views.

30

Starter items

Apparel, electronics, tools, groceries, toys, cosmetics, media, homeware, and curiosities.

8 + ∞

Day structure

Eight guided curriculum days followed by deterministic procedural progression.

14

Upgrades

Workspace, storage, tools, automation, comfort, and cosmetic upgrades with live effects.

6

Clients

Category-based item pools, reputation gates, purchase gates, payout multipliers, and brand theming.

4

Box sizes

Distinct S, M, L, and XL cartons with continuous visual placement and footprint validation.

3

Difficulty modes

Chill, Normal, and Rush profiles control timers, penalties, bills, fines, and campaign pressure.

The central ideaChange content in assets; change rules in services; change presentation in views. The catalog joins those layers without putting scene references into your data.

02 · First run

Quick start

  1. Open the project in Unity 6000.0.62f1. Using the exact editor patch is recommended. The project uses URP 17.0.4 and the Unity Input System 1.11.2.
  2. Use the Welcome to CozyCrate window. It opens automatically on the project's first Editor session and links directly to the Boot scene, documentation, Content Wizard, validation, and any missing setup. Choose Close for now to hide it for the session or Don't show again to disable startup display for this project.
  3. Let Unity import packages and assets. If TextMesh Pro prompts for resources, import the essentials or use CozyCrate > Import TMP Essentials.
  4. Open Assets/CozyCrate/Scenes/Boot.unity. Boot is the composition root and should be the first scene in Build Settings.
  5. Press Play. Boot loads the catalog, settings, save, audio service, and Main Menu. Starting or continuing a run opens Workshop.
  6. Validate before modifying. Run CozyCrate > Validate Content. A clean starter package reports zero problems.
Do not begin with “Generate All Content” on a customized copy.The generator intentionally re-stamps values on starter assets. It is safe for restoring the stock package, but it can overwrite tuning changes made directly to shipped assets.

03 · Technical map

Architecture and runtime flow

Three deliberately small scenes host a runtime-built application. A single service graph owns game state, while views react through an EventBus.

BootCore services, catalog, settings, save, audio
Main MenuNew game, continue, difficulty, options
GameSessionCreates the services for one playthrough
WorkshopBuilds backdrop, HUD, tablet, tutorials
Day loopWork, report, between-days, next day

Assembly direction

CozyCrate.App          Composition: Bootstrapper, AppFlow, GameSession
  CozyCrate.UI         Runtime uGUI views, HUD, tablet, tutorials
  CozyCrate.Progression  Shift lifecycle, reputation, upgrades
  CozyCrate.Economy      Payouts, money, bank, loans, bills
  CozyCrate.Systems      Suspicious-order consequences, optional cat service
  CozyCrate.Audio        Audio routing and procedural fallback
  CozyCrate.Gameplay     Orders, packing, validation, item processes
  CozyCrate.Data         ScriptableObject schemas and ContentCatalog
  CozyCrate.Core         Events, service access, saves, settings, utilities

Rules layer

Services such as PackingService, OrderService, EconomyService, and ProgressionService own state and behavior. They are testable without a scene.

View layer

MonoBehaviours build and update UI. Views subscribe to events and call public service methods; they should not duplicate validation or economy rules.

The gameplay loop

Read order slip -> arrange intake -> process dirty/broken items -> choose a box
-> place items -> apply protection -> attach handling/address labels -> seal
-> drag parcel to conveyor -> validate -> payout -> finish quota -> daily report
-> tablet: restock / shop / clients / bank / settings -> next day

The ShippingValidator is the final authority. Missing box, items, address, or seal cause a hard reject. Lesser mistakes produce payout penalties and report feedback.

04 · Project map

Where everything lives

Assets/CozyCrate/
|-- ArtSources/               Curated editable source textures
|-- Data/                     ScriptableObject content and configuration
|   |-- Boxes/ Clients/ Consumables/ Items/ Stickers/ Upgrades/
|   |-- Config/               GameConfig, UITheme, difficulty profiles
|   |-- Localization/         String-table overrides
|   `-- Shapes/               Item footprint definitions
|-- Documentation/            Single customer guide and licensing reference
|-- Editor/DataTools/          Wizards, generators, validator, build menu
|-- Resources/CozyCrate/       Catalog, art, audio-library asset
|-- Scenes/                    Boot, MainMenu, Workshop
|-- Scripts/                   App, Audio, Core, Data, Economy, Gameplay...
|-- Tests/                     EditMode and PlayMode suites
`-- Third Party Notices.txt    AI-assisted content and included-content notices

Packages/manifest.json         Unity package versions
ProjectSettings/               Rendering, input, player/build settings
Master registryAssets/CozyCrate/Resources/CozyCrate/Catalog.asset references every definition used by the game. A valid asset that is not registered there will not appear at runtime.

05 · Data-driven content

The content model

Definitions are assets; runtime objects refer back to them. Stable lowercase IDs are used in saves, prerequisites, inventory, and lookups.

DefinitionControlsFolder
ItemDefinitionName, category, footprint, weight, handling flags, condition chances, value, spriteData/Items
BoxDefinitionS-XL size, logical dimensions, price, stock/cap, open and closed spritesData/Boxes
ClientDefinitionBrand, category pool, reward multiplier, gates, order-size limits, artData/Clients
ConsumableDefinitionInitial stock, capacity, restock price/amount, tray spriteData/Consumables
StickerDefinitionHandling type, art/tint, sheet consumption mappingData/Stickers
UpgradeDefinitionPrice, prerequisites, kind, one or more typed effects, iconData/Upgrades
FootprintShapeSOOccupied logical cells and rotation behaviorData/Shapes
DifficultyProfileTimer, failure rule, penalty/bill/fine pressureData/Config
GameConfigCampaign pacing, reward curves, penalties, finance, events, thresholdsData/Config
UIThemeGlobal palette, category colors, visual constantsData/Config

ID rules

  • Use unique, lowercase, stable identifiers such as item_tea_kettle.
  • Do not change an ID after publishing a build unless you also migrate existing saves.
  • Asset filenames may change; runtime identity comes from the definition's id.
  • Run CozyCrate > Validate Content after additions or dependency changes.

06 · Content recipe

Create items and footprint shapes

No code for standard items

Recommended: Content Wizard

  1. Open CozyCrate > Content Wizard and select Item.
  2. Set display name, category, footprint, weight, base value, and rotation.
  3. Enable the requirements the shipping validator must enforce: fragile, hazard, keep dry, or orientation-sensitive.
  4. Set dirty/broken arrival probabilities if the item should use a processing mini-game.
  5. Assign a sprite now or leave it empty for a fallback, then click Create Item. The wizard creates, registers, saves, and validates it.

How an item enters generated orders

An item becomes eligible when it is registered in the catalog and at least one unlocked client includes its ItemCategory. Later procedural days sample that client-filtered pool.

Visual size versus logical footprint

Sprite silhouette

Determines what the player sees and supports alpha-aware overlap checks. Trim excessive transparent margins so the painted object fills the texture sensibly.

Footprint shape

Defines logical packing occupancy and rotation. Use the custom inspector on a shape asset to paint occupied cells. Share shapes between similar items.

Fragile conventionThe wizard makes fragile items non-rotatable by default. You can change this on the generated asset if your design and artwork support rotation.

Manual creation

Duplicate a nearby item asset, give it a new ID, adjust its fields, and add it to Catalog.asset > items. Manual creation is useful for copying a carefully tuned family of items.

07 · Level design

Create and tune days

There is not one Unity scene per level.The Workshop scene remains loaded. A “level” is a generated DayPlan containing a quota and orders, while ShiftController moves between Working, Report, and BetweenDays phases.

Days 1-8: authored curriculum

DayNewly taughtWhere controlled
1Basic packing, peanuts, address code, tape, shippingOrderGenerator.GenerateTutorialDay()
FeatureUnlocks.cs
TutorialDirector.cs
2Gift handling and knife/unsealing recovery
3Bubble wrap and fragile handling
4Heavy handling
5This Way Up
6Keep Dry
7Chemical hazard
8Radioactive hazard; suspicious-order system becomes eligible

Modify or add an authored introduction day

  1. Add or update the unlock constant in Scripts/Gameplay/FeatureUnlocks.cs.
  2. Add a matching case in OrderGenerator.GenerateTutorialDay(). Use existing registered item IDs and ensure each order fits a box.
  3. Update TutorialDirector so help appears when the new action is actually relevant.
  4. Make the tray tool obey the same unlock day, following TrayView.AddLock().
  5. Move the procedural-day boundary in OrderGenerator.GenerateDay() if the curriculum becomes longer than day 8.
  6. Add assertions to OrderGeneratorTests and a PlayMode flow test.

Day 9 onward: seeded procedural progression

Procedural days use the run seed, current day, unlocked clients, and these GameConfig.asset curves:

Curve / fieldEffect
quotaByDayHow many orders must be handled that day.
itemsPerOrderByDayTarget item count before each client's min/max clamp.
specialHandlingByDayBias toward items with handling requirements.
rushChanceByDayChance for a time-bonus rush order.
rewardGrowthByDayCampaign reward scaling.
giftChanceBase chance of gift orders.
suspiciousFirstDay + chanceWhen at most one suspicious order per day can enter.

Make the campaign longer, faster, or harder

Edit the curve keys in GameConfig.asset. Curves clamp outside their authored range, so add later keys if you want difficulty to keep changing after the current final key. Re-run balance and order-generation tests afterward.

ReproducibilityThe same seed, day, and unlocked client set produce the same plan. Preserve per-day RNG forking if you extend generation; consuming random values on earlier days should not reshuffle later days.

08 · Brands and progression

Create a client

No code
  1. Open CozyCrate > Content Wizard > Client.
  2. Choose one or more item categories. Those categories form the client's procedural item pool.
  3. Set the value multiplier, unlock reputation, optional unlock price, item-count range, and special-handling bias.
  4. Add an original name, color, blurb, and logo art, then create the asset.

startsUnlocked clients are always restored as available, including on fresh saves. Other clients reveal when total reputation reaches their threshold. Free clients unlock immediately; priced clients can then be purchased in the tablet's Clients app.

Order-generation safetyEvery client needs at least one category, and its category pool should contain enough distinct registered items to satisfy its maximum item count. The generator falls back safely, but a healthy pool creates better variety.

09 · Packing model

Boxes, placement, and shipping validation

The player experiences loose, direct placement. Underneath, logical footprints and alpha-aware silhouettes keep items in bounds and prevent invalid overlap.

Open art

BoxDefinition.sprite is the box used while packing, including its distinct dimensions and flaps.

Closed art

closedSprite is the finished parcel appearance. Use box-specific artwork instead of scaling one generic carton.

Logical capacity

grid defines occupancy: shipped defaults are S 2x2, M 3x2, L 3x3, and XL 4x3.

Add or modify a box

  1. Duplicate the closest BoxDefinition in Data/Boxes.
  2. Give it a unique ID and an unused or intentionally shared BoxSize strategy.
  3. Set logical dimensions, cost, initial stock, capacity, and correctly framed open/closed sprites.
  4. Register it in Catalog.asset > boxes, ordered from smallest to largest if size-based selection should remain intuitive.
  5. Test the new capacity with BoxFitter, placement, seal/unseal, drag-to-conveyor, and shipping.

Protection and correctness

  • Packing peanuts are required for every shipped carton and count as a consumable.
  • Fragile items require bubble protection and the fragile handling label.
  • The correct address is a hard requirement; an incorrect code returns the parcel.
  • A parcel must contain all required items and be sealed before it can ship.
  • Oversized boxes and incomplete void filling can reduce payout.

10 · Tools and labels

Handling tools, stickers, and consumables

Requirements derive from the order type and item flags. A sticker is a freely positioned visual mark on the carton, while validation records its semantic type.

RequirementSourceDefault introduction
AddressEvery parcel's unique three-digit destinationDay 1
GiftOrderType.GiftDay 2
Fragile + bubbleItemDefinition.fragileDay 3
Heavyweight == HeavyDay 4
This Way UporientationSensitiveDay 5
Keep DrykeepDryDay 6
Chemicalhazard == ChemicalDay 7
Radioactivehazard == RadioactiveDay 8

Add a new handling type

Code extension
  1. Append a new value to StickerType. Avoid reordering serialized enum values.
  2. Create and register a matching StickerDefinition plus its sheet ConsumableDefinition.
  3. Derive the requirement from an item/order property in Order.RequiredStickers().
  4. Add its unlock day in FeatureUnlocks and tutorial behavior in TutorialDirector.
  5. Add any penalty field to GameConfig and validate it in ShippingValidator.
  6. Test the correct, missing, and wrong-label cases.

11 · Purchasables

Create upgrades and effects

Use an existing effect type

  1. Open CozyCrate > Content Wizard > Upgrade.
  2. Set name, kind, price, description, effect type/value, and optional prerequisite.
  3. Create the asset. It is registered and validated automatically.
  4. Play through the real tablet Shop app and verify purchase, live effect, affordability state, and save/reload.
Effect familyExamples
CapacityPackingSlots, BoxStockCap, ConsumableStockCap
ToolsTapeSpeed, OneClickSticker, AutoAddress, AutoCleanBrush
AutomationPrefetchHelper, BillReduction
Comfort/cosmeticCatCalm, TapeColor, DeskSkin

Add a brand-new effect

Code extension

Append an EffectType value and implement its aggregation in ProgressionService.RecomputeEffects(). That method is the intended seam between purchased definitions and live systems. Persist only the purchased upgrade ID; aggregates are rebuilt after load.

12 · Presentation

Retheme the UI, replace art, and add audio

Global visual theme

Edit Assets/CozyCrate/Data/Config/UITheme.asset. It contains the shared palette and category colors read by UIFactory and placeholder rendering. Runtime UI is composed in Scripts/UI; change layout there or replace individual builders with prefabs while keeping the same service/event contract.

Sprite workflow

  1. Place production art under Assets/CozyCrate/Resources/CozyCrate/Art/ in the appropriate subfolder.
  2. Run CozyCrate > Prepare Generated Art. The importer configures Sprite/Single, transparency, no mipmaps, clamp, sRGB, 100 PPU, and suitable size/compression.
  3. Assign the resulting sprite to the relevant Item, Box, Sticker, Client, Upgrade, or Consumable asset.
  4. For general UI panels/buttons, preserve the intended 9-slice borders or configure equivalent borders in Sprite Editor.
  5. Test at 16:9, a narrower aspect ratio, and each available UI scale setting.
Transparent margins matterLarge empty borders make an object look small and can make placement feel inaccurate. Crop sprites consistently, keep the complete silhouette, and test alpha-aware collision with representative neighbors.

Audio overrides

Add clips to Assets/CozyCrate/Resources/CozyCrate/AudioLibrary.asset. Each entry maps a string ID to an AudioClip. Common IDs include tape, coin, cat_meow, and music beds menu, work, and report. Missing entries fall back to procedural audio.

Settings separately control master, music, and SFX volume. Test override clips at every slider extreme and ensure loops do not click.

13 · Text

Localization and customer-facing strings

Strings_EN.asset is a key/value override table. Views request text through L.Get(key, English fallback). This makes it possible to replace wording without editing each view.

  1. Search Scripts/UI for L.Get( to inventory existing keys.
  2. Add or edit matching keys in Data/Localization/Strings_EN.asset.
  3. For another language, create another StringTableSO and select it at boot before UI construction.
  4. Replace the TMP font asset if the target language needs additional glyph coverage.
  5. Test long strings at the largest UI scale, especially top bars, tray cards, order slips, tablet buttons, tutorials, and reports.
Layout ruleDo not hard-code text pixel widths when adding a view. Give labels flexible space, controlled wrapping, and an explicit overflow strategy.

14 · Tuning

Economy, difficulty, and campaign balance

GameConfig.asset

Global pacing curves, base fee, reward growth, penalties, bonuses, par time, finance rates, event chances, reputation awards, and the win threshold.

Difficulty profiles

Timer behavior, day duration, quota-failure rule, penalty multiplier, suspicious fines, bill multiplier, and interest multiplier.

Per-order payout model

payout = round(baseReward x accuracy x boxEconomy x speed x suspiciousMultiplier)
         + rushBonus - boxCost - suppliesCost

Accuracy is reduced by the weighted infractions configured in GameConfig. Box economy rewards appropriately small cartons. Timed modes can award speed bonuses. The daily settlement then applies rent, utilities, bank interest, loan interest, pending fines, and upgrade modifiers.

Safe balancing loop

  1. Duplicate the project or commit before broad tuning.
  2. Adjust one family at a time: pacing, payout, penalties, or bills.
  3. Run BalanceCurveTests to simulate a competent campaign.
  4. Play representative early, middle, and late days on all three difficulties.
  5. Verify bank, loan, client, restock, and upgrade affordability in the tablet.

15 · Persistence

Saves and settings

cozycrate_save.json

Run state: day, cash, bank, loan, karma, seed, wins, fines, clients, reputation, upgrades, selected tape, stock, stats, and net history.

cozycrate_settings.json

Player preferences: master/music/SFX, UI scale, reduce motion, colorblind labels, and key bindings. It survives Delete Save.

Both files are human-readable JSON under Application.persistentDataPath. On Windows with the shipped company/product identifiers, that normally resolves under:

%USERPROFILE%\AppData\LocalLow\Szekipapa77\CozyCrate\

Autosave behavior

  • A day-start snapshot is written when a shift begins.
  • Day completion stores the next morning's state.
  • Quitting during work keeps the morning snapshot so the shift replays safely.
  • Content references use stable IDs, not Unity object references.

Evolve the schema

Add fields with safe defaults, increment schemaVersion, and chain migration logic in SaveService.Migrate(). Test an old JSON fixture, a fresh save, and a current save. If you rename a content ID, migrate every saved list/key that can contain it.

16 · Workflow

Editor tools

CozyCrate menu commandPurposeUse with care
Welcome & DocumentationReopens the customer welcome hub, quick-start actions, project status, and guide links.Startup display is controlled by Show Welcome On Project Open.
Content WizardCreates and registers Items, Clients, and Upgrades with sensible defaults.Preferred routine workflow.
Validate ContentChecks IDs, nulls, footprints, sticker stock links, prerequisites, categories, and starter content floors.Run after every content change.
Setup AllImports TMP essentials, generates starter content/scenes, then validates.Can re-stamp shipped asset values.
Generate All ContentRestores the starter ScriptableObject catalog from ContentGenerator.cs.Back up customized starter assets first.
Generate ScenesRecreates Boot/MainMenu/Workshop and resets Build Settings to those scenes.Back up scene customizations first.
Import TMP EssentialsEnsures TextMesh Pro resources required by player builds.Safe.
Prepare Generated ArtReimports production-art textures with the package policy.Applies to the CozyCrate Art folder.
Build Windows x64Release build to Builds/Windows/CozyCrate.exe.Uses enabled Build Settings scenes.
Build Windows x64 (Development + PlaytestBot)Development player prepared for automated UI smoke testing.Launch with -playtest.
Build Android APK (Landscape)Universal ARMv7/ARM64 APK at Builds/Android/CozyCrate.apk.Sets landscape-only autorotation, IL2CPP, and the CozyCrate application identifier.
Build WebGLBrowser build at Builds/WebGL.Uses uncompressed files for straightforward static hosting.

17 · Quality assurance

Test before you publish

Open Window > General > Test Runner. Run both EditMode and PlayMode suites after functional changes.

EditMode coverage

Box placement/rotation, silhouette overlap, fitting/backtracking, shipping rules, payout/economy math, order determinism, tutorial days, mini-games, JSON round trips, and campaign balance.

PlayMode coverage

Boot and Workshop flows, shipping, address rejection, recycle/unseal, suspicious orders, saves, tutorial progression, and extensive tablet bank/shop/restock/client/settings behavior.

Manual regression checklist

  • Start a clean save in Chill, Normal, and Rush.
  • Complete days 1-8 and confirm tools unlock only when introduced.
  • Move items in intake; pack, rotate, reject overlap, and fill each carton size.
  • Apply correct and incorrect addresses and each handling label.
  • Seal, unseal, recycle, drag a completed parcel, and verify sorting order/tutorial overlays.
  • Purchase every upgrade and priced client; restock every supply; deposit/withdraw/borrow/repay.
  • Save, exit, relaunch, and verify balances, stock, progression, settings, and visuals.
  • Check narrow, wide, and standard resolutions plus every UI-scale setting.

Development playtest bot

Build with the development command, then launch CozyCrate.exe -playtest. The bot operates the real UI and writes screenshots and a PASS/FAIL log beneath Application.persistentDataPath/playtest/. Treat it as a smoke test, not a replacement for the full Test Runner or human UX review.

18 · Delivery

Build and export

Windows player

  1. Run all content validation and tests; resolve Console errors.
  2. Confirm Build Settings order: Boot, MainMenu, Workshop.
  3. Review Company Name, Product Name, version, icons, default resolution, and URP quality.
  4. Choose CozyCrate > Build Windows x64.
  5. Run Builds/Windows/CozyCrate.exe on a clean machine/profile and test save creation.

Android landscape APK

  1. Install Android Build Support, SDK/NDK Tools, and OpenJDK for Unity 6000.0.62f1.
  2. Review Android icons, package identifier, minimum API level, and signing before a store release.
  3. Choose CozyCrate > Build Android APK (Landscape).
  4. Install Builds/Android/CozyCrate.apk on representative landscape phones and tablets and verify touch targets.

WebGL player

  1. Install WebGL Build Support for Unity 6000.0.62f1.
  2. Choose CozyCrate > Build WebGL.
  3. Serve the complete Builds/WebGL directory over HTTP(S); opening index.html directly from disk is unsupported.
  4. Verify loading, pointer input, audio activation, saving, fullscreen behavior, and responsive scaling in current desktop browsers.

Unity Asset Store package hygiene

  • Include Assets/CozyCrate and avoid unrelated project content.
  • Keep this Documentation folder inside the asset root so customers can reach it immediately.
  • List Unity 6000.0.62f1 and URP 17.0.4 as the verified environment.
  • Keep all required licensing and attribution information in the licensing section of this guide.
  • Import the exported package into a blank compatible URP project and repeat Quick Start.

19 · Extension seams

Common code recipes

Add a new item-processing mini-game
Implement IItemProcess, following CleanProcess or RepairProcess. Map the relevant condition in ProcessRegistry, create the UI interaction in the mini-game panel, and add pure-logic plus PlayMode tests.
Add a fourth difficulty
Append a Difficulty enum value, create a DifficultyProfile, register it in Catalog.asset, expose it in the mode-selection UI, and add tests for timing, penalties, bills, and save parsing.
Add a new tablet app
Follow the builders in Scripts/UI/Tablet/TabletApps.cs. Keep state changes in a service, let the app call that service, publish events for cross-view updates, and ensure opening the tablet pauses/blocks gameplay consistently where appropriate.
Replace a runtime-built view with a prefab
Keep the same service calls and EventBus subscriptions, instantiate your prefab from the owning bootstrap/view, and unregister listeners in OnDestroy. Confirm Canvas scaling, raycast order, drag regions, and tutorial overlay sorting.
Enable or replace the cat mechanic
The shipped GameSession constructs CatService with enabled: false, so no gameplay cat appears. To opt in, change that composition choice, restore an appropriate view/mascot, review catFirstDay and difficulty frequency, and re-run cat/system tests.
Change the win condition
For a different cash target, edit GameConfig.winThreshold. For a new kind of goal, extend the win check in the economy/progression flow, update SaveData, build the corresponding UI, and test that the event triggers once without blocking free play.

20 · Licensing & included content

What is included and where it came from

CozyCrate ships as an editable game template. This section summarizes licensing and attribution; the top-level Third Party Notices.txt provides the buyer-facing AI-assisted content disclosure and affected-content list.

Code

The C# source in Scripts, Editor, and Tests was created for CozyCrate and is included as editable source with the asset.

Production art

Raster sprites and backgrounds under Resources/CozyCrate/Art were created specifically for this package. No third-party stock image pack is redistributed. Curated editable source textures are stored in ArtSources.

Procedural visuals and audio

PlaceholderSprites supplies original code-generated fallback graphics when authored sprites are not assigned. Default effects and music beds are synthesized by ProceduralSfx and ProceduralMusic; CozyCrate does not redistribute third-party audio clips.

Font and Unity packages

TextMesh Pro's Liberation Sans assets are distributed by Unity under the SIL Open Font License 1.1. The original OFL text remains with Unity's TextMesh Pro package resources. URP, Input System, uGUI/TextMesh Pro, Test Framework, and other Unity packages remain subject to Unity's applicable terms.

Your responsibilities when extending the template

  • Confirm commercial-use and redistribution rights for every art, audio, font, text, code, or brand you add.
  • Keep attribution and license material supplied with third-party content you import.
  • Do not ship added content when its commercial-use or redistribution rights are unclear.
  • Review target-platform and Unity-package terms before publishing your modified game.
Original identityCozyCrate, its fictional client brands, and its fictional character names were created for this package.

21 · Help

Troubleshooting

“Catalog asset missing” appears in the Console
Confirm Assets/CozyCrate/Resources/CozyCrate/Catalog.asset exists. Restore a stock copy with Generate All Content only after backing up custom starter assets.
My new item never appears
Verify it is in Catalog.asset > items, has a footprint, and shares a category with an unlocked client. Tutorial days 1-8 are explicitly authored and will not sample arbitrary new items.
Text is missing or TMP errors occur in a build
Run CozyCrate > Import TMP Essentials, check the TMP font/reference, then rebuild. For translated text, confirm the font contains the required glyphs.
UI looks stretched, clipped, or leaves its panel
Check the Canvas Scaler/reference resolution, anchors, layout groups, preferred sizes, and text overflow behavior. Test at the largest UI scale and a narrower aspect ratio. For 9-sliced art, verify sprite borders were preserved.
Sprite looks too small or overlap feels wrong
Inspect transparent margins and sprite framing. The object should occupy a consistent proportion of its texture. Then verify its footprint, PPU, and alpha-aware silhouette tests.
A parcel refuses to ship
Hard rejects include no box, missing required items, incorrect/missing address, and unsealed state. Read the conveyor feedback, correct the parcel, and try again. Soft mistakes ship with a payout reduction.
A customized value returned to its default
Setup All and Generate All Content re-author shipped definitions from ContentGenerator.cs. Restore your version-control copy or mirror permanent default changes into the generator.
Where do I reset a local test profile?
Use the in-game Delete Save confirmation, or remove cozycrate_save.json from the persistent data folder while the player is closed. Settings are stored separately.
Still stuck?Include your Unity version, platform, exact reproduction steps, Console error/stack trace, and a screenshot or short video when contacting support.
↑