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 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.
| 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 only the foundation primitives it needs. The Asset Store listing bundles those alongside Luna, so installing Luna is a single one-package import.
Single-concern, zero internal deps. These were extracted from the former core package.
| Package | Provides |
|---|---|
com.cupkekgames.singletons | Singleton<T> MonoBehaviour base |
com.cupkekgames.pool | IObjectPool<T>, GameObjectPool*, ObjectPoolBase, ObjectPoolSO + Factory pattern |
com.cupkekgames.fadeables | Fadeable<T>, 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 | keyvaluedatabase | IPrefabLoader, PrefabLoader<TKey>, PrefabLoaderString |
com.cupkekgames.assetfinder | keyvaluedatabase, editorui | [AssetFinder] attribute + populator toolbar |
com.cupkekgames.services | assetfinder, editorui, editorinspector | ServiceRegistry / ServiceProvider — DI pattern |
| Package | Direct deps | Provides |
|---|---|---|
com.cupkekgames.luna | singleton, pool, fadeable, keyvaluedatabase, prefabloader, editorui, editorinspector, packagemanager, input | UI Toolkit component library + UIPrefabLoader binding |
com.cupkekgames.data | keyvaluedatabase, editorui, assetfinder, servicelocator | IData / DataSO / asset catalog / DropTable / Primitives |
com.cupkekgames.gamesave | data | GameSaveManager<TData,TMeta> |
com.cupkekgames.newtonsoft | data, servicelocator, com.unity.nuget.newtonsoft-json | Newtonsoft adapter for data |
com.cupkekgames.scenemanagement | singleton, keyvaluedatabase, editorinspector | SceneSO + SceneLoader (versionDefine: addressables) |
com.cupkekgames.rpgstats | data, servicelocator, luna | character stats / attributes / modifiers |
com.cupkekgames.inventory | rpgstats, singleton | items + equipment + drag/drop |
com.cupkekgames.addressableassets | pool, keyvaluedatabase, prefabloader, luna, com.unity.addressables | Addressables wrapper + addressables-flavored PrefabLoader variants |
com.cupkekgames.sequencer | scenemanagement, servicelocator, singleton, keyvaluedatabase | Boot sequencer + bridges |
com.cupkekgames.settings | singleton, keyvaluedatabase, editorinspector, input, luna, data | SettingsSystem + UI.Settings panel |
com.cupkekgames.inkbridge | keyvaluedatabase, luna, com.inkle.ink-unity-integration | Ink narrative engine integration |
Luna-free packages: all foundation primitives, foundation dependents (prefabloader, assetfinder, servicelocator), plus data, gamesave, newtonsoft, scenemanagement. The rest depend on luna.
com.cupkekgames.luna. Its foundation deps are bundled alongside as transitive deps.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.
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