Monday, May 29, 2017

Star Citizen: the unsolved multiplayer problem

The problem is that literally all the various engines are incredibly restricted with regards to their multiplayer capabilities. They are all match-based at their foundation. What Star Citizen is pretending to try to accomplish, does not exist and never will exist, due to the restrictions everyone has to live by. Elite doesn't do it either, it's just REALLY clever at hiding its match-based nature by doing the matchmaking during hyperspace.

So, it appears that Star Citizen hopes to release a demo with at least a reasonably respectable number of simultaneous players, like a few dozen or so, because that is what Amazon's engine supports almost out of the box. They hope to buy some time with that, so that unless people are very knowledgeable, they will not start wondering about what Chris Roberts and company plan to do about the presently unsolvable problem.


  1. Do you think modern web backends like Node, flask, GoLang, etc can contribute to "the unsolved multiplayer problem"

  2. @ALfbot, no, they are fundamentally slower than (good) C/C++.
    Erlang would be a better choice, but still slower.

    All you can do in those high level languages you can do better in C/C++.

    To solve the issue, they need :
    - actual scalable rendering (ability to reduce/increase the size of the simulation depending on the load)
    - optimized rendering (minimize what's to render)
    - optimized network code (minimize what's to exchange)

    All that should have been done far earlier in the project, and attacking them now is suicidal.

    1. All this talk of "rendering" makes me think you missed the point of the question. This isn't a speed question but rather a matter of connections, throughput, and scale that has less to do with how the client chooses what to render on screen.

    2. Rendering / simulating, same thing.

  3. The fundamental MMO problem is how to keep important game information consistent between a large number of clients. For a 3-D shooter, the information that must be tracked is enormous, because virtually every bit of input from each player is important in how the players react and execute their next maneuver. The difficulty of co-ordination goes up geometrically with the number of clients.
    The conventional solution is to reduce the quantity of data. Something like Eve works because the ships, being conceptually large, do not change position, heading or speed quickly. This minimizes the amount of data to be co-ordinated. Something like WOW works by restricting a few players to an instance, minimizing the interaction to the client vs the monsters, which are limited in number, and by removing the need for accurate shot placement. If the game puts two players in the same place for a few seconds, it doesn't really affect gameplay.

    For a 3-D high-speed space shooter, with opposing teams of pvp, where shot placement, accurate rendition of other clients, ship collisions, etc all matter a great deal, the problem is difficult to start with and the difficulty increases geometrically with the addition of each client.
    NOBODY has a good solution to the problem, and Star Citizen certainly is incapable of resolving it.

  4. This comment has been removed by the author.