Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 3987|回复: 34

[插件] Dynmap 卫星地图的优化方法,让你的卫星地图变得与众不同

[复制链接]
Akkariin 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
2880
钻石
性别
保密
注册时间
2018-6-20
查看详细资料
 楼主| 发表于 2019-10-17 23:49:36 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
本帖最后由 Akkariin 于 2020-3-13 12:53 编辑

欢迎来到本教程,这里会教你如何自定义自己的 Dynmap 以及优化它。

#1 多核渲染优化
Dynmap 默认是使用单核心 CPU 进行渲染的,除非你的 CPU 是 i9 9900K 那种级别的 CPU,否则渲染速度是相当的慢,一张稍微大点的地图渲染一个晚上都是常事。如何让它渲染的更快呢?一起来看看。

  • 找到 plugins/dynmap/configuration.txt 这个文件,用 Notepad++ 等专业编辑器打开它。
  • 搜索 parallelrendercnt 这个配置项,如果前面有 # 注释,请将注释删除
  • parallelrendercnt: 后面的数字改为你的 CPU 核心数,比如你的 CPU 是 8 核就改成 8,可以超过这个数字,但是可能会给你的系统带来更大负担
  • 执行命令 /dynmap reload 重载,这时候你应该会看到 CPU 占用率狂飙,但是渲染速度超快

实测在 E5-2698 v3 双路(32 核心 64 线程)服务器上,三分钟内 Dynmap 就完成了全图渲染,CPU 的性能也完全发挥了出来。



CPU 几乎所有核心都用上了


#2 自定义材质包
默认的材质包不好看?你可以通过简单的几个设置实现自定义材质包。

  • 准备一个你需要用于 Dynmap 的材质包,不推荐太高分辨率的,一般 256x256 以下就可以了,不然的话渲染速度超级慢(除非你用天河二号开服那我没话说 23333)
  • 将这个材质包复制到 plugins/dynmap/texturepacks/ 目录中,注意文件名不要有中文、特殊符号以及空格
  • 用 Notepad++ 等专业编辑器打开 plugins/dynmap/custom-shaders.txt 这个文件,删除里面所有内容并重新写入以下内容:
    1. shaders:
    2.   - class: org.dynmap.hdmap.TexturePackHDShader
    3.     name: stdtexture
    4.     texturepack: 你的材质包名字.zip
    复制代码
  • 执行命令 /dynmap reload 重载,然后执行 /dynmap cancelrender 取消正在进行的渲染(如果有的话),最后执行 /dynmap fullrender 重新开始渲染整张地图


搭配 ModernArch v81 256x256 材质包的效果


#3 减少宽带使用率
如果你的服务器宽带比较小,那么大量的图片会急剧增大你的网络流量,导致玩家正常游戏受到影响。
因此你可以通过以下步骤进行优化,减少网络流量。

  • 使用 Notepad++ 等专业编辑器打开 plugins/dynmap/configuration.txt 这个文件
  • 使用搜索功能找到 image-format: 这个配置项
  • 将默认的 png 改为 jpgjpg-q95jpg-q90jpg-q85(q 后面代表画质,数字越大画质越好,但是文件体积也越大),数值只能是 100/95/90/85/80/75 其中一个
  • 执行 /dynmap reload 重载配置,然后 /dynmap fullrender 进行全图渲染


#4 防止 Dynmap 拖累服务器
如果你的 Dynmap 渲染使用的 CPU 核心数过多,可能会拖累服务器,因此可以通过以下配置防止服务器假死。

  • 还是打开 plugins/dynmap/configuration.txt 这个文件
  • 找到 fullrender-min-tps: 这个选项
  • 后面的数字就是最小 TPS,当服务器 TPS 低于这个数值的时候就会临时暂停 dynmap 渲染地图
  • 执行 /dynmap reload 重载插件


#5 禁止玩家通过网页发送消息
有些游客(非玩家)喜欢跑到网页上往游戏里发垃圾消息,刷屏等等,因此我个人是建议禁用网页聊天功能的。
禁用方法很简单,修改 configuration.txt 文件中的 allowwebchat: 这个配置项,设置为 false 即可。


#6 通过 Nginx 反代为 Dynmap 增加 HTTPS 支持
这部分内容仅适用于对 Linux 有使用基础的服主,并且你的服务器也需要使用 Linux。
Dynmap 自身并不支持 HTTPS,如果你想要把 Dynmap 嵌入到你的其他 HTTPS 网页中,又不想让谷歌浏览器左上角报不安全的标记,那么为 Dynmap 增加 HTTPS 就很重要了。

首先,确保你的服务器已经安装了 Nginx,如果没有,可以按照下面的步骤安装:

  • 打开 OneinStack:https://oneinstack.com/auto/
  • 将 Nginx 的开关打开,其他的所有开关关闭,所有复选框取消勾选(当然你也可以根据自己需要选择安装,例如 PHP)
  • 将最底下的命令复制,然后在你的 SSH 终端中粘贴运行

确认 Nginx 安装完成后,为 Nginx 新增一个 Vhost 配置文件,如果你使用的是 OneinStack,那么目录应该在
/usr/local/nginx/conf/
如果你使用的是 yum install nginx 这样安装的 Nginx,配置文件应该在 /etc/nginx/
为了方便教程阅读,后面我统一以 OneinStack 为例进行教程演示
现在我们需要创建一个 vhost 并申请 SSL 证书,在终端中输入以下命令:
  1. cd ~/oneinstack/
  2. ./vhost.sh
复制代码
接着会出现以下内容,按照图片里来填


Vhost 添加示例图

完成之后,你可以在 /usr/local/nginx/conf/vhost/ 内找到你的 Vhost 配置文件,名称为 <你的域名>.conf
先输入 echo "">配置文件名.conf 清空配置,然后在里面输入以下内容:
  1. server {
  2.   listen 80;
  3.   listen 443 ssl http2 ;
  4.   ssl_certificate /usr/local/nginx/conf/ssl/你的域名.crt;
  5.   ssl_certificate_key /usr/local/nginx/conf/ssl/你的域名.key;
  6.   ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
  7.   ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
  8.   ssl_prefer_server_ciphers on;
  9.   ssl_session_timeout 10m;
  10.   ssl_session_cache builtin:1000 shared:SSL:10m;
  11.   ssl_buffer_size 1400;
  12.   add_header Strict-Transport-Security max-age=15768000;
  13.   ssl_stapling on;
  14.   ssl_stapling_verify on;
  15.   server_name 你的域名;
  16.   access_log /data/wwwlogs/你的域名_nginx.log combined;
  17.   if ($ssl_protocol = "") { return 301 https://$host$request_uri; }

  18.   location / {
  19.         # 服务器内网一般都是 127.0.0.1,如果你的 MC 服务器和 Nginx 服务器不在同一台机器,那么这里就填 MC 服务器的 IP
  20.         proxy_pass   http://服务器内网IP:Dynmap端口$request_uri;
  21.         proxy_redirect             off;
  22.         proxy_set_header           Host $host;
  23.         proxy_set_header           X-Real-IP $remote_addr;
  24.         proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for;
  25.         client_max_body_size       1024m;
  26.         client_body_buffer_size    128k;
  27.         proxy_connect_timeout      300;
  28.         proxy_send_timeout         300;
  29.         proxy_read_timeout         300;
  30.         proxy_buffer_size          4k;
  31.         proxy_buffers              4 32k;
  32.         proxy_busy_buffers_size    64k;
  33.         proxy_temp_file_write_size 64k;
  34.     }
  35. }
复制代码
完成之后,输入命令 nginx -s reload 重载 Nginx,接着浏览器访问你的域名,应该就可以看到 Dynmap 了,并且是有 HTTPS 的,此时你就可以把 Dynmap 通过 iframe 等方式嵌入到你的官网而不用担心谷歌浏览器会报不安全警告了。


以上就是本教程全部内容,如果有帮到你的话,欢迎给我评分,谢谢~
本教程将会不定期更新,你可以收藏本帖,当我更新时就可以收到消息提醒
作者:Akkariin | 转载请注明本帖地址及作者


评分

参与人数 5人气 +8 收起 理由
nidb + 1 棒!
jsdada01 + 1 MCBBS有你更精彩~
二哈大魔王 + 2 MCBBS有你更精彩~
Salt_lovely + 2 MCBBS有你更精彩~
HorizonStudio + 2 MCBBS有你更精彩~

查看全部评分

Preliterate 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
228
钻石
性别
保密
注册时间
2019-7-5
查看详细资料
发表于 2020-4-19 14:48:53 | 显示全部楼层
本帖最后由 Preliterate 于 2020-4-21 12:18 编辑

匠魂的方块显示不出来。。。
回复

使用道具 举报

meng_chen_xi_ 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
293
钻石
性别
保密
注册时间
2016-5-20
查看详细资料
发表于 2020-3-30 17:42:37 | 显示全部楼层
整挺好
回复

使用道具 举报

Akkariin 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
2880
钻石
性别
保密
注册时间
2018-6-20
查看详细资料
 楼主| 发表于 2020-3-22 18:24:51 | 显示全部楼层
小小周尼玛 发表于 2020-3-22 18:17
请问您的卫星地图用的是什么图片格式?我是用jpg感到不适很清晰,png又有点大?不知道jpg-100的效果如何? ...

我用png,然后硬盘占用爆炸,dynmap 文件夹足足45GB
回复

使用道具 举报

小小周尼玛 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
1158
钻石
性别
保密
注册时间
2014-1-26
查看详细资料
发表于 2020-3-22 18:17:02 | 显示全部楼层
请问您的卫星地图用的是什么图片格式?我是用jpg感到不适很清晰,png又有点大?不知道jpg-100的效果如何?
回复

使用道具 举报

nidb 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
1020
钻石
性别
保密
注册时间
2016-8-21
查看详细资料
发表于 2020-3-20 21:59:19 | 显示全部楼层
Akkariin 发表于 2020-3-20 21:09
那个登录系统不大行,所以我自己开发了一套网页聊天+登录认证系统,可以戳我签名档看效果 ...

(大佬操作)
另外有点不明白parallelrendercnt,我都改成40多了占用率才4%(迷
回复

使用道具 举报

Akkariin 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
2880
钻石
性别
保密
注册时间
2018-6-20
查看详细资料
 楼主| 发表于 2020-3-20 21:09:07 | 显示全部楼层
nidb 发表于 2020-3-18 17:27
by the way 我觉得一刀切网页聊天,不如开启登录系统

那个登录系统不大行,所以我自己开发了一套网页聊天+登录认证系统,可以戳我签名档看效果
回复

使用道具 举报

nidb 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
1020
钻石
性别
保密
注册时间
2016-8-21
查看详细资料
发表于 2020-3-18 17:27:48 | 显示全部楼层
by the way 我觉得一刀切网页聊天,不如开启登录系统
回复

使用道具 举报

nidb 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
1020
钻石
性别
保密
注册时间
2016-8-21
查看详细资料
发表于 2020-3-17 19:31:42 | 显示全部楼层
Akkariin 发表于 2020-3-17 18:32
可以转载,注明本帖地址即可,感谢支持 :)

谢谢大佬qwq
回复

使用道具 举报

Akkariin 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
2880
钻石
性别
保密
注册时间
2018-6-20
查看详细资料
 楼主| 发表于 2020-3-17 18:32:50 | 显示全部楼层
nidb 发表于 2020-3-16 11:34
大佬好,我是论坛内dynmap转载贴的楼主,最近想弄一个dynmap中文网,请问教程页面可否参考这个帖子的内容? ...

可以转载,注明本帖地址即可,感谢支持 :)
回复

使用道具 举报

nidb 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
1020
钻石
性别
保密
注册时间
2016-8-21
查看详细资料
发表于 2020-3-16 11:35:34 | 显示全部楼层
Ohnkyta 发表于 2020-2-16 18:20
硬盘不够放图是硬伤啊

弄个数据库啊,MySQL(钱包疼)
回复

使用道具 举报

nidb 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
1020
钻石
性别
保密
注册时间
2016-8-21
查看详细资料
发表于 2020-3-16 11:34:59 | 显示全部楼层
大佬好,我是论坛内dynmap转载贴的楼主,最近想弄一个dynmap中文网,请问教程页面可否参考这个帖子的内容?
另外主配置文件已经部分汉化,插件开发者的意图是叫我把翻译的整合到官方包中,我就是怕渣翻译丢人,还在思考,所以楼主能不能把部分汉化的安利一下新人?(https://dynmap.cn/downloads 可以下载)
最后感谢大佬这么认真的教程!都是很有用的设置
回复

使用道具 举报

1357637651 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
1338
钻石
性别
保密
注册时间
2013-7-16
查看详细资料
发表于 2020-2-29 15:40:14 | 显示全部楼层
感谢分享,去试试
回复

使用道具 举报

uwhdau 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
341
钻石
性别
保密
注册时间
2019-8-18
查看详细资料
发表于 2020-2-29 12:32:52 | 显示全部楼层
MCBBS有你更精彩~
回复

使用道具 举报

liuhaojie. 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
817
钻石
性别
保密
注册时间
2017-6-12
查看详细资料
发表于 2020-2-29 11:14:52 | 显示全部楼层
楼主大大那个是关地图上的聊天气泡?
回复

使用道具 举报

柒殇Qi_Shang 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
932
钻石
性别
保密
注册时间
2019-6-21
查看详细资料
发表于 2020-2-24 09:02:19 | 显示全部楼层
去试试。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2020-8-9 19:36 , Processed in 0.065650 second(s), Total 27, Slave 26 queries, Release: Build.2020.07.08.1452, Gzip On, Redis On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

© 2010-2020 我的世界中文论坛 版权所有 本站原创图文内容版权属于原创作者,未经许可不得转载

快速回复 返回顶部 返回列表