Changelog
All notable changes to this package will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
[1.21.25] - 2024-10-18
- Fixed issue where more than 2 Scriptable Objects are nested and Compatability Pipeline is used to build.
[1.21.24] - 2024-06-26
- Fix issue where build fails when not installed server platform is selected in the Build Settings Window
- Fixed issue where total size of all bundles changes when updating the same Addressable Groups build.
[1.21.23] - 2024-05-03
- Fixed issue where SpriteAtlas addressable bundle size is doubled if previous build cache is not cleared
[1.21.22] - 2024-02-08
- Fixed a bug where calculating scene dependency data could throw an error
- Fixed a bug that lead to builds being much slower than they should be
- Fixed issue where "Build Task CalculateSceneDependencyData failed with exception: Object reference not set to an instance of an object" is thrown when building.
[1.21.21] - 2023-10-17
- Fix CalculateSceneDependencyData given changed sprite atlas
[1.21.20] - 2023-09-20
- Fix issue where source textures aren't stripped when assets reference explicit packed sprites.
- Fixed large memory usage when using BuildLayoutGenerationTask
[1.21.9] - 2023-08-16
- Removed Cache ServerV1 support
[1.21.8] - 2023-08-03
- Fix CalculateSceneDependencyData given changed sprite atlas
[1.21.7] - 2023-06-14
- Building addressables for il2cpp fails with unclear error when il2cpp not installed
- Fixed issue where InvalidKeyException occurs during the UpdateBundleObjectLayout build task.
[1.21.5] - 2023-05-03
- When the "Strip Unity Version" build flag is used, the Unity Version is stripped for the archive file header and serialized files in the bundle.
- Fixed issue when changing dependencies of an asset change from being explicit to implicit and non-recursive dependencies enabled, and cache is available. Can result in incorrect depdencies being built incorrectly.
- Improvements to the documentation
- Fixed bug where source textures were getting included in the build when a SpriteAtlas was also included
[1.21.3] - 2023-01-09
- Changed calculating AssetDependency to generate dependencies by Object instead of per Asset
[1.21.1] - 2022-12-09
- Fixed issue where toggling "Optimize Mesh Data" in Project Settings doesn't invalidate build pipeline cache
[1.21.0] - 2022-10-03
- Added public APIs to support more detailed Build Layout reports
[1.20.2] - 2022-05-24
- Fix an issue where Scene build ordering would cause Scenes to not load.
[1.20.1] - 2022-05-03
- Fix an issue where cached Sprite state could be stale.
[1.20.0] - 2022-04-22
- Adds build support for Content Files.
- New public methods.
- DefaultBuildTasks.ContentFileCompatible
- New public classes.
- ClusterOutput
- ContentFileIdentifiers
- New public methods.
[1.19.6] - 2021-10-21
- Fixed an issue where the Build Progress Bar would not go away after the build is complete.
[1.19.5] - 2021-10-21
- Fixed an issue where MonoScript bundle will attempt to pull in data it should not have.
- Fixed an issue where NONRECURSIVE_DEPENDENCY_DATA would not properly calculate Shader Variants from Scenes.
- Improved ArchiveAndCompress path handling to detect too long paths and log errors.
- Improve performance of UpdateBundleObjectLayout build task.
- Improved BuildCache to rebuild cache entries in case of exceptions instead of failing the build.
[1.19.3] - 2021-09-14
- Fixed an edge case where Link.xml ordering was not deterministic causing incremental player rebuilds to occur unnecessarily.
- Fixed an issue where Cache Server integration was not update to use USerializer.
[1.19.2] - 2021-07-20
- Fixed an edge case where moving a scene would fail the build.
- Added additional details to the Trace Event Profiler output where the data was missing or unclear.
- Fixed an issue where NONRECURSIVE_DEPENDENCY_DATA would return NonRecursive bundle dependencies instead of the expected Recursive bundle dependencies.
- Updated version define for ENABLE_TYPE_HASHING to match backported Unity 2020.2.2f1 version.
- Fixed USerialize bug with handling of Type[] containing null values.
- Fixed an issue where the hash for Scene bundles would be calculated with a few missing bytes, returning an incorrect hash.
- Fixed an edge case with NONRECURSIVE_DEPENDENCY_DATA in which Scene Bundles would be unable to load MonoScripts and log Missing Behaviour warnings at runtime.
- New Project Behavior Change: PrefabPacked bundles now use a header size of 2 bytes instead of 4 bytes to reduce file identifier collision frequency in large projects.
- Previous behavior can be restored via the Scriptable Build Pipeline Preferences window.
- New Preference: FileID Generator Seed allows you to set a seed for file identifier generation to avoid project specific collisions.
[1.19.1] - 2021-06-04
- Improved performance of the GenerateBundlePacking build task.
- Updated version define for NONRECURSIVE_DEPENDENCY_DATA to match backported Unity 2019.4.19f1 version.
[1.19.0] - 2021-05-20
- Replaced our use of BinaryFormatter with new "USerialize"
- USerializer performance in synthetic tests is about 40x faster than BinaryFormatter
- Real world project tests have seen about 1.8x improvement of cold cache build times, and about 6x improvement of warm cache build times.
- Fixed a case where internal type hash was not being cached correctly causing constant cold cache hits.
- Fixed a case where previous build results could influence a new build incorrectly by including the wrong dlls.
- Fixed a case where multiple scenes in the same asset bundle could generate invalid or incorrect dependencies and not load all necessary data.
- Minor fix for native tep profiling results to separate the event name from the event context and to properly string escape the context.
- Added the DisableVisibleSubAssetRepresentations build parameter.
[1.18.0] - 2021-04-08
- Added an option to build MonoScripts into their own bundle reducing duplication and potential loading errors on certain project setups.
- Added a type remap in Link.xml generation for UnityEditor.MonoScript to the correct runtime type.
- Added an option to build bundles using Non-Recursive Dependency calculation methods.
- This approach helps reduce asset bundle rebuilds and runtime memory consumption.
[1.17.0] - 2021-03-03
- Added [VersionedCallback] attribute for flagging build impacting changes to IProcessScene, IProcessSceneWithReport, IPreprocessShaders, and IPreprocessComputeShaders callbacks.
- Fixed an IndexOutOfRange exception thrown by the GenerateSubAssetPathMaps build task.
- Added faster code paths for common hashing operations.
- 2019.4+ added additional threading usage for saving BuildCache data.
- Fixed an edge case where SerializeReference types used across assemblies were being code stripped incorrectly.
- Fixed a false positive cache hit when changing Player Setting's Graphics APIs .
[1.16.1] - 2021-01-27
- Handling of communication error with cache server. Build will now continue, using the local cache only.
- Regression fix for index out of range error on Unity 2018.4
[1.16.0] - 2020-10-29
- Added caching support for DOTS Subscene building
- Fixed an issue where DOTS Subscene lighting information was lost
[1.15.2] - 2021-01-20
- Fixes for automated testing
[1.15.1] - 2020-10-29
- Added support for per type caching and incremental rebuild triggers
[1.14.0] - 2020-10-21
- Added API to build player scripts to a separate location from Temp or Output Folders.
[1.13.1] - 2020-09-24
- Fixed an edge case where changing PlayerSettings.mipStripping did not rebuild asset bundles as required.
- Fixed an edge case where changing QualitySettings.maximumLODLevel did not rebuild scene bundles as required.
- Reduced unnecessary bundle rebuilds due to too much data in BuildReferenceMap
- Removed unnecessary memory overhead when hashing large data sets for caching.
- Fixed SpookyHash and improved it's performance when used on Unity 2020.1 and greater versions.
- SpookyHash will be the default hashing method in Scriptable Build Pipeline on Unity 2021.1 and greater.
- Contiguous Bundles will be Opt-Out in Addressables & Scriptable Build Pipeline in Unity 2021.1 and greater.
[1.12.0] - 2020-09-15
- Improved caching performance of the WriteSerializedFile build task with projects using many Prefabs in Scenes.
[1.11.2] - 2020-08-24
- Improved thread handling of the Cache Save, Upload, and Prune operations.
[1.11.1] - 2020-08-11
- Exposed the ScriptableBuildPipeline static class to allow setting per project properties from script.
- Fixed an edge case where pruning the build cache would not run in Unity's batchmode.
- Added Cache Server Config options to the Scriptable Build Pipeline UI.
[1.10.0] - 2020-07-28
- Added IBundleBuildParameters.ContiguousBundles option, which when enabled will improve asset loading times.
- In testing, performance improvements varied from 10% improvement over all, with improvements up to 50% for large complex assets such as extensive UI prefabs.
- Updated HashingMethods to support Unicode string hashing.
[1.9.0] - 2020-06-17
- Fixed a null reference exception in GenerateBundleCommands.cs when attempting to sort an empty list
- LinkXmlGenerator moved to the Scriptable Build Pipeline package in the UnityEditor.Build.Pipeline.Utilities namespace.
- Added new option WriteLinkXML to BuildParameters to write out a link.xml file containing the type information used in the asset bundles for use in the Unity manage code stripping system.
- Improved performance of the GenerateBundlePacking task.
- Adding the IBuildLogger interface and BuildLog class to capture high-level build performance data, and output it to the Trace Event Format.
[1.8.6] - 2020-06-11
- Improve caching performance of the WriteSerializedFiles task
- Fixed bug where asset bundles fail to build when not using build cache.
- Fixed an issue where providing additional files for asset bundles required the internal name instead of the bundle name
[1.8.4] - 2020-05-28
- Updated CalculateAssetDependencyData to use a new fast path API for working with Asset Representations in 2020.2 and onward.
- Fix issue with backslashes in trace event profiler build log report
[1.8.2] - 2020-05-21
- Improve incremental build performance. Avoid copying archives from the build cache when source and destination creation timestamps are identical.
- Fix caching bug caused by an engine SpookyHash bug. MD5 hashing will be used until this issue is resolved.
- Improve caching performance of the ArchiveAndCompressBundles task
[1.7.3] - 2020-05-20
- Fix caching bug caused by an engine SpookyHash bug. MD5 hashing will be used until this issue is resolved.
[1.7.2] - 2020-04-07
- Merged in DOTS specific functionality into SBP core.
- Scriptable Build Pipeline settings now stored in ProjectSettings/ScriptableBuildPipeline.json
- Added option to remove extended debugging information from WriteResults before caching for better cache performance
- Added option to log Cache Misses to the console
- Switched to SpookyHash for Unity 2019.3 and higher for most hashing methods to edge out just a bit more performance
- Added multi-threading support to the archive and compress task
[1.6.5-preview] - 2020-03-06
- Updated SBP DOTs preview version with latest SBP Release changes.
[1.6.4-preview] - 2020-02-07
- Updated SBP DOTs preview version with latest SBP Release changes.
[1.6.3-preview] - 2019-09-13
- Fixed an issue where switching platforms caused Scene & Shader callbacks to no longer be called
- Improved error messaging when a task fails with an exception
- Removed ENABLE_SUBSCENE_IMPORTER define as everything has landed as of 2019.3.0b5
[1.6.2-preview] - 2019-09-13
- Refactor of ImportedContent to be more flexible for adding custom content
[1.6.1-preview] - 2019-09-12
- Added check for define ENABLE_SUBSCENE_IMPORTER
[1.6.0-preview] - 2019-09-09
- Added support for DOTS SubScene Importer based asset bundles via ImportedContent property
- Added support for adding custom raw files to asset bundles via AddionalFiles property
[1.5.11] - 2020-03-05
- Fixed poor performance of GenerateBundleCommands with large data sets.
[1.5.10] - 2020-03-13
- Fixed issue where asset bundles in the build cache weren't having the correct bundle hash assigned to it.
[1.5.9] - 2020-02-28
- Updated CompatibilityAssetBundleManifest so hash version is properly serializable.
- Renamed "Build Cache" options in the Preferences menu to "Scriptable Build Pipeline"
- Improved performance of the Scriptable Build Pipeline's archiving task.
[1.5.7] - 2020-02-07
- Updated code to remove obsolete code when used with Unity 2020.1 and newer.
[1.5.6] - 2020-01-30
- Fixed an issue where texture sources for non-packed sprites were being stripped incorrectly.
[1.5.5] - 2020-01-21
- Fixed an issue where texture sources for sprites were not being stripped from the build.
- Fixed an issue where scene changes weren't getting picked up in a content re-build.
[1.5.4] - 2019-10-03
- Fixed an edge case where Optimize Mesh would not apply to all meshes in the build.
- Fixed an edge case where Global Usage was not being updated with latest values from Graphics Settings.
[1.5.3] - 2019-09-10
- Fixed Scene Bundles not rebuilding when included prefab changes.
[1.5.2] - 2019-07-19
- Fixed ToString() method of CompatibilityAssetBundleManifest to properly add new line characters and section header where multiple dependencies exist
[1.5.1] - 2019-07-15
- remove preview tag
[1.5.0-preview] - 2019-06-13
- Updated for API compatibility with Unity 2019.3
- Moved CacheServerClient package into SBP. It turns out this package was not as globally useful as we thought, and we are pulling it in to ease support and discoverability.
[1.4.1-preview] - 2019-04-16
- Fixed "Path is empty" exception in build cache
- Fixed an edge case where a valid cache entry could be returned for an invalid request
- Added BuildCache.PruneCache API to trim the cache down to a limit, called in the background after a build
- Moved BuildCache menu options and preferences to the "Edit/Preferences..." window
- Added SBP_PROFILER_ENABLE define to enable per task profiling output to console
- Fixed an issue preventing PrefabPackedIdentifiers from being passed into ContentPipeline.BuildAssetBundles
[1.3.5-preview] - 2019-02-28
- Minimum Unity version is now 2018.3 to address a build-time bug with progressive lightmapper.
- Added missing version into CacheEntry calculation
- Fixed build error causing AssetBundle.LoadAssetWithSubAssets to return partial results
- Updated function implementations to be virtual for overriding
- Added GetOutputFilePathForIdentifier function to generate the final file path for a given build identifier
[1.2.2-preview] - 2018-12-19
- Fixed SpritePacker failing to pack SpriteAtlas objects into AssetBundles
[1.2.1-preview] - 2018-12-14
- Fixed a null reference error in GenerateBundleCommands::GetSortIndex
[1.2.0-preview] - 2018-11-29
- Renamed LegacyBuildPipeline & LegacyAssetBundleManifest to CompatibilityBuildPipeline & CompatibilityAssetBundleManifest.
- Moved CompatibilityAssetBundleManifest & BundleDetails into a new runtime assembly: com.unity.scriptablebuildpipeline.
- Changed CompatibilityAssetBundleManifest to inherit from ScriptableObject and updated it and BundleDetails to properly serialize using Unity's serialization systems.
[1.1.1-preview] - 2018-10-20
- Reduced object duplication for scene asset bundles
- Fixed object order for scene asset bundles not being deterministic
- Fixed Shader Stripping values from Graphics Settings not applying to built data
- Fixed various code warnings for Unity 2018.3 and newer version
- Added forcing asset save on build
[1.1.0-preview] - 2018-10-01
- Fixed an issue where a string hash was being used instead of a file hash causing data to not rebuild
[1.0.1-preview] - 2018-08-24
- removed compile warning
- Fixed an issue where we were not using the addressableNames field of the AssetBundleBuild struct
[1.0.0-preview] - 2018-08-20
- Fixed an issue in ArchiveAndCompressBundles where previous output location was being used failing to copy cached bundles to the new location
- Fixed an issue in BuildCache were built in plugin dlls did not have a hash version causing cache misses
- Fixed invalid access errors when reading access controlled files for hashing.
- Fixed an issue where you could not force rebuild asset bundles using LegacyBuildPipeline
- Implemented IEquatable
on public structs - Breaking API Change: LegacyBuildPipeline.BuildAssetBundles now returns LegacyAssetBundleManifest
- LegacyAssetBundleManifest's API is identical to AssetBundleManifest
[0.2.0-preview] - 2018-07-23
- Removed ProjectInCleanState & ValidateBundleAssignments tasks and integrated them directly indo the data validation or running methods
- Added build task to append hash to asset bundle files
- Large rework of how IBuildTasks are implemented. Now using dependency injection to handle passing data.
- Added reusable BuildUsageCache for usage tag calculation performance improvements
-
- Unity minimum version now 2018.2.0b9
- Improved asset bundle hash version calculation to be unity version agnostic
[0.1.0-preview] - 2018-06-06
- Added support for Cache Server integration of the Build Cache
- Refactored Build Cache internals for even more performance gains
[0.0.15-preview] - 2018-05-21
- Hardened build cache against failures due to invalid data
[0.0.14-preview] - 2018-05-03
- temporarily removed progress bar as it causes a recompile on mac. Will attempt to re-add selectively later.
[0.0.13-preview] - 2018-05-03
- fixed hash serialization bug.
[0.0.12-preview] - 2018-05-02
- Added build task for generating extra data for sprite loading edge case
[0.0.11-preview] - 2018-05-01
- Updated BuildAssetBundles API to also take custom context objects
- Added support for extracting Built-In Shaders to a common bundle
[0.0.10-preview] - 2018-04-26
- Added BuildAssetBundles API that takes a custom task list
- Added null checks for BuildSettings.typeDB & AssetBundleBuild.addressableNames
[0.0.9-preview] - 2018-04-04
- Added documentation for IWriteOperation implementations
- Added documentation for ReturnCodes, LegacyBuildPipeline, and ContentPipeline
- Ran Unity code analysis & cleaned up warnings (boxing, performance issues, name consistency)
- Breaking api change: Changed build tasks' public static run method to private.
- Added null checks and ArgumentNullExceptions
[0.0.8-preview] - 2018-03-27
- Test rename & meta file cleanup
- Added documentation for shared classes / structs
- Updated inconsistent interface / class names
- Added missing parameter to IBuildParameters
- Ran spell check
- Moved IWriteOperation to Interfaces
- Update IWriteOperation properties to PascalCase
- Added IWriteOperation documentation
[0.0.6-preview] - 2018-03-20
- doc updates
[0.0.5-preview] - 2018-02-08
- Initial submission for package distribution