Comment by pvg

1 day ago

It sounds like you want to coalesce the outbound updates otherwise everyone typing is accidentally quadratic.

I thought this might've been the issue too, but because the game is turn-based there should only ever be 1 person typing at once (in a given room).

  • 60 * 7 is not all that great either if you get cascading and clumping as people type at the same time- coalescing the outbound updates still seems like a good idea and since the game is turn based you know it's not really going to affect gameplay. You've basically made yourself a first person shooter networking problem for a game that's slower than WoW. That feels like overkill in terms of self-imposed obstacles.

    • Ahhhh I see what you mean now. You just gave me some good ideas. Alas because of the nature of my game, it will always have first person shooter esque networking problems despite it being turn-based. But it's good to know that I'm dealing with a non-trivial level of throughput.

  • there should only ever be 1 person typing at once (in a given room)

    Have you verified that is the case?

    • Yep just triple checked. If distributing the load on a single server by adding more backend containers doesn't decrease ping then maybe this is just the natural upper bound for my particular game... The only shared bottleneck between all backend containers I can think of right now is at the OS or network interface layer, but things still lag even when I tried increasing OS networking limits:

        net.core.wmem_max = 16777216
        net.core.rmem_max = 16777216
        net.ipv4.tcp_wmem = 4096 65536 16777216
        net.ipv4.tcp_rmem = 4096 87380 16777216
      
      

      Perhaps the reality for low latency multiplayer games is to embrace horizontal scaling and not vertically scaling? Not sure.

      3 replies →