[CF-Devel] Compression

crossfire-devel at archives.real-time.com crossfire-devel at archives.real-time.com
Sat Oct 16 08:48:05 CDT 2004


Please keep a TCP only as an Option. I need it so I
can tunnel over SSH.


--- Mark Wedel <
     
     mwedel at sonic.net
     
     > wrote:

>
     
     
     >
     
        Try to cover some points quickly:
     
     >
     
     
     >
     
      Text messages - the hit messages could certainly be
     
     >
     
      reduced in size - even just 
     
     >
     
      sending it like 'hit:orc:20' or something is a lot
     
     >
     
      more terse than 'you hit the 
     
     >
     
      orc very hard'.  However, even if you presume 20
     
     >
     
      messages per second, at 30 
     
     >
     
      characters per message (both which seem would be
     
     >
     
      pretty high), that is really 
     
     >
     
      only 600 bytes/second.
     
     >
     
     
     >
     
        I'm ignoring tcp overhead here, because in
     
     >
     
      practice, the OS can certainly 
     
     >
     
      combine several messages into a single packet, so
     
     >
     
      you're not necessarily going 
     
     >
     
      to incure the tcp overhead for each message.
     
     >
     
     
     >
     
      UDP could certainly be used, and could make sense
     
     >
     
      for some data.  Realistically, 
     
     >
     
      you'd probably have both a tcp and udp connection -
     
     >
     
      there really isn't any 
     
     >
     
      reason for the client or server to re-implement the
     
     >
     
      tcp protocol.  So for data 
     
     >
     
      that must get to the other end, you use the tcp
     
     >
     
      connection, or data which can be 
     
     >
     
      lost, you use the udp.
     
     >
     
     
     >
     
        The problem here is figuring out what data can go
     
     >
     
      over udp, and potentially be 
     
     >
     
      lost or end up out of order.  Certainly, things like
     
     >
     
      the 'hit' messages 
     
     >
     
      mentioned above could be udp - if you miss a few
     
     >
     
      messages about hitting hte 
     
     >
     
      monster, or a few come out of order, not a big deal.
     
     >
     
     
     >
     
        However, map data is much more problematic - the
     
     >
     
      current map logic only sends 
     
     >
     
      differences, and order is pretty important.  Thus,
     
     >
     
      for example, if a map update 
     
     >
     
      was lost, some squares will remain incorrect until
     
     >
     
      either the player leaves and 
     
     >
     
      re-enters the map, or they disappear from view.  So
     
     >
     
      to in a sense fix this, 
     
     >
     
      you'd need to periodic send the entire map to the
     
     >
     
      client just to cover such lost 
     
     >
     
      spaces (and this entire map has to be send reliably)
     
     >
     
      - its unclear, depending on 
     
     >
     
      how often you need to send these total maps, of
     
     >
     
      whether much bandwidth would 
     
     >
     
      actually get saved.
     
     >
     
     
     >
     
      The potentially easier way to save bandwidth is to
     
     >
     
      send map updates less often. 
     
     >
     
        For example, if isntead of sending it every frame,
     
     >
     
      it was sent every other 
     
     >
     
      frame, there'd probably be quite a bit of bandwidth
     
     >
     
      saved, and such a change 
     
     >
     
      would easily be done.
     
     >
     
     
     >
     
        To me, trying to send the static map to the client
     
     >
     
      is a no go - it adds a lot 
     
     >
     
      of complication, a lot of potential cheat ability,
     
     >
     
      and potentially changes when 
     
     >
     
      you get lag - eg, in such a method, you're fairly
     
     >
     
      likely to get noticable lag 
     
     >
     
      when changing maps.
     
     >
     
     
     >
     
        Making the map protocol more efficient is one of
     
     >
     
      those things I plan to do - 
     
     >
     
      including having the client deal with animations. 
     
     >
     
      However, like most things, 
     
     >
     
      there is so much that could be done, and so little
     
     >
     
      time.
     
     >
     
     
     >
     
        However, the issue always comes to minimum
     
     >
     
      requirements.  For example, there 
     
     >
     
      was discussion a while back about minimum system to
     
     >
     
      play the client on (given 
     
     >
     
      the x11 client used less resources than the gtk, but
     
     >
     
      not as well supported.
     
     >
     
     
     >
     
        The same can be said for bandwidth.  At some
     
     >
     
      point, you just have to say you 
     
     >
     
      need XYZ bandwidth and if you don't have it, tough
     
     >
     
      luck.  Perhaps a bit cruel, 
     
     >
     
      but no matter what you do, there will be some
     
     >
     
      minimum (a 9600 baud modem will 
     
     >
     
      never be acceptable for example)
     
     >
     
     
     >
     
     
     >
     
      _______________________________________________
     
     >
     
      crossfire-devel mailing list
     
     >
     
     
      crossfire-devel at lists.real-time.com
      
      
     >
     
     
     
     https://mailman.real-time.com/mailman/listinfo/crossfire-devel
     
     
>
     
     
     


		
_______________________________
Do you Yahoo!?
Declare Yourself - Register online to vote today!
     
     http://vote.yahoo.com
     
     

_______________________________________________
crossfire-devel mailing list
     
     crossfire-devel at lists.real-time.com
     
     
     https://mailman.real-time.com/mailman/listinfo/crossfire-devel
     
     
    


More information about the crossfire mailing list