<insert name here>
这篇文章需要翻译。你可以帮助异星工厂中文维基来 翻译它
这篇文章需要改进。你可以帮助异星工厂中文维基来 编辑它

除了单人战役和剧本外,《异星工厂》还支持多人游戏。默认情况下,多人游戏运用CO-OP 自定义剧本,玩家共同发射卫星火箭进入太空。其他剧本,包括PvP地图,可从地图和剧本论坛下载。

当前,加入多人游戏,要求所有的玩家都在同一个局域网或主机有一个公共IP地址。在下个版本中(0.31),将支持在公共游戏大厅定位游戏,同时 NAT穿透将不使用公共IP地址,与服务器进行无缝连接。

历史

由于在地图上会有庞大的潜在活动,游戏引擎使用lock step architecture。游戏中的所有的实例都是对世界的模拟,只有玩家的行动通过网络传输。

在异星工厂0.11.0引入多人游戏中。每个玩家只能通过点对点的模式与其他玩家进行直接交流。在0.12.4版本中,引入客户服务器模式,服务器(无论是专用的还是某个玩家发起的游戏)可以向所有玩家发送消息,只意味着所有玩家间没有必要直接进行交流。客户服务器模式只能在0.13版本中使用。

在0.12.0版本, “延迟隐藏”机制会成为游戏的一大特色。通过模仿玩家的一些特定的行为,是的游戏中的一些经常性的交互(比如角色的移动)变得更加流畅。延迟隐藏是默认设置,可以通过选项→其他→启用多人延迟隐藏进行关闭。并不是所有动作都能够使用延迟隐藏,例如驾驶汽车和火车以及射击。

创建多人游戏

在游戏菜单中选择多人游戏选项开始多人游戏,建立游戏的玩家即为房主,房主向其他玩家提供自己的IP地址,其余玩家可以通过这个IP地址加入到房主的游戏中。

帮助与提示:

  • 玩家需要安装相同版本的游戏和MOD。
  • 异星工厂使用34197端口,该端口可通过config file进行修改。
  • 异星工厂只使用UDP,确保正确的设置你的路由器的端口转发。 (异星工厂在UDP上建立自己“可靠的传输层”,以此来解决数据包丢失和乱序问题。)
    • 确保没有防火墙或其他杀毒软件拦截UDP数据包。
  • 查看下一节以正确配置你的网络。
  • 玩家数量上限为65535

语音聊天

  • 推荐玩家使用语音聊天(团队语音,网络通话), 因为玩家需要大量的沟通,例如建立联系,建造,抵御攻击等等。团队语音可在多人论坛下载。

寻找其他玩家

  • 使用论坛中的多人游戏面板
  • 许多玩家使用Evolve等其他软件与其他玩家联络,创建虚拟局域网对玩家也是有好处的,见下面的软件。
  • 也可以使用Steam寻找其他玩家。
  • 使用具有搜索选项的外部服务器浏览器
  • 推荐你的朋友购买异星工厂,一起游戏。

连接到一个NAT后的服务器

异星工厂需要服务器(客户服务器模式)或者所有玩家(点对点的模式)有一个公共IP地址,或者所有玩家都在同一个局域网内。如果你在NAT之后,你必须设置设置端口转发 (见上文端口码 )或者使用虚拟局域网软件例如Hamachi或者Evolve。

多人游戏默认在客户服务器模式 (多人转发模式)下启动。在这个模式下,所有的客户端将他们的网络流量到发送到服务器,同时服务器将其转发到其他客户端,这样对于局域网内外的玩家都有好处,但其不足在于会出现数据延迟,因为数据包要通过服务器进行额外的传送。多人游戏也可以在点对点模式下启动,在开始游戏时,房主通过点击使用点对点通信盒子禁用转发行为。不推荐使用点对点模式,在0.13版本中该模式会被移除。

游戏类型

合作模式

在合作模式中,所有的玩家都属于同一个势力,玩家共享研究进程,可以接触其他玩家储存在建筑中的物品,玩家不会遭到其他玩家建立的防御结构的攻击。

启动合作模式:

  1. 启动异星工厂
  2. 点击 游戏
  3. 点击 多人游戏
  4. 点击 新游戏
  5. 选择地图编辑器。点击生成地图
  6. 选择频率和其他设置,点击游戏
  7. 现在其他玩家可加入游戏

PvP

在PvP模式中,玩机可以选择不同的势力,每个势力都有不同数量的玩家。每个势力都有自己独立的研究进程。此外,每个势力的防御炮塔战斗机器人 会将其他玩家视为敌人进行攻击。注意,基于剧本,停火指令可能是单向的,即使玩家对敌方设置停火指令,敌方仍然可对玩家开火。

启动PvP游戏,玩家要下载PvP兼容剧情 (或者使用命令控制台向不同势力手动分配玩家数量,见下文)。PvP剧情可在地图和剧情论坛下载下载。

PvP剧情示例:

下载PvP剧情之后,玩家以自定义单人剧情开始游戏,之后保存,然后作为多人游戏进行加载,否则,异星工厂将默认为合作模式启动游戏。详细步骤:

  1. 下载剧情,将剧情目录装入用户数据目录中的“剧情”目录中。
  2. 启动游戏
  3. 点击 游戏
  4. 点击 自定义剧情
  5. 选择PvP剧情中你想进行的用户剧情,再点击创建
  6. (取决于剧情,玩家可能需要进行生成地图的相关设置。点击生成地图)
  7. 点击退出并点击保存
  8. 命名并点击保存
  9. 点击 退出游戏
  10. 点击 游戏
  11. 点击 多人游戏
  12. 点击 载入游戏
  13. 选择之前保存的游戏并点击载入
  14. 选择频率和其他设定,点击游戏
  15. 现在其他玩家可加入游戏

势力

玩家通过控制选项可以自由划分势力。,在PvP模式中,任何地图和剧情都是适用的。这或许没有使用预制的PvP剧情方便,因为除了控制按钮,玩家没法开启或关闭停火命令。

每个势力都有各自的研究进程,各势力之间可以相互进攻。

设置和控制势力的控制命令如下:

game.create_force('force 1')
创造势力并命名为“势力1”。默认势力位“玩家”,“敌人”和“中立单位”。
“玩家”默认为玩家的势力。
“敌人”为外星势力。
“中立单位”是特殊的“”:他们不会进行攻击并且可以被其他势力所用。(例如,中立的存储罐可被任何势力所用。)
game.get_player('friend 1').force = game.forces['force 1']
改变“友军1”至“势力1”
game.forces['force 1'].set_cease_fire('force 2', true)
设置“势力1”对“势力2”停火命令。反向操作必须单独完成。
game.forces['force 1'].set_spawn_position({x=10, y=20}, game.get_surface(1))
对一个特定的势力设置产生/重生点x=10,y=20。默认情况下,所有势力的玩家都以{x = 0, y = 0}开始产生。
for v in pairs(game.forces) do game.local_player.print(v) end
所有当前势力列表

Dedicated/Headless server

在异星工厂0.12.0版本之前,专用 (或者无终端)服务器可以通过开始--服务器命令选项启动。玩家可以运行异星工厂—帮助得到异星工厂所有的命令行参数列表。

在无终端模式下:

  • 图像无需初始化(在无终端服务器上启动更快,占用内存更少,运行充分。)
  • 游戏立即启动,将保存的游戏当做参数命令进行加载。
  • 服务器在游戏中没有影响。
  • 无玩家连接时游戏暂停。(可以使用无自动暂停选项进行覆盖)
  • 保存游戏并退出 (自动保存亦可)

注意在0.12, 0.13和0.14版本之间在启动服务器(和其他)怎样解释给定的参数方面有轻微的改变。在0.12版本中预期--启动服务器之后要保存名称,可在保存目录中发现。0.13版本替代为预期--启动服务器之后要保存文件路径。例如,如果你保存factorio --start-server foo在0.12版本中,在0.13中则需使用factorio --start-server saves/foo.zip

在启动服务器之前,你需要创建你的保存文件,因为专用服务器需要一个保存文件。这可以使用创建命令行参数来进行。例如:

./bin/x64/factorio --create ./saves/my-save.zip       # This creates a new save, as if by clicking the New Game button in the GUI
   ./bin/x64/factorio --start-server ./saves/my-save.zip # This starts a server that will host the file created on the previous line

在0.13版本中,可以使用非默认的地图生成器创建地图,创造一个所需的包含地图设定的文件 (以the file data/map-gen-settings.example.json 为例),运行:

factorio --create saves/my-save.zip --map-gen-settings path-to-file-with-desired-map-generation-settings.json

在0.14.12版本中,异星工厂移动了一些命令行选项到the server-settings.json file。启动异星工厂需要指定the server-settings.json file的位置。默认在异星工厂数据文件夹,例如,使用最新保存的地图启动异星工厂,你将运行:

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

下面是在Windows和Linux上启动专用服务器的一些基本指令。

Windows

  • 找到Factorio.exe 文件 (Probably 'C:\Program Files\Factorio\bin\x64\')
  • 创建一个文本文档并写入 'Factorio.exe --start-server YOURSAVEGAME.zip'
    • 如果没有这样做,使用your savegame nam替换YOURSAVEGAME。
  • 作为server.bat保存文件。在保存类型中选择全部文件
  • 使用server.bat启动你的服务器。
  • 控制台日志将显示在窗口中。
  • 关闭服务器,选择控制台窗口,按Control+C。如果不按Control+C,将不会进行保存。
  • 端口转发: 你会在网上找到你专用路由器的详细说明


Linux

详细指导已在CentOS 7和RHEL 7的安装中阐述过,适用于多数微小或者无变化的情况。

指导假设你在/opt/factorio下安装无终端服务器,根据你的设置调整路径。为了强化玩家的设置安全,我们建议玩家使用一个单独的用户运行异星工厂。

注意,Linux有两种不同的软件包可以用于运行无终端服务器。第一种是常用的Linux下载,包含完整的游戏。另一个是特殊的无终端软件包。无终端软件包不包含任何与纯粹服务器无关的文件,比如图像,声音,也不与函数库相连,不会出现在服务器上,例如Xlib,libGL或者libasound。

该指南不处理防火墙/端口转发,以为在Linux上有好多方式可以解决。(作为Linux管理员一定要阅读这是如何在你特定的分布工作的 )

用一个更好的方式通过Linux 异星工厂初始化脚本启动/暂停无终端服务器。该脚本只能保证在你启动服务器时使用最近的存档(即使是自动保存),同时你也可以做一些其他的设置,比如自动保存频率和延迟设定。与Linux 异星工厂更新脚本相结合可以简化服务器的更新。

  • 下载可选择的软件包,完整游戏或者无终端软件包。将linux tar.gz p软件包上传至你的服务器/tmp
  • 从 /tmp to /opt/factorio提取软件包
#cd /opt/
   #tar -xzf /tmp/factorio.tar.gz # Use the correct filename. It includes the factorio version number
  • 将新用户添加到您的系统,并分配异星工厂目录列表(不要再根用户中运行。)
#useradd factorio
   #chown -R factorio:factorio /opt/factorio
  • 尝试二进制。
#su factorio
   #/opt/factorio/bin/x64/factorio --start-server savename

只要不显示无法找到/open the savename.zip,就可以上传你电脑中的存档并将它加入 /opt/factorio/saves directory, 或使用 --create ./saves/newgame.zip。

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

为了能够发行匹配服务器的游戏,异星工厂需要的不仅仅是保存文件的位置,这些信息在包含在server settings file中。

创建一个服务器设置文件,查看位于异星工厂的应用程序目录data/server-settings.example.json里的示例文件,推荐的方法是复制这个示例文件然后编辑这个复制的文件。

下面的数据可以被改变:

  • 名称: 服务器的名称,将列在服务器浏览器上。
  • 描述: 关于你的服务器的简介描述。
  • 标签: 游戏标签列表。
  • 玩家上限: 可以限制连接同一游戏的玩家的数量。如果不想做限制。设置玩家上限为0。
  • 服务器浏览器可见性: 可以使公开,局域网或者隐藏。
    • 公开: 服务器出现在公共服务器列表,需要填写下面的登录信息。
    • 局域网: 服务器不会出现在公共服务器列表, 但可通过局域网对战案件搜索到。
    • 隐藏: 客户端必须使用服务器的IP地址连接。
  • 用户信息使用用户名,密码或者认证令牌:如果想建立公共服务器这些都是必要的,否则,它们都是空置的。
    • 出于安全因素,由于作为明文存储,所以建议使用认证令牌。认证令牌属于敏感信息,玩家需做好保密工作。
  • 服务器密码
    • 字段名是游戏密码。
  • 是否验证用户身份

(在0.14版本中还有其他的数据)

技术实现细节

关于多人游戏的一些技术细节的已经由开发团队发布在Friday Facts博客上:

更多教程

Miscellaneous Tips

  • 控制台命令可以用于多人聊天。要执行一个命令而不是聊天,你需要在命令之前输入“/C”。执行的命令对所有玩家都是可见的。此外,多人游戏与命令工作的命令许可一起开始。
  • 使用命令设置玩家颜色。
/c game.get_player("x").color = {r=0.7, g=0.5, b=0.1, a=0.9}

X是玩家的名字。r,g和b代表红色,绿色和蓝色。(数值在0~1之间, 最右列转换为http://prideout.net/archive/colors.php rgb的数字)。a是阿尔法通道也称为基础图像透明度,对单个玩家来说替换get_player("x")player进行颜色设置。

0.0
0人评价
avatar