Search Unity

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

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    Corrupt?? What do you mean? @recon0303 used it at open world world at mobile. Everything is about how much unity could do in background without fps drop, you have to mesure and check. Unity terrain must be streamed carefully because its full of uncompresed and ugly bugged data. So if you will load everthing slowly with experiance you will have smooth loading even at mobile. Models have no problem with streaming. Anyway unity terrain is not for mobiles users should bakeit into lp meshes this will reduce bat hes like hell from 500 into 1... Etc
     
  2. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634

    huh..... I been using World Streamer for about 2 years now about to Release a large map for Android using Unity terrains as I dislike using mesh.. yes you get more frame rates but its ugly harder to get the detail when texturing. with meshes. anyways, My map is 10 KM BY 10Km, with mobile, I could have larger if I wanted , I also have another map 2 KM by 2km, and another 1 KM, by 1 Km.... all three maps are on Android and have been....


    You can't just drop a terrain in and expect it to work well.. You need to optimize it, but using lower resolutions, tiles should be around 6-10 that the camera sees..you can use many tiles.. but your camera should not see more than that for mobile.... so be sure to set that so you don't see more than that. . each one, needs to be lower, in size.. so you need to split them to a proper size I can't say what size as it depends on many factors..... You need to test, as I have and many have...Culling distance needs to be adjusted properly and added...be sure its added.. and tested....

    Also I use Ring Streaming, which uses Low Poly meshes so further away you are seeing that and for performance, READ up on ring streaming.

    Also UNITY has an major issue atleast for me, 5.6 any of them causes me bad Frame rates for many assets and crashes......So I suggest to use 5.5 for Android, you also can try 2017.1.....
     
  3. nikescar

    nikescar

    Joined:
    Nov 16, 2011
    Posts:
    165
    @NatureManufacture I was referring to the APK demo in the original post. I wanted to throw it on some low end device to see how it performed. I was mostly curious to see if there was any stutter during streaming. I decided to just buy your asset so I will see for myself soon enough. :)

    @recon0303 See my response above ^

    Thanks for the heads up and tips though. I look forward to digging in.
     
  4. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634

    my post stands. not sure what else to say. I tried it and had no issues with it.. You also need to set up WS properly for it to perform right.... or of course no program will run right..it needs to be set up right, which is why, he is a ton of docs...and videos.. Telling you that it runs fine on low end devices.Welcome to check for your self....
     
    NatureManufacture likes this.
  5. amynox

    amynox

    Joined:
    Oct 23, 2016
    Posts:
    178
    Hi,

    Just want to know if world streamer is compatible with easy road 3 ?

    Thank you
     
    NatureManufacture likes this.
  6. imDanOush

    imDanOush

    Joined:
    Oct 12, 2013
    Posts:
    368
    It is!! But you have to do either one of the two options below:
    • If your laptop's or computer's RAM amount is enough to load whole terrains in one scene:
      Then you can load all the terrains in one scene and start creating the roads. Pay attention to the road sizes!! your road's length should not go beyond terrain's width and height.
      Typically that is the "Work" scene. You then create a layer for roads which typically shouldn't be smaller than the terrain's layers.

    • If your in-game world is too big that you can't load all the terrains in one scene:
      You need to save terrains as prefabs.
      Then you should load each terrain via "Local Updater" and build the roads for that specific terrain. After you've built your roads then you put it as a child object to the terrain scene, then you should save the terrain prefabs. So that you can load them in the work scene for the final phase.
      [If you want "seamless" roads then you can load a terrain and also load its terrain neighbors so that you could adjust the road positioning of the center terrain and then building the road.]
      Next, you have to load all the terrain scenes into the "Work" scene and then create a layer for the roads. Pay attention to the road sizes for creating the road layers.
    I recommend the 1st way, So if you - let's say - need 12 GB of RAM but your PC has 8 GB of RAM and your game is too big, I recommend buying a 16GB of RAM, it does worth it. But if you can't buy a RAM for your PC then the 2nd option is the solution. Not sure if there are other ways to do, but I've contacted both ER's and WS's authors for days and I've come up with these ideas.
    I do the 2nd way for my own project, it is 651 tiles of terrains and the roads are being built with EasyRoads v3 and WS.
     
    Last edited: Oct 5, 2017
    NatureManufacture and amynox like this.
  7. amynox

    amynox

    Joined:
    Oct 23, 2016
    Posts:
    178
    I'm fine with 1st solution ! as its the quicker one. but my issue is World streamer use the road Transform Position to know how to split the scene and when to Load or Unload the road part mesh based on player postion. I noticed that easy road put all the roads pivot in (0,0,0) !
    How i can tell Easy Road to set the road pivot in the road center pos and not in vector3.zero pos (specialy when storing the mesh road asset) ?

    Thanks
     
    NatureManufacture likes this.
  8. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634

    Yup this is how I do it as well. and yes you need a lot of ram, I had 32 GB. but with a large world I was hitting around 27 GB in the editor.....So I went to 64 GB ...if you use the Local Udpater you wont have ram issues.... But for easy roads if you have the Ram I also suggest the first way it works well. I have done this with two games now with World Streamer .
     
    NatureManufacture and imDanOush like this.
  9. imDanOush

    imDanOush

    Joined:
    Oct 12, 2013
    Posts:
    368
    Once all the roads get "finalized", you should move the child objects from "RoadNetwork" object, out. So that they wouldn't be a child of it or any other objects.
     
    Last edited: Oct 5, 2017
    amynox and NatureManufacture like this.
  10. amynox

    amynox

    Joined:
    Oct 23, 2016
    Posts:
    178
    even with that the road pivot stay at vector3.zero. I geuss i have to parent them to the terrain to make it work with WStreamer...
     
  11. nikescar

    nikescar

    Joined:
    Nov 16, 2011
    Posts:
    165
    I've built an APK for people like myself that wanted to evaluate the performance of World Streamer before buying. It's using the heavier "Tutorial World Streamer - Advanced_Game Float Fix" scene from the asset.

    Test APK - https://1drv.ms/u/s!Av-LCZ77XIduje8-zUV27oT-Qmmuvw

    I have to say that the performance is pretty amazing all things considered! It even runs reasonably on the cheapest Amazon Fire Tablets with only some minor occasional hitching when traveling very quickly across the level.

    I haven't dug into the code yet but, one change I will be looking to make is having the LOD1 tiles unload only after LOD0 tiles are fully loaded and visible. You'll notice on lower end devices that sometimes there will be holes where the LOD1 unloaded and the LOD0 has yet to load.

    Also, this asset could use a built in tool for splitting Unity terrains and mesh terrains. Having to use third party tools is not ideal considering having a grid of tiled terrain objects is the focus of this tool.

    That said, I'm very happy with World Streamer and I thank you for the work that went into this!
     
    Last edited: Oct 9, 2017
  12. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    You could change deloading time to remove this holes at low end device
     
    Last edited: Oct 9, 2017
  13. EddieChristian

    EddieChristian

    Joined:
    Oct 9, 2012
    Posts:
    725
  14. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    Hmm didnt test but awsome vegetation studio will handle it (Lennart made integration with me)
     
  15. EddieChristian

    EddieChristian

    Joined:
    Oct 9, 2012
    Posts:
    725
    That's a Great Start! I'm Beta testing on that. :)
     
    NatureManufacture likes this.
  16. txarly

    txarly

    Joined:
    Apr 27, 2016
    Posts:
    197
    Hey, i would like to know if world streamer works with easyroads3d,and in this case, what is the best way to manage the streaming of the tiles (terrain composer) and the floating fix point with the road system.I already have WS and i need a road/path solution and thinking to buy easyroads3d ,or another WS works with.

    thank you very much!!
     
    NatureManufacture likes this.
  17. lawsochi

    lawsochi

    Joined:
    Oct 24, 2016
    Posts:
    107
    I'm not the author of this asset, but if I'm not mistaken, the answer to your question is slightly higher ......

     
    imDanOush and NatureManufacture like this.
  18. imDanOush

    imDanOush

    Joined:
    Oct 12, 2013
    Posts:
    368
    Just want to note that I also wanted to buy those assets, I hope they're compatible with World Streamer.

    That shouldn't happen, maybe Raul - The author of the amazing Easy Roads asset - could help you.
     
  19. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    They will. I have Lennart on line everyday and I help him to release asset.
     
  20. imDanOush

    imDanOush

    Joined:
    Oct 12, 2013
    Posts:
    368
    Awesome.
     
  21. MarkusGod

    MarkusGod

    Joined:
    Jan 10, 2017
    Posts:
    168
    Hello! One brief question, occlusion culling and precomputed GI should be baked in work scene/via local area updater per layer, or there special button/process/parameters in world streamer?
     
  22. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    Depends from the scene.
    For open scene you should use realtime gi with 0.1 resolution or other - unity made tutorial about gi setup for open scene.

    You have lighting manager in world streamer where you could setup gi for layer.
    Light data is baked during build process but you should be able to bake it via local area updater too:)
     
    MarkusGod likes this.
  23. Alex3333

    Alex3333

    Joined:
    Dec 29, 2014
    Posts:
    342
    Good afternoon. already 2 months I can not understand because of what the big peaks at loading pieces of a card. with what it can be connected.
     

    Attached Files:

    • 1.jpg
      1.jpg
      File size:
      225.7 KB
      Views:
      751
  24. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    Show profiler from build at editor we mention there will be spikes from static batching, collider bake and other things that were made during build process.
     
  25. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,241
    I'm setting up World Streamer in a scene with MicroSplat, and when WS tries to unload a terrain tile, there's a console error:

    Can't remove Terrain because MicroSplatTerrain (Script) depends on it

    But then it apparently does remove the terrain (at least, it's not in the scene anymore). Not sure if this is a question for you or Jason, so I'll post in both places. https://forum.unity.com/threads/fre...or-unity-terrains.487458/page-12#post-3287636
     
  26. mattis89

    mattis89

    Joined:
    Jan 10, 2017
    Posts:
    1,151
    Hey! I have Gaia, Gena, uNature, emerald , suimono, and tenkoku sky... and my ram using is about 20gb in editor.. I have only 25gb.... And Im not even using the sky asset or emerald yet, I have barely any objects..
    I have a terrain created by Gaia and its 8x8 square kilometers..

    Would this asset help me?
     
  27. Alex3333

    Alex3333

    Joined:
    Dec 29, 2014
    Posts:
    342
    This is build. these are the peaks that occur every time you boot.
     

    Attached Files:

    • 2.jpg
      2.jpg
      File size:
      157.9 KB
      Views:
      745
  28. marcrem

    marcrem

    Joined:
    Oct 13, 2016
    Posts:
    340
    Hi,

    My game's level will be quite big, so having the (0,0,0) point move with my player is a great thing.

    However, I'm making some procedural stuff that appears at given coordinates and move around the level. How will this be handled ? I basically made a path system with empty gameObjects acting as waypoints, and the spawned stuff will move from the first point to the next. Let's say it moves 200 km during the game, how will World Streamer handle it?

    Edit for clarity:
    The waypoints are instantiated at runtime and the first point spawns at a precise location. That's my main concern, say the player moves and gets into a next "chunk", it might spawn the waypoints relative the new (0,0,0) ... Which I dont wan't

    Thank you so much.
    Marc
     
    Last edited: Nov 16, 2017
  29. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634

    Those assets aren't want matters... if you have or not. They really don't effect anything really, ......World Streamer, is great for having many objects to render.. Like an RPG, MMO, small , med, Open Large worlds....So if you are going to split terrains into tiles. You will benefit, if you have a game that has interiors, for maybe say an RPG or another type of game World Streamer is great.....but because all those assets are using that much ram in the editor.... really won't matter.. It boils down to what you want to do, and stream your world for performance reasons..... So if your rendering a lot of objects, in your scene.. Then sure its a good idea and great tool, I been using for years and for many types of games from Mobile, console and PC.... Most are larger worlds, but its not just for large worlds... So you need to find out what is causing, it to use that kind of memory......

    I'm sure Bart can weight in alot more...but this is from my experience.


    So to reiterate if you have many objects in game to render, then yes it would be useful to you...If you have a decent size to larger map of course...no doubt. If you have a game, where you want to stream the interiors of your buildings, yes of course..really depends what your doing. But those assets you named aren't want decides if you need, World Streamer or not. I would first find out how big is your map, how many games objects do you plan to have in areas...block outs are common to figure this out...

    If you have a med, to large map....Then yes, 100%..

    Hope some of that helps.. Great tool, regardless... I won't use Unity with out it.
     
  30. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634

    So what is being added with World Streamer from VS? what type of integration? Thanks.
     
  31. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    Please read manual:( from beginning into the end. There is info about colisions. Check baked colisions at player setting.

    You could reduce memory usage by using local area updater in WS. It will alow you to work only on piece of the world.

    WS also shows how much your world have been moved so you could fix position in your scripts by this value. Basically it is used in client/server rpc communication but yeah it could be used in such case like you got.

    Everything is on Lennart side, he said his system is compatibile. He probably rebuildied it a bit to do not create problems with WS like missings etc. Anyway we could ask them both.
     
  32. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634
    ya I'm curious, because I used it in beta, and didn't notice anything. special. So just wondering what was done.

    It worked fine with World Streamer . I have used InfiniGrass 1 , 2 both worked fine and Unature.

    So if he did something special let me know so I can check it out... Thanks.
     
  33. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,241
    Can anyone point me to a tool which will batch-convert all my terrain tiles to meshes? I've looked at the tools in the asset store, but none seem to have that functionality. I have 64 tiles and would really rather not have to do them manually, one by one...
     
  34. lawsochi

    lawsochi

    Joined:
    Oct 24, 2016
    Posts:
    107
    look at the Terrain To Mesh, maybe it will help
    https://www.assetstore.unity3d.com/en/#!/content/47276
     
  35. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,241
    Thanks but that's one I looked at -- doesn't appear to support batch conversion for multi-tile terrains. Surely this is a common need!?
     
  36. lawsochi

    lawsochi

    Joined:
    Oct 24, 2016
    Posts:
    107
    sorry, I can not say for sure. I think it will be right to ask the author of Terrain to mesh, and you are right, it will be useful to many.
     
  37. lawsochi

    lawsochi

    Joined:
    Oct 24, 2016
    Posts:
    107
    I wanted to ask a few questions:
    1. Did someone use WS with Amplify Texture?
    2. I have several underground levels (railway) that connect different terrain tiles. and this is not always the neighboring tiles. The output can be located through 2-3 tiles from the entrance. is there an option not to load the terrain at a time when the player is in the dungeon.?
    Thank you.
     
  38. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634

    1. Docs show you can use it..I have used Granite, same thing.. works fine.,

    Far as what your asking, not 100% for sure, what your asking but by the sounds, I would check out in the game docs, about 7 - 7.2 Collider Streamer set up...I use this set up for some of my under group related scenes... Uses colliders so you can stream a terrain or not.. load objects, Player, you can, also add timers..etc.. So look it this.... may serve your purpose if I understood your question.....
     
    lawsochi likes this.
  39. lawsochi

    lawsochi

    Joined:
    Oct 24, 2016
    Posts:
    107
    Thanks a lot for the help, I'll read the documentation;) Special thanks for the information about Granite!
     
    recon0303 likes this.
  40. Alex3333

    Alex3333

    Joined:
    Dec 29, 2014
    Posts:
    342
    I put a daw on the baking of the colliders. However, there are peaks in my mind. I read the documentation. Do you mean to make me an additional separate layer of collisions? (I now have 2 layers) 1 card. 2 objects.
     
  41. Rod-Galvao

    Rod-Galvao

    Joined:
    Dec 12, 2008
    Posts:
    210
    Is world streamer compatible with MapMagic?
     
  42. malkere

    malkere

    Joined:
    Dec 6, 2013
    Posts:
    1,212
    Hey @NatureManufacture I've got a few of your assets I love, and was recommended here by @eagle555 from TerrainComposer2. My question is about procedural generation. There are some old chats about it in this thread and it's very briefly mentioned in your manual, I wondered if there is any updated information on this use case? Any examples/case studies or videos? I'm fine with getting into the code myself, the only goal is infinite terrain generation, zero prefabricated material. I generate everything in runtime. I actually generate two separate terrains systems procedurally, but the default usage of assets like TerrainComposer2 or MapMagic are not really built for this and I've run into a lot of unforeseen problems trying to force them to work with Floating Point error corrections methods.

    Basically I've been shifting the world at 10km increments back to zero, then offsetting the noise used to generate terrain heightmaps by 10km. It sort of works, sort of breaks a lot =o=

    If I could get a little better explanation about how your system attempts the problems I'd be glad to give it a try.

    Thanks!
     
  43. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634

    Map Magic, has its own Streaming solution... works differently, so you can use it sure, but you would need to like any terrain tool, TC 2, Gaia, World Machine, World Creator what ever.....you would need to export out the height maps.. into tiles. That's it..
     
  44. imDanOush

    imDanOush

    Joined:
    Oct 12, 2013
    Posts:
    368
    I just wanted to correct something. You were right, the pivots are set to Vector3.zero worldwide.
    Now it is 110% possible to fix the problem. Some DIY fixes are:
    0 - You can visit this link (https://answers.unity.com/questions/7664/changing-the-pivot-point-of-meshes.html) for a Unity3D Pivot Editor script
    1 - You can do this in 3DS Max, I did that thousand times in it and it is easy, You can also write a 3DS Max script for it.
    2 - You can create an empty game object and put it where the pivot of the road supposed to be, then add the road as a child object. I did not test this but it should work.
    You also could ask ER's author to do something for it.
     
    Last edited: Nov 29, 2017
  45. KRD-Games

    KRD-Games

    Joined:
    Nov 22, 2017
    Posts:
    4
    I'm testing Collider Streaming at the moment. It's working but the loaded scene snippets stacking up, because they don't get discarded. -> Memory leak incoming!
    Am I missing something?
     
  46. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    No what for? If you set coliiders to baked they will be baked during build time and cheap in streaming but... its always good to use boxes and other cheap shapes if you can instead of vertex meshes which are expensive.
    What do you mean? Could you show setup and what happend?
    Hi
    We must create such demo someday :D anyway we didnt add anything new there. There is only a base to use which must be filled, changed by user for his specific setup and system. In floating point fix we just move scenes (holders) into specific area. Not sure what exacly you need to know. you need to specify a bit.
     
  47. malkere

    malkere

    Joined:
    Dec 6, 2013
    Posts:
    1,212
    Well just a bit more about how you envision that. You're considering for example each scene as a 10,000m chunk and shifting between scenes at a specified threshold such as 11,000 in and 9,000 out? Do you have users or have you tried this even with pre-generated worlds that go beyond 20km?

    I can see how that could work pre-generated, I'm just not clear if that's what you guys are suggesting is possible, or am I looking at it wrong? You can conceive of this working with TC2?

    @recon0303 That won't work in my case because nothing is pre-generated. Everything is generated in runtime using seeds and noise. Anything that can generate a mesh or a terrain can handle one scene just fine. Nobody has a good response to moving beyond the borders of floating point errors when it comes to procedurally generated worlds though. As long as we're using floats anyway.

    If I can setup something to just understand how far from 0,0 we are for generating terrains using properly offset noise and have WorldStreamer handle moving into neighbor scenes asynchronously, it should work. But it's so much harder behind the scenes.
     
  48. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634

    eh??? what won't work.. I don't think I replied to you, I don't see the post. So not sure how to answer that.. Please remind me? Did I reply to something sorry. :) /cheers.


    but to your post, we run ours on our server and load the entire terrains/chunks for multi player. so our set up is different.. we don't use fix floating.position . We have over 20km./ Just curious just wondering why are you going about it that way?? World Streamer has most set ups out of the box, with no coding, or very little depending on your set up. I'm trying to wrap my head around why your're going about it that way.. Just curious, so I hope I may ask. .Cheers.
     
    Last edited: Nov 29, 2017
    malkere likes this.
  49. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    You simply fill terrain data - recycling. Terrains apear and move and you fill next tiles with generated data. You have to loop terrains so world will be endles :). So for example you have world 10x10 terrains and looped when new blank terrain is loaded or looped you fill it with data before it will be turned on at the screen. You get endles tiles to file by your data which will be removed from memory when they will gone from the scene. I hope i hit the point.
     
    malkere likes this.
  50. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634

    I know this is old, but don't think it was answered, anyways... I will answer it, yes you can use L A M. That is more of a shader tool.. Far as streaming Vegetation......Check out Vegetation Studio its coming to the store any day and will work well with World Streamer....and stream Vegetation among other things... Nature works with that developer with his tools...So I suggest to get it soon as it comes out..