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. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    Mine gives the error for MicroSplat, but it still works just fine, I just get the error message is all.
     
    BrokenVector likes this.
  2. BrokenVector

    BrokenVector

    Joined:
    Feb 2, 2017
    Posts:
    40
    Derrrrp. I had Error Pause activated. :rolleyes:
     
    gecko likes this.
  3. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    Hello,
    I have unfortunately not had any official response to any of the questions I have asked so far. Are you still supporting this asset? I love the asset but I need to make sure I am using one that is supported since it is such a large part of what will make my game work. I really do hope you have some time to help. Most everything I have working just fine except for two things. I know it says things load async, but is there a way to smooth it out?

    If you see my post here: https://forum.unity.com/threads/rel...-create-big-world.325673/page-25#post-3411792

    The only way I can currently get vegetation studio to load and work properly is to attach the vegetation system to the terrain as a child before generating the scene because the vegetation system has to be assigned to the terrain so it knows where to place the vegetation, so it has to load the terrain and veg stuff all at once. I tried to put the veg in its own streamer but then it loses its connection to the terrain, if it does and you try to reassign it at run-time, as soon as its connected it has to rebuild its calculations on where to place the vegetation via rules, which would cause more delay and issues probably. Is there any sort of solution you can think of that might help? Is there some sort of way to smooth out the asynchronous part of the loading, it seems to load abruptly causing huge spikes of up to 400+ms.

    My second issue seems to come with the floating point fix. I tried to keep it short and sweet :



    That is what happens every time the fix happens, is that is what it is supposed to do? Part of the issue I think is not only is it loading new terrain and veg from the issue above, but its then having to perform the world move at the same time on top of that. How can I split these things up from occurring at the same time, is there a way to offset the world move from the terrain loading? The second part of the issue is I have mounts in my game and the way they work is they have a spot on them that the rider becomes a child of, when I am on the mount and even if I have "Object to move" on, it essentially moves my player and the mount separetly. When mounted essentially the mount becomes the controller as far as movement goes, while the camera and what not still stay on the player. Is there a way to tell whatever is doing the things it is doing when the floating point fix is happening to also keep the mount, not just the player where it is so that it dosen't get messed up? It is definitely important that I be able to reset the floating point without things all falling through the terrain.

    For some reason when I start a game, it always resets after I move through the very first threshold in to a new quadrant of the loading grid. As far as my map goes, my player spawns out at 512x4600 area of my map, is there a way to make the floating point reset happen initially while loading before the loading screen goes away instead of happening after I am done loading and first beginning to move around?

    Even with "object to move" on the mount, if it is sitting there on the ground and the fix occurs, I turn around and the mount is then gone and falling for eternity.
     
    Last edited: Mar 8, 2018
  4. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    Lol so menny messages and i didnt get any notofication that somone asking a questions. I will answer one by one to each question in the morning. Please also use @NatureManufacture tag so i will get info about this there was a message. Im sorry but its not first time i had such thing with this forum thread. There is also support mail and skype. I will do my best in 5-6h to answer everything.
     
    recon0303 likes this.
  5. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    Unity is veeery sensitive, we mention that if something allocate huge amount of memory, it will be hard to remove or load it. Lennart said a bit about his system memory allocation but its rather question to him how to avoid or fix it. For small maps you could also remove gc call. You will remove objects from cpu and gpu but they will be still at memory, In some cases is pretty usefull.

    GC mark dependencies shows when there is big amount of objects on the scene or allocated memory. Why? Old unity system search and check each object at the scene to mark if its gone or not. When I told about object i mean:
    - game object
    - every single script at game object
    - collider
    - every single attachment to your object
    So if you have many models with big amount of scripts on each of them this could generate this;/ GC system at unity is veeery old and slow. In most cases it mean that you have to be really carefull with keeping objects at game. Ofc you have world streamer to keep low amount of them.
    Probably Microsplat hold list of terrains to manage snow or other dynamic changes on them, cts also do the same. If other objects keep references to terrain which you want to remove, you could get error or objects will not going to be unloaded from memory. To unload something from memory you have to remove all dependencies into this object. If you will not do this unity will mark this objects as still in use. Ofc it could dissaper from scene but it would be still at memory and GC. So you proably have to fill list of terrains manualy in shader/material managers or don't use them at all if you dont have to. This could be list of materials where you could manage snow etc.

    Your world was moved but camera didnt have a script which will adjust position in the same time as floating point fix happend? If this script is attached (as I saw from post) maybe its in wrong place and something overwrite position. Please show hierarchy with script position at group of camera objects .

    How often you setup floating point fix ? Which layers is main? because main layer will force float fix. Yeah probably best way to check this is via skype. Floating point fix is reseting initialy so this look pretty strange.
     
    Last edited: Mar 8, 2018
    BrokenVector likes this.
  6. OneManBandGames

    OneManBandGames

    Joined:
    Dec 7, 2014
    Posts:
    207
    BrokenVector likes this.
  7. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    @NatureManufacture

    Yes, GC and I have met a few times :




    I have little doubt that I can get WS and what not to act proper, I just need to figure out how.

    Do you think that this asset might help with anything? https://forum.unity.com/threads/50usd-easy-threading-multi-threading-made-easy.262860/

    I showed this to my pal and he said enviro and Vegetation seem to be using way too much on the main thread and recommended it might help.

    I want to do whatever I can to get this working as best I can. I literally only really have Word Streamer, Vegetation Studio, Enviro, my terrain with MicroSplat, and thats about it in the scene, no other models besides my character and a dragon which I can't really use because when I get on him to fly, the floating point fix sends us off in to nowhere land.

    I feel things should be wayyyyy better considering my PC setup and how little I actually have in the game scene. : /

    Are you planning on (or even can you) using the Job System when it becomes officially released? I am hoping it will help performance for things like this and my situation.



    ----------------------------
    Here is how my world mover is currently set.




    One last thing. Does LOD mesh (non terrain) need to have "Object to move" on it? I have been testing LOD more and I went to have the world move and it looked like my LOD mesh just stayed there. It also doesn't work with terrain culling script(which makes sense), but is there a way to have it work even though its not really terrain?

    I am not sure what in the world is going on here now. At first my LOD terrain is showing in the editor scene view that it is there, but in game view it is not there. When I pass the world mover reset point, it moves me and *some* of the LOD terrain, some of it stays there as you can see in this video. Also once you get to 1:44 in, you can see that if I click on the LOD mesh that is supposed to be at the floating point reset area, it is back where it was originally, but when you click, it acts like its over where it should have been moved by world mover??

     
    Last edited: Mar 9, 2018
  8. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    Unity use async operation in every aspect that it can. If engine dont support async for something it will not change anything. Job system will not help here, we take it into account but its for many operations at the same time... we dont have such operations, we simply load data in background by engine functions. I talked with lennart and he told that final fix will be in 2018.1 because unity will fix few things in area that he use.

    You should ask Lennart about VS and multithreading;p im not author of his asset;p You got 6ms on scripts? pretty much.


    BTW did you test that at build? because we ALWAYS mention that editor made huge amount of additional opertations and there will be always spike in editor. Final and real streaming performance is in build and its about 1000-3000% better. Most operations are done during scene build process - atm it have to bake it at realtime.

    Increase tile range in world mover to about 10. It should be really rare operation after you cross huge distance like 10.000

    It seams that you have wrong setup somewhere with this dragon. You can dynamically change player in your game?

    Terrain culling is for unity terrain culling. Unity terrain generate static and dynamic calculations during camera move that why its good to turn off unvisible terrain. Simple mesh or any other mesh dont have such thing so you dont have to cull it. I had view for 7000 metters with huge field of view and with meshes as terrain in far distance it worked at 200 fps on gtx 960. Anyway this culling scirpt is not for mesh objects, it will work only for unity terrain.

    Objects which are streamed dont need object to move script, only objects which are at the scene and they are not connected to streaming.
     
    Last edited: Mar 9, 2018
  9. jnbbender

    jnbbender

    Joined:
    May 25, 2017
    Posts:
    487
    I noticed the very last bullet point on the 1st page of this forum said this Asset is compatible with Terrain2Mesh. I am developing for mobile. Does that in fact mean I can transform my Terrain to a mesh and this asset would be able to cut it and stream it?
     
  10. keifyb

    keifyb

    Joined:
    Feb 12, 2016
    Posts:
    62
    anyone have any tips regarding unitz unet and worldstreamer? As unitz has multiple player prefabs to choose from at the start rather than just the one how can i allow this?
     
  11. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    I am currently using Terrain to Mesh (Mesh Materializer), while it works, I am having issues with it, if you look just above at the video I posted. The ones that are farther away and color is darker are converted terrain to mesh objects.
     
  12. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    Yes, those tests were done with a build, the build had only terrain, vegetation studio, enviro, my player, and my dragon in game, that was all.

    As for my dragon, when you mount it, you are still the player, but the controls for movement transfer to the dragon (Horse AnimSet Pro and Unka the Dragon assets). When I am on him (I have object to move script on him) for some reason it separates us, I am guessing it is because my player is a child object of the dragon while I am mounted, so it attempts to move just me, because I have the player tag, the dragon does not. Even though he has object to move, it could be that it moves me first, followed by him but then there is a disconnection of me from the physical dragon? If the player is physically moved from the dragon, things do not work proprely anymore. I discovered this when using PuppetMaster and the movement of the horse caused my player to go into ragdoll mode so I fell of the horse even though I was still a child object of it. I am not sure of any other settings I could possibly try and adjust other than having the "object to move" script on him, as he is in game scene, not streamed.

    As for culling with mesh, that is fine and makes perfect sense, but what does not make sense is why the streamer (in the video above) and the world mover did not move the streamed LOD mesh and also kept spawning it at the original location instead of the new location after the world move.

    Also, if you see at the beginning of my video, the is simply not showing in game view. It is there in scene view but there is nothing there when I am standing on top of the mountain looking down. You can see it all there in scene view though, I have no idea whats up with it. It was working fine when I was using terrain.

    I will try your suggestion of setting the grid setting higher for when to move, the only thing though is, as far as my map goes the player could be spawned at any place on the map, as it is an RPG, the player might log out in one area one day, another area another day. Is there a way to automatically make the worldmover move the world one time right away after the world has loaded but before the loading screen goes away, so that as soon as the player is there, in game, the floating point fix has already taken place so that if their spawn location is somewhere far away from 0,0,0, they will not have any issues from the time they originally load?
     
    Last edited: Mar 10, 2018
  13. OneManBandGames

    OneManBandGames

    Joined:
    Dec 7, 2014
    Posts:
    207
    I don't know / own UnitZ but if you use the "Spawned Player" checkbox on the streamer component, it should be possible to pass the correct prefeab into the streamer component once the player selected their character.

    If you want the streamer to load the game world before the player selects a character, you could use an empty "FakePlayer" GameObject that you put into the Streamer component. The streamer will then load the world at the position of the "FakePlayer", and you can then put the correct player prefab in once the player made their selection.
     
  14. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    Just an update, looks like I have things worked out as far as the tiles go using mesh and them not acting appropriately. Apparently, the splitter somehow put some of the LOD into the main streamer, I have no idea how that happened. I removed them after I saw that and everything started to work properly. I will just have to keep an eye on it to make sure it doesn't happen again.
     
  15. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    Could possibly also load the character selection first, then once selected you just pass that into the "player" as well as it loads the scene?
     
  16. OneManBandGames

    OneManBandGames

    Joined:
    Dec 7, 2014
    Posts:
    207
    Yes that should work as well, I assumed that the character selection was in the same scene as the game world. But as long as you are able to pass the reference into the streamer component it should work.
     
  17. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634

    I been using World Streamer for a few years, I use Unity terrain, not a fan of a mesh, besides for low far away distance stuff.. ring streaming and what not....I been making a very large Mobile game and I'm just fine. and we tested on over 200-300 devices. Works great. the last 6 months or so, we are making a PC, possible console game as well, and World Streamer is a God send for large maps period. and easy to use, I used it before he had good docs and many videos now he has it set up so easy anyone should be able to set it up...for just about any large map. I get over 200FPS with my PC game so far after about 100 or so people testing. Lowest I seen was about 60 FPS, and that was a machine that was 15 years old... My 11 year old testing machine, ran over 130 FPS. Android, we ran all kinds of devices, from Open GL2.0 , OPEN GL3.0+... and great results... Key to getting awesome performance for any mobile game, is optimizing and setting things up right..and World Streamer end does its job...perfectly....


    I do not use Terrain to Mesh asset, I have used others. and works fine. So can't comment,but meshes are fine with World Streamer... typical issues most times are something a user did, with to many models, set up wrong, using nonsense like Unity grass... etc.. I use World Creator, GAIA, Terrain Composer 1, 2 , and many others they all work great.. and have nothing to do with World Streamer.... boils down to setting World Streamer properly and optimizing your scripts, scenes properly... I have helped a few Android mobile devs with Bart before and its always been one of those issues....... to many go to crazy with grass, density on mobile... and have old/crappy devices..''


    For Grass, I suggest for mobile if your're using for OLDER devices, Infinigrass 1, 2 soon... If Open GL3.0, InfiniGrass 2 soon will be fine I tested alot.... and VS.... I use VS for my PC game, works great. I also tested that tool and worked well... For mobile, I use InfiniGrass as I support older devices.
     
    Last edited: Mar 10, 2018
  18. jnbbender

    jnbbender

    Joined:
    May 25, 2017
    Posts:
    487
    Wow! Awesome feedback. I've been trying to pin down my assets for my mobile game for a time now, where do I go for snow, etc. Thanks for the tip on Infinigrass. I'm using Gaia and Terrain Composer 2. Thanks for lending me your experience.
     
    recon0303 likes this.
  19. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    It really depends on what you are after and how big you are going. I was using Unity terrain and it was performing pretty terribly.

    This was running only World Streamer, World Creator made terrain, and MicroSplat.




    ----------------------------
    Last night I used Mesh Materializer (Terrain to Mesh) to convert all of my terrain to mesh (a second layer for LOD Ring Stream) and the difference was unbelievable.

    I went from pulling 60fps with just terrain and terrain shader to what you see here below just by exchanging some terrain for mesh at a distance. I was standing in the same spot with the same setup except I only had Unity terrain at close range and mesh for all my distances and here were my numbers as soon as I did that.



    Now even with full vegetation studio going on I am pretty well into the 150-180 range with Veg Studio sometimes pushing north of 10 million polys. ( I simply don't want that many though, lol so I toned it down)



    I would say it will make a huge difference in a mobile game as well, Unity terrain is just so heavy, and it performs constant calculations and all kinds of stuff and just eats up resources unnecessarily. It all comes down to personal preference though and what your end goal is, there are still things in which straight Unity terrain is better, but plenty of situations where you are just much better off to use some mesh. It's usually best to test it out though. I have spent 2 weeks now testing my terrain setup that I wanted to go with before I just decided today, lol.

    Anything from 4096 chunks, 2048, all the way down to 256, and every combination of different things to help tweak this and tweak that. It honestly just takes a lot of testing to see what fits your end goal best.
     
  20. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    How does one go about hosting a dedicated server with this? I have uMMO2 and I am trying to figure out what the proper setup is for the server. Are you supposed to have the server side setup exactly the same, with streamers in the scene and everything? uMMO2s asset store page says that anything that applies to unet applies to it, but that only helps so much since I dont know unet or any of it too well. I know I was able to make a server work fine using a normal static scene and exported headless to my server and connected up fine. I just don't know what I should do in this instance. Hasn't some people here made actual MMO's with world streamer, right? How did you go about the main servers scene setup?

    I keep getting this error when I try to connect, I think its because the update script is looking for playerPositionMovedLooped = streamerMajor.player.position - currentMove; right off the bat, and I am not in the scene yet because I have to connect. Is there some way to delay that or something until I am in the scene? It looks like it does the same for rewired.

    NullReferenceException: Object reference not set to an instance of an object
    at WorldMover.Update () [0x00001] in C:\Users\Home\Documents\Unity\RPG_Game\Assets\WorldStreamer\Scritps\WorldMover\WorldMover.cs:106

    (Filename: C:/Users/Home/Documents/Unity/RPG_Game/Assets/WorldStreamer/Scritps/WorldMover/WorldMover.cs Line: 106)

    When I'm trying to use this online with a server, what all files need to be in scene with the player vs the scene on the server, when you play online the unet stuff makes the player spawn, but when you load your "Game" scene, if the player is not there you start to get all the errors, the movers and streamers can't find the player, etc. How are you supposed to handle that? Do you have to like, double async load? Have a scene with just your player in it, then async load the "game" scene in so that the player is in the game when "game" scene actually loads, and then the game scene screamers load even more things? I of course only want the minimum I need running on the server side, but with this I am not sure what the minimum ends up being.

    @NatureManufacture

    How can I call the world mover before the loading scene goes away? My character usually loads far from where the floating point would be ok. I want to, either before the terrain starts loading, or after but before the loading screen disappears, make the world move occur manually so that when the loading screen goes away it has already happened and does not have to be worried about for a while.

    I tried to see if I could make a public method that just called MoveWorld and passed in ((int)player.transfor.position.x,y,z) and put that in the loading screens (when done) event handler, but that didnt work, and it never let the scene load. It doesn't matter where the scene ends up, I just want the world move to have already occurred so that you don't see crappy texture things going on as soon as you join in the game.
     
    Last edited: Mar 12, 2018
  21. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    You use spawned player, so scripts wait until playwer will show up?
    Server dont need any movers, it shoudnt have any floating point fix. its more complicated. There should be clusters and player should connect to server when it will be in his range. Server shouent have any streamers btw, it should be static in batchmode. We mention alot about this in our doc.

    World should move at start. What is your position and distance between float fixes?
     
  22. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634

    No problem if someone is having performance issues with Unity terrain, clearly they don't know how to optimize the scene, the terrains, etc.. with Mobile Mobile takes alot more experience than PC to make larger maps. So be sure to optimize, and watch who you listen to....Will a mesh, perform a little better sure it can, but I have over 20 years experience AAA, indie making larger games So I make sure I optimize, scripts, models, textures, etc, etc as well. So if you ever need help, just PM me, just don't go to crazy .. I'm in the middle of a Steam, game.. so it may be slow replying. but I don't mind helping people who listen and take advice well.. Some people don't and then end up with a mess... Larger MAPS in General take take , to optimize all around.. So keep this in mind.

    PS: I personally can't stand a mesh terrain, other than for anything in a distance.. as a Programmer, artist, etc, I like what Unity terrain looks like. So keep this in mind.. even with a mesh, you need to optimize everything properly, I see people having issues, and they have 6MS, scripts , 87% GC etc... and blame it on World Streamer.. When in fact its something they are doing, not related.. or sometimes the set up is a mess. So read docs well with World Streamer, watch videos, do practice terrains.... I get over 200 FPS no problem with 40 km x2 worlds.. testing 60 KM X2 etc using World Streamer.


    Forgot to add made sure you have lower resolution tiles... I see people in this post with HUGE chunks.... but that will come down to over all terrain size testing how many times you want to split into smaller tiles.. I won't say what I use.. as I want you to learn, Test., Test, Test, best way to learn..... :) a little advice, Test your terrain, WITH nothing... but terrains... but Unity terrain or mesh, what ever you use. on the over all size you plan to use. Then add etc.. test, etc I typically only have a character, I made, I also do 3d , he is optimized 100% Then, the terrain only... for testing... Then I add splats, shaders, etc etc..
     
    Last edited: Mar 12, 2018
    sharkapps likes this.
  23. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634

    Yup, we have ours set up on mobile for Non authoritative, soon will switch to authoritative. , PC, soon Console is Full authoritative, using Bolt, Unet is trash..
     
  24. jnbbender

    jnbbender

    Joined:
    May 25, 2017
    Posts:
    487
    Thanks for the invite. I'll definitely be asking you some questions. Right now I am trying to optimize my simple player mesh (drone) in Blender by Decimating the model. One of them has so many tris I have to inflate the Mesh. Anyway, when I do it I get more vertices than tris, weird.
     
  25. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634

    please don't decimate, UGH, I would learn how to do Retopology. worth it at the end of the day. Decimate it's ok, for some models... but character, drones, etc... but also depends on your poly count as well. . to many decimate everything, and when I did alot of client work, Unreal AAA, smaller indies, Unity devs, stuff is never optimized right... Decimate is lazy man way.. :) like I said works for some models.
     
    Last edited: Mar 12, 2018
  26. jnbbender

    jnbbender

    Joined:
    May 25, 2017
    Posts:
    487
    Thanks. I'll look it up.
     
  27. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    Thank you for reply. For my start position, it is around 6xx, 4xxx. As you can see in this video, I load in, and it loads me to the actual world position at the start. It is not until I move 1 grid space that the world move occurs,which happens every time I start the game, it always does world move after 1 grid space move. My world mover is set to 10,10,10. You can see in this video my position on world load, and then after the first world move. At 50 seconds in you will be able to see my position. Both current and real are the same at the start of the server and after initial load. I move 1 grid space, then world move occurs.



    So on the server, does it need to be loaded in to the same "game" scene that my player is on? So, say I have my game scene as it is, working for single player. Do I just do a headless build of the same scene and host that? Probably not, because it would then load "game" scene which has streamers, player, etc. So for server, should I make a new scene called "Server" and have the server load that map automatically on start?What needs to be in the scene for server side? I read the documentation several times, I do not know what you mean by clusters though? I did search for "Multiplayer" through the included manual, and all I could find on this was "Floating Point Fix system also have solutions that support multiplayer games so check "current move" position." and that for AI you should make sure they reference your player real position, not player current position.

    When you say clusters, do you mean it needs to have clusters of servers, as in multiple servers and the client needs to move from one server to another based on the location the player is in? That is fine, I can do that, I just need more information, I do not recall seeing anything about that in the documentation. I searched for cluster and nothing came up. Is there additional documentation aside from the "world streamer manual" pdf that came with it? I am more than willing to do that though if I can just understand *how* it needs to be done.

    As of right now I am only working with a small section of my map to get things setup and working, so that is all I care about right now, once I get it working with that section, I can expand to more map area, etc. So if it will end up taking multiple servers, I only need to get one working now, then as I get more things working, I can then add more servers and more map space if that is how it needs to work.

    When you say server should be static and batchmode, what do you mean exactly? Are you referring to the actual map needing to be loaded full at all times? Could I possibly PM or skype chat with you in regards to this? I will pay extra for your time, or a demo scene you could send me of how server vs client need to be setup for multiplayer.

    Here is how much map I am working with while testing and getting things working, vs the overall map. The rest of the map can wait, I just want to get multiplayer working on the section I am working on first. (the section I am working on is in the first pic, the whole map is the second. The size of the grid squares in the section I am working on is the last.)

    Will I need something like this https://assetstore.unity.com/packages/tools/network/master-server-framework-71391

    or this?
    https://github.com/alvyxaz/barebones-masterserver/wiki





     
    Last edited: Mar 12, 2018
  28. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    Do you have Y streaming or something like this turned on?

    Clusters is mmo architecture. Each server take area x,z , player at border is connected to both servers. It was designed to avoid floatpoint fix on server side as server cannot move data - it shoudn't. I cant give more info because it always depends what technology etc you will chose. it's basic well know idea how to handle this on server side. This is not connected to the streamer. We just give TIP how to fix RPC by "moved" value between server and client communication. Server architecture is not this asset point of the interest. There are many online solutions. We only care about client data.

    Server in batchmode means in text mode without 3d. Its like a console, it took very low amount of cpu and gpu because of such workflow. It also means that server hardware don't need gpu what is veryyyyy expensive.

    Server should have whole cluster at begining - no streaming. Simply load by local area updater of coppy data from work scene into server.

    We cannot give such support because we are totaly overloaded atm. In free time our usual price is huge per 1 person month work. Basically we just give streaming solution and how user will use it:) ah we saw many ideas even procedural stuff or scanned point viewer apps.

    If your world will be smaller then from -10k to 10k you probably dont need floating point fix.
     
  29. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    That is not a problem, it will definitely at least get me headed in the right direction. I was hoping I did not need the fix, but my textures seemed to get all weird whenever I was around 7-8k. Unless that is just something else causing them to act weird. That being said, I implemented Master-Server Framework last night and got it working with uMMO which allows me to host as many game servers as I want within my VPS that are all connected via the master server and has features built in to handle going from one server to another, so that is definitely a start.

    I mostly just needed info and to be pointed in the right direction. Letting me know that the map has to be statically loaded on the server is a big help, as I was not sure if it needed to be or not. I see now what you mean by batch, just meaning headless, which is how I was hosting it already. I use Headless Server Builder to make my build to keep the size and performance as best it can be.

    I am familiar with what clustering actually is, I was just wondering because you had said "We mention alot about this in our doc" I just never remembered seeing anything about clustering or servers much at all. I was wondering if I had the most recent documentation. That is no problem for me to get in place, I just need to know how to do it the way that is required for this to work.

    One question I do have on it is, since my scene is called "_Game", doesn't the server need to be running a scene also named "_Game"? I guess it just needs to technically have all of the map in it? I figured it would have some sort of error if server "_Game" scene was different than client "_Game" scene. I have not used the local area updater yet, as I was just disabling the actual game object of the rest of my work scene so that all that was viewable was the section I was working on. I will look into the local area updater though if that is what is needed.
     
    Last edited: Mar 13, 2018
  30. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    I followed your advice for the most part. I took my game scene and then additively loaded my work scene into it, took the terrain I needed for this area and simply copied and dragged them up into the game scene and disabled them when I build the client, then disabled all the client stuff and enabled the terrain, Enviro, and uMMO only and built a test windows server, and I was able to connect and run around from the client with World Streamer working on the client end. Though for some reason the gravity seems to randomly change as I am moving about the map, I might start to float away a little, then the next tile of terrain the gravity will be fine. Strange.
     
  31. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    Hmm not sure.
    I think you should separate models from online objects.

    An example:
    In Gloria Victis MMO we simply coppied models data into server scene then we remove all models by scripts - because server need only colliders. This also removes al textures so server was very light in memory. If script will remove also mesh renderer and other visual compnent aspects, server will lose 90% of data. So if you will call GC there someday it will be quite cheap.

    NPC in server also could be marker with collider and scripts, they dont need any visual components, maybe only for debug.
     
  32. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    Ok, I understand. I was using "Headless builder" asset because it automatically takes care of some of the tasks similar to what you are saying.

    "Best performance: Even if you launch your application in headless mode, Unity will still load all your sounds and textures. This tool automatically replaces them with dummy assets, saving you lots of RAM and disk space!

    Truly headless: Not only does your application run without graphics, we'll optionally also disable all camera, light and audio rendering! And we can output Unity logging to the console instead of a file!

    Zero hassle: Works right out-of-the-box and simple script functions and callbacks are available should you want to execute specific code only on your headless builds!"

    An asset I bought and was testing things with did representations like you are referring to, I will have to go back to it and study it a bit more. They just had a little rectangle object as the player, and a smaller one as a weapon.

    So essentially I need to take my whole project and make a separate one, and replace all the models, even terrain and such, and remove all of the mesh and render stuff or at least make it a cube like they did and just make sure it has the right shaped collider? I have it currently working, connecting to my VPS and I am able to run around and such, but of course the build is like 2gb (becomes less than 1gb when I use "Headless Server Builder" but takes a long time to make each build, so I save it for only big tests when I make a lot of changes) but I also bought this binary differential patching system which should make trying things a lot easier as I can just make a patch of the build and send it to the server.


    Also, I got everything worked out, my scene had apparently corrupted somehow. I made a new one and moved everything over and now it is fine.

    I need to figure out though how to separate things out though, when I logged in with a second build no terrain showed up or anything.

    Does each separate terrain object need a network identity, or is that on the server side only?
     
    Last edited: Mar 14, 2018
  33. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    Seams like very cool asset!
    Ummm maybe dummy asset should be removed etc anyway.
    Terrain is not network object what do you mean?
     
  34. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    I was confused on that because in the Opsive Third Person Controller network demo as I was looking over how their character was setup there was a Network Identity component on the ground plane. I asked someone else about it and they pretty much said the same thing as you, "what do you mean? that isn't networked" lol. So maybe it was a mistake or something.
     
  35. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    Maybe there was ground shaping or something?
     
  36. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    Do you happen to have any links to resources on transitioning from one server to another in real time that you may have come across or used for other games? I have server instancing working via portals that will take you straight from one zone to another, it is fairly quick, but of course is not a true smooth and seamless transition. I would like to try and learn some more about it.
     
  37. keifyb

    keifyb

    Joined:
    Feb 12, 2016
    Posts:
    62
    thanx for the tips about unitz unet @OneManBandGames and @MostHated, the selection of the player is in the main menu and picks one of the many prefabs, then when picking a level and joining/creating a game it uses that prefab. somehow it also saves the position and inventory. i tried again today with just one of the character prefabs, adding that one to the world streamer thing. it kinda worked, but i have troubles. i am no coder so i dunno what the hell im doing most of the time. the fix point thing keeps warping me back to a certain but unfamiliar position. sometimes dropping me under the map. the more i try to use world streamer with anything multiplayer it breaks. im almost about to give up, i wish someone can help a noob.
     
  38. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    The warping is because, well, that is what it does, lol. It takes you and everything else and moves so you are not too far away from 0,0,0. I had authorative player movement on, on my server and the world mover tried to move me, but since the server didnt know or think I was supposed to be moving it put me back where I was. Authorative is typically a good anti cheat method so the player cant use a hack to teleport themselves anywhere they want, they send input to the server to move, and the server actually is what moves you, so when world mover moved me instead of the server moving me, it was like, "nope!" but then the world mover was like "you are supposed to be over here!" so it literally just kept throwing me back and forth between where the server thought I should be and where the world mover through I should be, lol.

    So the mover is doing what it is supposed to be doing when you are getting moved somewhere, but since you are trying to do it in a multiplayer game there is more to it than that. I hate to say it, but you are moving into territory that a non-coder probably won't be able to handle unless you have a pocket coder who is really patient and doesn't mind spending a lot of time pretty much doing things for you. It is one thing to receive advice and be able to actually do something with it and implement it, but its another for people to give you advice but you have no way or no knowledge of how to do anything with it. If you are willing to spend a ton of time reading, learning, trying things, sure, you can get it. It will be rather frustrating though and you already said you were on the verge of giving up.

    I hope you don't, at the same time, many of us are working on the same types of issues and I am having trouble myself and I am a fairly decent coder, so it will be hard to try and get things working for you if you don't know what to do with what we suggest. Games are a complex animal, multiplayer is its own just as complex animal on top of that.
     
  39. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    Without coder multiplayer game with floatpoint fix and sevrer could be hmm hardcore.

    Nope, specialy when every network engine is different. Player must be connected for 2 servers in specific border area (npc/players rendering distance)
     
  40. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634
    networking is not really considered game development in the sense . So ya its , its own field. So its good to have some one that knows networking really well, myself, I can program, do many other art related things.... But networking has always been my weakspot due to keeping up with 20 + years of other areas, in my field.. So hard to learn know it all, now I can use and do some... But I have a partner who does all of mine, and I learn a bit from him... But Networking is its own beast....to many screw it up.... So if I where you I would be starting smaller than the type of game, you are far as Networking until you fully understand it.... We have a completely different set up, and we only need one server and fix floating Pos.. we don't use.

    Ours is also Full authoritative. dedicated server etc ...But we stay away from Unet personally.... not a fan of it. Best of luck..... World Streamer with out, multi player takes 15-20 mins to set up... and Non authoritative is way easier.. I can set up non authoritative with low experience. in Networking... But I keep to what I know...and let my net coder do that fun stuff. Haha.
     
  41. Alex3333

    Alex3333

    Joined:
    Dec 29, 2014
    Posts:
    342
    I have a question. then noticed that the size of one piece I have 500 * 500 instead of 512 * 512. Appropriately and the size exhibited 500 * 500 in the streamer. Will this affect performance or not? I think that it is more correct to expose numbers that are multiples of two
     
  42. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    It's no problem, I have a proof of concept that is working pretty well that I am going to build from. I appreciate the help on everything else.
     
  43. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    500 is a multiple of 2..
     
  44. Alex3333

    Alex3333

    Joined:
    Dec 29, 2014
    Posts:
    342
    Do you have the size of one piece? 200 or 256?
     
  45. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    Mine is 256 but World Creator import doesn't give you the option to fine tune when you import. It is a snapped slider.
     
  46. NatureManufacture

    NatureManufacture

    Joined:
    May 20, 2014
    Posts:
    2,026
    Its better to keep equal 100, 200 values. Its more clear when sector will start or end.
     
  47. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634
    eh?? You can use 400, 200, w/e size you want on Import height maps...You also can use it when making your terrain size as well.... if you type 4096 and its set to lock, then no, you need to uncheck that.... Importing Height maps you can use any size you want on Height Map imports... Raw files etc....
     
  48. MostHated

    MostHated

    Joined:
    Nov 29, 2015
    Posts:
    1,235
    There is no button to unlock.It doesn't matter though, I am happy with my tile size, not sure why it even came up? lol.

     
  49. recon0303

    recon0303

    Joined:
    Apr 20, 2014
    Posts:
    1,634
    Oh your using the Sync tool.. I don't use it... I just use MM, TC2, w/e to import... You can export out.. etc for Unity just from the Export in WC.. So that is what I use. So prolly limitation with the sync tool. But right from, WC, you do not have any limitations.. So if you export, 100-200, etc etc... It came up because you said WC couldn't LMFAO..
     
  50. Alex3333

    Alex3333

    Joined:
    Dec 29, 2014
    Posts:
    342
    I wrote you a post, but you are silent. You can allocate a little time on Skype and help us with your asset ?? we can not get it to work properly without lags !!