• 周年纪念勋章活动已圆满结束,如有已购买但仍未申请的用户,可以通过对应勋章的下载链接申请~
资源图标

LSE [终止支持]LevelRipper - 一次失败的对于优化bds的大胆尝试 23w01a

版权类型
原创
版权链接
#
语言支持
中文(简体)
前置组件
LiteLoaderBDS
WS协调服务端
MWorldLimit(需自行修改)
适配版本(基岩)
  1. 全版本
转载需标明出处,不得直接将下载链接指向下载按钮,或直接上传文件

不要再使用此插件了!此插件已停止支持,对使用此插件造成的所有后果本人概不负责!

在231T上测试时,两个前置插件出现了数个影响游戏体验的bug,且玩家对此方案的评价非常不好

因为一些原因,本插件已停止支持,保留本帖是为了给各位开发者留下一个可以讨论类似方案的楼,希望大家对于已经存在的事物客观评价,不要引战
以下是本插件原介绍:

这是一个可以让BDS利用多核心,在大型服务器,尤其是e5这类核心足够多的主机上,在玩家人数非常多或服务器压力较大时,确保tps维持在可接受范围的临时方案。
该方案属于群组服。
目前已经实现已经开半个月的图在e3-1276v3上实现全服10人同时在线tps不低于17,i9-10900k上(仅开两个端)实现全服18人(包括假人)同时在线tps稳定在18-19,在i9-12900K上实现全服超过20人(包括假人)在线但tps始终保持在20
该方案仅适用于在线人数较多的服务器,如果是在线人数5人以内的小型服务器,建议仍然使用传统的清除实体等方案优化服务器并考虑提高更换单核性能高的服务器。在本人的开服经验中,单核cpuz跑分400以上的CPU都能在绝大多数情况下承受5人在线。
该方案目前不成熟,存在诸多限制和缺陷,不建议对原版内容有相当高要求的服主使用
该方案目前仍在研讨阶段,有众多功能尚未实现
该方案不稳定,因为还没有经过大量的测试(仅在一个服务器上正式采用并证明可行)
该方案采用后,存档难以恢复至之前状态,请谨慎做出选择。在采用前,请务必备份整个服务端
该方案对开服技术有较高要求,建议已有至少数月bds开服经验的服主了解,新手会难以理解配置的步骤
该方案后期维护工程量较单端更大,运营方建议团队合作
该方案需要占用多个服务器端口,采用内网穿透或端口有限的vps请注意可用的端口数量
该方案需要开启多个bds,如果使用面板服开服,将需要购买多个面板,且每个面板需要至少有三个公网端口或可在内网互相访问
只有多核心性能足够的时候,该方案才能起到明显作用。对于8700k物理机和2核心的13900k,如果价格相近,那么13900k仍然可以带来更好的体验。与2核心13900k对比,至少需要9700k物理机才能在采用此方案后看到显著的提升。

感兴趣的加群715732100了解

实现原理:克隆整个已有bds,并通过mwl限定玩家在每个bds中的活动区域以防冲突。在不同bds间传送时,配套插件将会把玩家传送至对应的坐标。传送后,ws协调服务端将同步玩家的背包等数据。
最终效果:玩家仅在跨越不同bds相接处时,会经过一次传送,其他时候与在单个地图中进行游戏没有区别。而bds可以利用多核心,来突破单核心性能的技术限制,变相利用多核心计算,进而提高每个bds的流畅度。即使一个bds卡顿,卡顿也不会影响到其他的端。

时间仓促,具体教程我会一点一点补充,如果感兴趣可以加群了解

请不要在服务器开启时安装!这可能会导致玩家数据错误!

目前已经测试下界中的传送并证实此插件已兼容下界。但是目前仍无法为在下界的跨区传送同步偏航角。目前也仍未支持全图仅使用一个末地。对于全服同一末地,如果开发顺利,将可能在接下来的一两个版本发布。

安装教程
安装MWorldLimit

其实本方案也可以不借助这个配套插件,但是将无法实现玩家在全服同时只能有一个坐标和越过区界来传送
首先,安装MWorldLimit。安装好之后,如果使用配套插件LevelRipper,需要对此插件进行修改
直接打开js文件(建议用IDE打开)
在插件最前面加上这一行:
JavaScript:
let transfer=ll.import("LevelRipper","sync")
然后在142行和143行间插入这一行:
JavaScript:
let lastpos=pl.pos;
再145和146行间插入这一行:
JavaScript:
transfer(pl,lastpos)
修改后的140-150行应该是这样的:
JavaScript:
                    let cache_direction = pl.direction;
                    let vPos = getNearestValidPos(pl.pos);
                    // pl.teleport(vPos);
                    let lastpos=pl.pos;
                    mc.runcmdEx(`tp "${pl.realName}" ${vPos.x} ${vPos.y} ${vPos.z}`);
                    // pl.getNbt().setTag(`Rotation`, new NbtList([new NbtFloat(cache_direction.yaw), new NbtFloat(cache_direction.pitch)]));
                    transfer(pl,lastpos)
                    pl.tell(`§c你超越了世界边界!`);
                }
            }
        }
修改之后,MWorldLimit将在玩家触碰边界时调用配套插件的API,实现配套插件对MWorldLimit玩家超越边界事件的监听

安装配套插件
解压下载得到的压缩文件,得到LevelRipper.llplugin和LevelRipperServer.llplugin,将此配套插件中的LeverRipper.llplugin放到plugins文件夹。暂时不要安装LevelRipperServer。

启动一次服务器,让两个已安装好的插件生成配置文件

确定服务器本次需要划分出来的区域的数量

您需要将服务器地图分成多个区域。
每个区域的边界必须与x轴与z轴垂直,整个区域的形状必须是矩形。
如果您需要玩家无限跑图,您可以将外围的区域设置其直至坐标2147438647。例如,您可以设置区域“300,460 - 2147438647,2147438647”。
每个区域中都将运行在单独的CPU中, 其进行的所有计算都不会干涉其他的区域。如果该区域卡顿,卡顿也不会扩散到其他的区域。因此,保证每个区域的运算量均衡是您在划分区域时必须考虑的。例如,玩家在一处建造了多门猪人塔,在离该猪人塔有一段距离的地方建造了仅一台刷铁机,您将可能需要考虑将多门猪人塔从中一分为二。只有将多门猪人塔平均分配到两个核心,才能确保每个端的性能最大。在选中该分界处时,您也需要注意该分界处不能跨越任何已有的玩家建筑,尤其是生电机器等依赖方块间传递状态的建筑。

克隆服务器
将现有服务端复制与区域数量的份数。复制前务必保留一个备份。

修改各个服务端的配置
首先,在各个服务端的server.properties中修改端口。所有服务端的ipv4和ipv6端口都不能重复
如果服务器不是独立公网ip,则此时需要配置相应的端口转发或新建穿透,如果开启了防火墙则需要放行相应端口。如果服务器将布署在多个主机,此时需要将服务端上传到其他的主机
然后修改MWorldLimit。对于每个服务端,都需要确定好这个服务端运行的区域,然后修改MWorldLimit的限制区域为这个服务端运行的区域。各个MWorldLimit的限制区域不能重合,也不能间隙过大。
然后修改plugins/LevelRipper/config.json。将所有的区域都添加到这个文件中,并设置好每个区域对应的服务器连接地址。修改好后,将这个文件复制到其他所有的服务端,并修改每个服务端的这个文件的thisServer的地址为当前服务端的连接地址。

安装WS协调服务端

安装LevelRipperServer
安装LevelRipperServer到服务器中的其中一个,启动一次该服务器。插件默认使用6848端口通信,如果此端口上已启动其他服务,需要在所有的LevelRipper配置文件和LevelRipper/server.json中统一修改端口。

本方案的配套插件除所需前置需要金粒外,没有任何付费计划。解决bds服主长久以来的心病刻不容缓,我也希望各位服主能想到更好的方案,来解决本方案中诸多无法避免的缺陷。
作者
小鼠同学
下载
825
查看
2,589
首次发布
最后更新

评分

5.00 星 9 次评分

小鼠同学 的其他资源

最新更新

  1. 23w01a

    修复了部分情况下,尤其是玩家在下界进入传送判定区域时,发生数据冲突并无法进入游戏的问题 修复了一个可能导致玩家间数据冲突的潜在问题
  2. 0.1.0

    自行建立ws服务器来同步玩家的信息,解决了上个版本中乱传送的问题 更改所有配置文件和数据目录到LevelRipper文件夹下

最新评价

五星好评 666
what? 你还真搞出来了
wine运行llbds老掉tps的问题终于要解决了
精彩!好用的插件,BDS就缺这个
最伟大的作品(doge)bds就缺这个
神奇的东西出现了,直接支持一波好叭
加油哦,awa
哦,天哪!我曾经多次想过是否会有人做类似的服务器优化工作,现在你们出现了,真是太神奇了!
后退
顶部 底部