【原创】DMP 服务器简明架设教程

坎喵站长
· 于2017年10月10日发布
教程

环境:centos7

(若在windows服务器上运行,则跳过安装mono部分,直接双击DMPServer.exe即可,如果需要安装.net framework请自行下载安装)

本教程撰写时的ksp版本:V1.0

KSP V1.0对应DMP版本:0.2.2.0(客户端、服务端同)

DMP介绍:

对于不知道ksp怎么联机的人,有必要说明一下。ksp至今没有官方的联机,只有一个联机插件用来联机。当年有kmp,后来死掉了,现在的dmp还在继续更新。这个插件可以用来让玩家们进行联机玩耍。具体使用方式是一台服务器运行dmp服务端,然后玩家们在游戏中装上dmp(以安装mod的方式)。之后就可以在游戏中选择连接至服务器进行游玩。

首先我们需要服务端(即dmp_server),这里给出地址 http://forum.kerbalspaceprogram.com/threads/79111-DarkMultiPlayer-0-2-2-0-KSP-1-0-Alpha?highlight=dmp

这是DMP在坎巴拉官方论坛的说明页地址。进入d-mp.org 点击download 找到服务端并下载。

之后我们解压即可得到dmp服务端,打开之后我们可以看到DMPServer.exe,不要惊讶,就是exe。DMP也只有exe。作者网站下方的IRC聊天室鄙人当年进去问过,dmp是c#编写的,只有exe。在linux上需要使用mono运行。所以我们需要在服务器上先安装mono。

安装mono:

至于这个mono,是.net在linux上的开源CLR,即公共语言运行时。我们都知道.net的运行原理是先编译为中间语言,然后运行这个中间语言从而达到执行程序的目的。而这个中间语言是和系统无关的,类似java。大致就是酱紫 操作系统–公共语言运行时–中间代码–程序,其实非常不严谨,稍微看一看就好了,具体的自己谷歌一下就知道了,我也不班门弄斧了。

首先我们进入mono官网 http://www.mono-project.com/ ,点击download,然后选择linux,再选“Centos,Fedora,and derivatives”。之后就按照他上面步骤即可**(需要root权限)**。http://www.mono-project.com/docs/getting-started/install/linux/#centos-fedora-and-derivatives

rpm --import “http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
yum-config-manager --add-repo http://download.mono-project.com/repo/centos/

然后我们就添加好了mono的源,开始yum安装

yum update
yum install mono-complete

提示下载大小64M,安装大小202M,选择y就开始安装了。然后我们可以去泡个面,回来就装好了。

装好之后输入mono命令看一下,如果有帮助出来就说明安装成功,不成功的一定是人脸识别了→_→

之后通过FTP工具,例如filezilla上传我们的服务端。服务器上cd到DMP文件夹下,使用以下命令来运行服务端:

mono DMPServer.exe

当有“Ready!”字样跳出来之后就说明服已开,小伙伴们欢呼雀跃!

如果小伙伴们无法连接服务器,请检查服务器是否在内网,以及iptables问题等。若在内网请做端口映射,iptables不会搞的直接关闭,使用以下命令来关闭iptables:

service iptables stop

使用以下命令来禁止iptables开机启动

chkconfig iptables off

以下是服务器设置:

第一次运行过dmp之后,会在主程序目录下出现config文件夹,里面是服务器首选项文件Settings.txt。

重要:

1.如果出现提示不支持IPV6协议,请到setting.txt第11行将address的值设置为 0.0.0.0 即可使用ipV4

2.如果提示端口被占用,请到setting.txt第14行更改服务器端口

下面是setting.txt文件翻译

#这一项是地址,填 0.0.0.0 或者 :: 即可使用

address=::

#端口。即服务端运行于哪个端口,默认为6702,一台服务器开多个服务端的时候需要更改这个选项

port=6702

#加速方式。默认的这个方式的效果就是,一个玩家加速之后会进入到未来的时间。其他玩家要和其交互必须点击他的名字旁的sync来同步到他的时间。当然,只能向后同步不能向前同步。

warpMode=SUBSPACE

#游戏模式。有沙盒,科研,事业三种。玩家和玩家之间钱和科研点分开的。除了可以相互玩对接,捡别人的残骸,和单机差不多

gameMode=SANDBOX

#游戏难度。只和生涯与科研模式有关,开沙盒服就不要管他了

gameDifficulty=NORMAL

#这是启用白名单。默认为不启用

whitelisted=False

#这是关于mod部件的处理问题。即有玩家使用了mod物品怎么办的问题。可以选择disabled,即不使用mod控制,所有玩家可以使用任意mod。然而这里要注意一个问题就是,一个玩家使用了一个mod部件,若其他玩家没有这个mod,则会看不到他的飞船。第二个选项是不让有超出modcontrol文件设定外的部件的飞船同步到服务器,也就是说这人就等于在玩单机。第三个选项是不允许这样的飞船发射,关于modcontrol等会讲。

modControl=ENABLED_STOP_INVALID_PART_SYNC

#这个貌似是在讲没有玩家了之后宇宙运不运行的问题,不调即可

keepTickingWhileOffline=True

#这个是讲玩家登录时进入哪个时间。默认设置下,玩家进服时会进入他上次下线时的时间,设置为false之后会进入服务器当前时间。

sendPlayerToLatestSubspace=True

#这货是说log文件用哪种时间,UTC或者系统时间。UTC就是游戏中的宇宙时间

useUTCTimeInLog=False

#记录详细等级。防止没什么卵用,不调即可

logLevel=DEBUG

#每个玩家可以在服务器保存的截屏数量。默认为20

screenshotsPerPlayer=20

#截屏高度,其实就是多少P的意思,默认720p

screenshotHeight=720

#是否允许玩家作弊。设置为false的效果是,游戏中按debug上的按钮按不下去。酱紫就没法开无限燃料什么的了

cheats=True

#htpp端口。没什么用,管理服务器一般都是ssh上去的

httpPort=0

#服务器名字

serverName=DMP Server

#最大玩家数

maxPlayers=20

#截屏保存路径,不填就是默认路径

screenshotDirectory=

#自动执行nukeksc命令的间隔,单位为分钟。即自动清理ksc周围载具

autoNuke=0

#自动执行dekessler命令的间隔,单位为分钟。即自动清理残骸,也就是debris标记的物体

autoDekessler=30

#多少未定位的小行星可以被生成

numberOfAsteroids=30

#使用服务器广播时,自己的称谓,默认为server

consoleIdentifier=Server

#有玩家进入时,欢迎信息格式

serverMotd=Welcome, %name%!

#删除超过多少天的截屏

expireScreenshots=0

#启用压缩功能,可以减少带宽占用,但是会增加CPU消耗

compressionEnabled=True

#删除超过多少天的log文件

expireLogs=0

下面是modcontrol.tx使用方法:

modcontrol文件用来控制mod部件的使用。如果上面的setiing.txt中设定了禁止使用了超出modcontrol规定范围外的飞船同步或者起飞,那么modcontrol就会生效。modcontrol可以设定需求文件方式来限定mod(required-files),方法是校验玩家的所有mod里的dll文件,以保证和服务器相同。设置文件校验(optional-files)同dll文件校验。resource-blacklist指dll文件黑名单,即在此列表的dll不许使用,否则无法进入服务器。

以上几种方式均不常用。最常用的是partslist,即部件列表。我们把文件向下拉,可以看到有很多部件名,一行一个。我们可以到mod文件夹下逐个找part.cfg文件。part.cfg文件中part标签下的name值就是部件的名称,一般一个part.cfg只有一个部件。我们把每一个这样的name的值都复制到modcontrol的部件列表下,复制一个换一行。值得注意的是,前面的说明有写明,如果部件里出现下划线 _ 那么就用 . 来替换。例如 mumech_MJ2_Pod 要写成 mumech.MJ2.Pod 。这样才能正常使用部件列表。修改后重启服务端生效。

如果需要mod,请访问坎巴拉论坛的mod归总贴

http://forum.kerbalspaceprogram.com/threads/55401-Community-Mods-and-Plugins-Library

服务器常用命令:

控制台输入/help可以看到所有命令,但是大部分并无卵,就讲两个最常用的好了(所有命令前必须加 / 否则则是全服广播)

/dekessler 清除所有debris标记的载具,即清理残骸

/nukeksc 清除所有ksc周围的载具,酱紫玩家发射的时候就不卡了

/listclients 查看当前在线的玩家

/quit 或者 /exit 关闭服务端

至此服务器设置应该是没有太大的问题了,可以把你的服务器地址告诉小伙伴们让他们来联机吧。。。联机吧。。。连鸡巴→_→

本文出自 czp的装逼站,转载时请注明出处及相应链接。(https://www.hiczp.com/post-46.html)

最后更新:2022年9月25日
赞助商广告