Multiplayer

  • One player hosts a game from one of their Multiplayer saves and friends join it, each running their own company in the same world. The economy is shared (one set of markets that everyone's trades move, port sizes, storms, seasons and calendar). Every company has its own home port. Only the host sets the game speed (joined players' speed buttons are greyed out, showing the host's, and F does nothing for them).
  • Hosting: Multiplayer page → pick a slot (New Game to host, or a save) → Host Game dialog: the game's name in friends' lists ("Name your game"; the company's if left blank), an optional password, how many can play (2 to 8, the host included), and Over: Steam (the default when Steam is running) or Local network, or by address, and Filter: "Filter bad words from ship names and chat" (on by default). It reads through simple disguises (sh1t, f.u.c.k, f u c k, fuuuck) without catching place names (Scunthorpe, Fukuoka, Essex). The games list says "Filtered" for such games. The game then opens as usual and is open to join.
  • Over Steam: the game starts Steam as app 480, Valve's test app, until it has its own app id. Hosting opens a public Steam lobby holding the game's details, and joined games connect to the host through Steam's relay, so no addresses or port forwarding. The host's players list has Invite Friends (Steam's overlay; it only opens when Steam started the game, otherwise it says so and friends use the games list). Accepting a Steam invite, or Join Game on a friend in Steam's friends list, opens the join page and joins that game (while playing, the activity log says to leave this game first; back at the title screen it joins). Without Steam running, the Over choice is greyed out with the reason.
  • The game announces itself on the local network every second on port 24566.
  • Joining: Multiplayer page → Join a Friend's Game: your name (your Steam name to start with), then the games hosted on Steam and on your network ("Rory's Empire · Host Co · 1/4 players · Password · Filtered · Steam", with Join; Steam's list is asked again every 5 seconds and leaves out your own account's games), or join by address (an IP address and port; over the internet the host forwards port 24565). A game with a password asks for it; a wrong one, a full game or a different version of the game is turned away with the reason. Then pick a company: take back one of the game's companies no one is playing (with its level, money and home port; not an AI rival), or found a new one (name, color, and its HQ picked on a globe the same way as New Company: only the recommended starts and the Great Lakes ports no company has, colored by kind, with the start's note; the first free recommended start is picked to start with), then "Next: Your CEO": the same CEO page as a new game's, with Back or Found Company and Join; the host takes the CEO as sent, made safe. It starts with its home port's region unlocked, like a new game (saves where a joined company had none get it, and every region its fleet uses, when loaded). Founding at a taken home port, a port that isn't a starting port, or with a taken name says so and lets you pick again.
  • While playing: the host's game runs the world as in single player. About seven times a second it sends each joined game what changed (the clock, speed, weather, market and each company's money and XP every time; each moving ship's position, fuel, maintenance and timers; any ship whose state changed whole; and the rest of every ship, the port sizes and the companies' finances at least every 3 seconds), and the joined games move ships smoothly in between at their last speeds. A joined player's actions (buy, sell, routes, pause, the toggles, upgrades, hubs, mega upgrades, recoveries, icebreaker stations, renames, the bank reserve, their map and log settings) go to the host, which does them for that player's company (only for their own ships); what happens to their ships (sales, loads, breakdowns, losses, rescues, level-ups, canal tolls, port growth) comes back as their own activity log messages.
  • Other players' ships show on the map a little faded, with a flag in their company's color at the stern; their HQs and hubs have rings in their company's color (companies sharing a port ring it in turn). Clicking another player's ship shows it read-only ("... — Host Co's ship"), without its money or controls. Their route lanes show faintly in their company's color (see the Routes switch). The Ships, Finances, Hubs and Shop screens, the lost and at-risk markers and the alerts are your own company's.
  • The top bar shows "Hosting · 3 players" or "Joined on Steam · 3 players"; clicking it lists the players with Leave Game (and Invite Friends for a host on Steam) (the host saves and ends the game for everyone; a joined player leaves and their company carries on, to be taken back by joining again). The activity panel has two tabs, Activity and Chat: Chat lists the game's messages ("Company: text" in the speaker's company color, newest at the bottom; the last 200) with a "Say something (Enter)" line under them, and the tab counts messages that came while it wasn't open ("Chat (2)"). T opens the panel on the Chat tab ready to type (not while typing elsewhere); Esc leaves the chat line. Joins and leaves are logged in the host's Activity. If the host leaves or the connection drops, joined players are told so and go back to the title screen.
  • The host's save holds every company (each ship's company, and which company is the host's); joined games don't save. Storms, seasonal closures and port shrinking follow the highest company level in the game; breakdowns start at each company's own level; rescues use each company's own recovery boats and tugs.
  • Under the hood: Company holds everything a player owns. (that company's), while the sim pays, charges and levels each ship's own company. Net does the hosting, joining, updates, commands, events, chat and finding games, over Steam or ENet; past connecting, both are the same. The whole game a newcomer starts from goes in parts of at most 256 KB (Steam won't send a message over 512 KB).