Car Sort — Buyer Guide

Unity 6000.0.62f1 · Universal Render Pipeline · LocalQA handoff candidate

Overview

Car Sort is a portrait traffic-sorting puzzle with 500 levels, 91 referenced road layout IDs in the current campaign, nine car colours and hidden mystery pairs. Dispatch cars from parking bays, manage road capacity and complete matching destinations. Existing artwork and working boosters have been preserved.

Getting Started

  1. Create a Unity 6000.0.62f1 Universal 3D project. Install Input System 1.14.2, Universal RP 17.0.4 and Unity UI 2.0.0. TextMesh Pro is supplied through Unity UI in Unity 6.
  2. Import TMP Essential Resources from Window → TextMeshPro before importing this package. Preserve its default GUIDs.
  3. Import the candidate unitypackage. Wait for compilation. Set Active Input Handling to Both or Input System in Player Settings.
  4. Assign the supplied Car Sort URP pipeline asset to Graphics and all used Quality tiers.
  5. Add HLK_MainMenu then Campaign to the build scene list. Open Assets/HyperCasualLiveOpsKit/StarterMenu/Scenes/HLK_MainMenu.unity and press Play.
  6. Use Tools → Car Sort → Documentation, Level Editor and Auto Level Generator.

The unitypackage contains Assets, not ProjectSettings. The separate import test proves the setup above; it does not silently install production service credentials.

Folder Structure

Assets/_CarSort contains the game runtime, scenes, art, integration and buyer editor tools. Resources/Levels contains numbered level JSON and Resources/CampaignLayouts contains road definitions and baked prefabs. Assets/HyperCasualLiveOpsKit contains the shared menu, economy and provider interfaces.

Gameplay

Select an available bay to dispatch its leading pair. Road occupancy and merging constrain movement. Complete colour groups to clear the puzzle; filling the road can cause a loss. Mystery cars stay dark with a question mark until the cars ahead move; their colour then reveals with animation and effects. Retry starts the level again. Coins, progress and settings persist locally.

Scripts Reference

TypeResponsibility
CarSortGameManagerDispatch rules, traffic, win/loss and original boosters
CarSortCampaignBootstrapLoads selected JSON, cars and road formation
CarSortCampaignCameraFitFits gameplay into the portrait area with HUD clearance
CarSortHlkBridge / CarSortPowerUpAdapterConnects outcomes and boosters to HLK
CarSortCampaignAuthoring / CarSortCampaignSolverValidated campaign publication with ordinary-error rollback and bounded solution validation
CarSortCampaignEditor / CarSortAutoGeneratorBuyer-facing level tools

Level Editor

Open Level Editor. Select a numbered level to inspect its road and car icons. Paint colour pairs, toggle mystery status, change road capacity and edit custom road/bay geometry in the visual canvas. Duplicate, reorder or delete levels with the document undo stack. Duplicates must be edited before saving: identical boards are rejected. Validate selected checks the real level model with bounded search. Save validates the campaign before replacing its JSON folder and rolls back ordinary publication errors. An abrupt process or filesystem failure can leave staging or previous folders that require recovery; a failed validation does not replace the campaign. Back up the project before replacing content.

Play saved level opens Campaign. Unsaved edits must be saved first. A custom layout is baked before publishing. Keep every car visible, large enough to read, and inside the usable portrait area.

Automatic Level Generator

Open Auto Level Generator. Save the seed, count, append/replace mode, colour range, mystery introduction and road capacities. Append preserves the existing prefix; replace evaluates authored inputs and changed levels for suitable placement. Evaluation and generation reports go to Artifacts/Phase04 outside the package roots. The included campaign baseline distinguishes unchanged generated boards from authored edits on the first run.

Generation is deterministic for the same settings and inputs. Each accepted board has a replayable solution. Independent greedy-policy rates are diagnostics, not human win rates or optimality proofs. Cancellation or an exhausted search budget does not publish partial JSON. A 500-level generation is a content operation, not a startup requirement.

Boosters

Inventory and offers are connected to the shared PowerUpBar. Preserve working game mechanics when replacing visual assets. The current booster icons and tutorial illustrations are bound to the existing definitions. Exact file hashes, ImageGen prompts and provenance are preserved in the delivery kit; original supplied model rights still require owner confirmation.

Level Variation

The campaign rotates the 91 referenced road layout IDs in the current campaign, introduces more colours and mystery pairs, increases mixing and traffic pressure, and includes recovery levels. Level 1 is intentionally short. Reusing a road later with different occupancy and challenge is expected; long consecutive runs of the same formation are not. Camera fitting must be checked at narrow and wide portrait ratios after geometry changes.

Customization Guide

Change art through materials, prefabs and level art references; retain serialized GUIDs when updating assets. Edit the StarterMenuConfig resource for menu/economy presentation and the PowerUps configuration for stock/offers. Use nine supported colour identifiers unless extending the runtime, editor and solver together. Provider credentials and store product IDs must be supplied for your own application; current LocalQA services are not proof of production ads or purchases. The current presentation uses sound effects without a music soundtrack.

Level Format

Current level 4 JSON is shown below. number is one-based; seat and solution bay indices are zero-based. Each pair represents two cars. Pair sign marks mystery status; absolute colour IDs are 1–9 and zero is invalid. layout resolves a road asset and matching prefab through Resources.

{
  "version": 1,
  "number": 4,
  "roadCapacity": 12,
  "layout": "ref_switchback_20",
  "lesson": "Match the front cars",
  "solution": [],
  "bays": [
    {
      "seat": 0,
      "pairs": [
        1,
        1,
        2
      ]
    },
    {
      "seat": 2,
      "pairs": [
        1,
        1
      ]
    },
    {
      "seat": 4,
      "pairs": [
        2,
        2,
        2
      ]
    }
  ]
}

Support

Contact satisvizion@gmail.com. Include Unity version, a minimal reproduction and Console errors. Do not send service secrets. Read the root AI-DISCLOSURE.txt for provenance status before redistribution.

Current delivery and examples

Unity 6000.0.62f1 / URP. Support: satisvizion@gmail.com.

Buyer roots: Assets/_CarSort, Assets/HyperCasualLiveOpsKit. Internal production, build and upload folders are excluded. The kit is an owner-approved first-party asset.

Current campaign: 500 levels. Use the shipped Level Editor and Auto Level Generator menu entries: Tools/Car Sort/Documentation, Tools/Car Sort/Level Editor, Tools/Car Sort/Auto Level Generator.

Current complete level example

Assets/_CarSort/Resources/Levels/Level_4.json

{
  "version": 1,
  "number": 4,
  "roadCapacity": 12,
  "layout": "ref_switchback_20",
  "lesson": "Match the front cars",
  "solution": [],
  "bays": [
    {
      "seat": 0,
      "pairs": [
        1,
        1,
        2
      ]
    },
    {
      "seat": 2,
      "pairs": [
        1,
        1
      ]
    },
    {
      "seat": 4,
      "pairs": [
        2,
        2,
        2
      ]
    }
  ]
}

Level fields

FieldJSON type
versionint
numberint
roadCapacityint
layoutstr
lessonstr
solutionlist
bayslist

Safe worked editing procedure

  1. Open Level 4 in the Level Editor and duplicate it into an unused slot.
  2. Use the editor’s supported controls for a small placement change; keep legal occupancy and required targets. Do not invent JSON fields.
  3. Run the shipped validator, correct any rule errors, save, then open the duplicate in gameplay and complete it.
  4. For generation, record the current seed, request a small append batch using the exposed controls, validate its solutions and confirm the previous campaign prefix is unchanged. Cancelling must leave the campaign unchanged.

Run these procedures in a clean import of the final candidate before claiming buyer acceptance; restore test additions afterward.

Current booster policy

{
  "schemaVersion": 1,
  "gameId": "carsort",
  "defaultProfileId": "default",
  "initialGrant": 2,
  "refillAmount": 1,
  "baseCoinCost": 100,
  "coinCostStep": 25,
  "levelsPerPriceStep": 10,
  "rewardedTimeoutSeconds": 90,
  "boosters": [
    {
      "id": "carsort_shuffle",
      "unlockLevel": 2,
      "rewardedPlacementId": "booster_refill_carsort_shuffle",
      "reason": "Staged introduction: first level has no boosters; each later booster unlocks separately."
    },
    {
      "id": "carsort_road_space",
      "unlockLevel": 7,
      "rewardedPlacementId": "booster_refill_carsort_road_space",
      "reason": "Staged introduction: first level has no boosters; each later booster unlocks separately."
    },
    {
      "id": "carsort_priority",
      "unlockLevel": 12,
      "rewardedPlacementId": "booster_refill_carsort_priority",
      "reason": "Staged introduction: first level has no boosters; each later booster unlocks separately."
    }
  ]
}

Hosting, native-device tests and live-service verification are separately recorded in the delivery handoff. A local build is not proof of a hosted release.

Fonts

Unity-provided defaults only: TextMesh Pro default font for TMP text and LegacyRuntime.ttf for legacy Unity UI. Official TMP Essentials must be installed. Do not add custom font files or atlases. Any historical custom-font references above describe an older revision; they are not current dependencies.

Demo and publishing configuration

Current source verified on 2026-10-09. The Android download is a development demo with debug signing; WebGL is a LocalQA showcase. Ads are included as LiveOps provider adapters and test/local configuration; vendor SDKs and production credentials are not bundled in the buyer package. Native device and live store certification remain pending.

For product help, contact SatisVizion at satisvizion@gmail.com

See Third-Party Notices.txt in the package for the verified dependency and license inventory.

HyperCasual LiveOps Kit manual