前言

更新到alpha20版本。如果您从早期版本更新,请备份!

指南是针对Ubuntu系统的,因为这是Valve支持的。然而,在RedHat系统和Linux Mint上安装它非常容易。
我假设您至少对unix命令有些熟悉。如果您不了解命令的作用,请在搜索引擎上查找它们,并在继续之前进行一些学习。如果您完全不熟悉linux系统,您应该记住文件是区分大小写的。
我还假设您在服务器上运行SSHd。它在Ubuntu上安装为“openssh-server”。

重要提示:

如果你想安装Windows-server,有[SAO] BigC90210的视频指南。

另一个重要提示:

看起来老的AMD不会再运行A20版本的服务器了。没办法。无论如何,对于少数玩家和大型地图来说,你需要体面的硬件,而地图生成需要很长时间……在新的AMD硬件上安装服务器,例如Ryzen 9 3900X工作得很好。

步骤1:使用SSH登录服务器

步骤2:创建新的专用服务器帐户(推荐)

步骤3:安装SteamCMD

参考:https://developer.valvesoftware.com/w/index.php?title=SteamCMD:zh-cn&uselang=zh

步骤4:使用SteamCMD下载专用服务器

支持匿名下载,无需登录。否则,在登录时使用您的帐户凭据并通过Steam Guard验证您自己。

# Start SteamCMD
./steamcmd.sh 

一段时间后出现SteamCMD shell,您可以在SteamCMD提示符中键入命令。注意,SteamCMD提示符总是以Steam>开头。

force_install_dir ./7daysded
login anonymous
app_update 294420
quit

您可以使用相同的过程来UPDATE THE SERVER.

更新可能会覆盖您的配置文件!当一切正常时,您可能需要备份和/或重命名它们。

注意:您可以在文本文件中插入所有steamcmd命令,并在需要更新服务器时使用crond运行它。

实验性和旧的服务器版本:

你可以在Steam上看到可用的服务器版本:
Library > Tools > 7days > Properties > Beta

老版本:

app_update 294420 -beta alpha13.8 

注意,这是不带空格的“alpha13.8”!

最新实验:

app_update 294420 -beta latest_experimental

从旧版本恢复到当前版本:

app_update 294420 -beta NONE

步骤5:启动脚本startserver.sh的位置

服务器安装在“7daysded”目录下。它包含启动脚本和配置文件。
在新版本启动脚本工作,因为它应该,所以你不必编辑它。

步骤6:编辑serverconfig.xml文件

按照您的意愿设置服务器。在serverconfig.xml中的每个选项后面都有解释文本。

注意,在当前测试环境中(本地ubuntu+frp内网穿透到阿里云),不知为何总有问题,注释掉
<property name="ServerDisabledNetworkProtocols" value="SteamNetworking"/> 能正常使用
除了需要放开和映射WebDashboard和Telnet的TCP端口之外,还需要放开和映射26900 到 26905的UDP端口以提供UDP通讯

<?xml version="1.0"?>
<ServerSettings>
    <!-- GENERAL SERVER SETTINGS -->

    <!-- Server representation -->
    <property name="ServerName" value="被世纪高教毁灭的世界"/>
    <!-- 服务器名字 -->
    <property name="ServerDescription" value="被世纪高教毁灭的世界"/>
    <!-- 服务器描述(会显示在搜索中)-->
    <property name="ServerWebsiteURL" value="blog.ucoder.top"/>
    <!-- 网站地址 -->
    <property name="ServerPassword" value="qweasdzxc"/>
    <!-- 服务器密码 -->
    <property name="ServerLoginConfirmationText" value="世界正在被世纪高教毁灭,而你无可奈何" />
    <!-- 如果设置了,用户将在加入服务器期间看到该消息,并且必须在继续之前进行确认。要对该窗口进行更复杂的更改,可以更改XUi中的“serverjoinrulesdialog”窗口 -->
    <property name="Region" value="Asia" />
    <!-- 服务器所在的区域。可选值:NorthAmericaEast, NorthAmericaWest, CentralAmerica, SouthAmerica, Europe, Russia, Asia, MiddleEast, Africa, Oceania -->
    <property name="Language" value="Chinese" />
    <!-- 此服务器上玩家的主要语言。值:使用您希望用户搜索的任何语言名称。应该是语言的英文名, 比如不能写"汉语" 而要写 "Chinese" -->

    <!-- Networking -->
    <property name="ServerPort" value="26900"/>
    <!-- 希望服务器侦听的端口。如果您希望同一局域网上的pc将其视为局域网服务器,则将其保持在26900至26905或27015至27020范围内。 -->
    <property name="ServerVisibility" value="2"/>
    <!-- 此服务器的可见性:2 =公开,1 =仅显示给朋友,0 =未列出。因为你从来不是专用服务器的朋友,所以只有当第一个玩家通过IP手动连接时,才会将此设置为“1”。 -->
    <!-- <property name="ServerDisabledNetworkProtocols" value="SteamNetworking"/> 不应该使用的网络协议。以逗号分隔。可能值:LiteNetLib, SteamNetworking。如果你的用户和服务器之间没有NAT路由器,或者端口转发设置正确,专用服务器应该禁用SteamNetworking -->
    <property name="ServerMaxWorldTransferSpeedKiBs" value="512"/>
    <!-- 最大(!)速度在kiB/s,世界是在第一次连接的客户端传输,如果它还没有世界。最大值约为1300kib /s,即使您设置了更高的值。 -->

    <!-- Slots -->
    <property name="ServerMaxPlayerCount" value="8"/>
    <!-- 最大并发玩家数 -->
    <property name="ServerReservedSlots" value="0"/>
    <!-- 在MaxPlayerCount之外,这些插槽只能由具有特定权限级别的玩家使用 -->
    <property name="ServerReservedSlotsPermission" value="100"/>
    <!-- 使用上述保留槽位所需的权限级别 -->
    <property name="ServerAdminSlots" value="0"/>
    <!-- 即使服务器已达到MaxPlayerCount,仍然可以加入这么多管理员-->
    <property name="ServerAdminSlotsPermission" value="0"/>
    <!-- 使用上述管理槽所需的权限级别 -->

    <!-- Admin interfaces -->
    <property name="WebDashboardEnabled" value="true"/>
    <!-- 启用/禁用web仪表板 -->
    <property name="WebDashboardPort" value="8181"/>
    <!-- web仪表板的端口 -->
    <property name="WebDashboardUrl" value="http://ucoder.top:6005/"/>
    <!-- 外部URL到web仪表板,如果不只是使用服务器的公共IP,例如,如果web仪表板在反向代理后面。需要是完整的URL,比如e "https://domainOfReverseProxy.tld:1234/". 如果直接使用公共IP和仪表板端口,可以留空 -->
    <property name="EnableMapRendering" value="true"/>
    <!-- 在探索地图时,启用/禁用映射到平铺图像的渲染。例如,它被web仪表板用来显示地图的视图。 -->
    <property name="TelnetEnabled" value="true"/>
    <!-- 启用/禁用telnet -->
    <property name="TelnetPort" value="8081"/>
    <!-- telnet服务器端口号 -->
    <property name="TelnetPassword" value=""/>
    <!-- 进入telnet接口的密码。如果没有设置密码,服务器只监听本地环回接口 -->
    <property name="TelnetFailedLoginLimit" value="10"/>
    <!-- 在一个远程客户端输入这么多错误密码后,该客户端将被阻止连接到Telnet接口 -->
    <property name="TelnetFailedLoginsBlocktime" value="10"/>
    <!-- 该块将持续多长时间(以秒为单位) -->
    <property name="TerminalWindowEnabled" value="true"/>
    <!-- 显示用于日志输出/命令输入的终端窗口(仅限Windows) -->

    <!-- Folder and file locations -->
    <property name="AdminFileName" value="serveradmin.xml"/>
    <!-- 服务器管理文件名。相对于SaveGameFolder的路径 -->
    <!-- <property name="UserDataFolder" value="absolute path" /> -->    <!-- 使用它重写服务器存储所有生成数据的位置,包括RWG生成的世界。不要忘记取消条目的注释! -->
    <!-- <property name="SaveGameFolder" value="absolute path" /> -->    <!-- 使用此选项只覆盖保存游戏路径。不要忘记取消条目的注释! -->

    <!-- Other technical settings -->
    <property name="EACEnabled" value="true"/>
    <!-- 启用/禁用EasyAntiCheat -->
    <property name="HideCommandExecutionLog" value="0"/>
    <!-- 隐藏命令执行的日志。0 =显示一切,1 =只从Telnet/ControlPanel隐藏,2 =也从远程游戏客户端隐藏,3 =隐藏一切 -->
    <property name="MaxUncoveredMapChunksPerPlayer" value="131072"/>
    <!-- 重写每个玩家可以在游戏地图上发现多少块。每个玩家的最大地图文件大小限制是(x * 512字节),未覆盖的区域是(x * 256 m²)。默认值131072意味着任何时候最多可以覆盖32平方公里 -->
    <property name="PersistentPlayerProfiles" value="false" />
    <!-- 如果禁用,玩家可以加入任何选定的配置文件。如果是真的,他们将与他们加入的最后一个侧面结合-->



    <!-- GAMEPLAY -->

    <!-- World -->
    <property name="GameWorld" value="Navezgane"/>
    <!-- “RWG”(参见下面的WorldGenSeed和WorldGenSize选项)或世界文件夹中任何已经存在的世界名称 (目前可用。"Navezgane", "PREGEN01", ...) -->
    <property name="WorldGenSeed" value="asdf"/>
    <!-- 如果RWG,这就是新世界一代的种子。如果结果名称的世界已经存在,它将简单地加载它 -->
    <property name="WorldGenSize" value="6144"/>
    <!-- 如果RWG,这将控制所创建世界的宽度和高度。官方支持的大小在6144到10240之间,并且必须是2048的倍数,例如6144、8192、10240。 -->
    <property name="GameName" value="被世纪高教毁灭的世界"/>
    <!-- 你想给游戏起什么名字都行。这将影响保存游戏名称以及在世界中放置装饰(树等)时使用的种子。如果创建RWG世界,它不会控制世界的一般布局-->
    <property name="GameMode" value="GameModeSurvival"/>
    <!-- 游戏模式生存 -->

    <!-- Difficulty -->
    <property name="GameDifficulty" value="1"/>
    <!-- 0 - 5,0 =最容易,5=最难 -->
    <property name="BlockDamagePlayer" value="100" />
    <!-- 玩家对方块造成的伤害(百分比)-->
    <property name="BlockDamageAI" value="100" />
    <!-- ai对方块造成的伤害(百分比)-->
    <property name="BlockDamageAIBM" value="100" />
    <!-- ai在血月期间对方块造成多少伤害(百分比) -->
    <property name="XPMultiplier" value="100" />
    <!-- XP增益乘数(百分比) -->
    <property name="PlayerSafeZoneLevel" value="5" />
    <!-- 如果玩家低于或等于这个级别,他将在生成时创造一个安全区(没有敌人) -->
    <property name="PlayerSafeZoneHours" value="5" />
    <!-- 在世界时间里,这个安全地带是存在的 -->

    <!--  -->
    <property name="BuildCreate" value="false" />
    <!-- 欺骗模式开/关 -->
    <property name="DayNightLength" value="60" />
    <!-- 每个比赛日的实时时间:60分钟 -->
    <property name="DayLightLength" value="18" />
    <!-- 在比赛时间里,每天的日照时间为18小时 -->
    <property name="DeathPenalty" value="1" />
    <!-- 死后的惩罚。0 =没有,1 =默认:典型的经验惩罚,2 =受伤:你保留你的大部分减益。食物和水在重生时被设置为50%。3 =永久死亡:你的角色被完全重置。你将在保存的游戏中重生并重新开始。 -->
    <property name="DropOnDeath" value="1" />
    <!-- 0 =没有,1 =所有,2 =只带工具,3 =只带背包,4 =删除所有 -->
    <property name="DropOnQuit" value="0" />
    <!-- 0 =没有,1 =所有,2 =只带工具,3 =只带背包 -->
    <property name="BedrollDeadZoneSize" value="15" />
    <!-- 铺盖死亡区域的大小(盒子“半径”,所以盒子的每边长度是给定值的2倍),没有僵尸会在这个区域内产生,任何接触铺盖死亡区域的被清除的卧铺卷在被清除后都不会产生。 -->
    <property name="BedrollExpiryTime" value="45" />
    <!-- 一个铺盖在主人最后一次在线后保持活跃的真实世界天数 -->

    <!-- Performance related -->
    <property name="MaxSpawnedZombies" value="64" />
    <!-- 这个设置覆盖了整个地图。整个地图上一次只能有这么多僵尸。更改此设置会对性能产生巨大影响。 -->
    <property name="MaxSpawnedAnimals" value="50" />
    <!-- 如果你的服务器有很多玩家,你可以增加这个限制来添加更多的野生动物。动物不像僵尸那样消耗那么多CPU。注意:这并不会导致更多的动物任意生成:生物群落生成系统只会在特定区域生成一定数量的动物,但如果你有很多玩家分散在一起,那么你可能会达到极限,并可以增加它。 -->
    <property name="ServerMaxAllowedViewDistance" value="12" />
    <!-- 客户端可以请求的最大视距(6 - 12)。对内存使用和性能有很大影响。 -->
    <property name="MaxQueuedMeshLayers" value="1000" />
    <!-- 在网格生成过程中可以排队的块网格层的最大数量。减少这将改善内存使用,但可能会增加Chunk生成时间 -->

    <!-- Zombie settings -->
    <property name="EnemySpawnMode" value="true" />
    <!-- 启用/禁用敌人产卵 -->
    <property name="EnemyDifficulty" value="0" />
    <!-- 0 =正常,1 =野性 -->
    <property name="ZombieFeralSense" value="0" />
    <!-- 0-3(关、昼、夜、全) -->
    <property name="ZombieMove" value="0" />
    <!-- 0-4(步行,慢跑,跑步,冲刺,噩梦) -->
    <property name="ZombieMoveNight" value="3" />
    <!-- 0-4(步行,慢跑,跑步,冲刺,噩梦) -->
    <property name="ZombieFeralMove" value="3" />
    <!-- 0-4(步行,慢跑,跑步,冲刺,噩梦) -->
    <property name="ZombieBMMove" value="3" />
    <!-- 0-4(步行,慢跑,跑步,冲刺,噩梦) -->
    <property name="BloodMoonFrequency" value="7" />
    <!-- 血月发生的频率(以天为单位)是多少?设置为“0”表示没有血月 -->
    <property name="BloodMoonRange" value="0" />
    <!-- 实际血月日有多少天会随机偏离上述设定。将此设置为0使血月恰好发生在血月频率中指定的每n天 -->
    <property name="BloodMoonWarning" value="8" />
    <!-- 红日开始于血月日的小时数。将其设置为-1将不会显示红色。红日开始于血月日的小时数。将其设置为-1将不会显示红色。  -->
    <property name="BloodMoonEnemyCount" value="8" />
    <!-- 这是在血月部落期间每个玩家在任何时间可以存活的僵尸数量(同时生成),然而,MaxSpawnedZombies在多人游戏中超过了这个数字。还要注意的是,你的游戏舞台设置了每个派对僵尸的最大数量。较低的游戏阶段值可能导致僵尸数量低于BloodMoonEnemyCount设置。更改此设置会对性能产生巨大影响。 -->

    <!-- Loot -->
    <property name="LootAbundance" value="100" />
    <!-- 战利品丰富 整数百分比 -->
    <property name="LootRespawnDays" value="7" />
    <!-- 战利品重生日 以整数表示的天数-->
    <property name="AirDropFrequency" value="72"/>
    <!-- 空投在游戏时间中出现的频率是多少,0 ==从不 -->
    <property name="AirDropMarker" value="true"/>
    <!-- 设置是否在地图/指南针上添加空投标记。 -->

    <!-- Multiplayer -->
    <property name="PartySharedKillRange" value="100"/>
    <!-- 你必须达到的距离才能获得团队共享击杀经验和任务团队击杀目标积分。 -->
    <property name="PlayerKillingMode" value="0" />
    <!-- 玩家杀戮设置(0 =不杀戮,1 =只杀死盟友,2 =只杀死陌生人,3 =杀死所有人) -->

    <!-- Land claim options -->
    <property name="LandClaimCount" value="3"/>
    <!-- 每个玩家最大允许的土地所有权。 -->
    <property name="LandClaimSize" value="41"/>
    <!-- 由keystone保护的块大小 -->
    <property name="LandClaimDeadZone" value="30"/>
    <!-- 钥匙必须相隔这么多块(除非你是其他玩家的朋友) -->
    <property name="LandClaimExpiryTime" value="7"/>
    <!-- 在现实世界中,玩家在他们的索赔到期并不再受保护之前可以离线的天数 -->
    <property name="LandClaimDecayMode" value="0"/>
    <!-- 控制离线玩家土地所有权的衰减。0=慢(线性),1=快(指数),2=无(完全保护,直到索赔过期)。 -->
    <property name="LandClaimOnlineDurabilityModifier" value="4"/>
    <!-- 当玩家在线时,受保护的索赔区域块硬度增加多少。0表示无限(不会受到任何伤害)。默认是4倍 -->
    <property name="LandClaimOfflineDurabilityModifier" value="4"/>
    <!-- 当玩家离线时,受保护的索赔区域块硬度增加多少。0表示无限(不会受到任何伤害)。默认是4倍 -->
    <property name="LandClaimOfflineDelay" value="0"/>
    <!-- 玩家登出后,土地要求区域硬度从在线切换到离线的分钟数。默认为0 -->


    <property name="DynamicMeshEnabled" value="true"/>
    <!-- 是否启用了动态网格系统 -->
    <property name="DynamicMeshLandClaimOnly" value="true"/>
    <!-- 动态网格系统只在玩家的LCB区域有效吗 -->
    <property name="DynamicMeshLandClaimBuffer" value="3"/>
    <!-- 动态网格LCB块半径 -->
    <property name="DynamicMeshMaxItemCache" value="3"/>
    <!-- 有多少项可以并发处理,更高的值使用更多的RAM -->

    <property name="TwitchServerPermission" value="90"/>
    <!-- 在服务器上使用twitch集成需要权限级别 -->
    <property name="TwitchBloodMoonAllowed" value="false"/>
    <!-- 如果服务器允许抽搐行动在血月。这可能会导致服务器延迟,在血月期间产生额外的僵尸。 -->

    <property name="MaxChunkAge" value="-1"/>
    <!-- 在游戏中,如果没有重新访问或保护(游戏邦注:例如附近有土地所有权或铺盖),从访问一个区块到重置到原始状态必须经过的天数。 -->
    <property name="SaveDataLimit" value="-1"/>
    <!-- 每个保存游戏的最大磁盘空间(以兆字节为单位)。当达到此限制时,可能会强制将保存的块重置为其原始状态以释放空间。负值禁用该限制。 -->

    <!-- 在开始新游戏时,有几个游戏设置是不能更改的。
您可以使用控制台命令在游戏中至少更改其中的一些。
设置gamepref BedrollDeadZoneSize 30 -->
</ServerSettings>

添加新评论

9 + 12 =