帝国霸业银河生存开服教程——游戏


在网上看了不少帖子,似乎都没有这个游戏详细的开服图文中文说明 而网上的很多信息都是一些废话连篇毫无用处的小编体,贴吧有一些有用的内容但是也很零碎,自己摸索了好久才搞明白了一些内容,因此整合一下方便查询。
内容包括:在windows云服务器上搭建私服服务端,服务端配置文件说明,常用管理员指令

编写日期:2020年12月13日。
游戏名:Empyrion-Galactic Survival
中文名:帝国霸业银河生存
类型:完全自定义基地与飞船结构的科幻沙盒游戏
平台:Steam

游戏服务端不支持linux系统,仅能在windows系统中运行。
注:部分云服务器未预先安装C++环境,会导致服务器无法启动,需要手动安装C++运行环境vc_redist.x64.exe 微软官方下载地址

1. 服务器搭建

关于使用私人电脑开服的,请自行搜索如何将个人电脑连接到公网固定ip的方式,这里直接讲已经有了公网固定ip(例如在各大云服务器厂商那里租的云服务器)的服务器该如何配置服务端。

首先要注意的是硬件配置需求,这个游戏对私人服务端的配置要求相比其它游戏来说有点高虽然比不上打了几百个mod的mc服务器啦,因此在开服前请注意你的硬件配置是否能够支持。

官方在这方面并没有给出什么数据,因此我直接用我的服务端实际运行情况作为数据来源:
四核cpu的峰值最大占用率达到86%,平均占用为40%(包括没人玩的时候)。
内存占用在8-9G左右。
带宽取决于玩的人数,但正常来说不太可能超过5Mbps。
磁盘空间占用很大,该游戏服务端和客户端一样大,因此需要占用11g左右的空间。服务器选择按照使用流量计费的在下载服务端时请当心你的钱包

总结:一台4核16G内存的云服务器应该可以无压力地开服,使用2核4G的云服务器时,虽然勉强也能玩,但是可能遇到疯狂掉线的糟心状况。
注:该游戏加入服务器只能用ip而不能输入域名,因此如果你的服务器使用动态ip你将不得不经常手动重新输入ip地址。

开服流程来自于英文网站Dedicated Server Setup
用中文简单概括一下过程:
1.安装steamcmd,这是安装steam游戏服务端的工具,安装链接:Steam CMD
考虑到一些大家都懂的外网下载时的影响因素,你可以试着挑个良辰吉时下载……或者用一些谜语人的神秘工具解决问题
2. 将下载的steam CMD放到你准备好的路径,运行一次steamcmd.exe,它会自动下载安装好剩余的steamcmd所需要的文件,这个过程等待时间较长,取决于网络状况。
3. 原教程在这里说得很麻烦,说需要打开一个cmd窗口,然后定位到steamCMD所在路径,再运行

C:\steamCMD\steamcmd.exe +login anonymous +force_install_dir c:\steamCMD\empyrionDedicatedserver\ +app_update 530870 validate +quit

这条命令,然后就安装完成了。
这一步压缩了很多重要的内容,而且包括了多个容易出错的部分,一步到位很难搞明白问题到底出在哪里。

这里给出更加清晰的步骤说明:
首先,双击你的steamcmd.exe图标运行程序。我没搞懂原教程为什么要说得那么麻烦,你又不给我们能在linux上运行的服务端。
在你的steamcmd完成安装和验证后,它应该会让你看到这样的状态:

Steam>

后面那一段用+连接的其实是多个不同的命令,为了方便找到错误出在哪里,建议一步步执行。
执行steam的匿名用户登录:

Steam>login anonymous

如果顺利的话,应该会显示:

Connecting anonymously to Steam Public...Logged in OK
Waiting for user info...OK

如果不顺利请自行复制报错信息并粘贴到搜索引擎。
然后这一步执行设置服务端的安装路径,你可以自己重写后面的安装路径,但是注意至少要留出十几个g的磁盘空间,否则会无法安装。
这步可以忽略,会安装在默认路径。

Steam>force_install_dir c:\steamCMD\empyrionDedicatedserver\

下一步是安装服务端:

Steam>app_update 530870 validate

这一步需要下载大量的文件,要等很长时间。
最后一步,退出steamcmd,或者直接关闭窗口也无所谓。

Steam>quit

安装完之后,别忘了在服务器防火墙上放行所需端口……但是按照官方的教程放通多个端口后仍然没用,所以……偷懒的话,弄一台没什么秘密的服务器,直接配置放入放出所有端口比较省事。
反正这只是拿来打游戏的服务器
双击EmpyrionDedicated.cmd启动有图形界面的服务端。
不推荐使用无图形界面的服务端,因为它并不会和你想象的一样给你一个cmd的黑底白字界面,它的“无图形界面”的意思是:你甚至只能在任务管理器里面发现这个服务端的存在。

如果配置端口转发的话,转发的端口号是:30000-30004

2. 配置文件结构

进入你刚才设置的安装路径,应该已经可以看到游戏服务器的内容。

2.1 开服配置

开服的配置文件就在服务端根目录的dedicated.yaml文件中,你需要在这里配置服务器的名字、端口号、密码等……
所有配置项都有英文说明,应该没什么问题。如果这种程度的英文都看不懂,那建议你还是别整开服这事了
注意的是,如果你修改的那个配置所在行开头有一个#,你需要删除#才能让修改生效。

值得一提的是Activate Telnet server相关的配置,这里配置了使用telnet协议连接服务器后台进行操作的参数,在修改完成后删除前面的#使其生效。
由于初始化管理员的initadmin指令基本没管用过,因此这个配置会很有用。
下载一个putty工具,配置好你的服务器地址和你配置的port端口,在协议中选择使用Telnet协议连接到服务器,输入密码后就可以打开服务器后台界面。

2.2 物品配置

物品配置的文件位于Content\Configuration文件夹中。
主要用到的文件包括

  1. 方块配置BlocksConfig.ecf
    包含了各种机器的电量,cpu,允许放置的位置,工作效果等各种参数。
    允许机器放置在所有设施(不包括野外地形):
    AllowPlacingAt: “Base,MS,SS,GV”
  2. 武器配置ItemsConfig.ecf
    可以配置各种枪械和炮塔的允许工作范围,比如允许外太空炮台在大气层内开火,或者在水下使用枪械攻击,同时,包括了物品的科技树配置。
    允许武器在所有地方开火:
    AllowAt: “UnderWater, Planet, Space”
  3. 初始声望配置DefReputation.ecf
    配置所有npc势力的初始声望。
  4. 合成表配置Templates.ecf
    配置物品的合成方式,详见第4部分的自定义合成。

为了方便从BlocksConfig.ecf中找到你所需要的那个机器的名字,附上一段提取所有id与物品名,并且将物品名自动用空格分开方便机翻查看的python脚本:

import re

# 配置文件的名字
with open("BlocksConfig.ecf", encoding='utf-8') as config:
	# 输出文件的名字
	with open("id and names.txt", 'w') as result:
		lines = config.readlines()
		for line in lines:
			if "Block Id: " in line and "Name: " in line:
				block_id = re.compile(r'Block Id: (.*)').findall(line)[0].split(",")[0]
				name = re.compile(r'Name: (.*)').findall(line)[0].split(",")[0]
				# 以开头大写字母为标准分隔单词
				name=re.sub("[A-Z]",lambda x:" "+x.group(0),name)
				name=re.sub("[0-9]",lambda x:" "+x.group(0),name)
				result.write(block_id + ":" + name + "\n")

如果你要查找的是方块或者机器的id的话,另一个方法是在游戏中使用Di命令打开信息框,将准心对准目标方块就可以看到它name的值。

更多关于机器工作参数细节配置的教程,可以参考贴吧的帖子:
分享:关于修改

2.3 游戏配置

调整当前游戏中的难度、制作速度、体积/质量/CPU限制的开关,氧气/饥饿消耗速度,矿物丰富度等。
对服务器来说,需要调整的是多人游戏配置ValidFor: [ MP, Survival ]以下的部分,而上方的单人游戏配置ValidFor: [ SP, Survival ]无需在意。

默认游戏配置文件为:Content\Scenarios\Default Random\gameoptions.yaml
新建的存档默认会复制一份该文件作为初始配置,但每个存档的配置文件其实是可以独立修改的,为:Saves\Games\DediGame\gameoptions.yaml
关于该配置文件,所有配置选项的详细说明内容在Content\Scenarios\Default Random\gameoptions_example.yaml中都有写到。

但也有一些不知道为什么没有直接给出的配置项,实测将其手动写入存档配置也能生效,例如启用死亡不掉落:
DiffPlayerBackpackDrop: DropNothing

3. 管理员指令

百度上大量文档中写的指令早已过时无法使用,例如很多小编里面写了?为查询指令列表,然而在最新版本中查询指令信息的命令是help。
使用。打开聊天窗口,而使用~则是打开控制台窗口,所有指令都需要在控制台中使用。

输入help回车,可以查看所有服务器指令信息。

虽然在help的列表中注明,使用initadmin可以在服务器没有管理员的情况下给予自己管理员权限,但实测无法生效,因此需要使用2.1中提到的telnet连接工具连接到服务器后台,然后输入

setrole steam-64-id admin

来将自己的steam账户设置为服务器管理员。
steam-64-id为你的steam帐号的64位id,查看方式为在电脑浏览器中进入你的steam个人主页,此时浏览器地址栏中地址末尾会有一串很长的数字(但其实显示的并没有64位那么长),这就是你需要输入的数字id。
将自己设置为admin管理员后,服务器的存档Saves文件夹中会出现adminconfig.yaml文件,该文件记录了你的管理员信息。
之后,你就可以在服务器中完成所有的指令操作了。

举例一些常见指令:
spawnanyblueprint:无视条件无视材料生成任意蓝图,再次输入关闭。
Di:开关一个信息框,信息框会显示你准心正对着的设施和方块的信息,可以用来查看飞船/基地的数字id或者各种方块的英文名字,用于其它指令的操作
gm iv:打开gm模式,可以对任何方块进行操作,包括拆除管理员核心等操作。
gm off:关闭gm模式
itemmenu:开关创造物品栏,创造物品栏使用h键呼出。
replaceblocks 基地或飞船ID 原方块名 替换方块名:替换目标设施中所有指定方块
destroy 建筑ID:用于删除一个基地或者飞船。
prefabinfo 蓝图名称:用于检查红色或者橙色的蓝图为何无法正常生成,会详细列出所有涉及到问题的方块信息(只对自己保存的蓝图有效,创意工坊蓝图需要在单机生成重新保存,蓝图名字必须全英文,不能有空格)。

其余指令可以自己通过浏览help给出的详细列表查看。

4. 自定义合成

自定义合成表主要涉及到2.3中提到的两个配置文件:
ItemsConfig.ecf用于配置解锁科技树。
Templates.ecf用于配置具体合成方式。

以下通过两个样例对于如何自定义合成进行解释。

4.1 增加火焰喷射器燃料合成

火焰喷射器与燃料是无法自己合成的物品,但是在外星箱子中获得了火焰喷射器之后,燃料却只能从外星人那里买总觉得有哪里不对……这又不是什么高科技含量的东西。
打开ItemsConfig.ecf,这里包含了游戏中所有的item,即物品。
试着搜索火焰喷射器的英文名FlameThrower……在几次查找后成功发现了火焰喷射器燃料的名字FlameThrowerCanister。
准备在Templates.ecf的合成中添加……慢着,先搜索看看。
试着搜索了一下,发现这个合成表的配置中居然真的有火焰喷射器燃料的合成配置:

#{ +Template Name: FlameThrowerCanister
#  OutputCount: 1 #A1 
#  CraftTime: 28
#  Target: "SurvC,SmallC,HoverC,BaseC,LargeC,AdvC"
#  { Child Inputs
#    BioFuel: 4
#  }
#}

只不过这个配置被注释掉了,因此并没有发挥实际作用。
试着删除所有句子开头的#,然后启动游戏,成功发现建造机中多出了火焰喷射器燃料的合成……但是显示未解锁?
找遍科技树的所有分页,仍然没有找到能够解锁的图标,于是打开科技树配置文件ItemsConfig.ecf
搜索火焰喷射器燃料的名称,发现了对应的词条:

{ +Item Id: 67, Name: FlameThrowerCanister
  Meshfile: Entities/Items/Weapons/Projectiles/FlameThrowerProjectilePrefab
  DropMeshfile: Entities/Misc/BagSmallPrefab 
  Material: metalweapon
  MarketPrice: 6, display: true
  HoldType: 0
  Canhold: false
  Info: bkiFlameThrowerCanister, display: true
  Category: Weapons/Items
  StackSize: 2000
  Mass: 4, type: float, display: true, formatter: Kilogram
  Volume: 0.5, type: float, display: true, formatter: Liter
  { Child 0
    Class: Projectile
    Damage: 50, display: true 
    BlastParticleIndex: 15
    BlastRadius: 1, display: true
    BlastDamage: 50, display: true
    Speed: 150
    Range: 6
    BulletsPerShot: 8
    BulletSpread: 5
    NoiseStrength: 80, display: false   
    Ballistic: true
    # HomingSpeed: 2, display: true
	
    DamageMultiplier_1: 2, param1: head, display: DmgMultiplierHead
    DamageMultiplier_2: 2, param1: wood|woodblock|plastic
    DamageMultiplier_3: 0, param1: dirt|stone|rock
    DamageMultiplier_4: 0, param1: concrete|hull|hullarmored|hullcombat|metal|metalhard
    DamageMultiplier_5: 0, param1: shield 
    DamageMultiplier_6: 2, param1: human 
    BlastDamageMultiplier_1: 2, param1: head, display: DmgMultiplierHead
    BlastDamageMultiplier_2: 2, param1: wood|woodblock|plastic
    BlastDamageMultiplier_3: 0, param1: dirt|stone|rock
    BlastDamageMultiplier_4: 0, param1: concrete|hull|hullarmored|hullcombat|metal|metalhard
    BlastDamageMultiplier_5: 0, param1: shield 
    BlastDamageMultiplier_6: 2, param1: human 
  }

  UnlockLevel: 1
  TechTreeNames: Hidden
}

注意最后一行,科技树名称为隐藏,可能这就是原因。
于是对照其它的词条,将最后一行改为:

TechTreeNames: Weapons

成功在武器列表中发现了解锁火焰喷射器燃料的图标。
在这里插入图片描述

4.2 增加中型护甲与重型护甲的自定义合成

试着在ItemsConfig.ecf中搜索护甲的英文单词Armor,几次查找后发现了轻型护甲的英文名ArmorLight与对应的词条。

{ +Item Id: 600, Name: ArmorLight
  Class: Armor
  RecipeName: LightArmor
  MarketPrice: 4397, display: true
  Meshfile: Entities/Misc/DummyPrefab
  DropMeshfile: Entities/Misc/BagSmallPrefab
  Material: metal
  Mass: 25, type: float, display: false, formatter: Kilogram
  Volume: 24, type: float, display: true, formatter: Liter
  VolumeCapacity: 100, type: float, display: true, formatter: Liter     
  HoldType: 0
  StackSize: 1
  Canhold: false
  Category: Weapons/Items
  Info: bkiPlayerArmor, display: true
    
  Durability: 400, display: true
  DegradationFac: 0.08, type: float, display: false    # do not display anymore 
  Oxygen: 375, type: int, display: true    # OxygenConsumptionPerMinute = 12.5f;  => consume 500 units of oxygen in 40 min
  Armor: 100, type: int, display: true
  Heat: 10, type: int, display: true
  Cold: 10, type: int, display: true
  Radiation: 2, type: int, display: true
  FallDamageFac: 0.40, type: float, display: true
  PowerFac: 0.66, type: float, display: true  # better: 0.5
  SpeedFac: 0.85, type: float, display: true  # better: 0.5
  JumpFac: 0.67, type: float, display: true  
  JetpackFac: 1.20, type: float, display: true /*no armor : 2.5 units removed per tick.  armor : 5* JetpackFac per tick*/  
  FoodFac: 1.44, type: float, display: true /*calculations are based on 70 minutes*/
  StaminaFac: 1.21, type: float, display: true /*calculations are based on 20 stamina per second while running*/
  NrSlots: 2, type: int, display: true
  SlotItems: "InsulationBoost, ArmorBoost, JetpackBoost, MultiBoost, OxygenBoost, MobilityBoost, RadiationBoost, EVABoost, TransportationBoost"
  
  UnlockCost: 2, display: true
  UnlockLevel: 10, display: true
  TechTreeNames: Weapons
}

紧随其后的就是中型护甲ArmorMedium和重型护甲ArmorHeavy。
仔细观察,发现轻型护甲的最后三行是在中型护甲和重型护甲词条中没有的:

  UnlockCost: 2, display: true
  UnlockLevel: 10, display: true
  TechTreeNames: Weapons

从字面意思上可以看出,它们的意思分别是:科技解锁消耗点数,科技解锁等级和科技树名称。
在其它的物品中,还发现了一个TechTreeParent的属性,从字面意思理解应为前置科技。
因此,试着将三种护甲作为同一条科技树连接起来。
在中型护甲词条末尾输入:

  UnlockCost: 15, display: true
  UnlockLevel: 5, display: true
  TechTreeNames: Weapons
  TechTreeParent: ArmorLight

在重型护甲词条末尾输入:

  UnlockCost: 25, display: true
  UnlockLevel: 20, display: true
  TechTreeNames: Weapons
  TechTreeParent: ArmorMedium

查看科技树,成功发现对应词条,不过这些图标到目前为止还是空白的,鼠标移上去会显示无信息。
然后打开蓝图配置文件Templates.ecf,搜索三个英文名称,发现中型护甲和重型护甲不存在,只有轻型护甲存在对应词条:

{ +Template Name: ArmorLight
  CraftTime: 60 #1
  Target: "SurvC,SmallC,HoverC,BaseC,LargeC,AdvC"
  { Child Inputs
    SteelPlate: 12
    Electronics: 1
    OpticalFiber: 1
  }
}

从字面意思理解:
CraftTime为制作所需时间。
Target为所有可用于制作这个物品的制造机。
Child Inputs后面的内容为具体的合成表材料。

于是,模仿轻型护甲的制作格式,自己修改材料品种与数量,在轻型护甲后面添加两个相应的合成配方:

{ +Template Name: ArmorMedium
  CraftTime: 60
  Target: "SurvC,SmallC,HoverC,BaseC,LargeC,AdvC"
  { Child Inputs
    TitanPlates: 240
    EnergyMatrix: 10
    CapacitorComponent: 10
    SmallOptronicMatrix: 1
  }
}

{ +Template Name: ArmorHeavy
  CraftTime: 60
  Target: "SurvC,SmallC,HoverC,BaseC,LargeC,AdvC"
  { Child Inputs
    SteelPlateArmored: 480
    Oscillator: 20
    PowerCoil: 20
    LargeOptronicMatrix: 1
  }
}

最终效果如图:
在这里插入图片描述
注:实验证明,合成配方在配置文件中的排列顺序就是建造机内图标的显示顺序,因此如果你把新增配方添加到配置文件的末尾,这些新增的物品图标就会出现在建造机可建造物品列表的最后面。

经过两个具体样例的讲解,想必你对于如何修改合成配方也已经有了基本的理解了,快去试试吧~

希望这个教程对那些想要自己架设私人服务器的玩家有所帮助,有用请点赞,玩得开心~
别像我一样弄出了朋友全是鸽子的鬼服QAQ
在这里插入图片描述

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值