Jewel Coloring — Buyer Guide

Unity 6000.0.62f1 · Universal Render Pipeline · LocalQA handoff candidate

Overview

Jewel Coloring is a portrait colour-by-gems puzzle with 500 levels. Every board is a picture of sockets, each tinted with the colour it wants, filled with gems of the wrong colours. Tap a gem to select its connected same-colour group, then tap an empty socket of that colour to send the group there, or tap the shelf to park it. Completing a colour opens more shelf slots. The level is won when every gem is home and the shelf is empty; it is lost when you park a group while the shelf is already full. Level 1 (the tutorial) and level 200 are the two recorded boards of the original game; the other 498 are generated from a saved seed.

Getting Started

  1. Create or open a Unity 6000.0.62f1 project that uses the Universal Render Pipeline, the Input System package (activeInputHandler = Input System or Both) and Unity UI. Import TextMesh Pro Essential Resources when prompted. The optional glTFast package (com.unity.cloud.gltfast) is only needed to re-import the .glb model masters; the shipped prefabs work without it.
  2. Import this package. Two roots appear: Assets/Game (game, scene, levels, tools) and Assets/HyperCasualLiveOpsKit (menu, economy, LiveOps, boosters).
  3. Assign a URP pipeline asset in Graphics/Quality settings (the tested PC/Mobile assets are in Assets/Game/ProjectRenderSettings) and set Player → Color Space to Linear.
  4. Add Assets/HyperCasualLiveOpsKit/StarterMenu/Scenes/HLK_MainMenu.unity first and Assets/Game/Scenes/Game.unity second to the build list, open the menu scene and press Play. Choose a level or press Play Next Level.
  5. Open Tools → JewelColoring → Documentation for this guide, Level Editor / Auto Level Generator for the tools.

Folder Structure

FolderContents
Game/Scripts/CorePure C# rules: GameSim (60 Hz simulation), LevelData (JSON contract), Witness (tap sequences, replay, solver), MiniJson.
Game/Scripts/Game, Game/Scripts/UIPresentation: camera/viewport, board and shelf views, models, HUD, the level catalog.
Game/IntegrationThe HLK bridge (level selection, pointer gating, single reward settlement, analytics, audio cues) and the booster adapter.
Game/Resources/LevelsLevel_1.json … Level_500.json plus CampaignAuthoring.json (editor metadata, never a level).
Game/LevelSourcesThe two recorded levels, unchanged, used as authored sources for slots 1 and 200.
Game/Resources/Models, Materials, ShadersGem, socket and shelf models (three switchable sets), materials and the jewel shaders.
Game/LevelTools, Game/ProductionLevelToolsThe level editor and generator (game adapter plus the shared framework).
Game/ProjectRenderSettingsTested URP pipeline/renderer assets.

Gameplay

Scripts Reference

ScriptRole
GameSimAll rules: selection, dispatch, parking, unlocks, boosters, win/loss, events. Deterministic, engine-free.
LevelDataParses cells (recorded levels) or compact layout rows (campaign) and validates gem/socket conservation.
WitnessTap codec, settle/replay, greedy solver, seeded players and a fixed losing route.
GameControllerLoads a level, routes pointer input (tap on release), ticks the simulation, hosts the HUD. LevelCatalog counts numbered levels only.
BoardView, HudView, ViewportRendering of board/shelf/effects, HUD, and the portrait column fit.
JewelHlkBridgeKit menu level selection, ad/UI pointer gate, one settlement per attempt (coins, progress, results), jewel_level_end analytics, audio cues, camera listener ownership.
JewelPowerUpAdapterBinds the three boosters to the kit power-up bar.

Level Editor

Tools → JewelColoring → Level Editor opens the shared window. The left list holds the campaign; Duplicate, Delete, Up/Down and Undo (Ctrl+Z) manage it. The canvas draws the real board at its grid positions: socket colours, gem previews, and the 24-slot shelf with open/locked slots and arrivals. Tools: Paint socket, Paint gem, Empty socket, Remove socket with the colour swatches (the nine recorded colours plus ten measured from the original's screenshots), grid size (+C/−C/+R/−R, the pitch refits automatically), open shelf slots and arrivals. The readout shows gem/socket counts per colour. Every edit clears the witness: press Solve witness, then Validate + save. Saving validates every level (geometry, gem size, colours, conservation, witness replay, variety and chapter rules) and publishes through a staging folder; invalid campaigns leave the existing JSON untouched. Play saved level opens the game on that level.

Automatic Level Generator

The same window (also Tools → JewelColoring → Auto Level Generator) holds the saved request: final count, seed, attempts per level, minimum formations (80), maximum formation streak (2) and append mode. Generate into editor builds the campaign in memory; review it on the canvas, then save. Generation is deterministic for a seed. Every generated board is a pixel-art picture of an object, as in the original: one of 70 subjects in JewelPictures (fruit and food, household objects, toys, plants, animals, vehicles) drawn from simple shapes, with an automatic one-cell outline, a darker shade band and, for the background variant, a backdrop with a frame or ground band. The generator draws the picture at the level's size and gives it exactly the chapter's number of colours. Levels 2–3 use the 20 simplest silhouettes. The older geometric formations (27 silhouettes × 15 colour-region patterns) remain available to the tools. Each chapter sets colours, board size, scramble style, arrivals and open slots (see Level Variation). Every generated level carries a witness proven by replaying it through GameSim. Levels 1 and 200 are placed from Game/LevelSources.

Boosters

BoosterEffectUnlocks
Magic WandSends one gem of the selected colour (or the next unfinished colour) to its socket; a gem sitting there swaps back.Level 2
Paint BrushFills every unfinished socket of that colour, one gem after another.Level 7
MagnetPulls one shelved gem into an empty socket of its colour.Level 12

Each booster grants two free charges once at its first legitimate unlock. Zero-stock actions open the refill flow. Inventory, first-use tutorials and the DEV Unlock/Refill/Tutorials controls come from the kit power-up bar. A press that cannot change the board costs nothing.

Level Variation

LevelsChapterColoursFeatures
1Tutorial2Recorded level 1; the Magic Wand unlocks at level 2
2–3Park and place2Small simple pictures that read at a glance, whole-region scrambles
4–5First pictures3–4Full-size pictures, some on a background
6–15Shaped pictures3–4All picture subjects; the Paint Brush unlocks at level 7 and the Magnet at level 12
16–35Silhouettes4–5More parts per picture and longer solution paths
36–70Shelf arrivals4–6Gems arrive on the shelf first
71–120Scattered pieces5–6More, smaller groups
121–190Tight shelf5–7Nine open slots
191–280Big pictures6–7Recorded level 200 scale
281–380Dense pictures7–8Six-slot starts
381–500Master pictures8–9Look-alike colours, tight shelves with arrivals

Board size is a property of the picture, not of the difficulty ramp: from level 4 on, boards hold roughly 80–920 sockets and a small picture can follow a large one. Difficulty grows through the number of colours, the number of groups and the length of the solution. Every x5 level from 25 is a lighter relief level (one fewer colour, a smaller board). No formation appears more than twice in a row.

Customization Guide

Level Format

Each Level_N.json holds the palette and tints of its colours, the grid (columns, rows, centre and pitch as fractions of the portrait frame), the compact layout (one string per row; target letters are socket colours via legend, initial letters are the starting gems, . an empty socket, a space no socket), the shelf (active, locked, preplaced arrivals), timings and HUD data, plus index and the witness taps (c=cell, s=shelf slot, t=tray). Level 2 (a T-shirt), shortened:

{
 "id": "Level_2", "number": 2,
 "palette": { "orange": [249, 172, 33], "navy": [92, 136, 171] },
 "grid": { "cols": 8, "rows": 8, "centerU": 0.5, "centerV": 0.3775, "pitchU": 0.10576 },
 "layout": {
  "legend": { "a": "orange", "b": "navy" },
  "target":  ["   bb   ", "bbbaabbb", "baaaaaab", " baaaab ", " baaaab ", " baaaab ", " baaaab ", " bbbbbb "],
  "initial": ["   aa   ", "aaabbaaa", "abbbbbba", " abbbba ", " abbbba ", " abbbba ", " abbbba ", " aaaaaa "]
 },
 "shelf": { "active": 12, "locked": 12, "preplaced": [] },
 "index": 2,
 "witness": "c0 t c5 c0 s0 c5 c16 c23 s0 c16 c22 t c29 c22 s0 c29 c17 c37 s0 c17"
}

Support

Questions and bug reports: satisvizion@gmail.com. Please include the Unity version, the level number and the editor console output.