Mall Tycoon

Unity game template · SatisVizion · Developer manual

Mall Tycoon

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

Overview and included content

Drag anywhere to walk using the virtual joystick. Stand behind counters to serve shoppers, collect cash, stand on purchase pads to open shops or hire helpers, and carry boxes from the stockroom to restock shelves.

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.

Shops, shopper queues, restocking, litter, staff, permanent upgrades, rank XP and guided level objectives. The simulation has no countdown loss timer. 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/MallTycoon/Scenes/MallTycoon_Mobile.unity. Press Play, focus the Game view, and follow the first-level tutorial: Drag anywhere to walk using the virtual joystick. Stand behind counters to serve shoppers, collect cash, stand on purchase pads to open shops or hire helpers, and carry boxes from the stockroom to restock shelves.
  8. Stop Play mode before editing source or authored content. Open the landscape scene Assets/Games/MallTycoon/Scenes/MallTycoon_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/MallTycoon. Keep .meta files with their assets so scene, font, sprite and material references remain valid.

Assets/Games/MallTycoon/
  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/MallTycoon/Scripts/MallTycoonGame.csMain game lifecycle, progression, input/rule orchestration and booster handlers.
Assets/Games/MallTycoon/Scripts/MallTycoonGame.Hud.csRuntime HUD, menu and popup construction, display strings and tutorial presentation.
Assets/Games/MallTycoon/Scripts/MallTycoonGame.View.csScene geometry or board rendering, camera layout and visual feedback.
Assets/Games/MallTycoon/Scripts/MtArt.csColour palette, resource artwork loading and generated visual helpers.
Assets/Games/MallTycoon/Scripts/MtData.csSerializable level and gameplay data structures.
Assets/Games/MallTycoon/Scripts/MtGen.csProcedural level creation and seed/difficulty rules.
Assets/Games/MallTycoon/Scripts/MtLevels.csCampaign data loading, level access and procedural continuation.
Assets/Games/MallTycoon/Scripts/MtMesh.csGame-specific structures and helpers; inspect the public types and call sites before extending them.
Assets/Games/MallTycoon/Scripts/MtSfx.csGame-specific sound event helpers.
Assets/Games/MallTycoon/Scripts/MtSim.csGame-specific structures and helpers; inspect the public types and call sites before extending them.
Assets/Games/MallTycoon/Kit/Runtime/HzUI.csCreates the uGUI labels/buttons and resolves the game kit fonts.
Assets/Games/MallTycoon/Kit/Runtime/HzAudio.csNamed sound resources, music playback where provided and fallback sound synthesis.
Assets/Games/MallTycoon/Kit/Runtime/HzCore.csGame-prefixed local persistence helpers.
Assets/Games/MallTycoon/Kit/Runtime/HzCore.csBridge from game calls to simulated/service-kit ads and native haptic hooks.
Assets/Games/MallTycoon/Editor/MallTycoonLevelEditor.csThe visual level editor and its actual menu commands.

Mall Tycoon 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/MallTycoon/Scripts/MtArt.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/MtArt.cs
HudNavy
#2C5D94MallTycoonGame.Hud.cs: var title = HzUI.Label("Title", _layer, "Mall Tycoon", 88, Color.white); title.AddOutline(HudNavy, 6); title.AddShadow(new Color(0, 0, 0, 0.3f), 6);
Scripts/MtArt.cs
TaskCream
#EFE9E0MallTycoonGame.Hud.cs: _taskBg = HzUI.Panel("Task", _hud, new Color(TaskCream.r, TaskCream.g, TaskCream.b, 0.94f), 34); _taskBg.raycastTarget = false;
Scripts/MtArt.cs
TaskTitle
#2F4F8FMallTycoonGame.Hud.cs: _sideLevel = HzUI.Label("Lvl", card.transform, "", 64, TaskTitle);
Scripts/MtArt.cs
Card
#FFF8ECMallTycoonGame.Hud.cs: var c = HzUI.Panel("Card", dim.transform, PopCream, 48);
Scripts/MtArt.cs
Ink
#1E2A55Palette helper in MtArt.cs; search Ink in its call sites, including generated visuals.
Scripts/MtArt.cs
BtnGreen
#5BE04CMallTycoonGame.Hud.cs: face.color = ToggleOn(ii) ? BtnGreen : BtnGrey; tb.GetComponent<Image>().color = ToggleOn(ii) ? BtnLip : BtnGreyLip;
Scripts/MtArt.cs
Pill
#232C52Palette helper in MtArt.cs; search Pill in its call sites, including generated visuals.
Scripts/MtArt.cs
Teal
#20C4B8Palette helper in MtArt.cs; search Teal in its call sites, including generated visuals.
Scripts/MtArt.cs
Coral
#FF6B5APalette helper in MtArt.cs; search Coral in its call sites, including generated visuals.

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

Card = HzUI.Hex("#FFF8EC")

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/MallTycoonGame.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/MallTycoon/Scripts/MallTycoonGame.Hud.cs, find RefreshHud and locate this exact source line:

if (_sideLevel) { _sideLevel.text = "Level " + _playLevel.ToString(CultureInfo.InvariantCulture); _sideName.text = D.name; }

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

if (_sideLevel) { _sideLevel.text = "Stage " + _playLevel.ToString(CultureInfo.InvariantCulture); _sideName.text = D.name; }

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/MallTycoonGame.Hud.cs
RefreshHud
line 472
if (_sideLevel) { _sideLevel.text = "Level " + _playLevel.ToString(CultureInfo.InvariantCulture); _sideName.text = D.name; }
Scripts/MallTycoonGame.Hud.cs
BuildUpgradeRows
line 863
var title = card.Find("Ribbon/Title"); if (title) title.GetComponent<Text>().text = _upTab == 0 ? "UPGRADES" : "STAFF";
Scripts/MallTycoonGame.Hud.cs
ShowSettingsPopup
line 928
tb.transform.Find("Face/Label").GetComponent<Text>().text = ToggleLabel(ii);
Scripts/MallTycoonGame.Hud.cs
HelpPage
line 968
MtPopup("HOW TO PLAY " + (i + 1) + "/" + HelpPages.Length, HelpPages[i], BtnGreen, art[i], null, -1,
Scripts/MallTycoonGame.cs
class declarations
line 24
public override string Title => "Mall Tycoon";
Scripts/MallTycoonGame.Hud.cs
BuildSides
line 118
var title = HzUI.Label("Title", _layer, "Mall Tycoon", 88, Color.white); title.AddOutline(HudNavy, 6); title.AddShadow(new Color(0, 0, 0, 0.3f), 6);
Scripts/MallTycoonGame.Hud.cs
BuildHud
line 344
var gear = HzUI.Button("Settings", _hud, null, Color.white, Color.white, ShowSettingsPopup, 40, 50);
  1. Change the Title property in Scripts/MallTycoonGame.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 MallTycoonGame.Hud.cs. Keep action callbacks, toggle variables and control object names unchanged.
  3. For booster names edit BoostName in Assets/Games/MallTycoon/Scripts/MallTycoonGame.cs. For booster help edit BoostDesc in Assets/Games/MallTycoon/Scripts/MallTycoonGame.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.

Shop and upgrade wording can also come from data definitions and arrays in the game scripts. In MallTycoonGame.Hud.cs, BuildSides contains the visible Mall Tycoon title, BuildUpgradeRows selects UPGRADES / STAFF, and HelpPage supplies HOW TO PLAY. Changing a shop identifier, save key or upgrade index is not a translation. Keep upgrade costs, staff behaviour and task checks intact when changing a caption. MtArt.Themes colours the floor/walls; it is separate from HUD colours such as HudNavy, TaskCream and TaskTitle.

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 anywhere to walk using the virtual joystick. Stand behind counters to serve shoppers, collect cash, stand on purchase pads to open shops or hire helpers, and carry boxes from the stockroom to restock shelves.

Shops, shopper queues, restocking, litter, staff, permanent upgrades, rank XP and guided level objectives. The simulation has no countdown loss timer.

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 Mall Tycoon > Level Editor. Duplicate a level before changing the original tutorial. The authoring file is Assets/Games/MallTycoon/Resources/malltycoon/Levels/levels.json.

Click a booth slot to place or cycle a shop type; right-click removes it. Select each shop to configure price, helper and stock. Set the level goal, target, rows, shopper patience, restocking, litter and starting economy. Keep the entrance and walking paths usable. Validate the actual simulation result before saving. Time values in authored data are simulation tuning/proof inputs; the shipped player flow has no countdown loss timer. Generated shifts continue after the authored campaign.

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": "Opening Day",
      "hint": "Drag anywhere to walk.\nStand behind the counter to serve,\nthen grab the cash!",
      "goal": 0,
      "target": 25,
      "openShop": -1,
      "time": 150,
      "seed": 101,
      "rows": 2,
      "gap": 4,
      "patience": 50,
      "rush": "",
      "vip": 0,
      "litter": 0,
      "startCoins": 0,
      "crate": false,
      "intro": 0,
      "breather": false,
      "difficulty": 0.02,
      "theme": 0,
      "pile": 20,
      "shops": [
        {
          "type": 0,
          "side": -1,
          "row": 0,
          "price": 20,
          "helper": 0,
          "stock": 0
        }
      ]
    }
  ]
}

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 Mall Tycoon → 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/MallTycoon/Resources/malltycoon/ArtArt assets loaded by the game; keep resource base names stable unless you update every lookup.
Assets/Games/MallTycoon/Resources/malltycoon/LevelsLevels assets loaded by the game; keep resource base names stable unless you update every lookup.
Assets/Games/MallTycoon/Resources/malltycoon/MaterialsMaterials assets loaded by the game; keep resource base names stable unless you update every lookup.
Assets/Games/MallTycoon/Resources/malltycoon/MusicMusic assets loaded by the game; keep resource base names stable unless you update every lookup.
Assets/Games/MallTycoon/Resources/malltycoon/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/MallTycoon/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/MallTycoon/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 Mall Tycoon > Level Editor. Its implementation is Assets/Games/MallTycoon/Editor/MallTycoonLevelEditor.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.
UndoSelect 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.
DeleteSelect 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.
Mall floor (Select the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
Click a booth slot to place a shop (click again to cycle its type), right-click to remove. The selected shop's settings are on the right.Select the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
Bot replay (s)Select 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.
GoalSelect the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
Shop to openSelect 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.
ThemeSelect the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
ShoppersSelect the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
Seconds between arrivalsSelect the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
Patience (s)Select the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
VIP chanceSelect the relevant level first; read the adjacent controls/help in the editor before applying it. Save only after validating the changed content.
Litter chanceSelect 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/MallTycoon/Resources/malltycoon/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/MallTycoon/Resources/malltycoon/Levels/levels.json. Generation logic is in Assets/Games/MallTycoon/Scripts/MtGen.cs. Keep the authored campaign and generated continuation distinct when estimating your content count.

Generation controls exposed by the game editor include: Seed, Breather, Breather drop, Seed base, Generate + validate.

  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"Opening Day"
hint"Drag anywhere to walk.\nStand behind the counter to serve,\nthen grab the cash!"
goal0
target25
openShop-1
time150
seed101
rows2
gap4
patience50
rush""
vip0
litter0
startCoins0
cratefalse
intro0
breatherfalse
difficulty0.02
theme0
pile20
shopsarray of 1 entries

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

Mall Tycoon visual editing gestures

Click a booth slot to place a shop (click again to cycle its type), right-click to remove. The selected shop's settings are on the right.

Actual controlMeaning
ReloadReload saved JSON from disk; unsaved edits can be discarded.
UndoRevert the last supported editor operation.
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.
UpMove the selected level earlier in the campaign.
DownMove it later in the campaign.
NamePlayer-facing level name; do not rename the serialized field.
SeedA repeatable random seed for reproducing a generated result.
Start difficultyDifficulty target at the beginning of the range.
Replace from selectionCan overwrite entries starting at the current selection; back up first.

Effect, unlock and first grant

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

BoosterUnlock levelInitial grantEffect / game-authored help
Skates33Roller skates: walk 60% faster for 12 seconds!
Magnet72Cash magnet: grabs every cash pile in the mall at once.
Tunes112Happy tunes: every waiting shopper calms down and stays patient for 15 seconds.
Helpers151Extra hands: every open shop serves on its own for 15 seconds.

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/MallTycoonGame.cs and BoostDesc in Scripts/MallTycoonGame.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.