Skip to content

Releases: CoderGamester/Unity-Services

Release 2.0.0

26 Apr 15:47
18cfd93

Choose a tag to compare

What's Changed

New:

  • Added Services Explorer window (Tools > GameLovers > Services Explorer) with 13 live-refresh tabs: Overview, Installer, MessageBroker, Tick, Coroutine, Pool, Data, Time, RNG, AssetResolver, Versioning, Assets Importer, Addressable Ids — works in both Edit and Play mode
  • Menu stubs under Tools > GameLovers:
    • Versioning / Refresh Version Data and Versioning / Open in Explorer
    • Assets Importer / Import Assets Data and Assets Importer / Open in Explorer
    • Addressable Ids / Generate Addressable Ids and Addressable Ids / Open in Explorer
  • Added Assets > Create > GameLovers Services > … scaffolders: Message, Command, Service, Pool Entity (template-based, $NAME$ / $NAMESPACE$ substitution)
  • Absorbed com.gamelovers.assetsimporter v0.5.2 into this package
  • Added IAssetLoader, ISceneLoader, AddressablesAssetLoader to Runtime/AssetsImporter/ (ns GameLovers.Services.AssetsImporter)
  • Added AddressableConfig, AssetConfigsScriptableObject<TId,TAsset>, AssetLoaderUtils, AssetReferenceScene to Runtime/AssetsImporter/ (ns GameLovers.Services.AssetsImporter)
  • Added AssetResolverService (implements IAssetResolverService / IAssetAdderService) to Runtime/ root (ns GameLovers.Services)
  • Added Editor/AssetsImporter/: AssetsImporter, AssetsToolImporter, AssetConfigsImporter, AddressableIdsGenerator, AddressablesIdGeneratorSettings (ns GameLovers.Services.AssetsImporter.Editor)
  • Added importable Samples under Samples~/ (importable via Unity Package Manager > GameLovers Services > Samples).
    • Services Playground — single-scene, zero-setup walk-through that wires every foundation service via MainInstaller and exercises 10 of 13 Services Explorer tabs end-to-end.
    • Asset Resolver — focused demo of AssetResolverService end-to-end (AddConfigs / RequestAsset / UnloadAssets) with SpriteConfigs : AssetConfigsScriptableObject<SpriteId, Sprite>. Drives the three Services Explorer tabs the Playground does not cover (Asset Resolver, Assets Importer, Addressable Ids).

Changed:

  • Addressable Ids generator and Assets Importer settings moved from Assets/*.asset ScriptableObjects to ProjectSettings/ ScriptableSingletons (mirrors VersioningEditorSettings).
  • Generation logic extracted from AddressableIdsGenerator into AddressableIdsGeneratorUtils (static internal); importer discovery/import logic extracted into AssetsImporterEditorUtils.
  • Tools/Assets Importer/* and Tools/AddressableIds Generator/* menu entries removed. Use Tools/GameLovers/Assets Importer/..., Tools/GameLovers/Addressable Ids/..., or the Services Explorer tabs instead.
  • Toggle Auto Import On Refresh menu entry removed. The toggle now lives exclusively in the Services Explorer Assets Importer tab.
  • Assets/AssetsImporter.asset and Assets/AddressablesIdGeneratorSettings.asset are no longer used (settings moved to ProjectSettings/); safe to delete from consumer projects.
  • Deleted editor source files: AssetsImporter.cs, AssetsToolImporter.cs, AddressableIdsGenerator.cs, AddressablesIdGeneratorSettings.cs.
  • Folder reorganization: Runtime/ now has domain subfolders DependencyInjection/, Commands/, Pooling/, AssetsImporter/; Editor/ now has Versioning/ and AssetsImporter/ subfolders
  • Installer.cs and MainInstaller.cs moved to Runtime/DependencyInjection/ (namespace unchanged: GameLovers.Services)
  • CommandService.cs trimmed to concrete class only; command contract interfaces extracted to Runtime/Commands/ under ns GameLovers.Services.Commands
  • PoolService.cs trimmed to concrete class only; pool interfaces + implementations moved to Runtime/Pooling/ under ns GameLovers.Services.Pooling
  • ObjectPool.cs (578 lines, 10 types) split into 4 files under Runtime/Pooling/: IPoolEntity.cs, IObjectPool.cs, ObjectPool.cs, GameObjectPool.cs
  • VersionEditorUtils.cs and GitEditorProcess.cs moved to Editor/Versioning/; re-namespaced from GameLovers.Services.EditorGameLovers.Services.Versioning.Editor
  • Added new hard dependencies: com.unity.addressables (1.21.20) and com.cysharp.unitask (2.5.10)

Fixed:

  • AddressablesAssetLoader.UnloadAsset no longer calls GC.Collect(), GC.WaitForPendingFinalizers(), or Resources.UnloadUnusedAssets(). The method now only decrements the Addressables reference count. The old implementation caused PlayMode Test Runner crashes on macOS and O(total-assets-in-memory) main-thread stalls per per-asset release. Callers that need memory reclamation should invoke Resources.UnloadUnusedAssets() themselves at appropriate moments (scene transitions, boot, memory-pressure events); Unity also runs an unused-assets sweep automatically on LoadSceneMode.Single scene loads.
  • Corrected IAssetLoader.UnloadAsset XML documentation: removed the incorrect "will also destroy GameObject instances" claim — Addressables.Release(gameObject) does not destroy the instance; callers must Object.Destroy it separately.
  • IAsyncCoroutine.StopCoroutine(bool triggerOnComplete) now honors its triggerOnComplete parameter and flips IsCompleted to true and IsRunning to false after stopping. The previous implementation always invoked OnComplete callbacks regardless of the flag and left state flags unchanged, so consumers could not distinguish a stopped coroutine from a running one and triggerOnComplete: false was silently ignored.
  • GameObjectPool.Dispose() and GameObjectPool<T>.Dispose() now skip pooled entries whose underlying GameObject has already been destroyed by an external owner (e.g. a parent GameObject was destroyed while pooled instances were still reparented under it via DespawnToSampleParent).

Breaking Changes — see MIGRATION.md for details:

  • Pool types moved from GameLovers.Services to GameLovers.Services.Pooling (IPoolService, IObjectPool, IObjectPool<T>, ObjectPool<T>, ObjectPoolBase<T>, GameObjectPool, GameObjectPool<T>, IPoolEntitySpawn, IPoolEntitySpawn<T>, IPoolEntityDespawn, IPoolEntityObject<T>). PoolService concrete class remains in GameLovers.Services.
  • Command contract types moved from GameLovers.Services to GameLovers.Services.Commands (IGameCommandBase, IGameCommand<>, IGameServerCommand<>, ICommandService<>). CommandService<> concrete class remains in GameLovers.Services.
  • GameLovers.AssetsImporter.* renamed to GameLovers.Services.AssetsImporter.*
  • GameLovers.AssetsImporter.AssetResolverService is now GameLovers.Services.AssetResolverService
  • GameLovers.Services.Editor.* (versioning editor) renamed to GameLovers.Services.Versioning.Editor.*
  • IAssetLoader.UnloadAssetAsync<T>(T, Action)IAssetLoader.UnloadAsset<T>(T, Action): method renamed (dropped Async suffix) and return type changed from UniTask to void to reflect its synchronous nature. Replace await loader.UnloadAssetAsync(x); with loader.UnloadAsset(x);.
  • Code generated by AddressableIdsGenerator must be re-generated (updated emitted using statement)

Full Changelog: 1.0.1...2.0.0

Release 1.0.1

14 Jan 23:27
ec6964f

Choose a tag to compare

Changed:

  • Updated dependency com.gamelovers.dataextensions to com.gamelovers.gamedata
  • Updated assembly definitions to reference GameLovers.GameData

Full Changelog: 1.0.1...1.0.1

Release 1.0.0

11 Jan 23:53
9f02bca

Choose a tag to compare

New:

  • Added AGENTS.md document to help guide AI coding assistants to understand and work with this package library
  • Added an entire test suit of unit/integration/performance/smoke tests to cover all the code for all services in this package

Changed:

  • Changed VersionServices namespace from GameLovers to GameLovers.Services to maintain consistency with other services in the package.
  • Made CallOnSpawned, CallOnSpawned<TData>, and CallOnDespawned methods virtual in ObjectPoolBase<T> to allow derived pool classes to customize lifecycle callback behavior.

Fixed:

  • Fixed the README.md file to now follow best practices in OSS standards for Unity's package library projects
  • Fixed linter warnings in VersionServices.cs (redundant field initialization, unused lambda parameter, member shadowing)
  • Fixed GameObjectPool not invoking IPoolEntitySpawn.OnSpawn() and IPoolEntityDespawn.OnDespawn() on components attached to spawned GameObjects.

Full Changelog: 1.0.0...1.0.0

Release 0.15.1

24 Sep 13:03
cd816d1

Choose a tag to compare

What's Changed

New:

  • Added protected property for all private fields in CommandService for access to any game-specific project inheritance

Full Changelog: 0.15.0...0.15.1

0.15.0

05 Jan 21:50
9cf72f8

Choose a tag to compare

What's Changed

New:

  • Added StartDelayCall method to ICoroutineService to allow deferred methods to be safely executed within the bounds of a Unity Coroutine
  • Added the possibility to know the current state of an IAsyncCoroutine
  • Added the access to the Sample Entity used to generete new entites within an IObjectPool and destroy it when disposing the object pool
  • Added the possibility to reset an IObjectPool to a new state

Full Changelog: 0.14.1...0.15.0

Release 0.14.1

30 Nov 16:45
79a3c51

Choose a tag to compare

What's Changed

Fixed:

  • Fixed the RngLogic.Range(float, float, bool) method to allow having the same min and max values with maxInclusive set to true

Full Changelog: 0.14.0...0.14.1

Release 0.14.0

15 Nov 18:00
ee0c43e

Choose a tag to compare

What's Changed

New:

  • Added PublishSafe method to IMessageBrokerService to allow publishing messages safely in chase of chain subscriptions during publishing of a message

Changed:

  • Subscribe and Unsubscribe throw an InvalidOperationException when being executed during a message being published

Fixed:

  • CoroutineTests issues running when building released projects

Full Changelog: 0.13.2...0.14.0

Release 0.13.2

13 Nov 02:55
dd2399d

Choose a tag to compare

What's Changed

New:

  • Added a constructor to GameObjectPool that allows to setup a costum instantiator

Fixed:

  • Fixed ObjectPool & PoolService tests that would block builds sometimes

Full Changelog: 0.13.1...0.13.2

0.13.1

04 Nov 01:41
a0cb568

Choose a tag to compare

What's Changed

Fixed:

  • Fixed the IInstaller when trying to bind multiple interfaces at the same time

Full Changelog: 0.13.0...0.13.1

Release 0.13.0

04 Nov 01:20
73496f6

Choose a tag to compare

What's Changed

Changed:

  • Changed CommandService to now receive the MessageBrokerService in the command and help communication with the game architecture

Full Changelog: 0.12.2...0.13.0