Multiplayer
Factorio ist nicht nur ein Einzelspielerspiel, sondern unterstützt auch den Mehrspielermodus, der es vielen Spielern ermöglicht, zusammenzuarbeiten und sich gegenseitig zu unterstützen oder im PvP gegeneinander anzutreten. Diese Seite beschreibt, wie man ein Multiplayer-Spiel einrichtet, wie man einem beitritt und die Multiplayer-Admin-Funktionen zur Verwaltung anderer Benutzer und des Servers. Standardmäßig laufen Multiplayer-Spiele im CO-OP Freeplay-Szenario, in dem alle Spieler zusammenarbeiten, um eine Rakete mit einem Satelliten ins All zu schießen. Andere Szenarien, einschließlich PvP-Karten, stehen im Forum Maps and Scenarios zum Download bereit.
Einrichten eines Multiplayer-Spiels
Multiplayer-Spiele können gemeinsam gespielt, während des Spiels gehostet oder auf einem eigenen Server gehostet werden. Multiplayer-Spiele können anderen Spielern im selben LAN oder weltweit angeboten werden.
Verwende die Option Mehrspieler aus dem Hauptmenü, um ein Multiplayer-Spiel zu starten, dann wähle Neues Spiel hosten oder Gespeichertes Spiel hosten, um ein Spiel zu hosten und zu spielen, oder Öffentliche Spiele durchsuchen, LAN-Spiele durchsuchen oder Mit Adresse verbinden, um sich mit einem bereits laufenden Spiel zu verbinden. Bei Mit Adresse verbinden kann man direkt die IP-Adresse des Servers angeben, zu dem man sich verbinden möchte.
Hinweise und Tipps:
- Alle Spielinstanzen benötigen die Installation der exakt gleichen Spielversionen und Mods.
- Factorio-Server verwenden den Port 34197. Der Port kann in der config-Datei geändert werden.
- Factorio verwendet nur UDP. Das Spiel baut seine eigene "zuverlässige Zustellungsschicht" auf, die auf UDP aufbaut, um mit Paketverlusten und Problemen bei der Neuordnung der Pakete umzugehen.
- Wenn Du ein Spiel hostest, dann kann es erforderlich sein, dass auf deinem Router eine Portweiterleitung für Port 34197 eingerichtet ist. Das Spiel versucht über NAT punching eine Portweiterleitung zu vermeiden, aber wenn das nicht funktioniert, ist eine Portweiterleitung erforderlich.
- Vergewissere Dich, dass dein Router keine zufälligen Quellports für Pakete verwendet, die von 34197 ausgehen. Einige Router tun dies und erfordern zusätzliche Konfiguration, um dies zu verhindern.
- Vergewissere Dich, dass UDP-Pakete nicht von einer Firewall oder einem Anti-Virus Programm blockiert werden.
- Die obere Grenze der maximalen Spieleranzahl ist 65.535. In der Praxis ist diese Grenze jedoch viel niedriger. Bekannte Streamer haben es geschafft, weit über hundert Spieler zu erreichen.
Dedizierte/Headless-Server
Ab Factorio Version 0.12.0 kann ein dedizierter (oder headless) Server mit der Kommandozeilenoption --start-server gestartet werden. Mit factorio --help erhältst Du eine Liste aller Kommandozeilenargumente für Factorio.
Im Headless-Modus:
- Die Grafik wird nicht initialisiert (schnellerer Start, weniger Speicherverbrauch, funktioniert auf Servern, die überhaupt keine Grafikkarte enthalten)
- Das Spiel startet sofort und lädt einen Spielstand, der als Parameter für den Befehl angegeben wurde.
- Der Server hat keinen Charakter im Spiel
- Das Spiel wird pausiert, wenn keine Spieler verbunden sind (dies kann jedoch mit der Option no-auto-pause in der server-settings.json überschrieben werden)
- Speichert das Spiel beim Beenden (und speichert automatisch)
Ab 0.13 wird erwartet, dass nach --start-server ein Pfad zu einem gespeicherten Spielstand angegeben wird.
Du musst die Speicherdatei erstellen, bevor Du den Server startest, da der dedizierte Server die Angabe einer Speicherdatei ERFORDERT. Dies kann einfach mit dem --create Befehlszeilenargument geschehen. Zum Beispiel:
./bin/x64/factorio --create ./saves/my-save.zip # Dies erstellt einen neuen Spielstand, als ob man auf die Schaltfläche "Neues Spiel" in der GUI klicken würde.
./bin/x64/factorio --start-server ./saves/my-save.zip # Dies startet einen Server, der die in der vorherigen Zeile erstellte Datei hostet.
Es gibt mehrere JSON-Konfigurationsdateien, die Factorio nutzen kann, um die Server- und Karteneinstellungen zu ändern:
- map-gen-settings, um Parameter zu setzen, die vom Kartengenerator verwendet werden, wie z.B. die Breite und Höhe, die Häufigkeit und Größe der Erz-Ressourcenfelder, etc. (Hinzugefügt in 0.13)
- map-settings zur Kontrolle der Umweltverschmutzung, der Ausbreitung und Entwicklung von Gegnern und mehr (Hinzugefügt in 0.15)
- server-settings, die mehrere Befehlszeilenoptionen in einer einzigen Datei zusammenfasst (Hinzugefügt in 0.14.12)
Beispieldateien für jeden dieser Parameter sind im Unterverzeichnis data enthalten.
Die Optionen --map-gen-settings und --map-settings müssen mit der Option --create verwendet werden, wenn eine neue Karte erstellt wird. Beispiel:
./bin/x64/factorio --create saves/my-save.zip --map-gen-settings my-map-gen-settings.json --map-settings my-map-settings.json
Wenn Du den Factorio-Server startest, musst du den Speicherort der Datei server-settings.json angeben. Diese befindet sich standardmäßig im Factorio data-Ordner. Um Factorio mit der zuletzt gespeicherten Karte zu starten, kannst Du beispielsweise folgendes ausführen:
./bin/x64/factorio --start-server-load-latest --server-settings ./data/server-settings.json
Unter Windows kann es sinnvoll sein, den Server mit einer .bat-Datei zu starten. Die bat-Datei sollte den folgenden Inhalt haben:
start /wait .\bin\x64\factorio.exe --start-server-load-latest --server-settings .\data\server-settings.json
Siehe Command line parameters für weitere Kommandozeilenparameter.
Einrichten eines Linux Factorio-Servers
Hinweis: Factorio benötigt glibc Version 2.18, aber CentOS/RHEL 7 wird nur mit der Version 2.17 ausgeliefert, so dass diese Anleitung ohne manuelles Kompilieren der glibc 2.18 nicht funktioniert.
Diese Schritt-für-Schritt-Anleitung wurde für eine frisch aufgesetzte CentOS 7- und RHEL 7-Installationen erstellt, sollte aber mit kleinen bis keinen Änderungen auf die meisten Distributionen anwendbar sein.
Die Anleitung geht davon aus, dass der Headless-Server unter /opt/factorio installiert wird, passe die Pfade entsprechend Deiner eigenen Einrichtung an. Wir schlagen außerdem vor, den Factorio-Server als separaten Benutzer laufen zu lassen, um die Sicherheit des Servers zu erhöhen.
Es ist zu beachten, dass es zwei verschiedene Pakete für Linux gibt, die für den Betrieb eines Headless-Servers verwendet werden können. Das erste ist der normale Linux-Download, der das komplette Spiel enthält. Das andere ist das spezielle Headless Paket. Das Headless-Paket enthält keine Dateien, die für einen reinen Server irrelevant sind, wie z. B. Grafiken und Sounds. Es wird auch nicht gegen Bibliotheken gelinkt, die auf einem Server-Rechner möglicherweise nicht vorhanden sind, wie Xlib, libGL oder libasound. Diese Option sollte gewählt werden, wenn das Programm auf einem von einem Drittanbieter gehosteten Server läuft.
Diese Anleitung befasst sich nicht mit Firewall/Port-Weiterleitung, da dies unter Linux auf verschiedene Weise erfolgen kann (Als Linux-Administrator solltest du unbedingt nachschauen, wie dies unter deiner speziellen Distribution erfolgt)
Grundlegende Installation
- Lade das ausgewählte Paket herunter - entweder das komplette Spiel oder das Headless-Paket - und speichere das Linux tar.gz- oder tar.xz-Paket auf dem Server nach /tmp
- Entpacke das Paket in /tmp nach /opt/factorio
$cd /opt/ $sudo tar -xJf /tmp/factorio_headless_x64_<VERSION>.tar.xz # Verwende den richtigen Dateinamen. Er enthält die Versionysnummer von Factorio. $sudo tar -xzf /tmp/factorio.tar.gz # für ältere Versionen (ver 0.14.x und älter)
- Füge einen neuen Benutzer zum System hinzu und mache ihn zum Eigentümer des /opt/factorio Verzeichnisses zu (bitte nicht als Root-Benutzer ausführen, sudo kann erforderlich sein)
$useradd factorio $chown -R factorio:factorio /opt/factorio
- Als Test, starte den Server:
$su factorio $/opt/factorio/bin/x64/factorio --start-server savename
Wenn der Aufruf fehlschlägt und die Datei savename.zip nicht gefunden/geöffnet werden kann, ist alles klar! Lade einfach einen Spielstand von Deinem eigenen Computer hoch und legen ihn im Verzeichnis /opt/factorio/saves ab, oder verwende das Argument --create ./saves/newgame.zip.
Wie man ein auf einem Server gehostetes Spiel auf dem passenden Server veröffentlicht
Um ein Spiel auf dem Matching-Server zu veröffentlichen, benötigt Factorio einige weitere Informationen als nur den Speicherort. Diese Informationen werden in einer Server-Einstellungsdatei bereitgestellt.
Um eine Server-Einstellungsdatei zu erstellen, schaue Dir die Beispieldatei in data/server-settings.example.json im Factorio-Anwendungsverzeichnis an. Es wird empfohlen, eine Kopie dieser Beispieldatei zu erstellen und diese zu bearbeiten.
Die folgenden Werte können geändert werden:
- name
- Dies ist der Name, unter dem der Server im Server-Browser aufgelistet wird
- description
- Eine kurze Beschreibung Ihres Servers
- tags
- Eine Liste von Spiel-Tags
- max_players
- Ermöglicht es, die Anzahl der Spieler zu begrenzen, die gleichzeitig mit dem Server verbunden sein können. Wenn man keine Begrenzung möchte, max_players einfach auf 0 setzen.
- visibility
- Sichtbarkeit für den Server-Browser
- public: Der Server wird in der Liste der öffentlichen Server angezeigt. Dazu müssen die unten stehenden Anmeldedaten eingegeben werden.
- LAN: Der Server wird in der Liste der im LAN verfügbaren Server angezeigt.
- Versteckt: wenn weder public noch LAN auf true gesetzt werden, müssen sich die Clients über die IP-Adresse des Servers verbinden.
- Benutzeranmeldedaten mit Benutzername und Passwort oder Authentifizierungs-Token (zu finden auf der factorio-Website oder in der player-data.json): Diese Angaben sind notwendig, wenn Du den Server öffentlich machen möchtest. Ansonsten können sie leer gelassen werden.
- Aus Sicherheitsgründen wird empfohlen, das Authentifizierungs-Token zu verwenden, da dieses Dokument im Klartext gespeichert wird. Es sollte jedoch beachtet werden, dass auch ein Authentifizierungs-Token eine sensible Information ist, und man sollte es geheim halten
- game_password
- Passwort, das angegeben werden muss, um dem Spiel beitreten zu können.
Details zur technischen Umsetzung
Hinweise zu einigen technischen Details rund um den Mehrspielermodus hat das Entwicklerteam in mehreren Friday Facts-Blogbeiträgen veröffentlicht:
Verschiedene Tipps
- Die Taste für die Konsole wird auch verwendet, um den Chat im Multiplayer-Modus zu öffnen. Um einen Befehl auszuführen, anstatt zu chatten, musst Du /c vor dem Befehl eingeben. Ausgeführte Befehle sind für alle Spieler sichtbar. Außerdem muss das Multiplayer-Spiel mit zulässigen Befehlen gestartet worden sein, damit die Befehle funktionieren.
- Setze die Farbe des Spielers mit dem Befehl
/color r g b
r, g und b sind für rot, grün und blau (mögliche Werte sind zwischen 0 und 1, siehe diese Seite, um Farben in rgb Zahlen zu übersetzen).
- Um sich selbst Administratorrechte zu geben, erstelle eine server-adminlist.json im selben Verzeichnis wie factorio-current.log. Die Datei sollte eine Liste der Admins enthalten, etwa so:
[ "user1", "user2" ]
Diese Datei wird auch erstellt, wenn Du einen Spieler über die Konsole beförderst.
Beitritt zu einem Multiplayer-Spiel
Ab Version 0.13 müssen Spieler keine Port-Weiterleitung mehr im Router einrichten, um mit anderen zu spielen. Spieler können einander über Steam beitreten, oder nur über den weitergeleiteten Host.
Spieler, die einem Spiel beitreten möchten, können dies auf mehrere Arten tun:
- Beitritt durch direkte Eingabe einer öffentlichen IP und eines Ports in Factorio.
- Auswahl des Servers aus dem Menü des aktiven öffentlichen Servers.
- Auswahl des Servers aus dem Menü als lokales LAN-Spiel.
- Beitritt über die Dienste von Steam.
Beitritt per IP
Um einem Multiplayer-Spiel per IP beizutreten, musst Du die öffentliche IP eines gültigen Servers kennen. Diese kann über soziale Medien, Websites oder durch Mundpropaganda weitergegeben werden. Nachdem Du eine IP und den Port gefunden hast, gehe einfach auf Spielen → Mehrspieler → Mit Adresse verbinden und gib alle erforderlichen Informationen an.
Wenn der Server korrekt eingerichtet wurde, um öffentliche Verbindungen zu akzeptieren, solltest Du dem Spiel beitreten können.
Beitritt über die Serverliste
Die Entwickler von Factorio führen eine Liste aller öffentlichen Server, die sich für den Dienst angemeldet haben, so dass die Spieler direkt über Factorio beitreten können. Die meisten dieser Server sind passwortpflichtig, aber es gibt auch viele komplett öffentliche Server, mit denen man sich verbinden kann. Um über die Serverliste beizutreten, wähle aus dem Hauptmenü → Multiplayer → Öffentliche Spiele durchsuchen. Gib Dein factorio.com-Login ein, falls du danach gefragt wirst, und eine Liste öffentlicher Server wird angezeigt. Wähle einfach einen aus.
Beitritt über Steam
Steam bietet ein "Spieleinladungs"-System, mit dem man einfach beitreten kann. Weitere Informationen über die Verwendung von Steam gibt es bei Steam selbst. Dies ist die empfehlenswerteste Methode für den durchschnittlichen Spieler, um den Mehrspielermodus mit seinen Freunden zu nutzen, da es Steam erlaubt, alles zu verwalten.
Einem lokalen LAN-Spiel beitreten
Wenn du Freunde hast, die über dieselbe Internetverbindung verfügen wie du (im selben Gebäude oder Netzwerk), kannst du ein LAN-Spiel spielen. Wähle im Hauptmenü → Mehrspieler → LAN-Spiele durchsuchen.
PvP
Im PvP-Modus können die Spieler verschiedenen Parteien angehören. Jede Partei kann aus einem (free-for-all) oder mehreren Spielern (Teams) bestehen. Jede Partei hat ihren eigenen unabhängigen Forschungsfortschritt. Außerdem greifen die Militärische Einheiten und Strukturen jeder Partei andere Spieler als Feinde an, es sei denn, es wurde ein Waffenstillstand vereinbart. Es ist zu beachten, dass Waffenstillstände je nach Szenario unidirektional sein können - ein Waffenstillstand mit einer gegnerischen Partei garantiert nicht, dass diese auch im Gegenzug einen Waffenstillstand ausspricht.
Um ein PvP-Spiel zu starten, kannst du das PvP-Szenario aus dem Menü "Spielen" auswählen oder ein benutzerdefiniertes Szenario herunterladen, das auch PvP unterstützt.
Nachdem du ein PvP-Szenario heruntergeladen hast, musst du es in dein Anwendungsverzeichnis verschieben und das Multiplayer-Spiel mit diesem Szenario erstellen.
- Lade das Szenario herunter und lege das scenario-Verzeichnis in das Verzeichnis scenarios in deinem Anwendungsverzeichnis.
- Starte Factorio
- Klicke auf Mehrspieler
- Klicke auf Neues Spiel
- Wähle das gewünschte PvP-Szenario und klicke auf Erstellen
- Wählt die Latenz und andere Einstellungen und klicke dann auf Spielen.
- Andere Spieler können nun dem Spiel beitreten.
Parteien
Parteien können manuell über die Konsole erstellt werden. Dadurch kann jede Karte/Szenario für PvP verwendet werden. Dies ist möglicherweise nicht so praktisch wie ein vorgefertigtes PvP-Szenario, da es für die Spieler keine andere Möglichkeit gibt, als über die Konsole Feuerpausen ein- und auszuschalten.
Jede erstellte Partei hat ihren eigenen Forschungsfortschritt und verschiedene Parteien können sich gegenseitig angreifen.
Die Konsolenbefehle zum Aufstellen und Kontrollieren von Parteien sind unten aufgeführt:
game.create_force("Name") --Erstellt die Partei "Name" game.players["Player_name"].force = game.forces["Name"] --Ordnet diesen Spieler der neuen Partei zu game.forces["Name"].set_cease_fire("Other_force_name", true) --Legt für die neue Partei einen Waffenstillstand mit "Other_force_name" fest. game.forces["Name"].set_spawn_position({x = 10, y = 20}, game.surfaces[1]) --Legt die Spawn-Position für die Partei fest game.print(#game.forces) --Gibt die Anzahl der Parteien aus for name, force in pairs (game.forces) do game.print(name) end --Gibt die Namen aller Parteien aus
Die Fähigkeit von Spielern und Objekten, die einer Partei angehören, mit Strukturen zu interagieren, die einer anderen, nicht befreundeten Streitkraft angehören, ist begrenzt. Einige Arten von Interaktionen sind jedoch weiterhin möglich:
- Manuelles Einsammeln von Fließbändern
- Die Spieler können Gegenstände aufheben, die sich auf einem Fließband befinden, das einer gegnerischen Partei gehört. Beachte jedoch, dass dies nicht automatisiert werden kann: Greifarme nehmen keine Gegenstände von den Fließbändern der gegnerischen Partei auf.
- Fließband Schaltungsnetz-Verbindung
- Die Fließbänder sind unabhängig von der Zugehörigkeit zu einer Partei miteinander verbunden, so dass es möglich ist, das Fließband einer gegnerischen Partei zu verlängern, so dass Gegenstände dorthin fließen. Es ist auch möglich, Gegenstände mit Greifarmen auf das Fließband einer gegnerischen Partei zu legen oder von der Seite hineinfließen zu lassen.
- Flüssigkeiten
- Rohre (und Lagertanks, Pumpen usw.) werden unabhängig von der Zugehörigkeit zu einer Partei miteinander verbunden. Es ist zum Beispiel möglich, Flüssigkeiten aus oder in einen Vorratstank einer gegnerischen Partei zu pumpen.
- Stromdiebstahl
- Spieler können Strom aus dem Stromnetz einer gegnerischen Partei beziehen, indem sie Gebäude im Einzugsbereich eines Strommastes der gegnerischen Partei bauen. Strommasten, die man neben einem Strommast einer gegnerischen Partei errichtet, werden automatisch mit diesem verbunden, können aber nicht manuell verbunden oder getrennt werden.
Entwicklungsgeschichte
Aufgrund der potenziell immensen Menge an Aktivitäten auf einer Karte verwendet die Spiel-Engine eine lock-step Architectur. Alle Instanzen des Spiels führen vollständige Simulationen der gesamten Welt aus und nur die Aktionen der Spieler werden über das Netzwerk übertragen.
Multiplayer-Spiele wurden in Factorio mit Version 0.11.0 eingeführt. Die einzige verfügbare Verbindungsmethode war der Peer-to-Peer-Modus, was bedeutete, dass jeder Spieler in der Lage sein musste, direkt mit jedem anderen Spieler zu kommunizieren. In Version 0.12.4 wurde ein Client-Server-Kommunikationsmodus eingeführt, bei dem der Server (entweder ein dedizierter Server oder der Spieler, der das Spiel gehostet hat) Nachrichten an alle Peers weiterleitet. Dies bedeutet, dass eine direkte Verbindung zwischen allen Spielern nicht mehr notwendig ist. Ab Version 0.13 wurde die P2P-Verbindung vollständig entfernt.
Seit Version 0.12.0 verfügt das Spiel über eine "Latenzversteck"-Mechanik, bei der das Spiel einige der Aktionen des Spielers lokal simuliert, um einige häufige Interaktionen (wie das Bewegen der Spielfigur) flüssiger zu gestalten. Nicht jede Aktion ist Teil des Latency Hiding - vor allem Auto- oder Zugfahren und Schießen sind nicht Teil davon.