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.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