Search Unity

  1. Unity 2019.2 is now released.
    Dismiss Notice

[RELEASED] World Streamer ! Forget about your game memory usage and create big world!

Discussion in 'Assets and Asset Store' started by NatureManufacture, May 13, 2015.

  1. newonelei

    newonelei

    Joined:
    Mar 15, 2016
    Posts:
    2

    Thanks for the reply. Is it supported after the light probes are set for the whole huge map and then split this map to tons of small maps? Does world streamer support the case that combine tons of small maps with light probes set up individually and combine them to a huge map?

    Please correct me if my understanding is wrong.

    Thanks!
     
  2. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    You have checked looping option - streamer script. If you don't have looped seamless world you should uncheck it.


    I have never seen situation like that. So at the end of generation process everthing is fine? Have you tried again? Could you show me few screens from hierarchy: before split, after, and generated scene, split options?

    I tested light probe in 2 sectors and they were loaded, object get light from them.
    I see 2 ways to use it:
    - light probes in each sector but you have to manualy create probes for sectors. I mean you need to create light probe group with correct position for each sector. It's quite ok:)
    - light probes at scene with player and when object just have been loaded it get light from probe.
    I can always make few more tests for you.
     
    Last edited: Mar 16, 2016
  3. Gabo_campitelli

    Gabo_campitelli

    Joined:
    Oct 17, 2012
    Posts:
    285
    Okay, so here the screens.

    WS1.jpg

    After split and scene generation

    WS2.jpg

    i now also realize i see negative grid coordinates. why would there be negative coords?
     
  4. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    Ok you get "-" coordinates because your terrains pivots are negative. Good habit is to start your terrains from 0 0 0 (just move them). Could you remove those generated scenes and generate again? Something could block overwrite process in unity. If this will not help please contact me at skype: dahrrrr because this probably looks like a bug. If it is a bug we will fix that in few seconds.
     
    Last edited: Mar 16, 2016
  5. runningbird

    runningbird

    Joined:
    Sep 3, 2009
    Posts:
    374
    Looks like when I unchecked the looping option none of the scenes load when I play the scene?
    upload_2016-3-16_12-13-59.png
    upload_2016-3-16_12-14-22.png

    EDIT: Nevermind I had to move the player object to where the first terrain would show up lol
     
  6. hoesterey

    hoesterey

    Joined:
    Mar 19, 2010
    Posts:
    543
    Hi,
    Few questions on your floating point fix system:
    -My scene has no terrain but lots of level assets many 1000s on screen at once. Do you have a per object millisecond cost for using this script?
    -Does your floating point fix system support moving this many assets at once?
    -Does the system work with baked light maps?
    -Does it move active world space particle systems or does it just move the emitter and leave the particles behind?
    -Does it work with non-standard assets such as particle playground and gpu particles?
    -Does your floating point system actually move the static assets or does it warp the dynamic assets only and load a copy of the terrain at the origin?

    Thanks!
     
    Last edited: Mar 22, 2016
  7. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    Hi!
    - As you saw on promotional movie (with car) I moved whole town with roads and mesh colliders and there was no performance drop :). Terrains in the world streamer are only part of the object types, system works with all unity objects.
    - Yes it support, your objects will be in sectors and we move sectors, not every object one by one.
    - Unity 5.2 support async loaded lightmaps, so if you use unity 5.2+, everything will work fine.
    -We move emiter, but if you will change emitter to local space, you will not feel any move and everything will work. If you can't do that, you always could change this only for a short moment. After system will move whole world you could change emitter to world space again.
    - I haven't tried with gpu particles, but if you can move them as an object, this should work, but probably they should work on local area space, or they should work at this space for a while, during moving.
    - It moves static and dynamic objects, also you could move objects that are not connected with streamer like cameras or other things, you simply need to add a script to this object and connect with streamer objects.
     
  8. hoesterey

    hoesterey

    Joined:
    Mar 19, 2010
    Posts:
    543
    Sounds great! One last question, when you say it moves static objects do occludes and light maps continue to work properly after being moved?
    Thanks!
     
  9. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    Lightmaps work properly, they are baked at objects. Btw remember that you couldn't use static batching with floating point fix, because we are unable to move this kind of objects. Occlusion culling can't be streamed at this unity version. You could use culling groups and Lods until they add this.
     
  10. hoesterey

    hoesterey

    Joined:
    Mar 19, 2010
    Posts:
    543
    Great thanks!
     
  11. DiscoFever

    DiscoFever

    Joined:
    Nov 16, 2014
    Posts:
    254
    How does it work for 2D ? Any example ?
     
  12. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    Hi.
    It works in any axis. You could stream in x,y,z directions. It will work fine ;)
     
  13. sowatnow

    sowatnow

    Joined:
    Jun 12, 2014
    Posts:
    303
    Hi there,

    Can I use this just to spawn and despawn dynamic/static objects when player collides with something and then when stops colliding with that specific object, it just unloads all the stuff and free up ram?

    Cheers
     
  14. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    Hi.

    Not in this version yet. In next release.
     
    sowatnow likes this.
  15. sowatnow

    sowatnow

    Joined:
    Jun 12, 2014
    Posts:
    303
    When is next release due?
     
  16. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    We will add this until end of may. You always could avoid this situation by loading something in close range in different layer.
     
  17. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    Hi
    Our PBR Graveyard Pack is available at AssetStore now!



    Pack contains 112 prefabs, 157 textures, 101 models, 2 soundtracks. Most models were sculpted, all of them use diffuse, normalmap, specular, occlusion and detail maps. More details at assetstore page:)

    Movie with assets:


    You could also take a look at our models at Sketchfab:
    https://sketchfab.com/naturemanufacture/collections/pbr_graveyard_pack

    One of them:


    Assetstore link:
    https://www.assetstore.unity3d.com/en/#!/content/58915
    Hi our PBR Graveyard Pack is available at AssetStore now!



    Pack contains 112 prefabs, 157 textures, 101 models, 2 soundtracks. Most models were sculpted, all of them use diffuse, normalmap, specular, occlusion and detail maps. More details at assetstore page:)

    Movie with assets:


    You could also take a look at our models at Sketchfab:
    https://sketchfab.com/naturemanufacture/collections/pbr_graveyard_pack

    One of them:


    Assetstore link:
    https://www.assetstore.unity3d.com/en/#!/content/58915
     
    recon0303 likes this.
  18. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,595
    Tinjaw likes this.
  19. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    Yeap, uConstruct starts to support World Streamer and it will work with his every aspect and feature. Online and multiplayer features from both systems were matched, so you could use uConstruct with our floating point fix and looped system.
     
    John-G, Tinjaw and runningbird like this.
  20. Shadex

    Shadex

    Joined:
    Dec 18, 2013
    Posts:
    74
    Hi, i'm looking for a streaming solution for a big open world, so obviously this is the right place.

    I have some fully done terrains that i have been working with that are about 3k x 3k and all part of the same continent. Ideally i would like to stream the entire continent. If i wanted to add new terrains to the continent, would i just load them in one scene and split them, or would i have to purchase terrain stitcher? How would this work with your system? As much as i want to be able to plan a world out, i would like a way to essentially keep adding to the terrain.
     
  21. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    Yeap, this is the right place for devs who want to save memory cpu etc...

    Ok so:
    - First you have to choose how big your terrain chunk should be. If 3kx3k you need to simply :
    a) put them at one scene and create layer with scene spliter, call it for example terrain.
    b) set streaming chunk (sector size) to 3k
    c) click split then generate and done
    If you want to smaller chunks, cut it into parts by free tool from FAQ section and create layer with smaller sector size. You could stream models, light, particles, everything.

    -If you add new terrains you could use our local area updater for this (you don't have to load everything into one scene and split again, ofc you could..). Local area updater is one of our the most innovative features. You could work at huge or small world and you have loaded in editor only small area or layer (if many peoples work at the same area). You don't need to load everything, only local area or specyfic layer. This extremely improve editor work performanace and team co-operation.

    -Why developers use our multiterrain brush or terrain stitcher?
    a) with multiple terrain brush you could work with many terrain tiles like with one big terrain. You could blend and paint height map or textures (splatmaps), on borders without holes and switching from terrain to terrain. Multiple terrain brush give you also ability to paint with bigger marker than unity have in standard.
    b) terrain stitcher is usefull if you want to fix borders (heightmap) in many or few terrains at once. It have many veeery advanced math functions to stitch your terrain perfectly in many cases. Take a look at the screens in Asset Store.

    Feel free to ask questions:)
     
  22. imaewyn

    imaewyn

    Joined:
    Apr 23, 2016
    Posts:
    158
    Hello, I'm working on aviasim and using terrainComposer with terrain now 16x16km (256 meters). Camera can up on height like 1.5km and I'm afraid that larger part of terrain we must will see in camera. Is this plugin will make sence for my task?
     
  23. Pequisto

    Pequisto

    Joined:
    Apr 21, 2015
    Posts:
    66
    I've had this asset for 5 months and am still struggling with it. Back in March, there was talk of updating / revising the documentation (which is sorely lacking). Any ETA on this? Your support and responses are very prompt which I'm grateful for but I can't continue to use World Streamer if even I can't figure out my problems using it.

    Quite often, when I follow the YouTube tutorial and/or the enclosed Manual, I enter all of the relevant information in the SceneSplitter and upon clicking "Split Scene" nothing seems to happen. No scenes are created, nothing...

    Perhaps I'm expecting too much from this asset but I've had to move on to Terrain Slicing & Dynamic Loading Kit and customize my own scripts for use with that asset (which is more complex) but I really was hoping that World Streamer would make my project far easier.
     
  24. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    Yes, you could enlarge the area of terrain loading at runtime so, you could load bigger area when your camera is higher.

    If you need help you could always call me by skype I will show you how everything works. If something is not clear for you, in few seconds you will get knowledge, our system is really easy.
    Quick steps:
    - Your terrain must be in chunks before split. Split mean --> System will put all objects in correct sector and layer
    - First you have to set layer name and prefix for each layer, ofc if you will not set any prefix, system will put in sectors all objects at the scene. Prefix give you ability to skip objects that you don't want to stream or you want put them at specyfic layer.
    - Prefix mean objects first word in name, like "terrain" for this group of objects: terrain_terrainame1; terrain_terrainame2; terrain_trollland. We use objects names to recognize objects and put them in to correct layer. Your models or terrains shouldn't be in any parent at hierarchy, because we use object pivot position to put them in correct sector.
    Example image:

    - Sector size should be the same as terrain chunk size
    - You click split
    - Click generate
    - Done and it works.
    I think there is no easier tool to stream at asset store. Streaming coudn't be more automatic.
    About documentation - we finishing new tool (collider streaming), it will be usefull to load objcets only if player will hit a collider. After that I will rebuild whole doc and make a lot of new tutorials.
     
    reese01, runningbird and John-G like this.
  25. Mark_T

    Mark_T

    Joined:
    Apr 25, 2011
    Posts:
    303
    Hi there,
    Is it possible to load a custom range of tiles on each layer? What do I mean by that? As an example, I have a world made from 30 x 30 terrain tiles. In the first layer I want to add terrain tiles from range 0 to 3, with all the included assets. On the second layer ranging from 4 to 8 all the terrain tiles and all the other objects. In layer 3 terrains and objects in the range 9 to 15 scenes. In the last layers ranging from 15 to 30, all the other scenes. This way I can skip unity`s GroupLOD and load less objects in the memory. This will work very similar with the SmartLOD asset, which is loading the objects by streaming them from the disk based on distance. The scenes closer to the player will have some more detailed and heavier objects loaded, and the ones in layers 3-4-5 for example will have objects loaded that will never be close to the player or camera. While it can be useful to organize layers based on the type of objects (trees, boulders, houses, etc.), I find pretty limiting not to be able to load only ertain objects based on the distance. I know about the tagging system, but I would like to define a limited range, not all the objects to be loaded from scene 0 (where the player is) to the ones placed at the limits of the world.
    Thanks!
     
  26. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    Hi!
    This is not possible now. You know, you will have to create huge amount of scenes for your game to get such result. There also will be problems with updating such construction. Anyway we will add this to our wish list because it could be usefull in many cases. We could add this in next version.
     
  27. Mark_T

    Mark_T

    Joined:
    Apr 25, 2011
    Posts:
    303
    I`ll be really grateful for that. I think it can improve performance a lot, especially with huge worlds.
    Gods speed and wish you a very nice day, Sir. :)
     
  28. MrGky93

    MrGky93

    Joined:
    Feb 27, 2014
    Posts:
    277
    Have a bug.
    I have 4 big Terrain 2000*2000 now i use world streamer and check the loop for make a endless game.
    Now when i fly to the end of the terrain it dont loading the right Terrain or load to slow about 2sec for loading.
    Also the range of the loading its only when im out of the first Terrain the second Terrain loadings:/
    hm also all 4 terrains loading at the same time :/
     
    Last edited: May 24, 2016
  29. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    How big is your loading and deloading range? The only problems could be when you still have first terrain loaded and you want to load it again as looped. At doc there is info, you couldnt have bigger loading range than half of your world size because loop will have errors. If you have 2x2 terrains each 2000x2000 I'm almost sure that is because of loading range and world size.
     
  30. MrGky93

    MrGky93

    Joined:
    Feb 27, 2014
    Posts:
    277


    how to fix it ??
     
  31. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    Change deloading range to 1, 1, 1 but configuration with 2x2 terrains, loading range 1 and looping is very risky. Anyway try it.
     
  32. MrGky93

    MrGky93

    Joined:
    Feb 27, 2014
    Posts:
    277
    not really working :/
    1.all my terrains are always loaded :/
    2.When im fly out of a terrain the other dont load or only one is loaded but on the false position

    Is this because my terrains are not on postion 0 0 0 ??
    my terrains are between 1000-10000 ??

    edit:x
    Do i use 3x3??
     
    Last edited: May 24, 2016
  33. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    We found few errors with looping only.
    -If someone use looping, streamer will not stream properly, if your world haven't models or terrains starting at 0,0,0. It create empty space from 0,0,0 to first model.
    Look at screen: Bassically this is not error but type of your world beginning/reference. We will add this to an option as:
    - Relative world beginning
    - Absolute world beginning

    - If you have sectors with "-" values, this will also breaks down looping. (models at "-" coordinates). This is our bug.

    - If your world is smaller than 4x4 sectors with loading range 1, streamer will not stream properly because we cound not load the same area twice. We must remove old world beginning first, before we could load it again in another place.

    We will fix that in upcoming update

    I had to modify this post many times because it's hard to explain.
     
    Last edited: May 25, 2016
    MrGky93 and runningbird like this.
  34. Shadex

    Shadex

    Joined:
    Dec 18, 2013
    Posts:
    74
    Quick Question: I have a 32k x 32k terrain that i made with gaia, with 2048 detail resolution and 24 resolution per patch. It acts like my detail resolution is 1, as everything is cut up into huge grids when i try to place grass and such. Is this the floating point error problem that your asset fix's? If so how does it fix it? Also are their any tutorials for creating huge terrains with World Streamer?
     
    runningbird likes this.
  35. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    You could change detail resolution per patch manualy. It will not reset your details on terrain. You get 1 detail per patch after cuting your terrain into smaller parts? What tool did you use to cut it?

    Floating point error is when you are far from 0,0,0 point and physics starts to work unpredictable. All operations that use position are broken because 64 bits it not enough to store partial results of mathematical operations in engine.

    Working with small worlds is the same as with big. It's universal tool. When our team will back from unite, we will release new versions with a lot more docs and tutorials.
     
  36. runningbird

    runningbird

    Joined:
    Sep 3, 2009
    Posts:
    374
    It would be great if your tool did the terrain splitting when you split the scenes out.
     
  37. sowatnow

    sowatnow

    Joined:
    Jun 12, 2014
    Posts:
    303
    Agreed.


    Do you have video tutorial?

    Got a few question:

    How does it work with a scene that is not part of the streamer? ie a house or dungeon, which you can enter when you approach a door/gate and then it loads a new scene. =


    Thanks
     
    Last edited: Jun 13, 2016
  38. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    In new upcoming version there will be also collider streaming, as an example I will give you: you will load house interior only if you enter the collider. If you switch into scene without stremer you have your scene only, there are no contraindications. When you back to your scene with streamer it will load necessary locations.

    Video tutorial Please turn on subtitles.:
     
    Last edited: Jun 13, 2016
    sowatnow and John-G like this.
  39. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    upcoming update "1.7" Release date: 8-14.08.2016

    - Bug fixes with looped world which start from "-" positions. (done)
    - New gizmos for sectors. You will be able to visualizehow far you stream every layer, compare them etc. (done)
    - System speed up (done)
    - Changes in UI to
    more intuitive, less windows (done)
    -Collider streaming. You will be able to stream sectors that only show up when player hit collider. Usefull for building interiors! Collider could be looped, it will be also compatible with floating point fix system. With this system you could avoid loading big group of invisible models. (done)
    -Ring streaming. You are able to load objects in specific range and than replace them when you are close or far enought. It could be usefull as LODs for far view terrains. At close distances you will have terrain at far you could load low quality mesh. You also could use it to replacing objects/models in different distances.(done)
    - New tutorials and manual doc. It will be more based on typical asked questions.
    - Streamer objects will get prefabs that are easy to setup (done)
    - Tooltips (done)
     
    Last edited: Aug 3, 2016
    Superjayjay, runningbird and John-G like this.
  40. Mark_T

    Mark_T

    Joined:
    Apr 25, 2011
    Posts:
    303
    What about the layers loading custom range? Is this feature still on the table?
     
  41. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    What do you mean? Each layer at the moment could have own loading range.
     
  42. runningbird

    runningbird

    Joined:
    Sep 3, 2009
    Posts:
    374
    Can't wait to check out the update keep up the good work.
     
  43. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,487
    What do you mean that the collider can be looped?
     
  44. Mark_T

    Mark_T

    Joined:
    Apr 25, 2011
    Posts:
    303
    Post 375&376
     
  45. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    I mean if you loop your world, collisions which loading scenes will be compatible.
    We will try to do this in this update but we will see. Ofc it will be better to add everything now.--> less work with tutorials and documentation.
     
  46. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    We will probably add this for you:)
     
    runningbird likes this.
  47. Mark_T

    Mark_T

    Joined:
    Apr 25, 2011
    Posts:
    303
    Hats off, Sir! :)
     
  48. errandfox

    errandfox

    Joined:
    Apr 22, 2015
    Posts:
    42
    Does this need unity pro? I've purchased but couldn't get any of the demo scenes to run..
     
    NatureManufacture likes this.
  49. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    1,590
    You dont need to use unity pro.
    1. Please read manual carefully
    2. Please add scenes to build settings.
    You probably have info at streamer objects in test scene with "you have to add scenes to build settings".
     
    Last edited: Jun 23, 2016
    errandfox likes this.
  50. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,487
    One idea you might want to consider as a new feature and an additional layer of occlusion would be a system where the designer can specify areas that are visible or not from other areas. I implemented something like this for one of my projects and it really helps. Basically, you have to set up areas of the game with all objects in that area contained under the same root object. For example, I might separate several dungeon rooms each into their own areas. I may then separate entire dungeon levels into separate areas. Now, I put a trigger collider that encompasses whatever size I want and when the player enters that collider, I specify what areas are visible from within that area. I don't have to specify the invisible ones because they are just whatever isn't in the visible list. And when the player exits the collider, the code does a one time refresh of what should be active and what isn't. So the player moves around the world and as he hits these colliders, different areas of the game turn on or off. And if something isn't active in the hierarchy, it should help to improve any standard Unity occlusion culling that is being done.

    This is a good approach because it uses known information instead of having to computationally figure something out at runtime. As the designer, I know what areas should and should not be visible from any point in the game. So, storing this and using it is beneficial.