Skip to content

About

Solution.Common is a shared code foundation originally developed for the Solution game project. It provides a set of core utilities, patterns and abstractions designed to streamline Unity development. While it powers Solution, it is fully usable as a standalone package in your own Unity projects.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Solution.Common

Solution.Common is the shared Unity foundation used across SolutionWCMD projects and packages.

Originally extracted from the Solution game project, it provides reusable utilities, architectural patterns, and Unity-specific helpers for building maintainable gameplay systems, tools, and services. It can be used as a dependency of other SolutionWCMD packages or installed independently in any compatible Unity project.

  • Package ID: com.solution.common
  • Current stable API line: 1.x
  • Unity target: 6000.0.24f1
  • License: MIT

Warning

Version 2.0.0 is planned as an intentionally breaking API release.

Projects already using 1.x, including new or unreleased applications, should remain pinned to a compatible 1.x release unless the migration to 2.0.0 has been explicitly planned, implemented, and tested.

Package contents

The package is organized into focused namespaces:

Namespace Purpose
Solution.Common.Assets Runtime-safe settings and asset retrieval, including editor-to-build synchronization.
Solution.Common.Facade Payload-driven facade and subservice patterns for communication between decoupled systems.
Solution.Common.Misc General-purpose utilities such as filters, observers, optional values, caches, and timers.
Solution.Common.UnityExtension Unity-specific helpers and patterns for components, scene objects, and rendering.

The full documentation contains more detailed explanations and usage examples.

Requirements

The package manifest currently targets:

Unity 6000.0.24f1

Earlier Unity versions are not supported by the current package manifest. Compatibility with newer Unity versions should still be validated in the consuming project before deployment.

Installation

Install Solution.Common through Unity Package Manager using a Git URL.

Using the Package Manager window

  1. Open Window > Package Manager in Unity.
  2. Select the + button.
  3. Select Add package from git URL...
  4. Paste the following URL:
https://github.com/Solution-WCMD/SolutionWCMD-Common.git?path=/Assets/SCommon#v1.0.0
  1. Replace v1.0.0 with the exact release tag you want to use.
  2. Select Add.

The ?path=/Assets/SCommon parameter is required because the Unity package manifest is located inside that directory rather than at the repository root.

Using Packages/manifest.json

You can also add the package directly to the dependencies object in your Unity project's Packages/manifest.json:

"com.solution.common": "https://github.com/Solution-WCMD/SolutionWCMD-Common.git?path=/Assets/SCommon#v1.0.0"

Replace v1.0.0 with the release tag selected for your project.

Available stable versions can be found on the Releases page.

Important

Consumer applications should use an exact release tag.

Avoid installing from moving branches such as development, release, or live. Branch contents can change without the version in your application being updated, which makes builds less reproducible and may introduce unreleased changes.

Versions and compatibility

Solution.Common uses Semantic Versioning for stable releases:

MAJOR.MINOR.PATCH

The type of version change indicates whether an upgrade is expected to require changes in the consuming application.

Version change Example Compatibility policy Upgrade guidance
Patch 1.0.0 to 1.0.1 Backward-compatible fixes. No intentional public API break. Normally safe within the same minor version, but the application should still be compiled and tested.
Minor 1.0.0 to 1.1.0 Backward-compatible additions and improvements. No intentional public API migration. Normally safe within the same major version. Review the changelog and test affected systems.
Major 1.x to 2.0.0 Public APIs, contracts, or behavior may change incompatibly. Do not upgrade without preparing and validating a migration.
Pre-release or moving branch Preview tags or branch references No stable compatibility guarantee. APIs may change before release. Use only for isolated evaluation and development testing.

Patch and minor releases within the same major version are intended to remain source-compatible. They should not require consumers to rename types, replace APIs, or redesign integrations.

However, every dependency update can still affect runtime behavior. Projects should therefore validate compilation, tests, scenes, prefabs, serialization, editor tooling, and production builds before accepting an update.

Upcoming 2.0.0

2.0.0 will intentionally break parts of the existing 1.x API.

Applications currently using 1.x should not automatically upgrade merely because 2.0.0 is newer. This includes applications that are still new, unreleased, or under active development. Once an application depends on the 1.x API, moving to 2.0.0 must be treated as a migration rather than a routine package update.

Remain pinned to an exact 1.x release unless the project is prepared to:

  1. Review the 2.0.0 release notes and migration requirements.
  2. Identify every affected Solution.Common integration.
  3. Update application code and dependent packages.
  4. Resolve compilation and serialization changes.
  5. Retest editor workflows, runtime behavior, and production builds.
  6. Complete the migration on an isolated branch before merging it into the main application codebase.

Do not change a dependency URL from a 1.x tag to v2.0.0 until those steps can be completed.

Selecting a version

Use the following policy when choosing a dependency version:

Project situation Recommended version
Production application An exact stable tag from the compatible major version.
Application already using 1.x Remain on an exact 1.x tag until a 2.0.0 migration is scheduled.
New or unreleased application already built against 1.x Treat 2.0.0 as a migration and do not upgrade without preparation.
Evaluation of the future API Use a separate branch or test project that does not affect the stable application.
SolutionWCMD package development Use the version required by the package being developed and validate the complete dependency chain.

Updating safely

To update between stable versions:

  1. Read the relevant changelog and release notes.
  2. Create a dedicated update branch in the consuming project.
  3. Commit the existing Packages/manifest.json and Packages/packages-lock.json.
  4. Change only the version tag after # in the Git URL.
  5. Allow Unity Package Manager to resolve the updated dependency.
  6. Confirm that the project compiles without new warnings or errors.
  7. Run applicable Edit Mode and Play Mode tests.
  8. Open and validate scenes, prefabs, ScriptableObjects, and editor tools that use the package.
  9. Produce and validate at least one representative application build.

Major-version upgrades require the additional migration work described in the release notes.

Documentation

The primary API documentation is available here:

The documentation focuses on the package's commonly used public systems. Internal helpers and specialized low-level implementations may not be documented individually.

Contributing

External contributions are welcome when they improve the existing package without expanding its independently managed feature scope.

Suitable contributions include:

  • Bug fixes that preserve the compatibility policy of the current major version.
  • Small maintainability improvements.
  • Corrections and improvements to existing documentation.
  • Focused fixes for clearly reproducible problems.

The following contribution rules apply:

  • Pull requests must target the development branch.
  • Pull requests targeting release, live, or another protected delivery branch may be closed without review.
  • New features, new public systems, and new classes are reserved for the SolutionWCMD development roadmap and are generally not accepted through unsolicited pull requests.
  • Pull request titles must clearly describe the change.
  • Pull request descriptions must explain the problem, reasoning, scope, and validation performed.
  • Changes should remain focused and avoid unrelated refactoring.
  • Contributions outside the supported scope may be closed without review.

Before opening a pull request, verify that the project compiles and that the proposed change does not unintentionally break existing consumers.

Third-party notices

This package may include or depend on third-party software.

See Third Party Notices for attribution and licensing information.

License

Solution.Common is available under the MIT License.

See LICENSE for the complete license text.

About

Solution.Common is a shared code foundation originally developed for the Solution game project. It provides a set of core utilities, patterns and abstractions designed to streamline Unity development. While it powers Solution, it is fully usable as a standalone package in your own Unity projects.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages