Cross Math Puzzle

Unity game template · SatisVizion · Developer manual

Cross Math Puzzle

Developer manual · Version 1.0.1 · SatisVizion · Documentation revised 26 October 2026

Overview and included content

Drag number or operator tiles from the bank into the empty crossword boxes. Complete the intersecting equations. Watch remaining hearts; some levels add padlocked cells and stars.

This is an editable Unity game template and starting point for your own title. Customize the visuals, copy, level progression and release settings for your audience, then test your changes. The included Android demo is a showcase build; it is not a signing key or a production store submission.

Intersecting arithmetic equations, number and operator tiles, hearts, padlocked cells, stars and authored difficulty progression. The campaign contains 25 authored levels and game-specific procedural continuation. The included service kit is HyperCasual LiveOps Kit. Ads ship in Dummy/simulated mode and IAP is Disabled; third-party advertising/billing SDKs are not bundled.

Installation and first successful play

  1. Back up your project and extract the main ZIP completely. Read Documentation/Documentation.html before importing the package. Offline documents do not require the hosted page to be available.
  2. Install Unity 6000.0.62f1 through Unity Hub. Add Android Build Support (including the matching SDK, NDK and OpenJDK) if building Android, and WebGL Build Support if building browser demos. A supplied source project can be opened with Add project in Unity Hub.
  3. For package import into a new project, select a Universal Render Pipeline template. Use Assets > Import Package > Custom Package and import the complete package. Do not omit the private game Kit, HyperCasualLiveOpsKit, fonts, settings, scenes or their .meta files.
  4. Check Window > Package Manager: Universal RP 17.0.4, Unity UI 2.0.0 and Input System 1.14.2. Standard Unity modules include com.unity.modules.screencapture and com.unity.modules.androidjni. Let Unity finish compilation before opening a scene.
  5. Set Edit > Project Settings > Player > Other Settings > Active Input Handling to Both manually. Restart if Unity requests it. The documented setup is a user action; do not rely on an import hook changing a buyer's Project Settings.
  6. In Edit > Project Settings > Graphics select the supplied URP asset, and check the pipeline assignment for the active Quality level. Retain the packaged Settings assets and GUID references. A pink scene usually indicates a missing pipeline or shader assignment.
  7. Open Assets/Games/CrossMath/Scenes/CrossMath_Mobile.unity. Press Play, focus the Game view, and follow the first-level tutorial: Drag number or operator tiles from the bank into the empty crossword boxes. Complete the intersecting equations. Watch remaining hearts; some levels add padlocked cells and stars.
  8. Stop Play mode before editing source or authored content. Open the landscape scene Assets/Games/CrossMath/Scenes/CrossMath_WebGL.unity and verify the alternate layout as well. Runtime-created UI changes made only in Play mode are not a saved reskin.

Folder structure and source reference

The concrete paths in this manual match this standalone/Codester layout. The game root is Assets/Games/CrossMath. Keep .meta files with their assets so scene, font, sprite and material references remain valid.

Assets/Games/CrossMath/
  Scenes/            Mobile and landscape entry scenes
  Scripts/           Rules, HUD, board view and game data
  Editor/            Game-specific authoring tools
  Resources/         Level JSON, artwork and game audio
  Kit/               Required game runtime and editor helpers
  Documentation/     This manual
Assets/HyperCasualLiveOpsKit/        Included service kit
Assets/TextMesh Pro/              Required text resources
Exact fileWhat to edit or inspect
Assets/Games/CrossMath/Scripts/CmArt.csColour palette, resource artwork loading and generated visual helpers.
Assets/Games/CrossMath/Scripts/CmGen.csProcedural level creation and seed/difficulty rules.
Assets/Games/CrossMath/Scripts/CmLevels.csCampaign data loading, level access and procedural continuation.
Assets/Games/CrossMath/Scripts/CmModel.csLogical board representation and rule state.
Assets/Games/CrossMath/Scripts/CrossMathGame.csMain game lifecycle, progression, input/rule orchestration and booster handlers.
Assets/Games/CrossMath/Scripts/CrossMathGame.Hud.csRuntime HUD, menu and popup construction, display strings and tutorial presentation.
Assets/Games/CrossMath/Scripts/CrossMathGame.View.csScene geometry or board rendering, camera layout and visual feedback.
Assets/Games/CrossMath/Kit/Runtime/HzUI.csCreates the uGUI labels/buttons and resolves the game kit fonts.
Assets/Games/CrossMath/Kit/Runtime/HzAudio.csNamed sound resources, music playback where provided and fallback sound synthesis.
Assets/Games/CrossMath/Kit/Runtime/HzCore.csGame-prefixed local persistence helpers.
Assets/Games/CrossMath/Kit/Runtime/HzCore.csBridge from game calls to simulated/service-kit ads and native haptic hooks.
Assets/Games/CrossMath/Editor/CrossMathLevelEditor.csThe visual level editor and its actual menu commands.

Cross Math Puzzle reskin: interface colours and visible text

The interface is constructed in C# when the scene runs. There is no single static scene prefab containing every final label. Use the exact game files below; changing only a shared-kit theme or localization table will not replace game-authored HUD/menu strings.

1. Change interface colours

Open Assets/Games/CrossMath/Scripts/CmArt.cs in your C# editor. Find these declared palette symbols; change only the quoted hexadecimal value in the existing HzUI.Hex(...) assignment. Preserve the symbol, type and surrounding syntax. This keeps every caller using the shared colour in sync.

File / symbolCurrent valueConcrete usage to inspect
Scripts/CmArt.cs
DeskTop
#CFE6F7CrossMathGame.View.cs: var bg = HzUI.Img("Desk", _layer, HzUI.Gradient(DeskTop, DeskBottom), Color.white);
Scripts/CmArt.cs
DeskBottom
#E8F3FBCrossMathGame.View.cs: var bg = HzUI.Img("Desk", _layer, HzUI.Gradient(DeskTop, DeskBottom), Color.white);
Scripts/CmArt.cs
Card
#FFFFFFCrossMathGame.Hud.cs: var cp = HzUI.Panel("CoinPill", _col, Card, 40); cp.raycastTarget = false;
Scripts/CmArt.cs
Ink
#2D3B63CrossMathGame.Hud.cs: _levelTxt = HzUI.Label("Level", _col, "", 66, Ink);
Scripts/CmArt.cs
Blue
#4A8FE7CrossMathGame.Hud.cs: var p = CmPopup("SETTINGS", "", Blue, null, null,
Scripts/CmArt.cs
Mint
#3FB97ACrossMathGame.Hud.cs: var bd = HzUI.Panel("Badge", v.Root, Mint, 30); bd.raycastTarget = false;
Scripts/CmArt.cs
Rose
#EE6A86CrossMathGame.Hud.cs: g.color = g is Text ? (on ? Rose : InkDim) : (on ? Color.white : new Color(0.7f, 0.74f, 0.82f, 0.45f));
Scripts/CmArt.cs
Cell
#FFF4D8CrossMathGame.View.cs: var edge = HzUI.Panel("Cell", _cellLayer, CellEdge, Mathf.Max(4, (int)(_cs * 0.06f))); edge.raycastTarget = false;
Scripts/CmArt.cs
TileInk
#1E9A54CrossMathGame.View.cs: t.Label = HzUI.Label("V", root, t.Op ? CmMath.OpGlyph[t.V] : Num(t.V), 60, TileInk);

Concrete first colour edit: in Assets/Games/CrossMath/Scripts/CmArt.cs, find this fragment within its existing declaration:

Card = HzUI.Hex("#FFFFFF")

Replace only that colour value, for example:

Card = HzUI.Hex("#24485C")
  1. Save the source and return to Unity. Wait for compilation, resolve any Console errors, and start a fresh Play session so the UI and cached generated artwork are rebuilt.
  2. Inspect the changed HUD surface, settings menu and a win/lose or booster popup. Verify that text remains readable, selected/disabled states remain distinct, and icons are visible against the new background.
  3. Check the mobile and landscape scenes. Some popup, world, camera and material colours are separate literal assignments in Scripts/CrossMathGame.Hud.cs or the .View.cs file. If one surface did not change, inspect the colour argument used by that exact control instead of replacing every matching hex value globally.
  4. For a procedural colour change, stop and re-enter Play; if you deliberately disabled domain reload, restart the editor when testing static sprite/material caches. A bitmap with baked-in colours must be edited separately from the C# palette.

2. Change a visible HUD label

Open Assets/Games/CrossMath/Scripts/CrossMathGame.Hud.cs, find RefreshHud and locate this exact source line:

_levelTxt.text = "Level " + Num(_playLevel);

To call levels stages, change the display string while preserving the level expression and formatting:

_levelTxt.text = "Stage " + Num(_playLevel);

This is a targeted edit to the displayed string, not a global search/replace of object names. HzUI.Label("Lvl", parent, "LEVEL " + Level, ...) uses its first string as a hierarchy/object name and its third argument as visible text. In assignments such as _levelTxt.text = ..., edit only the literal part; retain the number, interpolation braces, arithmetic, conditional branches and formatting.

3. Edit menus, popups, title and booster captions

Use this game-specific lookup table. The snippet is a search target in the named file; it shows the actual display-writing call rather than an assumed localization key. Line numbers are navigation hints for this revision and can shift after your edits.

Exact file and methodSearch for this source
Scripts/CrossMathGame.Hud.cs
RefreshHud
line 147
_levelTxt.text = "Level " + Num(_playLevel);
Scripts/CrossMathGame.Hud.cs
HelpPage
line 327
CmPopup("HOW TO PLAY " + (i + 1) + "/" + HelpPages.Length, HelpPages[i], Blue, i == 0 ? CmArt.Get("owl") : null, null,
Scripts/CrossMathGame.cs
class declarations
line 26
public override string Title => "Cross Math Puzzle";
Scripts/CrossMathGame.cs
ShowPreLevel
line 186
CmPopup("CROSS MATH", "Every row and column is a sum.\nFill the empty boxes with the tiles\nso every sum is true.", Blue, CmArt.Get("owl"), "Welcome to your math notebook!",
Scripts/CrossMathGame.Hud.cs
BuildHud
line 39
_settingsBtn = RoundButton("Settings", HzIcons.Settings, 84, TopY, ShowSettingsPopup);
  1. Change the Title property in Scripts/CrossMathGame.cs for the game title exposed by the base game. Also change any separate literal title built by the HUD/view; a Title property is not a universal replacement for all title art.
  2. Change visible menu captions in ShowSettingsPopup and the help-page strings in CrossMathGame.Hud.cs. Keep action callbacks, toggle variables and control object names unchanged.
  3. For booster names edit BoostName in Assets/Games/CrossMath/Scripts/CrossMathGame.cs. For booster help edit BoostDesc in Assets/Games/CrossMath/Scripts/CrossMathGame.Hud.cs. Preserve array lengths/order, booster IDs, unlock logic and charge values. A cosmetic caption must not rename an ad placement, resource lookup or PlayerPrefs key.
  4. For status counters, change the actual refresh method, not only the label initializer; otherwise the next frame or level load may overwrite your new caption. Update singular/plural and portrait/landscape variants together.
  5. Translate tutorial/help/result text in the game files and level name / hint fields where used. Keep \n line breaks and {...} interpolations valid, and test long lines in narrow portrait popups.

4. What the shared localization guide does and does not cover

The shared HyperCasual LiveOps Kit localization guide concerns UI and content that use that kit's localization service. This game's literal strings in the files above are not automatically replaced by adding entries to an HLK table. For one-language reskinning, edit the literals and data shown here. For runtime language selection, explicitly route those game display assignments through your chosen lookup service, provide keys for each caption, and refresh active labels when the language changes. That is an integration task, not a delivered translation toggle.

Equation numbers and operators are gameplay data. Translate surrounding instructions and labels, but keep arithmetic operators, numeric parsing, tile values and equation validation consistent. D.name comes from levels.json. The welcome title CROSS MATH is in ShowPreLevel in CrossMathGame.cs; it is separate from the Title property. Undo is assigned to undo.Caption.text in BuildHud, while the live Level and Sums prefixes are written again by RefreshHud. Change those refresh-time strings, not only the empty labels created by BuildHud.

5. Verify the reskin

  1. Launch both supplied scenes with a normal player save. Confirm the edited level heading, game title, settings/help buttons, counters and booster names.
  2. Open a result popup and a refill offer, and replay the first-level and first-booster tutorials using a disposable test profile or the documented developer controls. Confirm that the changed colours remain readable behind all overlays.
  3. Test one valid move, one invalid action, progression to the next level, a retry and one available booster. A text reskin must not change goals, costs, rule checks or resource IDs.
  4. Make a new Android/WebGL test build after source edits. Existing hosted demos and videos will continue to show their previously built appearance until rebuilt; editing this manual alone does not change those binaries.

Gameplay and content

Drag number or operator tiles from the bank into the empty crossword boxes. Complete the intersecting equations. Watch remaining hearts; some levels add padlocked cells and stars.

Intersecting arithmetic equations, number and operator tiles, hearts, padlocked cells, stars and authored difficulty progression.

The source includes 25 authored levels and seeded procedural continuation. Progress, settings and charges are stored locally with PlayerPrefs. Browser storage depends on the browser profile. The template includes source and editable level data; generated continuation is not advertised as hundreds of individually authored levels.

Boosters

First-use guidance introduces each booster. Availability depends on the level, current state and remaining charges. Rewarded placements are simulated by default; only a completed reward callback should grant a refill. Use the DEV panel to unlock boosters for authoring, not as a substitute for real progression testing.

Manual editor and generation

Open CrossMathTemplate > CrossMath > Level Editor. Duplicate a level before changing the original tutorial. The authoring file is Assets/Games/CrossMath/Resources/crossmath/Levels/levels.json.

Paint the equation grid and empty boxes, choose numbers or signs, and configure padlocks and stars. Regenerate (new seed) refills the selected slot from its generation specification. Clear padlocks and Clear stars remove those special mechanics. In the JSON rows, a token with an underscore is an empty bank-tile cell and a dot is unused space. Keep intersecting equations consistent and run the included uniqueness/logic validation before saving. Generated puzzles continue beyond the authored set.

The included editor supports saving, duplication and ordering, and provides generation and validation controls appropriate for this game. Read the actual validation result; a difficulty target is not a guarantee of player success. Use a repeatable seed when comparing generated variants. Test changed boards in Play mode.

First authored level schema

{
  "levels": [
    {
      "name": "First Sum",
      "hint": "",
      "w": 5,
      "h": 1,
      "rows": [
        "2 + _3 = 5"
      ],
      "lockCells": [],
      "lockNeeds": [],
      "stars": [],
      "difficulty": 5,
      "seed": 0,
      "breather": false
    }
  ]
}

LiveOps, ads and haptics

The publisher-owned HyperCasual LiveOps Kit is included. Read its complete offline manual.

Settings: Assets/HyperCasualLiveOpsKit/Resources/HLK/HLKSettings.asset. Shipping defaults are Ads Mode Dummy (0) and IAP Mode Disabled (3). Banner, interstitial and rewarded placements are simulations. No Google Mobile Ads, billing or other vendor SDK is included. Automatic vendor-SDK installers are disabled. The game's own Kit is required code, not an advertising SDK.

To enable a real provider, separately install its official SDK, follow the kit manual, configure your own identifiers, consent and privacy policy, then test the selected platform and all cancellation/failure cases. Do not enable SDK symbols without the corresponding dependency. Optional kit modules are capabilities, not production services already configured for this game. Native vibration needs a supported device; browser haptics and other native services have platform limits.

Development controls

Open DEV, press F2/backquote, or use the kit's top-left multi-tap shortcut. The global panel supports level jumps, booster access, ads and haptics controls. Add HZ_RELEASE to scripting defines when you want these development controls excluded from a consumer build. This does not configure real ads or certify store readiness.

Android release

Use the Mobile scene, portrait orientation and ARM64/IL2CPP with matching Unity tools. The provided APK is a debug-signed development demo, not a production store release. For release turn off Development Build and debugging, choose your own application identifier and review current store API requirements.

In Player → Publishing Settings create or select your own keystore and alias. Securely retain the keystore, alias and passwords for future updates; never redistribute signing secrets. Enable Build App Bundle for a Google Play AAB. Install a release candidate on a physical Android device and check touch, audio, haptics, pause/resume, saves and any enabled provider flows. Complete destination-store ads/data declarations and your privacy policy for the services actually enabled.

WebGL

Build the Mobile scene for a portrait-only demo with the built-in Default template and Brotli decompression fallback. Use Cross Math Puzzle → Create Responsive WebGL Page after building and select the output folder. This generates an original responsive page around the complete Build folder. Serve every loader, framework, data and WASM file over HTTP(S); file:// is unsupported. Audio normally starts after a first click/tap.

The two-scene landscape-first route supports ?mobile=1 to switch to the following Mobile scene. The included WebGL build menu uses HLK's non-development local showcase scope. It supports simulated demos; configure your production providers and resolve the kit build-doctor checks for a real service release.

Troubleshooting

Artwork, fonts and audio replacement

Game-specific resource directories in this edition:

PathPurpose
Assets/Games/CrossMath/Resources/crossmath/ArtArt assets loaded by the game; keep resource base names stable unless you update every lookup.
Assets/Games/CrossMath/Resources/crossmath/LevelsLevels assets loaded by the game; keep resource base names stable unless you update every lookup.
Assets/Games/CrossMath/Resources/crossmath/MusicMusic assets loaded by the game; keep resource base names stable unless you update every lookup.
Assets/Games/CrossMath/Resources/crossmath/SfxSfx assets loaded by the game; keep resource base names stable unless you update every lookup.
  1. Replace an existing sprite or audio clip through Unity's Project view while keeping its resource base name and .meta/GUID. If you rename or move it, update its Resources.Load lookup and any serialized references together.
  2. For a UI icon, find the Art(...) / art-class Get(...) call in the HUD script and its base name under the Art directory. Imported sprite colours may be baked into the pixels; palette edits only affect code-applied tint or generated geometry.
  3. For a 3D scene, inspect the .View.cs file and any game-specific material/import helper before rerunning material generation. Back up custom materials first; generation commands may overwrite generated material settings.
  4. The game kit resolves its fonts in Assets/Games/CrossMath/Kit/Runtime/HzUI.cs. Read Display and Body for the current resource paths. Use fonts with redistribution rights, retain their licence notices, and test accented characters/glyph coverage at the existing sizes.
  5. For sound effects, inspect the game's sound-name constants/calls and Assets/Games/CrossMath/Kit/Runtime/HzAudio.cs. Replace the matching Sfx resource without changing its base name. Named event variants and synthesized fallbacks are handled by the kit; a new filename does nothing unless a caller requests it.
  6. Music is a separate resource/playback path. Match the PlayMusic lookup if this game supplies a track. Set reasonable clip/volume settings and test mute, focus/background behaviour and device output. Do not infer audio-device testing from a successful build.

Retain the original licence/attribution files for fonts, icons, audio and other included dependencies when distributing your customized game.

Level editor: concrete editing workflow

Open CrossMathTemplate > CrossMath > Level Editor. Its implementation is Assets/Games/CrossMath/Editor/CrossMathLevelEditor.cs. The following names are taken from that editor, so use the displayed control name rather than assuming a generic inspector.

Control / fieldPractical use
ReloadSelect the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
ValidateSelect the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
Validate AllSelect the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
AddSelect the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
DupSelect the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
DelSelect the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
UpSelect the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
DownSelect the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
e sums b boxes L long O sign boxes P padlock * gold starSelect the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
NameSelect the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
Click a square: the row sum through it. Right-click: the column sum.Select the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
Click or drag to paint. Validate after editing (one answer, no guessing).Select the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
Difficulty curve (validated score, else saved difficulty; blue = breather). Click a bar to select.Select the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
CountSelect the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
Start at level #Select the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
SeedSelect the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
  1. Exit Play mode. Back up Assets/Games/CrossMath/Resources/crossmath/Levels/levels.json. Select an authored non-tutorial level to avoid unintentionally rewriting the onboarding sequence.
  2. Use the available duplication/add control to make a working copy when offered. Change its display Name (or Picture name) and one gameplay property using the visual editor. Keep the first tutorial level intact until you understand its scripted guidance.
  3. Run the editor's validation control and read the concrete warnings/errors. Fix missing references, invalid board geometry, impossible goals or malformed data before saving.
  4. Save using the editor's Save control. If you intentionally edit JSON externally, save valid JSON, then use Reload/Reload from disk in the editor before continuing. Do not keep two unsaved versions of the same data open.
  5. Use Play this level when available, or the documented DEV level navigation, to play the exact changed level. A solver/bot result is useful authoring evidence but does not replace checking the human controls, timing, tutorial and reward flow.

Procedural generation and level data reference

The level data used by this game is located here: Assets/Games/CrossMath/Resources/crossmath/Levels/levels.json. Generation logic is in Assets/Games/CrossMath/Scripts/CmGen.cs. Keep the authored campaign and generated continuation distinct when estimating your content count.

Generation controls exposed by the game editor include: Difficulty curve (validated score, else saved difficulty; blue = breather). Click a bar to select., Seed.

  1. Back up the level JSON before a generation operation. Choose a small trial range and a repeatable seed first, then inspect what is appended or replaced. Do not assume a command is append-only; a selected-level regeneration or Rebuild command can replace authored content.
  2. Read the game-specific fields in the level editor and generator source. Match generated board dimensions, rule limits and special mechanics to the intended difficulty; do not copy parameters from another game.
  3. Validate generated output, play several early/mid/late boards, and check that the tutorial still introduces mechanics before the generated content requires them. Keep a saved known-good seed for regressions.
  4. Treat visual difficulty labels and bot/solver scores as authoring aids. They do not guarantee that every generated board is suitable for every player or that a target completion time is achievable.
Authored fieldType / value in the included sample
name"First Sum"
hint""
w5
h1
rowsarray of 1 entries
lockCellsarray of 0 entries
lockNeedsarray of 0 entries
starsarray of 0 entries
difficulty5
seed0
breatherfalse

Use these field names exactly. JSON keys are serialized identifiers, not interface captions; changing a field name requires corresponding changes to the serializable model, loader, editor and generator. Duplicate levels through the editor when possible rather than guessing a nested schema.

Authoring controls and booster configuration

Cross Math Puzzle visual editing gestures

Click a square: the row sum through it. Right-click: the column sum.

Click or drag to paint. Validate after editing (one answer, no guessing).

Difficulty curve (validated score, else saved difficulty; blue = breather). Click a bar to select.

Actual controlMeaning
ReloadReload saved JSON from disk; unsaved edits can be discarded.
ValidateCheck the selected level and read the specific diagnostic.
Validate AllCheck the whole campaign and inspect every failure.
AddCreate a new entry, configure it and validate before saving.
DupDuplicate the selected level before changing a working copy.
DelDelete the selected entry; back up campaign data first.
UpMove the selected level earlier in the campaign.
DownMove it later in the campaign.
NamePlayer-facing level name; do not rename the serialized field.
CountNumber of levels requested for generation.
Start at level #First campaign number used by the requested operation.
SeedA repeatable random seed for reproducing a generated result.

Effect, unlock and first grant

The descriptions below are the actual game-authored booster help. Unlock and starting inventory are read from Assets/Games/CrossMath/Scripts/CrossMathGame.cs; existing saves keep their previously stored state.

BoosterUnlock levelInitial grantEffect / game-authored help
Hint33Tap it, then tap an empty box: the right tile flies in.
Ruler62Tap it, then tap a sum: the ruler fills all its boxes.
Key122Opens every padlocked tile on the page at once.
Pencil171A spare pencil: +1 heart (up to 4).

To rebalance, edit the matching BoostUnlock and BoostStart values and the corresponding handlers; keep the four entries in the same order. To rename or translate, edit BoostName in Scripts/CrossMathGame.cs and BoostDesc in Scripts/CrossMathGame.Hud.cs. A targeted booster may require a second tap on an eligible object; read its handler and test invalid targets before changing consumption logic. Refills must be granted only after the successful rewarded callback; cancelling an ad must not grant a reward.

Game text versus saved data and service configuration

Game progress, tutorial flags, currency and booster inventory are stored through the private HzSave helper and Unity PlayerPrefs. Search that helper and the main game script for the current key prefix. Changing displayed titles does not require changing those keys. Renaming keys can make an existing player appear to lose progress; plan migration before doing so.

Use a separate test profile when replaying onboarding. Do not use a global DeleteAll operation in a buyer's existing multi-asset project. Developer resets and unlocks should be used deliberately on test saves. Confirm the state after stopping/restarting Play, because an old saved tutorial flag can correctly suppress the popup you expect to see.

The HLK settings asset is Assets/HyperCasualLiveOpsKit/Resources/HLK/HLKSettings.asset. Ads default to Dummy and IAP to Disabled. Keep those defaults while reskinning. A production provider requires its real, separately installed SDK, IDs, platform configuration and testing. Optional setup documentation does not mean a provider SDK is included or automatically installed. Keep service identifiers, ad-placement IDs and reward callback semantics separate from translated button text.

Reskin troubleshooting and release check

SymptomCheck
A label reverts after one frameEdit the refresh-time .text = assignment listed above, not only the creation argument. Search the exact visible phrase in Scripts, including portrait and landscape branches.
A scene edit disappears after stopping PlayThe HUD is generated at runtime. Save the source/data edit outside Play mode, then enter a fresh Play session.
A colour changes on the HUD but not a popupInspect that popup's colour arguments and the separate popup palette symbols; it may use a different surface/ink pair or a baked bitmap.
A translated string clipsPreserve interpolation/line breaks, shorten the caption or intentionally adjust its Text/RectTransform size. Test the narrowest supported portrait layout and any longer language.
The HLK language table does not change the game labelThat label uses a literal or game data. Edit its actual source/data or implement an explicit localization lookup there.
New art or audio is missingCompare the exact resource base name, folder, importer settings and code lookup. Preserve its .meta file and verify there are no compile errors.
The old tutorial still does not appearCheck persisted tutorial/booster-first-use flags with a disposable save. Reaching an already-completed tutorial in an existing profile is not a localization failure.
The browser/Android demo looks unchangedRebuild and redeploy that demo after source changes. A hosted manual update does not rebuild the game.
Production ads or purchases are unavailableThis delivery uses simulated ads and Disabled IAP. Install/configure a supported real provider separately and test the complete result.

Before your own release: review branding, UI contrast, tutorial wording, authored/generated levels, saved progress, every booster, pause/mute controls and both layouts. Set your own application identifier, icons, version, signing and release privacy/service settings. Perform actual target-device/browser testing; this manual and its documentation-only update do not certify your customized binary.

Licences, support and documentation access

Keep the included font, icon, TextMesh Pro, audio and HyperCasual LiveOps Kit notices with your distribution. Marketing illustrations are separate from authentic gameplay screenshots. Refer to the included licence and attribution notices for the supplied components; adding your own assets requires checking their distribution terms.

For product support, use the marketplace item support channel. SatisVizion support email: satisvizion@gmail.com. Include the game name, Unity version, target platform, exact Console error, changed files and clear reproduction steps. Do not send signing keys, passwords or private service credentials.

This is the main game manual. It is included offline in the main ZIP and the game's Documentation folder. Shared-kit detail is available in HyperCasualLiveOpsKit.html in the offline documentation bundle; within the Unity project, open the included kit's Documentation folder. The current online manual is linked in the publisher metadata. Installation and basic use do not depend on visiting an external storefront.