TL;DR — most users only need Luna.
If you just want the UI Toolkit component library, install
com.cupkekgames.lunafrom the Asset Store. Done. Luna ships with its deps bundled as transitives — the foundation primitives plusdataandgraphs, which power Luna's catalog-keyed nav-graph navigation. The gameplay domain packages (rpgstats, inventory, gamesave, etc.) are still not required.Gameplay domain 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 — 49 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.
| What you want | What you install |
|---|---|
| Luna UI Toolkit component library only | com.cupkekgames.luna from Asset Store. That's it. |
| Run the GameFull sample | Luna + 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 game | Same as above — Luna + the domain sibling packages |
Luna's package.json > dependencies declares the foundation primitives it needs plus data and graphs (as of 2.3.2). The Asset Store listing bundles those alongside Luna, so installing Luna is a single one-package import.
Single-concern, (near-)leaf packages. These were extracted from the former core package. Three declare small internal deps: keyvaluedatabases → editorui, packagemanager → editorui, input → keyvaluedatabases (+ com.unity.inputsystem).
| Package | Provides |
|---|---|
com.cupkekgames.singletons | Singleton<T> MonoBehaviour base |
com.cupkekgames.pool | IObjectPool<T>, GameObjectPool*, ObjectPoolBase, ObjectPoolSO + Factory pattern |
com.cupkekgames.fadeables | Fadeable, FadeableMono, FadeableColor/Position/Scale, EasingType |
com.cupkekgames.keyvaluedatabases | Serializable Dictionary-like database + drawer |
com.cupkekgames.editorui | Reusable editor widgets (IMGUI / UIElements) |
com.cupkekgames.editorinspector | MultiLineHeaderAttribute, FolderReference + drawers |
com.cupkekgames.packagemanager | Tools > CupkekGames > Package Manager window + scoped-registry installer |
com.cupkekgames.input | Unity Input System integration (InputDeviceManager, InputIcons, EscapeAction) |
| Package | Direct deps | Provides |
|---|---|---|
com.cupkekgames.prefabloaders | keyvaluedatabases | IPrefabLoader, PrefabLoader<TKey>, PrefabLoaderString |
com.cupkekgames.assetfinder | keyvaluedatabases, editorui | [AssetFinder] attribute + populator toolbar |
com.cupkekgames.services | assetfinder, editorui, editorinspector | ServiceRegistry / ServiceProvider — DI pattern |
| Package | Direct deps | Provides |
|---|---|---|
com.cupkekgames.luna | data, graphs, singletons, pool, fadeables, keyvaluedatabases, prefabloaders, editorui, editorinspector, packagemanager, input | UI Toolkit component library + nav-graph navigation + UIPrefabLoader binding |
com.cupkekgames.data | keyvaluedatabases, editorui, assetfinder, services | IData / DataSO / asset catalog / DropTable / Primitives |
com.cupkekgames.graphs | data, editorui | Node-graph framework — GraphAssetSO base, graph editor window, runtime debug registry |
com.cupkekgames.gamesave | data | GameSaveManager<TData,TMeta> |
com.cupkekgames.newtonsoft | data, services, addressableassets, scenemanagement, sequencer, settings, gamesave, com.unity.nuget.newtonsoft-json | Newtonsoft adapter for data |
com.cupkekgames.scenemanagement | singletons, keyvaluedatabases, editorinspector | SceneSO + SceneLoader (versionDefine: addressables) |
com.cupkekgames.rpgstats | luna, data, services | character stats / attributes / modifiers |
com.cupkekgames.inventory | luna, data, services, rpgstats, singletons | items + equipment + drag/drop |
com.cupkekgames.addressableassets | pool, keyvaluedatabases, prefabloaders, luna, com.unity.addressables | Addressables wrapper + addressables-flavored PrefabLoader variants |
com.cupkekgames.sequencer | scenemanagement, services, singletons, keyvaluedatabases | Boot sequencer + bridges |
com.cupkekgames.settings | singletons, keyvaluedatabases, editorinspector, input, luna, data, sequencer, services, addressableassets, scenemanagement, gamesave, com.unity.localization, com.unity.inputsystem, com.unity.render-pipelines.universal | SettingsSystem + UI.Settings panel |
com.cupkekgames.inkbridge | keyvaluedatabases, luna | Ink narrative engine integration (Ink Unity Integration is installed separately — not a declared dep) |
Luna-free packages: all foundation primitives, foundation dependents (prefabloaders, assetfinder, services), plus data, graphs, gamesave, scenemanagement. The rest depend on luna (directly or transitively — newtonsoft pulls it via addressableassets/settings).
Transitives note: because Luna depends on
dataandgraphs, installing Luna also pulls their own deps —databringsassetfinder+services, andgraphssits ondata+editorui. The whole chain ships bundled with the Asset Store package.
com.cupkekgames.luna. Its deps (foundation primitives + data + graphs) are bundled alongside as transitive deps.https://www.docs.cupkek.games/upm serves all 49 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.
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).
<installed>/<total> installed count badge + Refresh + Install GameFull Packages (N).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.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.
Tools > CupkekGames > LunaUI Panel — the per-sample setup helper. Distinct from the Package Manager window.
LunaShowcase scene, and the Essentials sample-import requirement (with a one-click Import Essentials Sample button if missing).[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)
Font Family
DM Sans
Wix
Inclusive Sans
AR One Sans
Direction