Store Page | API | Learning Material | Website Version - 4.3.2 (Compatible with Unity 5) Important: With update 3.0, it is no longer necessary to ensure your prefabs are in a deactivated state when using the Prefab Instantiator component. Important Note # 2: If you have emailed me and I have not gotten back to you after a full day, please send me another email, or post on these forums. Chances are the email was lost somehow! Also, if you are seeking support for an error, please include screenshots of all components relating to the Dynamic Loading Kit (or Terrain Slicing tool) which shows the settings for each component (including the World Grid), as well as any information regarding the use of advanced features (custom components, API usage, etc.). This will help speed up the support process. Thanks! Spoiler: Terrain Slicing Features Slice a single terrain in several smaller terrains. The dimensions of the resulting grid of slices is adjustable (3 x 2, 4 x 1, etc.), and the size of the resulting slices is variable (note, each terrain you slice will have a minimum and maximum possible slice size. The maximum size is always 1/2 the size of the terrain to slice, while the minimum size will depend upon the different resolutions of the terrain to slice. This is a Unity imposed limitation). The area you slice is always adjustable, allowing you to hone in on specific regions of your terrain. This is especially useful for picking out select regions of a terrain which you cannot modify otherwise (such as a Terrain bought from the Asset Store). Spoiler: Dynamic Loading Features Load any type of GameObject dynamically, not just Unity Terrains. Load your objects on either the x/z axis (the axis Unity Terrains are on) or the x/y axis. This means you can use the dynamic loading kit with 2D side scrolling type games! World re-centering options for avoiding floating point precision error (common to games with large worlds). Ability to create endlessly repeating worlds (can be used to make the world appear spherical). The ability to change what objects are loading by your Worlds during run-time. For example, you can load lower/higher resolution versions of your objects, or alternative versions with different textures (note, this is not a level of detail system). The ability to use the default key based save/load solution or a custom save/load solution. This option allows you to integrate the Dynamic Loading Kit with (theoretically) any save/load solution, such as the amazing Easy Save 2. The ability to set the Player associated with an Active Grid at run-time (note, this can only be used with non persistent Active Grids). This is crucial for networking code, where you have to use a special instantiation/loading method to load your player at run-time. A component based approach. Changing the implementation details of the system is as easy as changing out one or two components. For example, if you want to switch from a non pooling load solution to a pooling load solution, you can do so by switching out one component.. If you want to change from creating your objects via Prefab Instantiation to loading them via scenes and the AsyncLoadLevelAdditively (Pro Only for Unity 4, available to all users on Unity 5) method, you merely have to switch the appropriate component (well, technically you'll need to set up some stuff beforehand, but that's a different matter). In addition, this approach makes the kit highly extensible. Source code included. While most of the files are contained in two dlls (one for run time classes and one for editor stuff), this is merely to keep the number of script files as low as possible. The kit comes with zip files containing all the original files. Most customization will and should center on extending specific abstract classes, so you shouldn't need to worry about the source files. In fact, modifying and using the source files is not recommended, as your project will not be compatible with future updates. However, the source files can be an invaluable resource when creating your own custom components that extend the kit. Spoiler: Instructional Information/Useful Links All learning material can be found here. All Tools/Components of kit and where to find them within Unity. You can find information on the terrain slicing portion of the package (as well as some other tools) in my other thread, found here. My website also contains information on both the Dynamic Loading and Terrain Slicing Kits: Website Spoiler: Known Issues The example scenes in the Unity 4 version show "Missing Scripts" on the components. This is because the GUIDs incorrectly got changed. Please follow this guide to correct these issues. When changing the Origin Cell of a World in the inspector, columns and layers (if using a 3D world) are loaded at the wrong position as dynamic loading occurs (Will be fixed in the next update). An exception is thrown when inspecting a World Grid asset on any Unity version lower than 5.4.1f1 (Will be fixed in the next update). An exception is thrown when dragging a World Grid asset to the World Grid field on the World component (Fixed with Update 4.3.2). When slicing a terrain using a slicing region that does not start at normalized position x=0, y=0, the splatmap is off. This is due to an error in the texture offset calculation (which I have already corrected in an unpublished build). An update is being pushed to the store, but if you need a fix sooner please email me with your invoice number (Fixed with Update 4.3.1). When slicing a terrain, the position of the slicing region is reset when it is moved via the transform gizmo in the scene view. Use the sliders in the inspector (X and Z normalized position) while this is fixed (Fixed with Update 4.3.1). On Unity 5.3 and greater, inspector settings are not being serialized/saved properly. This will be addressed in the next update (Fixed with Update 4.3.0). Error with names of outputted slices and terrain data during terrain slicing (introduced with Update 4.2.0, Fixed with Update 4.2.1). Detail Objects (grasses, plants, etc.) sometimes get mixed up during the terrain slicing process (Fixed with Update 4.2.1). When persistent data exist for an active grid which has a player associated with it, that grid is not 100% accurate (Fixed with Update 3.0). When using the Scene Loader or AsyncSceneLoader components, if your root objects in each scene have children, those children are not properly set to the correct layer (Fixed in update 3.0). Collect Detail Patches setting is not copied properly to slices when slicing terrain (minor differences in position. This is a Unity issue and is just something you'll have to deal with). Spoiler: Important Information on Performance The main advantage to using this kit, and any other dynamic loading solution, continues to be centered around memory. Let's say you want to make a huge high resolution world, with a total resolution of 32768 x 32768 (height map resolution). This would cause many issues. First, it's impossible in Unity. The maximum resolution for an Editor created terrain is 2049. I think you can import terrains up to 4097 (maybe even 8193?), but don't quote me on that. But even if you could make this terrain, the memory used by it would exceed the maximum allowed memory for your game, both in the editor and in a standalone game. The solution is to break this single massive terrain into many smaller terrains, and only load the ones that are needed at any given time, which is the aim of my kit. Doing so produces a lower, more manageable memory footprint. In addition, creating an endlessly repeating world is only possible with a dynamic loading solution! If you are considering buying this kit, I recommend only doing so if you need to take advantage of the reduced memory usage a dynamic loading solution can offer you, or if you need any of the other features currently available and/or coming soon! If your curious about performance improvements, please contact me with details on your setup, and I can attempt some performance testing to see what sort of gains you can look forward to (if any). I'm not saying performance improvements are not possible, only that they are not common. If you do decide to purchase the kit, please read on. Other Performance Considerations Determining the optimal size of your terrains for use with the Dynamic Loading System is important. Large/complex (high resolution) terrains will produce a hitch in game play when loaded (this may change in Unity 5.0), so the solution is to use smaller/less complex terrains that have a smaller impact on loading/unloading. However, the smaller your terrain, the more terrains you will need to have in the scene to represent your world. The overall performance of your game will degrade as the number of terrains in your scene grows, so finding the optimal terrain size becomes a balancing act. If you are finding that the overall performance of your game while using the Dynamic Loading Kit is good, but there are hitches in game play when new terrains are loaded/unloaded, it is probably a good idea to try and reduce the size of your terrains. You can increase the load area size in order to compensate for the reduced size and ensure the same world area is loaded. Conversely, if your overall performance is suboptimal, but there are no hitches when terrains are loaded/unloaded, it may be worth trying out larger terrains. (Despite the talk of Terrains, remember, the DLK can be used with non-Terrains as well!) One final note: If you are expecting to be able to load AAA quality production Terrain without lag, you probably shouldn't buy this kit, as that feat is next to impossible with Unity's current Terrain system. This may change with Unity 5 Pro. Spoiler: Road Map Coming Soon [Now Implemented!]Alternate Naming Conventions - Currently, you must use the naming convention _Row_Column or _Layer_Row_Column. Soon I will be adding the ability to use alternate naming conventions, which will be useful for integrating the kit with third party assets such as Terrain Composer. [Now Implemented!]Secondary Groups - Secondary Groups are loaded on top of your primary worlds. These can be things like houses, scenery, or other miscellaneous objects. The idea is that you only need to have one main world with a World Grid. The Secondary Groups utilize the same information (cell size, position, etc.) as the main World, so you only need to go through the process of setting up one World and World Grid. Better lighting support - A standalone tool will be added that will allow you to apply a single scenes lighting settings to multiple scenes. This functionality will also be added to the Scene Generation tool. Separate Unity 4 and 5 versions. On The Horizon Multi Scene Light Mapping Spoiler: Important Note on Networking/Multiplayer The kit has not been designed around networking, so do not expect it to work with your networking solution straight out of the box. Creating a networking solution for any dynamic world loader is a complicated process, and should only be undertaken by users with ample networking experience and know how. This is especially true if you plan on utilizing the endless world or world resetting features, as these features will complicate your network design significantly. I will of course provide any assistance I can, but do not expect expert help, as I am not a networking expert. If you feel that the API is missing something you need to get your network infrastructure set up, please let me know! Spoiler: Important Note on Example Scenes/Resources Folder To make running the example scenes as simple as possible, I've included terrain asset prefabs directly in a Resources folder. To ensure that these assets are not included in your game build, you should change the folder name they are in to something else, such as "Resources_Backup". Bear in mind, however, if you update the Terrain Slicing & Dynamic Loading Kit, it will detect the absence of this folder and attempt to re import the folder and terrain prefabs. Email me or post here if you need any help!