Multiplayer Information

Multiplayer in Wayward is enabled for up to 32 players. Multiplayer works on a simulated real-time mode where each turn happens on a fixed interval. Casual and Hardcore modes work a bit differently than in single player. Casual mode allows players to respawn as per normal, but in Hardcore mode, when you die you will continue to play in ghost form, allowing you to spectate but not interact normally. Multiplayer also allows for a special PVP flag to be set to allow players to hurt and kill other players. Multiplayer options can be set in the multiplayer menu via the pause menu accessed with escape by default.

Creature spawn rates, creature difficulty, and reputation are all based on how many connected players there are and will scale and average based on each individual player.

Commands

You can use several special commands while playing multiplayer. To see a list of all possible commands, type "/commands" in the chat bar and hit enter. The following commands are also available for use:

  • /players – Shows a list of all connected players.
  • /ping – Shows your latency to the host player.
  • /kick – Allows the host to kick a player.
  • /banned – Shows a list of all banned players.
  • /ban – Allows the host to ban a player.
  • /unban – Allows the host to unban a player.

Dedicated Server Info

To run Wayward in a dedicated server mode, run the wayward.exe (or just "wayward" on Linux/macOS) with the following parameters:

wayward.exe +server

Full arguments list:

  • +server | Switch | Starts Wayward in dedicated "server" mode.
  • +name "Default" | String | Defaults to "Default".
  • +port 38740 | Number | Defaults to 38740.
  • +backup | Switch | Add this argument to enable automated backups to the servers /backups folder. Defaults to no automated backups.
  • +backupInterval 10 | Number | Defaults to 10 (minutes).
  • +maxBackups 24 | Number | Defaults to 24 maximum backups to keep.
  • +load "Game Name" | String | Specify the game name to have it load the save on startup - If the world you specified in +load does not exist, it will be generated. Defaults to nothing.
  • +console | Switch | Starts dedicated server in console only mode (no GUI) - When using this, you must specify a world to load using the +load switch. Defaults to disabled.
  • +seed 123456 | Number | World generation seed. Defaults to a randomized number.
  • +difficulty Hardcore | String | Valid options: Hardcore, Casual, DailyChallenge. Defaults to Hardcore.
  • +realTimeTickSpeed 50 | Number | Real time tick speed. Defaults to 50 (833ms). Normal range is between 10 and 80.
  • +hardwareAcceleration 1 | Number | Defaults to 1 (enabled).
    • Example with some of the arguments:

      wayward.exe +server +name "My Server" +port 38740 +backup +backupInterval 10 +maxBackups 24 +load "Game Name" +difficulty Casual +hardwareAcceleration 0

      When the server is running, you will be able to see player messages as well as chat as the server.

      Multiplayer Design

      Packets the server sends to clients: IWorldPacket, ITickPacket, IActionPacket

      Packets the client sends the server: IActionPacket, IKeyBindStatePacket, IUpdateDirectionPacket, IConfirmDialogSelectionPacket, IChatMessagePacket, IUpdateOptionPacket

      The client doesn't do anything unless the server tells it.

      For ticking, it's controlled from the server. A client will never tick unless the servers tells them to (along with most other things).

      The server will:

      • Log the current seed (before seed)
      • Execute the tick method
      • Log the current seed (after seed)
      • Send an ITickPacket to all the clients (containing the before and after seeds)

      Each client will see the ITickPacket and:

      • Confirm the current game seed is the same as the before seed
      • Execute the tick method
      • Confirm the current game seed is the same as the after seed
      For player movement, the client will send the server an IKeyBindStatePacket (if WASD), or IUpdateDirectionPacket (if mouse click).

      The server will then:

      • Update the players key bind state or direction state
      • Process the players input
        • If a movement is going to happen, the server will send every client an IActionPacket with the MoveTo action type
      When a client wants to execute an action, it sends the server an IActionPacket with the details (action type, item, etc.).

      The server will see this and:

      • Log the current seed (before seed)
      • Execute the action
      • Log the current seed (after seed)
      • Send an IActionPacket to all the clients (containing the before and after seeds)

      Each client will see the IActionPacket and:

      • Confirm the current game seed is the same as the before seed
      • Execute the action
      • Confirm the current game seed is the same as the after seed

Community & Links

Looking for information on multiplayer or want to set up a server?

Multiplayer Info