Create, manage, and build games using Streamable Assets, which are (typically) smaller sized Assets that can be dynamically streamed in/out on demand. Addressables Supported By Default!S.A.M. is an offshoot of the Terrain Slicing & Dynamic Loading Kit, which was created and has been supported since 2012. That kit has been converted into the Streamable Worlds Bundle, which includes S.A.M. as well as Terra Slicer. If you previously purchased the TS&DLK, when you add S.A.M. to your cart and check out, it should show as costing 0$. If it does not, please contact me!Website Contact Form | Forum Thread | Discord | API | DocumentationDiscord is recommended for the fastest support!S.A.M. - The Streamable Assets Manager unlocks a new way to build complex Game Worlds with Unity.The traditional approach of placing the entire game world in a single scene has several problems which become magnified as your project grows.1) Large scenes incur a high RAM usage cost, as all assets are loaded into memory even though many are not needed at any given time.2) CPU/GPU resources can be wasted on assets that aren't strictly needed.3) Scenes which cover a large area may run into floating point issues.4) Many operations (such as simply saving the scene) can stall the editor for short burst, resulting in the dreaded Hold On (Busy . . .) dialog box to appear.5) Simple procedures like moving a transform can become laggy.6) Large scenes can cause the Unity Editor to run out of memory.7) Working with a single scene can present conflict issues when working in teams.Working with Streamable Assets allows you to avoid these issues (and more), as you are able to load only those Assets that are needed at any given time.What You Get With Our Streaming SolutionBreak Down Large Scenes - The World Designer Tool enables you to break down large over bloated scenes into our Streamable Asset format with minimal effort.Easily Work With Streamable Assets - Game development is an iterative process. As such, we've designed the World Designer Tool to allow you to load, modify, save, and unload Streamable Assets within the Editor in a way that is both intuitive and effortless.Build Complex Worlds - In S.A.M., Grouping's (a set of related Streamable Assets; terrain could be in one grouping, forest assets in another, and so on) are setup individually and then combined to form complex game worlds.MicroVerse Integration - First attempt at integration supporting the Base Module and the Roads Module. Other Modules may work but have not been tested. Additional integration will be added in the coming months!Use The LODs You Want - Use as many LODs as you wish with our system (a mechanism for adding transition effects between LODs is also included), or use Unity's built in LOD system.Load Prefabs, Scenes, and More - Mix and match asset types within the same game world. Via scripting, add support for custom asset types or assets that are procedurally generated!Use Addressables - Use the Addressable System for some Assets, all Assets, or none. We provide default implementations for creating, managing, and streaming Addressable assets, or you can create your own implementations via scripting (Note, Addressables Package must be installed to use).Control Exactly What Is Loaded And When - Define simple or complex patterns that are loaded/unloaded based on the position of one or more players, or load pre-defined regions configured in the Editor. Via scripting, you can also write custom solutions to basically load whatever you want.Eliminate Floating Point Issues - We track your Player's position and automatically re-center the World when they travel too far from the origin (if you wish). You have a high level of control over how the actual re-centering mechanism operates.Create Endless Worlds - Repeat your World on one or more Axes in order to create a looping, endless World. Combined with our world re-centering solution, we challenge you to make your player go too far.Mix and Match Pooling Solutions - S.A.M. includes default pooling solutions that should work in a majority of cases, however you can also add your own via scripting. Pooling is configured on a per LOD basis, so you can choose to use it or not depending on the requirements of each Asset.Control how objects transition into/out of the scene and between LODs - Eliminate popping using our included crossfade, position translation, and scale manipulation implementations or add your own implementation via scripting for advanced effects.Plug Into The Streaming Pipeline - Our event like system allows you to hook into the streaming process via scripting, which can be used to build complimentary systems or support Third Party Tools.Work with 2D or 3D Worlds - Create something as simple as a side-scroller or as complex as a space simulation.Easily Understand Everything With Our Robust Documentation - All of our configuration settings include tooltips to give detailed information, and our Online Documentation ensures you can quickly find the answers you need.Hands On Learning with our Sample Scenes Package - This package, available as a separate pacakge from our website, continues to be updated. Feel free to suggest new ideas for this pacakge!Do More With Our Comprehensive API - Our API covers all of the public members in our code base, and is absolutely gorgeous. Use it to perform advanced operations like creating/destroying Worlds at runtime, initiating saving/loading, and transporting the player across the game World.Additional FeaturesUse Multi Chunking to split streaming work into different operations, reducing/eliminating single frame lag spikes.Use our Binary Serialization based save solution or easily integrate directly with your existing save solution.Convert groups of prefabs to scenes easily with our Scene Generator Tool.Access a more efficient Terrain Neighboring solution compared to Unity's built in system.Use miniaturized assets to better visualize your assets when defining loading patterns or working with the World Designer Tool.Gain fine-tuned control over the per frame execution time of our streaming solution.Use existing Assets from external tools easily via our Naming Convention system.Features Shared With Terra SlicerPrefab Creator tool allows you to batch convert multiple game objects to prefabs.Terrain Duplication command that allows you to batch duplicate Terrain (to create unique duplicated assets).Specific versions of this product have been created for specific versions of Unity. If you upgrade a project, please check the package manager to ensure you have the correct version that was created for the version of Unity you are using!This Package primarily includes pre-compiled libraries (DLL files) rather than source code. You are free to decompile these libraries in order to generate source code that can be used in place of the DLL files, however there will likely be errors/issues that need to be overcome when doing so, and we will not provide support in dealing with those issues/errors.You will also break compatibility with future updates (which will always be in the DLL form). As such, you decompile at your own risk! Decompiled files are subject to the same license as the original package files downloaded from the Asset Store.This Package also includes some source code when that source code is affected/dependent on Unity Packages (Burst and Addressables currently).In these cases, the source code is included in folders with Assembly Definition Files that causes either the entire source code in that folder to be disabled or specific features of the source code to be disabled when the required package is missing.The presence of the Burst Package will simply speed up some Editor Windows/Tools but is otherwise not required.The Addressables Package is only required if you plan on using Addressables.Our Origin Cell based approach to floating point issues works by establishing a specific Cell as the Origin Cell. Because the position of this Cell is always known, we can calculate the world position of all other Cells in the scene, and in turn the world position of objects that fall within those Cells.When the World needs to be shifted in order to keep things close to the origin, we simply change the Origin Cell and either duplicate the existing World or shift existing objects so that their positions stay correct (relative to the Origin Cell).This solution ensures all values used in calculations are as small as possible, always. The same cannot be said for other solutions that rely on offsetting a single Transform in order to perform calculations. We also use doubles internally, because why not?S.A.M. has been built with extensibility in mind. It uses Unity's component based model to be as modular as possible, which allows you to plug in custom made components to change functionality. This should hopefully reduce the need to modify the source code.