Service Locator
M2ServiceLocatorInterface → instance registry. Lightweight dependency resolution with no DI container.
A headless C# foundation framework for Unity 6.3 LTS PC single-player projects. Twenty-three production services — save/load, input, scene flow, audio, UI, tweening, FSM and more — wired together by a single Bootstrap.Run(). No DI container, no scene singletons, no setup code in your game scripts.
Overview
Engine
Unity 6.3 LTS (6000.3.0f1) · .NET Standard 2.1
Public services
23 — wired by a single Bootstrap.Run()
Third-party deps
0 — Unity Engine + Addressables / Input System / UGUI (first-party) only
Scripting backend
Mono + IL2CPP both verified ([Preserve] + link.xml)
Render pipeline
URP-agnostic — works with URP / HDRP / Built-in / Custom RP (0 rendering code)
Tests
2,550 EditMode passing · 23 Accepted Architecture Decision Records
Samples
7 importable — 4 fully assembled runnable scenes (UI Framework · Motion Lab · Save/Load + Seeded Random · Command Console)
Editor tooling
Welcome / Quick Start window + runtime Service Debugger (Tools ▸ Common Game System)
License
Proprietary — Unity Asset Store EULA
Platforms
PC (Windows / macOS / Linux), single-player
Quick Start
The framework boots itself. You only consume services — there is no init code to call.
using CommonGameSystem.Core;
using UnityEngine;
[DefaultExecutionOrder(100)] // required — see Consumer Conventions
public sealed class MyGame : MonoBehaviour
{
private IPanelStack _ui;
private IAudioService _audio;
private void Start()
{
// The framework already registered all 23 services before Start() ran.
_ui = ServiceLocator.Resolve<IPanelStack>();
_audio = ServiceLocator.Resolve<IAudioService>();
_audio.PlayMusic(myMainTheme, fadeInSeconds: 2f);
_ui.Push(mainMenuPanel); // mainMenuPanel implements IPanel
}
}That's it — all 23 services were registered before your Start() ran.
Reference
ServiceLocatorInterface → instance registry. Lightweight dependency resolution with no DI container.
ILoggerBuild-tiered log levels, category filters, in-game developer console. Thread-safe.
IEventBusType-safe publish/subscribe for decoupled, global game messaging.
IConfigurationScriptableObject + PlayerPrefs settings (audio / graphics / input) with write-through persistence.
ISaveServiceJSON slot saves, versioned migration hooks, cross-platform atomic write.
IInputServiceNew Input System wrapper — action-map context stack and key rebinding.
ITimeServicePausable per-clock deltaTime — Gameplay / UI / Background clocks run independently.
IObjectPoolServiceIPoolable interface, per-category pools, prewarm and automatic return.
IAudioServiceBGM / SFX / Voice channels, pooled AudioSources, fade in/out, volume binding.
IPanelStackModal/panel stack, keyboard + gamepad navigation, transition animations.
ISceneServiceAsync scene load with loading screen + cancel, plus additive scene layering (v1.13.0).
ILocalizationServicei18n string tables, runtime SetLocale with live LocalizedText re-binding (no restart).
IAchievementServiceData-driven SO tables, named stat counters, threshold auto-unlock, M6 persistence.
ISchedulerPause/slow-mo-aware After / Every / NextFrame timers + worker→main dispatcher.
ITweenServicePause-aware value interpolation, closed typed To/From overloads, 31 easing curves, 0-alloc.
IAssetProviderAddressables-backed async loading with a refcount model + scope-bound auto-unload.
IRandomServiceDeterministic xoshiro256** with named/forkable streams + save-correct snapshot/restore.
IStateMachineServiceGeneric flat finite-state machine over a game-defined TContext, guarded transitions.
IPushdownStackServiceLIFO stack of resumable logical scopes (dialogue-over-gameplay, menu back-stack).
ITweenSequenceServiceFluent builder over Tween — ordered + parallel, pause-aware per-clock timelines.
IAddressableSceneServiceAsync additive scene load/unload from the Addressables catalog, per-key refcount, never-throw.
IDeferredBusCapture an event now, publish it later at a chosen Flush() — defer out of a physics callback or a collection you're iterating.
ICommandRegistryRuntime command nucleus — register / tokenize / execute, history ring, prefix autocomplete. The console UI stays yours.
Each service ships a per-module reference doc and a NullX no-op implementation inside the package (Documentation/Modules/).
How it works
Releases
Three new Core services (20 → 23), wired by the same single Bootstrap.Run(): Addressable Scene (IAddressableSceneService — async additive scene load/unload from the Addressables catalog, per-key refcount, never-throw runtime data), Deferred Event Queue (IDeferredBus — capture an event now and publish it later at a chosen Flush() point), and Command Registry (ICommandRegistry — a runtime command nucleus with register / tokenize / execute, history and prefix autocomplete; the in-game console UI stays yours). Samples grew to 7 importable, 4 of them fully assembled runnable scenes: Motion Lab (8-ease tween gallery, waypoint sequencing, and the per-Clock money shot — gameplay TimeScale 0 freezes the gallery while the UI spinner keeps moving), Save/Load + Seeded Random (after Load, the next three seeded rolls exactly match the prediction armed at Save), M25 Command Console (working in-game dev console with history and autocomplete), plus an RPG Starter code template. New editor tooling under Tools ▸ Common Game System: a Welcome / Quick Start window (environment checks, one-click sample import) and a runtime Service Debugger (live service registry, per-Clock time scales, active tween/FSM/audio/command stats). Fixes: persisted audio settings now apply at boot (mixer early-init race), the UI sample's volume/mute controls act immediately and now ship a public-domain BGM so you can hear them work, panel-navigation NullReferenceException, the "No cameras rendering" watermark, and a play-exit teardown exception. Still 0 third-party dependencies; IL2CPP-ready; URP-agnostic; 2,550 automated EditMode tests.
Initial Unity Asset Store release. 20 production services wired by a single Bootstrap.Run() — Service Locator, Logger, Event Bus, Save/Load, Configuration, Input, Time, Object Pool, Audio, UI Panel Stack, Scene Flow (+additive), Localization, Achievements/Stats, Scheduler, Tween, Asset Provider, Random, FSM, Pushdown Stack, Tween Sequencing. 0 third-party dependencies, IL2CPP-ready, URP-agnostic, AI-ready (AGENT.md + 5 task skills). Versions prior to 1.14.0 were internal development milestones and were never published.
Full per-version engineering changelog ships inside the package (CHANGELOG.md).
Legal
Common Game System is proprietary software distributed exclusively through the Unity Asset Store. Use is governed by the Unity Asset Store EULA.
0 third-party runtime dependencies; bundled Unity packages use the Unity Companion License (see THIRD-PARTY-NOTICES.md). Copyright © 2026 JoGyoungJun. All Rights Reserved.
Support