专用服务器快速搭建指南

[隐藏]



Windows下载&安装&运行

1.下载并安装 SteamCmd:点我下载

所谓的安装就是把你下载下来exe放到你喜欢的路径下(安装路径必须纯英文,允许有空格),本文就以“D:\steamcmd\”为例。


2.为你的专用服务器新建三个数据(存档)文件夹:

  • \(我的)文档\Klei\DoNotStarveTogether\MyDediServer
  • \(我的)文档\Klei\DoNotStarveTogether\MyDediServer\Master
  • \(我的)文档\Klei\DoNotStarveTogether\MyDediServer\Caves

#演示图#


3.从 Steam 启动饥荒联机Don’t Starve Together,并点击开始游戏(Play!)

#演示图#


4.点击账户信息Acct Info按钮(右下角那排小图标)。

#演示图#


5.点击Generate Server Token获取令牌,将生成的一串字符串复制到一个空文本文档。

#演示图#


6.将令牌保存到:

  • (我的)文档\Klei\DoNotStarveTogether\MyDediServer\cluster_token.txt

#演示图#


7.复制并保存下面的内容到:

  • (我的)文档\Klei\DoNotStarveTogether\MyDediServer\cluster.ini

#点我展开#


8.复制并保存下面的内容到:

  • (我的)文档\Klei\DoNotStarveTogether\MyDediServer\Master\server.ini

#点我展开#


9.复制并保存下面的内容到:

  • (我的)文档\Klei\DoNotStarveTogether\MyDediServer\Caves\server.ini

#点我展开#


10.复制并保存下面的内容到:

  • (我的)文档\Klei\DoNotStarveTogether\MyDediServer\Caves\worldgenoverride.lua

#点我展开#

更多世界设置见这篇文章


11.复制并保存下面的内容到:

  • D:\steamcmd\Dst_Update.bat(自行将路径改为SteamCmd存放路径,本文以“D:\steamcmd\”为例(见第一条)。)
steamcmd +login anonymous +app_update 343050 validate +quit

此文件用于下载和更新服务端,如今后你需要更新,请直接运行这个文件。


12.复制并保存下面的内容到:

  • D:\steamcmd\Dst_Start.bat(路径问题同上)
@echo off
cd /d %~dp0
cd "steamapps\common\Don't Starve Together Dedicated Server\bin"
start "Master" dontstarve_dedicated_server_nullrenderer -console -cluster MyDediServer -shard Master
start "Caves" dontstarve_dedicated_server_nullrenderer -console -cluster MyDediServer -shard Caves

此文件用于启动带洞穴世界的服务端。

#合并bat(非必需,小白请无视)#


13.到此,你应该已经拥有如下所有文件了:

  • (我的)文档\Klei\DoNotStarveTogether\MyDediServer\cluster_token.txt
  • (我的)文档\Klei\DoNotStarveTogether\MyDediServer\cluster.ini
  • (我的)文档\Klei\DoNotStarveTogether\MyDediServer\Master\server.ini
  • (我的)文档\Klei\DoNotStarveTogether\MyDediServer\Caves\server.ini
  • (我的)文档\Klei\DoNotStarveTogether\MyDediServer\Caves\worldgenoverride.lua
  • D:\steamcmd\Dst_Update.bat(此文件名及路径视你的具体情况)
  • D:\steamcmd\Dst_Start.bat(此文件名及路径视你的具体情况)

如果你发现你缺少了一个或多个文件,那么请你滚上去再看一遍。


14.双击运行“Dst_Update.bat”,等待服务端(专用服务器)下载完成(即黑框自动关闭),再运行“Dst_Start.bat”启动服务端。

#成功运行案例#


15.进入游戏,选择“开始游戏→浏览世界(不是创建世界!)→找到你的世界并加入”


Klei论坛原文(可能要翻墙):http://forums.kleientertainment.com/topic/64212-dedicated-server-quick-setup-guide/

 

Linux(Ubuntu)下载&安装&运行

本指南将帮助你在Ubuntu系统(32或64位)的设备建立专用服务器。

1.安装运行库

64位Ubuntu
sudo apt-get install libstdc++6:i386 libgcc1:i386 libcurl4-gnutls-dev:i386

32位Ubuntu
sudo apt-get install libstdc++6 libgcc1 libcurl4-gnutls-dev

2.安装steamcmd

本指南将steamcmd安装到了~/steamcmd目录下,如你不是安装到了这个目录,下面部分操作用到的路径请自行替换为你的路径。如果你已经安装了steamcmd,那么你可以跳过这一步。

以下是精简版的安装steamcmd的步骤(steamcmd完整食用说明):

mkdir ~/steamcmd
cd ~/steamcmd
wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz

3.创建存档文件夹

你需要创建如下两个文件夹:

  • ~/.klei/DoNotStarveTogether/MyDediServer/Master
  • ~/.klei/DoNotStarveTogether/MyDediServer/Caves

你可以使用如下代码或者用其他FTP/SFTP软件(WinSCP)创建:

mkdir -p ~/.klei/DoNotStarveTogether/MyDediServer/Master
mkdir -p ~/.klei/DoNotStarveTogether/MyDediServer/Caves

4.创建你的cluster_token.txt(令牌文件)

你可以按照如下步骤制作一个令牌文件(演示图见win版3、4、5条):

  1. 从 Steam 启动饥荒联机(Don’t Starve Together),并点击开始游戏(Play!)。
  2. 点击账户信息(Acct Info)按钮(右下角那排小图标)。
  3. 点击Generate Server Token获取令牌,将生成的一串字符串复制到一个空文本文档。
  4. 将填写了“3”所述的字符串的文本文档重命名为“cluster_token.txt”

将文件上传到

  • ~/.klei/DoNotStarveTogether/MyDediServer/cluster_token.txt

#快速创建#


5.创建cluster.ini文件

复制并保存下面的内容到:

  • ~/.klei/DoNotStarveTogether/MyDediServer/cluster.ini
[GAMEPLAY]
game_mode = survival
max_players = 6
pvp = false
pause_when_empty = true


[NETWORK]
cluster_description = 世界描述
cluster_name = 世界名字
cluster_intention = cooperative
cluster_password = 加入密码


[MISC]
console_enabled = true


[SHARD]
shard_enabled = true
bind_ip = 127.0.0.1
master_ip = 127.0.0.1
master_port = 10889
cluster_key = supersecretkey

#快速创建#


6.编辑你的cluster.ini文件

如果你是通过代码快速创建的,或者你对你刚刚的设置不满意,你可以用编辑器打开cluster.ini来修改设置。cluster.ini的路径为:

  • ~/.klei/DoNotStarveTogether/MyDediServer/cluster.ini

7.创建马石达(master)的server.ini文件

复制并保存下面的内容到:

  • ~/.klei/DoNotStarveTogether/MyDediServer/Master/server.ini
[NETWORK]
server_port = 11000


[SHARD]
is_master = true


[STEAM]
master_server_port = 27018
authentication_port = 8768

#快速创建#


8.创建洞穴的server.ini文件

复制并保存下面的内容到:

  • ~/.klei/DoNotStarveTogether/MyDediServer/Caves/server.ini
[NETWORK]
server_port = 11001


[SHARD]
is_master = false
name = Caves


[STEAM]
master_server_port = 27019
authentication_port = 8769

#快速创建#


9.创建洞穴世界的世界设置文件

复制并保存下面的内容到:

  • ~/.klei/DoNotStarveTogether/MyDediServer/Caves/server.ini
return {
    override_enabled = true,
    preset = "DST_CAVE",
}

#快速创建#


10.创建一个快速启动服务端的脚本

复制并保存下面的内容到:

  • ~/run_dedicated_servers.sh
#!/bin/bash

steamcmd_dir="$HOME/steamcmd"
install_dir="$HOME/dontstarvetogether_dedicated_server"
cluster_name="MyDediServer"
dontstarve_dir="$HOME/.klei/DoNotStarveTogether"

function fail()
{
        echo Error: "$@" >&2
        exit 1
}

function check_for_file()
{
    if [ ! -e "$1" ]; then
            fail "Missing file: $1"
    fi
}

cd "$steamcmd_dir" || fail "Missing $steamcmd_dir directory!" # TODO

check_for_file "steamcmd.sh"
check_for_file "$dontstarve_dir/$cluster_name/cluster.ini"
check_for_file "$dontstarve_dir/$cluster_name/cluster_token.txt"
check_for_file "$dontstarve_dir/$cluster_name/Master/server.ini"
check_for_file "$dontstarve_dir/$cluster_name/Caves/server.ini"

./steamcmd.sh +force_install_dir "$install_dir" +login anonymous +app_update 343050 validate +quit

check_for_file "$install_dir/bin"

cd "$install_dir/bin" || fail 

run_shared=(./dontstarve_dedicated_server_nullrenderer)
run_shared+=(-console)
run_shared+=(-cluster "$cluster_name")
run_shared+=(-monitor_parent_process $$)
run_shared+=(-shard)

"${run_shared[@]}" Caves  | sed 's/^/Caves:  /' &
"${run_shared[@]}" Master | sed 's/^/Master: /'

#快速创建#

注:确保“#!/bin/bash”是在第一行,或者使用“代码快速创建”来新建这个文件。


11.赋予“run_dedicated_servers.sh”执行权限

在一个终端(如putty)运行如下代码:

chmod u+x ~/run_dedicated_servers.sh

12.运行脚本来启动服务端

在一个终端(如putty)运行如下代码:

~/run_dedicated_servers.sh

总的来说,linux的比较乱,尤其最后那个执行脚本,反正我是看不懂~~所以大家就将就看吧。

原文:http://forums.kleientertainment.com/topic/64441-dedicated-server-quick-setup-guide-linux/

 

下载&启用mod

1.用记事本(或其他文本编辑软件)打开“\SteamCmd\steamapps\common\Don’t Starve Together Dedicated Server\mods\dedicated_server_mods_setup.lua”

注:linux默认是“~\Steam\steamapps\common\Don’t Starve Together Dedicated Server\mods\dedicated_server_mods_setup.lua”


2.添加如下内容到“dedicated_server_mods_setup.lua”中:

ServerModSetup("你要下载的Mod ID")
--自行将括号中的中文修改为Mod ID(如ServerModSetup("350811795"))

#获取Mod ID方法#


3.复制并保存下面的内容到:

  • (我的)文档\Klei\DoNotStarveTogether\MyDediServer\Master\modoverrides.lua
  • (我的)文档\Klei\DoNotStarveTogether\MyDediServer\Caves\modoverrides.lua
 return {
 ["Mod文件夹名"] = { enabled = true },
 ["Mod文件夹名"] = { enabled = true },
}
--一行填写一个Mod文件夹名,如果是创意工坊mod,请填写"workshop-Mod ID"

修改世界预设

 

 

您也可能喜欢:

专用服务器快速搭建指南》上有81条评论

  1. 大大!生成世界的的leveldataoverride.lua文件应该放在哪个文件夹..? Master目录下原本就没有那个文件呀..

  2. 您好请问怎么添加服务器暂停的代码,就是在所有玩家退出后,世界自动暂停,我在网上百度的是在settings.int的[network]下面添加pause_when_empty = true
    但是我没找到settings.ini这个文件

    • 启动之后应该是默认的吧,你可以看看你启动成功之后最后一句话一般都是sim paused, 只有有人连入之后才会unpaused

  3. 请问一下运行“Dst_Start.bat”启动服务端最后说Sim paused,游览服务器也找不到自己的是哪里没对啊

  4. 折腾了一下午,才搞定CentOS 系统上的 饥荒服务器,和半年前的版本完全不一样了,原来地洞是要运行两个,现在只需要一个,并且 令牌的读取方式也不一样,话说这个运行指令我也看不懂。

    在CentOS上必须连接额外的运行库,这个折腾死我了。

  5. 发现的一个问题:用Dst_Update.bat更新服务器文件时,会将\SteamCmd\steamapps\common\Don’t Starve Together Dedicated Server\mods\dedicated_server_mods_setup.lua恢复原状。
    而“下载&启用mod”的第二步是需要用到这个文件的,且更新MOD是在运行Dst_Start.bat启动服务器后才会进行。
    这就造成了冲突:每次开服之前,我想更新服务器,并且更新MOD,但是更新服务器却会妨碍到更新MOD。

    • 尝试在.bat里面添加指令,自动备份mod配置文件,并且更新完服务器之后 自动恢复。

      • 按这个做了,但是一进洞穴就会显示”服务器暂不可用,请重试”..
        master显示的主要是
        [00:06:36]: Sim unpaused
        [00:06:42]: Activating portal[1] to 830105930
        [00:06:42]: Serializing user: session/2DE52741A6CE6C77/KU_TQOtPIru_/0000000142
        [00:06:42]: [Shard] Migration request: (KU_TQOtPIru) to Caves(830105930)
        [00:06:42]: [Shard] Begin migration #1 for (KU_TQOtPIru)
        [00:06:42]: [Shard] #1 [SHDMASTER](1) -> Caves(830105930)
        [00:06:42]: [Shard] #1 session/2A031136778E9E4D/KU_TQOtPIru_/0000000142
        [00:06:42]: [Shard] Received migration #1 data for (KU_TQOtPIru)
        [00:07:17]: [Shard] Migration by user (‘KU_TQOtPIru’) failed (177).
        [00:07:17]: [Leave Announcement] 四个倒霉蛋
        [00:07:17]: Sim paused
        [00:07:35]: [Shard] Error while registering slave server: AUTH_ERROR_E_EXPIRED_TOKEN

        请问这是啥情况呀

        • 这个显示的啥情况.. master是
          [00:06:36]: Sim unpaused
          [00:06:42]: Activating portal[1] to 830105930
          [00:06:42]: Serializing user: session/2DE52741A6CE6C77/KU_TQOtPIru_/0000000142
          [00:06:42]: [Shard] Migration request: (KU_TQOtPIru) to Caves(830105930)
          [00:06:42]: [Shard] Begin migration #1 for (KU_TQOtPIru)
          [00:06:42]: [Shard] #1 [SHDMASTER](1) -> Caves(830105930)
          [00:06:42]: [Shard] #1 <- session/2DE52741A6CE6C77/KU_TQOtPIru_/0000000142
          [00:06:42]: CloseConnectionWithReason: ID_DST_SHARD_SILENT_DISCONNECT
          [00:06:42]: [Steam] SendUserDisconnect for '76561198084835583'
          [00:06:42]: [Shard] (KU_TQOtPIru) disconnected from [SHDMASTER](1)
          [00:07:17]: [Shard] Migration for KU_TQOtPIru timed out.
          [00:07:17]: [Shard] Cancelling pending migration #1 for (KU_TQOtPIru)
          [00:07:17]: [Leave Announcement] 四个倒霉蛋
          [00:07:17]: Sim paused

          • caves是
            [00:02:36]: Sim paused
            [00:06:35]: [Join Announcement] 四个倒霉蛋
            [00:06:36]: Sim unpaused
            [00:06:42]: [Shard] #1 -> session/2A031136778E9E4D/KU_TQOtPIru_/0000000142
            [00:06:42]: [Shard] Received migration #1 data for (KU_TQOtPIru)
            [00:07:17]: [Shard] Migration by user (‘KU_TQOtPIru’) failed (177).
            [00:07:17]: [Leave Announcement] 四个倒霉蛋
            [00:07:17]: Sim paused
            [00:07:35]: [Shard] Error while registering slave server: AUTH_ERROR_E_EXPIRED_TOKEN

            好像没啥特别的..

    • +1, 我在那个dedicated_server_mods_setup.lua 文件里添加了一行创意工坊的合集代码,但是每次运行bat之后,搜到了我的服务器都会显示没有mod, 而这时候再查看这个.lua文件的时候会发现我添加的那行代码不见了.. 蛋疼啊

  6. Valddating portal[1]2392645285[1] (disabled)
    1~10都是这样
    什么意思,我不懂。好像是什么东西无效禁用了。。。之前还好好的能用,我只是多加了几个MOD就出问题了,开不了了。

    • 好吧,还是自己发现了问题,启动的BAT里少了一个更新下载服务器的代码。不知道怎么少的。一开始还是有的后来就没了= = 2333

  7. 我相信在这里提问风大肯定能回复我。是这样的,在下载和启用MOD。第三步,两个lua文件是自己创建吗

  8. 感谢楼主辛苦劳动!

    楼主可以告诉我如何把之前使用DST自带建主机方式玩的存档转移到服务器上吗?
    或者楼主可以提供个更加完整的说明文档的地址让我自己查阅(因为还有好多参数可以配置吧)。

    谢谢!

  9. 双击运行“Dst_Update.bat”,等待服务端(专用服务器)下载完成(即黑框自动关闭),再运行“Dst_Start.bat”启动服务端。

    Dst_Update.bat、Dst_Start.bat是记事本吗

  10. 您好,请问一下服务器都开成功了,但是就是在浏览世界里找不到而在局域网里找的到,这怎么解决

  11. 大大,我按你的步骤他出来disconnected tiles… 0
    [00:00:09]: Done forest map gen!
    [00:00:09]: scripts/worldgen_main.lua(248,1) Checking map…
    [00:00:09]: scripts/worldgen_main.lua(604,1) Generation complete
    [00:00:09]: WorldSim::SimThread::Main() complete
    [00:00:09]: Serializing world: session/1FBA4F424843AEA4/0000000002
    [00:00:09]: Unload FE
    [00:00:09]: Unload FE done
    [00:00:09]: LOAD BE
    [00:00:10]: LOAD BE: done
    [00:00:11]: Begin Session: 1FBA4F424843AEA4
    [00:00:11]: saving to server_temp/server_save
    [00:00:11]: MiniMapComponent::AddAtlas( minimap/minimap_data.xml )
    [00:00:11]: Could not preload undefined prefab 0x1872ccf0 (FROMNUM)
    [00:00:11]: Loading Nav Grid
    [00:00:12]: Can’t find prefab spawnpoint
    [00:00:12]: SpawnSaveRecord [nil, spawnpoint] FAILED
    [00:00:12]: Reconstructing topology
    [00:00:12]: …Sorting points
    [00:00:12]: …Sorting edges
    [00:00:12]: …Connecting nodes
    [00:00:12]: …Validating connections
    [00:00:13]: …Housekeeping
    [00:00:13]: …Done!
    [00:00:13]: 1 uploads added to server. From server_temp
    [00:00:13]: Telling Client our new session identifier: 1FBA4F424843AEA4
    [00:00:13]: [Steam] SteamGameServer_Init(8768, 11000, 27018)
    [00:00:13]: [Steam] SteamGameServer_Init success

  12. 服务器建好了,可是管理员一直都添加不成功,请问怎么添加其他从机为管理员呀?大神救我。

  13. 你好,我之前都按步骤来的,最后点开电dst start提示找不到dont starve deticated sever nullrenderer,求帮助

  14. 风大帮帮我,我按照你的方法建立了服务器,地上地下都显示成功了,进去之后地上是没问题,下了地下发现还是地上,我确定已经按照你的方法设置了caves里面的worldgenoverride.lua文件,但是还是不行,我把游戏重新卸了又试了一遍发现也还是不行,我哪里出错了呢,感觉是地形文件没有读取,可是代码就是按照你的复制的- -!帮帮我啊,风大

  15. 问下 mod添好后怎么设置mod设置 在游戏里面设置好 服务器进入还是默认的mod设置

    • 添加mod在文章最后有,自己回去看。
      添加管理员需要在MyDediServer文件夹下面添加一个adminlist.txt的文本,写上要授权玩家的USER_ID,一行一个

  16. 对了 服务器怎么设置 玩家死完不重置的 有时候忘记关服务器 里面就一个玩家 死亡了 就自动重置档了 简直无语啊

    • 世界名字可以是中文啊,有很多基友搭建的steam平台上的世界名字都是中文的。

        • 请用Notepad++ 编辑你的ini文件
          并且在格式那选择UTF-8 无BOM格式编码
          否则不能用中文名字开服
          而且你的设置中例如服务器最大人数 无人时服务器暂停
          这些选项都是不能正常工作的

  17. hello,有个问题请教一下,如果要在Linux搭3层世界(主世界,洞穴分两个服务器,已经搭建完成),第三层世界要如何配置,谢谢。

    • 搭建多层世界的方法有两个,一个是手动指定当前世界洞穴通向另一个世界,另一个方式是使用多层世界MOD,第三层世界的配置要和第二层世界一样,但是集群ID不能重复。
      其实我有很多小伙伴搭建服务器的时候出现两个地上世界(传送过去是另一个地上世界)
      在饥荒里,第二层世界不一定是洞穴,也可以是另一个地上世界,我把向上层世界的传送门叫做天梯,感觉像神龙斗士里的多层世界(*^__^*) 嘻嘻……

  18. 我现在出现个问题 地上时不时卡 而且频繁掉线 地下就一点儿事儿没有
    已经确定网络没问题 小伙伴的网速也问题 (地下异常的流畅 各种爽)
    但是地上连我这个服务器的主机都不能正常玩
    我开服务器 自己玩就没问题 一加入小伙伴们 地上就没法玩了
    我不知道怎么回事 服务器架设没更新之前什么问题都没有
    自从服务器架设修改了之后就这样了

  19. 第9步错了,原文是
    Copy, and save the following text to
    • ~/.klei/DoNotStarveTogether/MyDediServer/Caves/worldgenoverride.lua

    return {
    override_enabled = true,
    preset = “DST_CAVE”,
    }
    不是sever.ini 文件夹

  20. 博主你好 按照上面的方法开启服务器后洞穴服务器自动消失了
    请问是什么原因 有什么办法吗 十分感谢

  21. 你好,我想请问一下我服务器弄好了以后开过一次,后来想要加MOD,但是失败了,接着开服务器就闪退了,再重新弄一次还是失败。我把原来添加MOD的步骤都取消了,还是闪退,怎么破

  22. 博主,再次打扰了。这个更新后,折腾了些时间搞定了CentOS上的服务器搭建。然而想设置管理员的时候:我参考以前的教程,adminilist.txt放在/root/.klei/DoNotStarveTogether/MyDediServer/Master/save路径内,失败了。请问可以从哪里得知新的设置路径?

  23. Pingback引用通告: DST Dedicated Server Setup Tips – SU2LIN site

    • 其实一样的,我是在CentOS上搭建的。
      1.先安装官方教程在Windows平台上搭建好专用服务器
      2.在将\(我的)文档\Klei\DoNotStarveTogether\MyDediServer 这一文件夹拷贝到桌面,方便进行修改。
      3.删除Windows用过的令牌,重新弄一份新的令牌。
      4.修改MyDediServer\Caves\server.ini,将[SHARD]下的id = 10*******7删除并保存。(服务器上开启洞穴需要生成新id,会和原有id冲突,而导致洞穴无法开启。我昨天测试出来的,和之前不一样了)
      5.上传MyDediServer文件夹至服务器,路径为/root/.klei/DoNotStarveTogether/MyDediServer
      6.修改启动命令参数即可。
      例如:
      原来的启动命令:
      /usr/bin/screen -S “world” bash -c ‘LD_LIBRARY_PATH=~/dst_lib ./dontstarve_dedicated_server_nullrenderer -console -skip_update_server_mods’

      现在的启动命令:
      /usr/bin/screen -S “world” bash -c ‘LD_LIBRARY_PATH=~/dst_lib ./dontstarve_dedicated_server_nullrenderer -console -cluster MyDediServer -shard Master’

      参考教程:
      1.博主此教程
      2.CentOS6.6下搭建饥荒联机版专用服务器(带洞穴) – SegmentFault https://segmentfault.com/n/1330000004077415
      3.【2015_09_06】Don’t Starve Together Dedicated Server 搭建教_饥荒联机吧_百度贴吧 http://tieba.baidu.com/p/4025516777?see_lz=1&pn=1

发表评论

电子邮件地址不会被公开。 必填项已用*标注