本帖最后由 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 这个文件,删除里面所有内容并重新写入以下内容:
- shaders:
- - class: org.dynmap.hdmap.TexturePackHDShader
- name: stdtexture
- texturepack: 你的材质包名字.zip
复制代码 - 执行命令 /dynmap reload 重载,然后执行 /dynmap cancelrender 取消正在进行的渲染(如果有的话),最后执行 /dynmap fullrender 重新开始渲染整张地图
搭配 ModernArch v81 256x256 材质包的效果
#3 减少宽带使用率
如果你的服务器宽带比较小,那么大量的图片会急剧增大你的网络流量,导致玩家正常游戏受到影响。
因此你可以通过以下步骤进行优化,减少网络流量。
- 使用 Notepad++ 等专业编辑器打开 plugins/dynmap/configuration.txt 这个文件
- 使用搜索功能找到 image-format: 这个配置项
- 将默认的 png 改为 jpg 或 jpg-q95、jpg-q90、jpg-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,如果没有,可以按照下面的步骤安装:
确认 Nginx 安装完成后,为 Nginx 新增一个 Vhost 配置文件,如果你使用的是 OneinStack,那么目录应该在 /usr/local/nginx/conf/
如果你使用的是 yum install nginx 这样安装的 Nginx,配置文件应该在 /etc/nginx/
为了方便教程阅读,后面我统一以 OneinStack 为例进行教程演示
现在我们需要创建一个 vhost 并申请 SSL 证书,在终端中输入以下命令:- cd ~/oneinstack/
- ./vhost.sh
复制代码 接着会出现以下内容,按照图片里来填
Vhost 添加示例图
完成之后,你可以在 /usr/local/nginx/conf/vhost/ 内找到你的 Vhost 配置文件,名称为 <你的域名>.conf
先输入 echo "">配置文件名.conf 清空配置,然后在里面输入以下内容:
- server {
- listen 80;
- listen 443 ssl http2 ;
- ssl_certificate /usr/local/nginx/conf/ssl/你的域名.crt;
- ssl_certificate_key /usr/local/nginx/conf/ssl/你的域名.key;
- ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
- 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;
- ssl_prefer_server_ciphers on;
- ssl_session_timeout 10m;
- ssl_session_cache builtin:1000 shared:SSL:10m;
- ssl_buffer_size 1400;
- add_header Strict-Transport-Security max-age=15768000;
- ssl_stapling on;
- ssl_stapling_verify on;
- server_name 你的域名;
- access_log /data/wwwlogs/你的域名_nginx.log combined;
- if ($ssl_protocol = "") { return 301 https://$host$request_uri; }
- location / {
- # 服务器内网一般都是 127.0.0.1,如果你的 MC 服务器和 Nginx 服务器不在同一台机器,那么这里就填 MC 服务器的 IP
- proxy_pass http://服务器内网IP:Dynmap端口$request_uri;
- proxy_redirect off;
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- client_max_body_size 1024m;
- client_body_buffer_size 128k;
- proxy_connect_timeout 300;
- proxy_send_timeout 300;
- proxy_read_timeout 300;
- proxy_buffer_size 4k;
- proxy_buffers 4 32k;
- proxy_busy_buffers_size 64k;
- proxy_temp_file_write_size 64k;
- }
- }
复制代码 完成之后,输入命令 nginx -s reload 重载 Nginx,接着浏览器访问你的域名,应该就可以看到 Dynmap 了,并且是有 HTTPS 的,此时你就可以把 Dynmap 通过 iframe 等方式嵌入到你的官网而不用担心谷歌浏览器会报不安全警告了。
以上就是本教程全部内容,如果有帮到你的话,欢迎给我评分,谢谢~ 本教程将会不定期更新,你可以收藏本帖,当我更新时就可以收到消息提醒 作者:Akkariin | 转载请注明本帖地址及作者
|