In anderen Sprachen: English 日本語 Русский 中文

Multiplayer/de: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
(+ Eigenständiger Server)
(sync with English changes)
 
(3 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Languages}}
{{Languages}}
[[File:players_colored_preview.png|190px|right]]Factorio ist nicht nur ein Einzelspielerspiel, sondern unterstützt auch den Mehrspielermodus, der es vielen {{L|Player}}n 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 [[Game modes and options/de|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 [https://forums.factorio.com/viewforum.php?f=36&sid=93d1fbe9336d31d6bac60847b6c97985 Forum ''Maps and Scenarios''] zum Download bereit.


Die Multiplayerfunktion wurde mit Verison 0.11.x eingeführt und war vorerst nur für LAN-Partys oder Low-latency Internetverbindungen geeignet. Seit Version 0.12.0 verwendet das Spiel ''Latency Hiding'' um den Multiplayermodus flüssiger zu gestalten.
== Einrichten eines Multiplayer-Spiels ==


Das Spiel nutzt Peer-to-Peer um die Verbindung zwischen Spielern herzustellen. Daher ist es nicht nötig einen eigenständigen Server zu starten - was nach Bedarf aber möglich ist.
[[File:multiplayer_game_night.png|thumb|250px|Ein Multiplayer-Spiel:]]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.


Jedem, den die IP-Adresse bekannt ist, kann sich mit dem Spiel verbinden. Wenn sich ein neuer Spieler verbindet, wird das Spiel für die restlichen Spieler pausiert, während die aktuelle Karte heruntergeladen wird. Wenn der erste Spiel das Spiel verlässt, können die restlichen Spieler normal weiterspielen. Der erste Spieler kann sich jederzeit wieder verbinden. Bei einer Desynchronisation wird die Karte automatisch neu heruntergeladen.
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.


== Eigenständiger Server ==
Hinweise und Tipps:
{{Experimental|0.12.X}}


Ab Version 0.12.0 kann ein eigenständiger (headless) Server über das '--start-server'-Argument auf der Kommandozeile gestartet werden.
* Alle Spielinstanzen benötigen die Installation der ''exakt gleichen'' Spielversionen und Mods.
* Factorio-Server verwenden den Port '''34197'''. Der Port kann in der [[Application directory/de|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 [https://doc.pfsense.org/index.php/Static_Port zufälligen Quellports] für Pakete verwendet, die von '''34197''' ausgehen. Einige Router tun dies und erfordern [https://forum.pfsense.org/index.php?PHPSESSID=3k4h9n5o2tksgqv910fknf7qt7&topic=142188.msg798594#msg798594 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 [https://forums.factorio.com/viewtopic.php?f=53&t=6481&p=50661#p50586 65.535]. In der Praxis ist diese Grenze jedoch viel niedriger. Bekannte Streamer haben es geschafft, weit über hundert Spieler zu erreichen.


In diesem Modus:
=== Dedizierte/Headless-Server ===
* werden keine Grafiken initialisiert
* startet das Spiel automatisch und lädt die konfigurierte Savefile
* hat der Server keinen Charakter im Spiel
* ist das Spiel pausiert wenn keine Spieler verbunden sind
* speichert der Server das Spiel beim Beenden


Die Savefile für den Server muss vor dem Starten erstellt werden, da der eigenständige Server eine Savefile übergeben werden muss. Das kann einfach erledigt werden, indem man das Spiel im Einzelspielermodus startet und das Spiel speichert.
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:
 
<pre>
./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.
</pre>
 
<pre>
./bin/x64/factorio --start-server ./saves/my-save.zip # Dies startet einen Server, der die in der vorherigen Zeile erstellte Datei hostet.
</pre>
 
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:
<pre>./bin/x64/factorio --create saves/my-save.zip --map-gen-settings my-map-gen-settings.json --map-settings my-map-settings.json</pre>
 
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:
 
<pre>./bin/x64/factorio --start-server-load-latest --server-settings ./data/server-settings.json</pre>
 
Unter Windows kann es sinnvoll sein, den Server mit einer .bat-Datei zu starten. Die bat-Datei sollte den folgenden Inhalt haben:
 
<pre>start /wait .\bin\x64\factorio.exe --start-server-load-latest --server-settings .\data\server-settings.json</pre>
 
''Siehe {{L|Command line parameters}} für weitere Kommandozeilenparameter.''
 
=== Einrichten eines Linux Factorio-Servers ===
 
'''Hinweis:''' Factorio benötigt <tt>glibc</tt> Version 2.18, aber CentOS/RHEL 7 wird nur mit der Version 2.17 ausgeliefert, so dass diese Anleitung ohne [https://forums.factorio.com/viewtopic.php?t=54654#p324493 manuelles Kompilieren der <tt>glibc</tt> 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 [https://factorio.com/get-download/stable/headless/linux64 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
<pre>
$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)</pre>
 
* 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)
<pre>
$useradd factorio
$chown -R factorio:factorio /opt/factorio</pre>
 
* Als Test, starte den Server:
<pre>
$su factorio
$/opt/factorio/bin/x64/factorio --start-server savename</pre>
 
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-{{L|Application directory}} 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:
 
* [http://www.factorio.com/blog/post/fff-76 Lock step architecture]
* [http://www.factorio.com/blog/post/fff-99 Client-server connections]
* [http://www.factorio.com/blog/post/fff-143 NAT punching, introduced in 0.13]
 
=== Verschiedene Tipps ===
* Die Taste für die {{L|Console}} 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 [https://www.w3schools.com/colors/colors_converter.asp 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: <code>[ "user1", "user2" ]</code>
 
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 {{L|Military units and structures}} 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 {{L|Application directory}}.
# 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:
 
<pre>
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
</pre>
 
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 [https://www.factorio.com/blog/post/fff-76 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.

Latest revision as of 17:58, 31 March 2022

Players colored preview.png

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

Ein Multiplayer-Spiel:

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-Application directory 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.

  1. Lade das Szenario herunter und lege das scenario-Verzeichnis in das Verzeichnis scenarios in deinem Application directory.
  2. Starte Factorio
  3. Klicke auf Mehrspieler
  4. Klicke auf Neues Spiel
  5. Wähle das gewünschte PvP-Szenario und klicke auf Erstellen
  6. Wählt die Latenz und andere Einstellungen und klicke dann auf Spielen.
  7. 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.