【原创】DMP 服务器简明架设教程
环境: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)