Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    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. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,023
    End of January probably:)
    1) Nope.
    2) There is player is spawned button (checkbox) :) Tag player and share this tag to the system. System will search object by tag until it will find spawned player.
    2.1)
    a) freeze player position until system will load game (single player solution)
    b) freeze phisics until system will load game (single player solution)
    c) load world for "pointer", during this loading player is in "safe" platform and when loading is finished, move player to pointer position. Then you change object to fallow in world streamer to player again. (MMO and online game solution).
    d) Add some to Y player position (stupid but works), System first load objects under the player.
    It's your choice, there are many ways, everything is on your side.

    e) Yeah this is also way to solve that!
     
    imDanOush likes this.
  2. adndima

    adndima

    Joined:
    Jun 11, 2015
    Posts:
    47
    This plugin is very good. But when I work with it, there are some problems. I have a sliced 2x2 km terrain with the segment 256x256m. In the game each segment appears with strong delay of FPS. Also this problem was seen in your latest video. What to do with this problem?
     
  3. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,023
    Hi! Thanks for good words:)
    So try to reduce Scene Load Wait frames to 1 and Increase max parallel scene loading if your assets are cheap to load. This will speed up loading.
    If you have any lags (slowdown) check if you have more then one terrain neighbour script.

    Also check this at build it will be much much faster
     
    adndima likes this.
  4. DarkXess

    DarkXess

    Joined:
    Sep 30, 2014
    Posts:
    136
    Hey @NatureManufacture - I have been going over this tutorial and still playing around with World Streamer but my question is, how would you do the same thing shown in the above tutorial with multiple players in an MP game?

    Could you tell me what is the best way/method using this for an MP game with mass player count as the tutorials you have up also point and many different ways, I'm just wondering which would be the best.

    Thanks :)
     
    Last edited: Jan 6, 2017
  5. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,023
    Many our users use MP with world streamer. Everything depends from client-server construction. Basically Streaming have nothing to multiplayer until you don't use floating point fix. If you want to restart world position or loop your world. You will find tips in manual how to handle that and which values will help you in your client server communication.

    If you have different app for server in batch mode like mmo game or multiplayer fps games or games with more then 4-6 players have, World Streamer will work perfectly. That because streaming is only on client. Server is running on batch-mode without streaming and takes only few mb of ram and very low cpu sources. Example of game with such construction which runs on World Streamer is Gloria Victis MMO. http://gloriavictisgame.com/

    If you have peer to peer case is a bit more complicated. Because players should have streamer connected to one of them. This will a prevent data duplication, also you shouldn't charge other players by streaming area for rest of the players.
    In our opinion best way is to create client and server app and then you don't have to care about any problems.I would even say most MP games use server as separated appcliation.
     
    DarkXess likes this.
  6. DarkXess

    DarkXess

    Joined:
    Sep 30, 2014
    Posts:
    136
    Okay thanks for the reply, I understand it now. I should have really consulted the manual in the first place before bothering you haha.

    Just one more question though, maybe sounds a little stupid - when I make the terrain, can I use this FIRST and then edit the terrain, detail, objects, etc after or should I do everything first and then use World Streamer? the world I am working on is quite big, actually really BIG lol. So working in sections would help me a lot, is there ways to work on such a section while hiding the rest such as world streamer does and then unhide them as I go along to work on them while hiding the other sections I have completed? thanks again :)
     
  7. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,023
    Hehe also in manual you have info about that. Anyway our multiterrain brush will alow you to work on terrain tiles as they become one terrain. You have heightmap tool and texturing tool there. Do not shy you could always ask any question that you want even if you have this in manual :)
     
    DarkXess likes this.
  8. DarkXess

    DarkXess

    Joined:
    Sep 30, 2014
    Posts:
    136
    haha lazy me, oh well - serves me right I will have a big long read before asking the next question :D

    Thanks :)
     
  9. adndima

    adndima

    Joined:
    Jun 11, 2015
    Posts:
    47
    How to make the objects, which do not fall into the camera, also disappeared?

     
  10. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,023
    Hi.
    Umm that was our culling for terrain (this what you show us). You want also object to dissapear? With therrain there is simple thing but for models this could be problematic and inefficient. This will only reduce LOD refreshing cost for this models, maybe also something from cullling but with streaming culling on cpu is very very low. We have somewhere custom script which will work like that. We made if for one of our users. If you wan't to try it out please send us email.

    Full list of features for 1.9. Did we miss something?

    upcomming Update "1.9"
    - System that holds or moves player to safe place during loading time.
    - System which manage physics when player is far from objects
    - Terrain culling camera setup changes (done)
    - Manual update
    - Small fixes (done)
    - Exception script for terrain at neighbour LOD system (done)
    - Removes warnings for 5.3+
    - Light and GI additional manager
    - Streamer should works with catalogs in hierarchy.
     
    Last edited: Jan 9, 2017
  11. virror

    virror

    Joined:
    Feb 3, 2012
    Posts:
    2,963
    Removes warnings for 5.3+
    Thank you! : D
     
  12. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,023
    We already have version with fixed this and few other things if you need it quick :)
     
  13. virror

    virror

    Joined:
    Feb 3, 2012
    Posts:
    2,963
    Nah, its no hurry, i just dont like assets that ship with warnings, it looks a bit unprofessional and it can hide important warnings from your own code. But i have other assets that also give warnings, so im trying to get used to it ; )

    Very interested in the physics thing as well, care to share some details on how it will work?
     
  14. adndima

    adndima

    Joined:
    Jun 11, 2015
    Posts:
    47
    Thanks for the answer. When will the update?
     
  15. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Is it possible to have areas of the world always have their colliders active, but streaming in just the geometry as needed? I have a racing game and while the player might be in one section, the opposing cars could be far off on another part of the track and I wouldn't want them falling off the world if the geometry for those areas wasn't loaded. I realize I could simply separate my colliders out and always have them loaded, but I'm wondering if there is some built-in function to do this as part of the streaming setup.
     
  16. virror

    virror

    Joined:
    Feb 3, 2012
    Posts:
    2,963
    I dont really see any point of having that built in since you can just have them separate?
    Either you just have them always in the game scene, or you just put them on one big layer.
     
  17. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    The point is simply automation. If it can be done automatically during the setup then I don't have to expand hundreds of objects in the hierarchy and move out their colliders to another place. And that's provided the colliders are separate objects and not attached to mesh components. If the colliders are attached to mesh components then I'd have to remove them from those components and put them on their own separate objects. If there are hundreds of objects with dozens of nested components then this can obviously be a huge task. See the point now?
     
  18. virror

    virror

    Joined:
    Feb 3, 2012
    Posts:
    2,963
    No, how are you supposed to automate that? If the colliders are parts of the objects that are going to be hided? How how will it know what colliders to separate and not? How should it know how to separate them without breaking things? I cant see any kind of automation that will help without spending equally amount of time setting it up to begin with.

    Edit: im not trying to be rude here, i just cant see how it could be done without a lot of setup from your side anyway.
     
  19. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    I'm not sure, but then again I'm not the developer who has spent years on making this product. Perhaps he's thought of this and has ideas. Just thinking about it for a few minutes has given me some potential ways to make it work. Maybe you setup a special layer and then run a preprocessor on those layers and it automatically separates out the collider on those layers for you. That's something I could do myself in fact. But it certainly doesn't hurt to ask if the product has such a feature already. After all, this is the sort of thing I would think would come to mind after developing a product for more than a year.
     
  20. virror

    virror

    Joined:
    Feb 3, 2012
    Posts:
    2,963
    the problem still is how to know what colliders to extract? then you still need to go through them all and mark them somehow?
     
  21. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Yep, but marking them is certainly easier than doing all the rest of the work. And if I only have to mark the top level object then it could automatically fix any colliders in child objects. It's not as crazy as you think. Having to do it all manually is a lot crazier.
     
  22. imDanOush

    imDanOush

    Joined:
    Oct 12, 2013
    Posts:
    368
    @NatureManufacture Help please!
    I get out of memory every single time after I've recently upgraded my project to Unity 5.5. However I'm not sure if the upgrading made the problem.

    Here is what is happening:
    I have 651 tiles of terrains (each tile is 500m by 500m), I configured the WS to only load and deload one tile at a time. The player object is not at 0 0 0 but is so sooooo far from 0 0 0.

    Since WS should load only one tile (the nearst one to the player object), then why Unity uses too much of my laptop's 8 GB (2x4GB) RAM?! What should I do?! HELP

    NOTICE:This only happen when I hit the "play" button, otherwise in edit mode everything is fine (Unity uses around 500Mb of RAM).
    NOTICE: Obviously all these stuff happen in the Game Scene.

    I'm 100% think that World Streamer uses this amount of RAM because Unity was not using this much RAM before using World Streamer (I was using only two normal terrain tiles in the project at the time).
     
    Last edited: Jan 16, 2017
  23. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    That might be your problem. That is a lot of tiles!
     
  24. ytrewq

    ytrewq

    Joined:
    Aug 5, 2012
    Posts:
    42
    There is a major problem how async loading is implemented, which allow user to be deployed on not fully loaded scene. You just calling

    Application.LoadLevelAdditiveAsync(split.sceneName);

    (obsolete now) and don't care is the scene is loaded or not. Then checking is done for scenes yet need to be loaded (method void Streamer.SceneLoading ()) the load-in-progress scenes are counted as fully loaded, so the UILoadingStreamer script it misguided and deploys player in currently not fully loaded world.

    You set time delay to avoid such things but it's a lazy solution, good for only small amount of tiles. You should a least check the real end of tile loading operation.

    AsyncOperation LoadLevelAdditiveAsync(int index);
     
  25. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,023
    First of all sorry for late reply! I don't know why forum didn't refreshed for me. I checked it many times and didn't saw this posts... o_O Ok so one by one:)

    End of this month or start of the february. many depends from problems that we will met in few aspects. As you prbably see many of the features are already done.
    a) Try to use navmesh You could left navmesh and Ai will have no problem with moving even behind streaming area.
    b) You could put colliders as separated object but this is a bit crazy any way this will work;)
    c) Probably few other options on which I have to think about;)

    I tests WS with so many tiles and didn't have any problem. MMO games, point clouds and scans and it runs on it properly. Number of tiles doesn't have any matter. Everything is about what did you load on this tiles. Maybe one tile is broken and it contains whole data (wrong prefix or something put data there). Try to start from different position. Hmm... Could you send me screens from you WS setup? You could also contact me by skype I will check what did you wrong or if this is a bug.

    Regards and sorry for late reply!
    Bartlomiej Galas
     
    imDanOush likes this.
  26. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,023
    We already fixed that in 1.9v :) If soemone needs.
     
  27. ytrewq

    ytrewq

    Joined:
    Aug 5, 2012
    Posts:
    42
    Good to know it, thank you. Still version 1.8 in Asset Store. But I forgot to mention, there was another problem because of not checking real scene load finishing.

    On player go through the scene the World Streamer 1.8 can start load several tiles simultaneously (also not checking real previous scene load finishing), and that cause noticeable frame rate drop. I hope it will be fixed in new version too.
     
  28. imDanOush

    imDanOush

    Joined:
    Oct 12, 2013
    Posts:
    368
    Thanks! I'll re-create the scene and I'll send you an update here. But would you please tell me what do you excatly mean by "Maybe one tile is broken and it contains whole data (wrong prefix or something put data there)"? Maybe I can fix it if you tell me a bit more clear.
     
  29. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,023
    Im not sure what have you setup. If one of the scenes contains whole coppied world (I dont know how just by mistake or something) this could effect in such thing. Try to start your player from other place and let other part of world will load - just to check corrupted data. Anyway if you will not find anything we could sit together and check.

    There is loading scene "wait frames" value;). This could help you.
     
    imDanOush likes this.
  30. Fatalis

    Fatalis

    Joined:
    Sep 9, 2013
    Posts:
    52
    @NatureManufacture

    Do you have a more in-depth tutorial or specific documentation on RTP integration with World Streamer? Currently my terrain loses some sort of connection to the RTP shader manager and requires a manual refresh to have the shader show up properly.
     
  31. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Option A is a no go because they are race cars using physics and path points. Nav mesh doesn't even enter the equation. Option B is what I will most likely do if I have to. But if you do think of an option C then I'm all ears.
     
  32. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,023
    Nope but many users here used RTP in their projects with World Streamer. They should have fresh info, I will ask them. Probably you have to use one manager per terrain tile. This will eat some memory as i rememeber. I'm not sure have't checked new changes.

    B) You probably will have to create a script which will extract colliders for you or hold collider and model as separated part of prefabs (which is nothing special) and then separate/sort them by script. This is easy and fast solution.
    C) I will try to answer you until Monday if I will find something.
     
  33. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    No rush. I'm not even sure yet if these particular game levels will benefit from streaming. I'm still investigating.
     
  34. imDanOush

    imDanOush

    Joined:
    Oct 12, 2013
    Posts:
    368
    Yes, you were right. Here is what happened and I'm writing this so other people may not do the mistake I made.
    I made those 651 tiles by hand (the tiles are still under development) and then *made a prefab* of them as one group of the tiles and *used the childs of the prefab* for creating each tiles. Which means I was loading 651 tiles every time I loaded one. Took me 12 hours to figure out!! LOL. But now everything is super fine and I love your asset and I love Unity (till I find a new problem with it, :D).


    Well, I use RTP v3.3 in Unity 5.5. In the work scene, you should add only one RTP LOD Manager. and do stuff you want. Then in the GamePlay scene you should add one too. When creating the tiles in the WorkScene, Unity won't add the LOD Manager to a scene. So none of your created scenes (the ones that Scene Spliter made) are included with a LOD Manager. WorldStreamer has no problem with RTP.
     
  35. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,023
    Haha I knew that:) there are no miracles in such things;) Im happy it works for you:) don't forget to review on assetstore;) Big thanks for info for Fatalis;)
     
    imDanOush likes this.
  36. virror

    virror

    Joined:
    Feb 3, 2012
    Posts:
    2,963
    Im using RTP and have not seen this issue. One thing i noticed though if you use perlin normal, you need to save that texture as an asset and then use that asset for all tiles for it to work with multitiles.
     
  37. John-Catan

    John-Catan

    Joined:
    Jun 12, 2014
    Posts:
    13
    Hi,

    Just finished reading 15 pages of this thread.
    I'm keen in using your asset package for my project (50*50km terrain)
    Was wondering if its possible to stream from asset bundles after I split the terrain.
    I hoping to reduce build times in the main project once I'm done generating the terrain.

    thanks.
    jon
     
  38. virror

    virror

    Joined:
    Feb 3, 2012
    Posts:
    2,963
    Interesting question!
     
  39. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,023
    Yes and no. This will be on your side to code this right now. We add this in WS 2.0. ( right after 1.9). It's pretty easy:)
     
  40. DrivingSim

    DrivingSim

    Joined:
    May 28, 2013
    Posts:
    32
    Hi,

    Really excited to integrate your asset into our project.

    We've just downloaded your Asset and I am reading through the manual. I've run into an error right out of the box and not sure how to fix it. On pg 8 of the manual it says to click on "Add Scenes to build settings" however there is no button only a error message saying "Scene collider doesn't exist". I get this in every demo scene. It's on the Collider Streamer script.

    I tried adding the scenes to the Build Settings manually but that didn't work.

    Thank you.
     
  41. John-Catan

    John-Catan

    Joined:
    Jun 12, 2014
    Posts:
    13
    Great to know that. Thanks. :)
     
  42. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,023
    You have this error from scene start?
    a) Try to reimport asset. In last few weeks we get strange questions about assets. There are some download and import problems in engine, sometimes it lose paths and prefabs o_O. Simple import it again without removing it.
    b) Add collider streamed scene manually. This is one scene which is related World Streamer ->SplitScenes->ColliderScenes-> Add this 3 scenes to the build settings.
    Anyway you could get this error if you enter the house at demo scene.
    Please send some screens from your problem.
     
  43. DrivingSim

    DrivingSim

    Joined:
    May 28, 2013
    Posts:
    32
    I will try your solution. But I may have confused the problem. The error message actually says "Scene Collection (not Collider) does not exist" on the ColliderStreamer scripts for every demo scene.
     
  44. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,023
    This mean you have to import asset again without removing any file. This is assetstore problem;/
     
  45. DrivingSim

    DrivingSim

    Joined:
    May 28, 2013
    Posts:
    32
    Thank you, that worked.
     
  46. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,023
    Yeap, unity have problems with importing prefabs and assets from assetstore ;/.
     
  47. imDanOush

    imDanOush

    Joined:
    Oct 12, 2013
    Posts:
    368
    Hello.

    I have a question.

    Do you have an idea for using Easy Roads with your asset? I actually had some conversation with the author of the asset we found a not-so-good workaround but I also want to know what is your suggestion for using EasyRoads for each tile.

    Thanks.
     
  48. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,023
    First of all mesh must be in parts. To be honest hold 1 big meshes for such things is not good for
    a) physics
    b) overdraw
    c) gpu
    d) culling
    In 1.9 we will suport catalogs so this will probably work much better. What did he say what solution he give?
     
  49. imDanOush

    imDanOush

    Joined:
    Oct 12, 2013
    Posts:
    368
    Of course the meshes are in parts. I suggest you to use the EasyRoads V3 asset just for the sake of understanding how it works. Or tell me and I'll explain how it works.

    He said that
    What I think is the solution, is something complicated and I'll explaine it if it works, in the mean time I thought it would be cool to see what your solution is.
     
    Last edited: Jan 23, 2017
  50. Fatalis

    Fatalis

    Joined:
    Sep 9, 2013
    Posts:
    52
    Thank you for the info! I think the issue I am having then is an LOD manager is added to every single split scene while it is building my project, but judging from what you've said here this does not happen in your case?
     
    imDanOush likes this.