切换语言: Deutsch English 日本語 Русский

多人游戏

From Official Factorio Wiki
Revision as of 17:32, 20 February 2018 by Thrimbda (talk | contribs)
Jump to navigation Jump to search


除了单人游戏之外,Factorio还支持多人游戏,允许许多玩家合作并互相帮助,或者在PVP中相互对抗。本页面介绍如何设置多人游戏以及如何加入。默认情况下,多人游戏运行合作自由模式,所有玩家一起工作,发射一颗卫星进入太空的火箭。其他场景,包括PvP地图,可以从地图和场景论坛下载。

设置多人游戏

玩家可以加入多人游戏,或以本机为主机建立多人游戏,亦或由专用服务器托管。建立好的多人游戏可以被同一局域网玩家或全球其他玩家找到并加入。

使用开始游戏菜单中的多人游戏按钮开始多人游戏,选择新游戏载入游戏游戏场景建立主机并开始游戏,或者选择局域网游戏互联网游戏以连接到已经其他人的的游戏中。主机也可以选择不在服务器列表中显示建立的游戏,在这种情况下,您需要服务器的(公共或其他方式)IP地址;然后你可以选择连接服务器以加入游戏。

注意与提示:

  • 所有玩家的游戏版本和安装的mod必须完全一致。
  • 游戏使用端口34197。端口可以在设置中更改。
  • 游戏仅支持 UDP协议。请确保你的路由器有正确的设置。(游戏拥有自己的“可靠通信层”建立在UDP之上来解决丢包问题。)
    • 请确保没有防火墙或杀毒软件阻止了UDP数据包。
  • 同时联机人数的理论上限是65535,然而,实际的限制要低得多。

专用/Headless服务器

从Factorio版本0.12.0开始,可以使用--start-server命令行选项启动专用(或Headless)服务器。您可以运行factorio --help来获取Factorio接受的所有命令行参数的列表。

在Headless模式下:

  • 图形界面未初始化。(启动速度更快,内存使用量更少,适用于Headless服务器)
  • 在键入命令后,游戏立即开始,并按照给出的参数(存档名)加载存档。
  • 服务器在游戏中没有角色。
  • 在没有玩家连接的情况下,游戏会暂停。(尽管可以使用server-settings.json中的no-auto-pause选项覆盖此选项)
  • 退出时保存游戏。(并正常执行自动保存)

从0.13开始,--start-server命令后需要加上存档文件的路径。

您需要在启动服务器之前创建保存文件,因为专用服务器需要提供保存文件。这可以使用--create命令行参数轻松完成。例如:

./bin/x64/factorio --create ./saves/my-save.zip       # 这将建立一个新存档,就像在游戏中点击新游戏那样
./bin/x64/factorio --start-server ./saves/my-save.zip # 这将启动游戏服务端,并且会使用上一行中创建的存档

有几个JSON配置文件可供factorio用来更改服务器和地图设置:

  • 在map-gen-settings中设置地图生成器使用的参数,例如宽度和高度,矿块的频率和大小等。(在0.13中添加)
  • 编辑map-settings来控制污染扩散,扩散和演变等等。(0.15版本中增加)
  • server-setting将多个命令行选项合并到单个文件中(在0.14.12中添加)

data子目录中包含每个参数的示例文件。

创建新地图时,必须将--map-gen-settings和--map-settings选项与--create选项一起使用。例如:

./bin/x64/factorio --create saves/my-save.zip --map-gen-settings my-map-gen-settings.json --map-settings my-map-settings.json

启动factorio服务器需要您指定server-settings.json文件的位置。默认情况下,这是在factorio数据文件夹中。例如,要使用最新保存的地图启动factorio,您可以运行:

./bin/x64/factorio --start-server-load-latest --server-settings ./data/server-settings.json

要在同一台计算机上启动服务器和客户端,需要使用以下启动选项启动客户端:

--no-log-rotation

设置Linux Factorio服务器

注意:Factorio现在需要glibc 2.18版本,但CentOS / RHEL 7仅附带2.17版本,因此如果不手动编译glibc 2.18,本指南将不再起作用。

本分步指南已在新安装的CentOS 7和RHEL 7环境下进行了验证,同时在大多数发行版中几乎不用做任何更改。

本指南假设您将在/ opt / factorio下安装Headless服务器,请根据您自己的设置调整路径。我们还建议您将Factorio服务器在单独的用户中运行,以加强安全性。

请注意,Linux有两种不同的软件包可用于运行Headless服务器。首先是普通的Linux下载,其中包含完整的游戏。另一种是特殊的Headless包。Headless包不包含与纯服务器无关的任何文件,如图形和声音。它也不与服务器机器上不存在的库链接,如Xlib,libGL或libasound。如果在第三方托管服务器中运行,应选择此选项。

本指南不处理防火墙/端口转发,因为这可以在Linux中以各种方式完成(请务必在您的特定发行版上以Linux管理员的身份了解这些内容)

您可以使用Linux factorio-init脚本以更好的方式启动/停止无头服务器。该脚本将确保您只能在服务器启动时使用最新的存档(即使这是自动保存),同时还可以设置许多其他设置项,例如自动保存频率和延迟设置。此脚本还将简化与Linux factorio-updater脚本结合使用时更新服务器的流程。

  • 下载所选软件包 - 完整游戏或是无头包 - 并将Linux tar.gz或tar.xz软件包上传到您的服务器的/tmp目录下
  • 将/tmp中的软件包解压到/opt/factorio中
$cd /opt/

$sudo tar -xzf /tmp/factorio.tar.gz # 请使用正确的文件名称。它包含factorio版本号
$sudo tar -xJf /tmp/factorio.tar.xz # 如果您下载了.tar.xz文件请使用这条命令(版本0.15.x)
  • 将一个新用户添加到您的系统中,并为其分配factorio目录的所有权(请不要以root用户身份运行,可能需要sudo)
$useradd factorio
$chown -R factorio:factorio /opt/factorio
  • 尝试运行服务端二进制可执行文件
$su factorio
$/opt/factorio/bin/x64/factorio --start-server savename

如果失败并提示它无法找到或打开你设置的savename.zip,这时只需从自己的计算机上传一个保存,并将其保存在/opt/factorio/saves目录中,或者使用--create ./saves/newgame.zip创建一个存档。

如何在匹配服务器中列出服务器托管的游戏

为了将游戏发布到匹配服务器,需要给Factorio一些额外的信息,而不仅仅是保存文件的位置。这些信息在服务器设置文件中提供。

要创建服务器设置文件,请查看Factorio Application目录中data/server-settings.example.json中的示例文件。推荐的方法是制作此示例文件的副本并编辑副本。

以下值可以更改:

Name
这将是服务器在服务器列表中显示的名称
Description
服务器的简要说明
Tags
游戏标签列表
Max Players
允许您限制可以同时连接到服务器的玩家数量。如果你不想要限制,只需将max_players设置为0即可。
  • 服务器浏览器的可见性:可以是公共的,局域网可见的或隐藏的。
    • 公开:服务器将出现在公共服务器列表中。这需要在下方填写登录凭据。
    • 局域网:服务器不会出现在公共服务器列表中,但可通过“局域网游戏”按钮使用
    • 隐藏:客户端必须使用服务器的IP地址进行连接
  • 使用用户名和密码或验证令牌的用户凭证(可在factorio网站或player-data.json中找到):如果您希望公开服务器,则这些是必需的。否则可以留空。
    • 出于安全原因,建议使用身份验证令牌,因为此文档以纯文本形式存储。应该指出,身份验证令牌也是敏感信息,因此建议您保密。
  • 服务器密码
    • 字段名称是game_password
  • 是否验证用户身份

(factorio的v0.14中还有其他值。)

技术实施细节

关于多人游戏的一些技术细节的注意事项由开发团队在几个Friday Facts博客文章中发布:

更多指南

杂项

  • 控制台命令的按键也用于多人游戏中的开始聊天。要执行命令而不是聊天,您需要在命令前键入/c。执行的命令对所有玩家都是可见的。此外,多人游戏必须启用了允许命令工作的设置。
  • 使用该命令设置玩家的颜色:
/c game.players["player_name"].color = {r=0.7, g=0.5, b=0.1, a=0.9}

r,g和b分别代表红色,绿色和蓝色(可能的值介于0和1之间,请使用http://prideout.net/archive/colors.php上的最右边一列将颜色转换为rgb数字)。 a是阿尔法通道,也就是透明度。

异星工厂服务器:为什么要p2p?

有人争论,为什么异星工厂不使用客户-服务器的模式,却采用玩家-玩家的模式。 在v0.11没有明确支持一个异星工厂 “服务器”。而v0.12会支持!

如果你想制作一个24/7不间断运行的世界,你需要在你的服务器上运行异星工厂并保持运行,它的原理就如同一个玩家。服务器将如同其他人一样,成为一个在游戏中的角色。

一些链接:

无中央配置服务端

游戏类别

Coop

Coop-game runs without any further preparation ( http://www.factorioforums.com/forum/viewtopic.php?f=53&t=6501 )

PvP

Technical Implementation

More Tools/Infos

And always remember that Factorio in v0.11 isn't intended to work well on internet connections, so keep patient. ;)

More Guides

Miscellaneous tips

  • the key for Console commands will now initiate a chat in MP. To execute commands you need to type '/c' before the command!
  • Set the player's color using the command
/c game.players[x].color = {r=0.7, g=0.5, b=0.1, a=0.9}

Where x is the player number. r, g and b are for red, green and blue respectively (possible values are between 0 and 1, use the right-most column on http://prideout.net/archive/colors.php). a is alpha channel aka Transparency of the color to the base texture. For single player, leave off the "[x]" to set the color.

Software for routing / establishing connection


No-building-material-icon.png
This article is a stub, and not comprehensive.
You can help this wiki by expanding it.