Architecture & Distribution

TL;DR — most users only need Luna.

If you just want the UI Toolkit component library, install com.cupkekgames.luna from the Asset Store. Done. Luna ships with its foundation deps bundled as transitives and has zero dependency on the domain-layer packages (data, rpgstats, inventory, etc.).

Domain-layer sibling packages are only required by the GameFull sample (and by you, if you want to build a full game on top of the same systems Luna ships with). They're entirely optional.

This page documents the full CupkekGames ecosystem — 22 packages organized into three tiers (foundation primitives, direct foundation dependents, domain layer), the dep graph between them, and the editor windows that automate sibling-package installs.

Distribution at a glance

What you wantWhat you install
Luna UI Toolkit component library onlycom.cupkekgames.luna from Asset Store. That's it.
Run the GameFull sampleLuna + click Install GameFull Packages in Tools > CupkekGames > Package Manager (writes the CupkekGames UPM scoped registry to your manifest, then installs the domain sibling packages atomically)
Full CupkekGames ecosystem for your own gameSame as above — Luna + the domain sibling packages

Luna's package.json > dependencies declares only the foundation primitives it needs. The Asset Store listing bundles those alongside Luna, so installing Luna is a single one-package import.

Foundation primitives

Single-concern, zero internal deps. These were extracted from the former core package.

PackageProvides
com.cupkekgames.singletonsSingleton<T> MonoBehaviour base
com.cupkekgames.poolIObjectPool<T>, GameObjectPool*, ObjectPoolBase, ObjectPoolSO + Factory pattern
com.cupkekgames.fadeablesFadeable<T>, FadeableMono, FadeableColor/Position/Scale, EasingType
com.cupkekgames.keyvaluedatabasesSerializable Dictionary-like database + drawer
com.cupkekgames.editoruiReusable editor widgets (IMGUI / UIElements)
com.cupkekgames.editorinspectorMultiLineHeaderAttribute, FolderReference + drawers
com.cupkekgames.packagemanagerTools > CupkekGames > Package Manager window + scoped-registry installer
com.cupkekgames.inputUnity Input System integration (InputDeviceManager, InputIcons, EscapeAction)

Direct foundation dependents

PackageDirect depsProvides
com.cupkekgames.prefabloaderskeyvaluedatabaseIPrefabLoader, PrefabLoader<TKey>, PrefabLoaderString
com.cupkekgames.assetfinderkeyvaluedatabase, editorui[AssetFinder] attribute + populator toolbar
com.cupkekgames.servicesassetfinder, editorui, editorinspectorServiceRegistry / ServiceProvider — DI pattern

Domain layer

PackageDirect depsProvides
com.cupkekgames.lunasingleton, pool, fadeable, keyvaluedatabase, prefabloader, editorui, editorinspector, packagemanager, inputUI Toolkit component library + UIPrefabLoader binding
com.cupkekgames.datakeyvaluedatabase, editorui, assetfinder, servicelocatorIData / DataSO / asset catalog / DropTable / Primitives
com.cupkekgames.gamesavedataGameSaveManager<TData,TMeta>
com.cupkekgames.newtonsoftdata, servicelocator, com.unity.nuget.newtonsoft-jsonNewtonsoft adapter for data
com.cupkekgames.scenemanagementsingleton, keyvaluedatabase, editorinspectorSceneSO + SceneLoader (versionDefine: addressables)
com.cupkekgames.rpgstatsdata, servicelocator, lunacharacter stats / attributes / modifiers
com.cupkekgames.inventoryrpgstats, singletonitems + equipment + drag/drop
com.cupkekgames.addressableassetspool, keyvaluedatabase, prefabloader, luna, com.unity.addressablesAddressables wrapper + addressables-flavored PrefabLoader variants
com.cupkekgames.sequencerscenemanagement, servicelocator, singleton, keyvaluedatabaseBoot sequencer + bridges
com.cupkekgames.settingssingleton, keyvaluedatabase, editorinspector, input, luna, dataSettingsSystem + UI.Settings panel
com.cupkekgames.inkbridgekeyvaluedatabase, luna, com.inkle.ink-unity-integrationInk narrative engine integration

Luna-free packages: all foundation primitives, foundation dependents (prefabloader, assetfinder, servicelocator), plus data, gamesave, newtonsoft, scenemanagement. The rest depend on luna.

Distribution model

  • Asset Store ships only com.cupkekgames.luna. Its foundation deps are bundled alongside as transitive deps.
  • CupkekGames UPM scoped registry at https://www.docs.cupkek.games/upm serves all 22 packages. Tarballs live in each repo's GitHub Releases under the Cupkek-Games GitHub org; the registry is a dynamic Next.js route handler that reads them at request time and returns npm-compatible packument JSON. Updates surface natively in Unity's Package Manager UI.

End-users don't manage manifest entries by hand. They use the editor window described below.

Package Manager window

Tools > CupkekGames > Package Manager — the dedicated editor window for the sibling-package install flow. Lives in com.cupkekgames.packagemanager (the bootstrap package — install it first via git URL or local file: path, then it writes the scoped registry into your Packages/manifest.json so the rest resolve via the registry).

  • Compact one-line rows: status icon + display name + package id + tag chips + version (when installed) + Install button (when missing).
  • Header toolbar: <installed>/<total> installed count badge + Refresh + Install GameFull Packages (N).
  • One-click bulk install. Writes the CupkekGames scoped-registry block to your Packages/manifest.json (idempotent — checked first, only written if missing) then issues a single UnityEditor.PackageManager.Client.AddAndRemove for all package ids. Unity resolves the whole graph atomically — one manifest write, one domain reload.
  • Last-error footer shows the reason if an install fails.
  • Auto-opens once on first project load when any GameFull-tagged packages are missing (gated by EditorPrefs so it doesn't nag every reload).

The package list lives in com.cupkekgames.packagemanager/Editor/CupkekGamesPackageRegistry.cs (each entry has PackageId, DisplayName, Tags). The installer wraps Client.AddAndRemove + manifest-bootstrap in Editor/CupkekGamesPackageInstaller.cs.

LunaUI Panel

Tools > CupkekGames > LunaUI Panel — the per-sample setup helper. Distinct from the Package Manager window.

  • Two-pane split: list of imported samples on the left, detail pane on the right.
  • For Essentials sample: shows info about the reusable starter assets (theme, UXML primitives, sprites, audio, prefabs).
  • For Showcase sample: shows info about the 9 component clusters, the flagship LunaShowcase scene, and the Essentials sample-import requirement (with a one-click Import Essentials Sample button if missing).
  • For GameFull sample: shows a one-line CupkekGames-package summary with an Open Package Manager button (handing off to the Package Manager window for actual installs); Essentials sample import status with an Import Essentials Sample button if missing; Unity / external dep checks (Input System, Addressables, Localization, Newtonsoft, Ink); Add/Remove demo scenes for Build Settings; troubleshooting tips.
  • Auto-opens when a sample is imported (uses Unity's [InitializeOnLoadMethod] + EditorPrefs to detect new imports across domain reloads).

Implementation: Editor/LunaUIWindow.cs.

Settings

Theme

Light

Contrast

Material

Dark

Dim

Material Dark

System

Sidebar(Light & Contrast only)

Light
Dark

Font Family

DM Sans

Wix

Inclusive Sans

AR One Sans

Direction

LTR
RTL