Bandwidth usage

    Joined
    Nov 21, 2013
    Messages
    146
    Reaction score
    153
    • Community Content - Bronze 2
    • Wired for Logic
    • Legacy Citizen 4
    When I play Starmade I find a great deal of network traffic is going on nearly constantly, as much as 500Kb/sec. This seems to be fairly constant regardless if I'm moving or staying still. Are there any settings that will lower the bandwidth consumption on the client side and/or setting on the server that will keep the total bandwidth within a particular threshold.
     

    therimmer96

    The Cake Network Staff Senior button unpusher
    Joined
    Jun 21, 2013
    Messages
    3,603
    Reaction score
    1,053
    When I play Starmade I find a great deal of network traffic is going on nearly constantly, as much as 500Kb/sec. This seems to be fairly constant regardless if I'm moving or staying still. Are there any settings that will lower the bandwidth consumption on the client side and/or setting on the server that will keep the total bandwidth within a particular threshold.
    The issue is that starmade servers send all data to every client, and then the client filters out what it needs, regardless of location. this includes faction chat and PM's, ship locations, weapons fire, collisions etc etc. there is no way to reduce bandwidth required without schema redoing the networking code
     
    Joined
    Aug 30, 2013
    Messages
    199
    Reaction score
    14
    An average game (fps for instance) basically needs to receive player x is at 123, 2, 87, facing at angle 43, angle of elevation -11, and is holding gun x.

    Starmade needs to receive: Planet is here, planet is made of (info describing what all the blocks are). Station is here, planet is made of (info describing what all the blocks are). Ship is at position, attitude, and is made of these blocks. Pilot is blasting away at planet with 2000 single block cannons, all the projectile information. Someone is placing blocks in symmetry mode 8000 at a time, data on all the placed blocks....

    This is oversimplified, but having to continuously download the maps and ships requires a lot of bandwidth. However it should be a lot lower than what you have said when you are sitting still in a fully loaded sector with nobody else around.
     

    therimmer96

    The Cake Network Staff Senior button unpusher
    Joined
    Jun 21, 2013
    Messages
    3,603
    Reaction score
    1,053
    An average game (fps for instance) basically needs to receive player x is at 123, 2, 87, facing at angle 43, angle of elevation -11, and is holding gun x.

    Starmade needs to receive: Planet is here, planet is made of (info describing what all the blocks are). Station is here, planet is made of (info describing what all the blocks are). Ship is at position, attitude, and is made of these blocks. Pilot is blasting away at planet with 2000 single block cannons, all the projectile information. Someone is placing blocks in symmetry mode 8000 at a time, data on all the placed blocks....

    This is oversimplified, but having to continuously download the maps and ships requires a lot of bandwidth. However it should be a lot lower than what you have said when you are sitting still in a fully loaded sector with nobody else around.
    As I said, a starmade server will send all the data to the client about everything. People have made program's that sift through the console as it is printed and show chat messages and player locations. You can see this console by launching starmade with Java rather than javaw. Use the argument "-client" to launch the client. This is a good thing and a bad thing. It means the server doesn't have to waste CPU resources filtering the data, but it does require a lot of bandwidth and client CPU resources to do the filtering
     
    • Like
    Reactions: Winterhome

    AndyP

    Customer Experience Manager
    Joined
    Aug 15, 2013
    Messages
    1,199
    Reaction score
    264
    • Schine
    • Wired for Logic
    The issue is that starmade servers send all data to every client, and then the client filters out what it needs, regardless of location. this includes faction chat and PM's, ship locations, weapons fire, collisions etc etc. there is no way to reduce bandwidth required without schema redoing the networking code
    False statement:
    PMs and FACTION CHAT are NOT sent to anyone, only to valid targets that 'should' get the message.

    Ships changing sectors, weapon resync stuff is sent to all, yes

    Collisions are handled serverside and clientside, but never synced.

    The 'peaks' in bandwidth are mostly due to sectors being loaded while moving around. As moving in a straight line along ONE axis, requires to load 9 Sectors (3x3 plane) in front of you every time.
    A ship passing the 3x3x3 Cube around you needs to be transferred to your client, block-by-block. Same for asteroids, pirates, trading guilds, basically every object in the game has to be sent to every client seeing it. (300kb blueprint, passing 8 players -> 2,4MB total initial traffic without movement updates!)

    There may be some improvements in the future, but for that many 'shared visible data' it may be a really tough thing to reduce the sync-data without causing object to go out of synchronization between clients.

    - Andy
     
    Joined
    Nov 21, 2013
    Messages
    146
    Reaction score
    153
    • Community Content - Bronze 2
    • Wired for Logic
    • Legacy Citizen 4
    Thanks AndyP for the awesomely informative reply.

    Would the 'Max segments (view distance) affect the range of blocks being loaded? As in would a larger number cause more data to transfer or is this setting strictly applicable to rendering?
     

    AndyP

    Customer Experience Manager
    Joined
    Aug 15, 2013
    Messages
    1,199
    Reaction score
    264
    • Schine
    • Wired for Logic
    This setting is applied to rendering, mostly.

    A really low setting like 1000 will reduce the amount of details requested to be sent to your client, and very high values (5000-8000) will keep your client requesting the whole sector. (+adjacent ones)

    It helps a bit in the load order, as "going to be rendered" chunks seem to have priority, so setting it not too high helps on random missing chunks in close range. (Visibly missing)

    For me 3.000-6.000 work best and I didn't encounter missing chunks without warping (/change_sector X Y Z) like crazy.

    - Andy