No announcement yet.


  • Filter
  • Time
  • Show
Clear All
new posts


    This mutator is rather special. It's intended for advanced server administrators.

    Basically, it's a WebSocket client implemented in UnrealScript, that connects to a predefined WebSocket server and then pushes updates regarding server status: player count and their names, map names, scores, etc. It's kind of query protocol, but reversed: it's not something else that polls the game server about its status, it's the server itself that pushes status updates. It can be considered a push technology.

    The main advantage of this approach is that updates are pushed immediately, without any delay. For example, as soon as someone joins the server, it pushes an update. So you can use it, for example, to display player list in real time, like here (the source code of this site is NOT provided).

    Again, note that this's a WebSocket client only. You'll also need a WebSocket server that your game server and web browsers will connect to. Here's an example Python program (requires Python 3 and Tornado) that this mutator can connect to. Program prints received updates to the standard output. It doesn't have to run on the same machine that game server does.

    The mutator package is not pushed to game clients, so you don't need to put it on the redirect server. It's also not required for demo playback. That's also why it doesn't include a version in its package name.

    It's fully configurable from WebAdmin (there isn't much to configure ).

    It's proven to be very stable, working on fairly populated Warfare server without any issues for several years already. It was only tested to be compatible with Tornado WebSocket server, though it should be compatible with any other one.

    Known problems:
    • It doesn't work on Linux dedicated server at all. Blame Epic Games and perhaps Icculus.
    • While connection is being established, it spams the log with useless warnings. Once connection is established, it ceases. Blame Epic Games. So if you want to avoid 100MB log files, you'd better be sure that your auxillary WebSocket server is always up.


    Source code is available under terms of OUML on GitHub.