发布于:,更新于:

Minecraft区块链设想

本人因为一晚上没睡着觉,闭着眼睛胡思乱想的时候突然蹦出来的想法,结果早上补觉完起来之后也一直挥之不去,所以就索性记录下来了)

本文只是本人的一时兴起,从当前的问题以及解决思路出发,不涉及任何具体的技术性问题,请各路大佬刀下留情,图一乐就好()

引言

我们都知道,现在Minecraft的多人游戏有许多种联机方式,不过大致可以分为如下几种:

  1. 虚拟局域网/类p2p点对点连接联机(案例:hamachi,n2n,Zerotier,蒲公英,MCBE XBOX联机)
    • 优点:通过中间服务器进行联机玩家的点对点对接连接,可以使双方在NAT环境优越的前提下做到点对点直连联机,摆脱连接中间服务器所带来的延迟。即使是NAT条件不好,也可通过NAT转发的模式通过中间服务器转发进行联机。
    • 缺点:玩家联机将很大程度上受限于网络NAT环境中间服务器连接的限制,如果联机双方/多方玩家NAT条件不好将会通过中间服务器进行转接,数量过于庞大的话将会给中间服务器造成比较大的负担,导致联机延迟变高效果变差等问题。
  2. Frp类内网穿透联机(案例:SakuraFrp,OpenFrp,NPS)
    • 优点:与类p2p点对点联机不同的是,内网穿透类的联机方案只有通过中间服务器连接的形式进行,玩家将不会受限于NAT环境限制,理论上只要有网,能连上Frp节点服务器就能游玩
    • 缺点:与类p2p虚拟局域网联机方案的中间服务器转发的限制类似,这个方案对于转发的中央服务器的稳定性以及线路等因素是个极大的考验,如果服务器的性能以及稳定性不足以去支撑庞大的用户数量那么该节点就会造成集体断联/延迟高的悲惨局面。
  3. 中央服务器联机(案例:Hypixel,EarthMC,Hive)
    • 优点:可通过性能强大,网络优秀的单机服务器或服务器集群进行大规模的服务器搭建,从而实现为大多数玩家提供联机娱乐性的场所。
    • 缺点:受限于Mojang的渣优化,对于高版本的生存等需要加载大量区块进行运算工作的类生电服务器将会极其考验服务器单核性能,从而导致无法实现在高版本的情况下让大量玩家在同一服务器进行生存游玩。且受限于服务器的物理位置,导致一些特殊偏远地区会出现高延迟/连接超时等情况

基于这些现有的条件优缺点结合,我经过一晚上的翻来覆去想到的解决方案是Minecraft区块链联机模式,其模式主要用于解决上述方案中所出现的问题。


阶段一:联机方式的“革新”

现存联机方式的“问题”

通过引言的上述现存的Minecraft联机方式中我们可以看到一个十分重要的功能节点:中央服务器,基本现存的联机方式,中央服务器都是必不可少的。而这个中央服务器,大多是由个人,组织或企业进行提供,个人势的有类似OpenFRP,SakuraFRP这类开源且搭建简易使用方便的Frp内网穿透,企业势的则有蒲公英,hamachi,Zerotier这类公司提供服务器稳定性较高的服务器提供虚拟局域网/类p2p直连中间服务器的运行。中央服务器联机则更为直接,是由广大服主自行购买服务器运行服务端进行运营。

中央服务器连接图

从这里我们不难看出一个“问题”,就是这些现存的方案不管最终结果是否会直连,都必须要通过第三方提供的服务器进行首次握手连接。这样就不免出现一些问题。例如早年的Minecraft大多使用hamachi进行联机。但由于hamachi的中间服务器位于海外,导致很多国人在使用hamachi联机的时候经常会出现连接不上的情况。当前的Minecraft Bedrock Edition的XBOX联机中也有类似的问题。而蒲公英等国内公司提供的方案,适用于一些企业公司或组织进行使用,对于个人玩家联机领域来说就是一个字,。亦或者是对于Hypixel这类大型小游戏服务器,及时在Cloudflare全球“环大陆”的加速CDN的加持下,也不免有些“盲区”,而身处“盲区”的这些玩家只能另辟蹊径去寻求一个相对稳定流畅的方式去连接。

中央服务器问题

对于这种现状,其实也不是没有现存解决办法。玩家可通过n2n,OpenVPN,Frp,NPS等市面上现存开放的虚拟局域网/内网穿透软件或者直接使用服务端进行服务器购买以及自行搭建。驾轻就熟的老司机们自然会有合适的服务器节点以及搭建方案选择,这种选择带来的联机效果相对于直接使用一些大公司的“免费服务”体验要好很多。**但是这也萌生了很多的问题:服务器的性能,带宽,以及DDoS等外界不确定性因素。**由于大部分都是个人搭建,没有像公司运营那么富裕资本,导致自搭建的服务只能进行“独乐乐”的小众服务,而不能实现“众乐乐”的大众服务。

个人搭建服务器问题

那有没有什么办法,可以不依赖于所谓“中央服务器”进行转接连接,而是可以让玩家之间建立直接的联机通道呢?我给出的设想便是联机方式区块链化

联机区块链化实现思路

所谓联机区块链化,就是在基于类似hamachi,Zerotier类的p2p点对点连接的模式基础之上,让参与联机的玩家进行原先联机中“中央服务器”的职责。简单来讲,玩家即连接节点,当然,这势必要对玩家的NAT环境优劣度有着极大的考验,而且仅此而已的话似乎和个人搭建节点似乎没有什么不同。那这个所谓“区块链化”体现在哪?答案就是在NAT环境优良的玩家作为连接节点的同时,进行广域化广播互联

设想图

传统的联机方式,是通过个人或组织提供的专有中心服务器进行连接,这种做法的缺点就是不同组织的服务器之间的通信是不互通的。你没法指望着用蒲公英的服务直接去连Zerotier的服务。而单一节点的宕机也会导致服务直接失联,无法正常运行。

思维导图

而区块链化联机模式从理论上来讲可以免除这种烦恼。因为其“区块链”的特性,导致**区块链化联机没有一个特定的中央服务器进行转接,而是通过就近在线NAT优良的玩家作为跳板进行转接。**详细流程如下:

  1. 启动游戏,判定玩家NAT环境。
  2. NAT环境为优良则自动作为连接节点进行广域播报,
  3. NAT环境若为中或差(不足以作为节点的条件)则从广播中自动检索合适的连接节点进行中转连接。
  4. NAT环境为优良的连接节点将自动进行跨域互联。

思维导图

这种区块链化的模式的好处就是去中心化,分布式,快捷。假如你的NAT环境很优秀,想要和其他朋友一起玩,那么你的朋友只需要通过你的NAT环境所广播的连接节点进行直连就可以了。假如你和你朋友的NAT环境都不是那么的好,甚至很糟糕,你也可以通过其他玩家的广域播报节点进行跳转连接,这样对你的要求就很简单,能上网就行。

这样做的好处有三点:

  1. **摆脱国外中央服务器连接超时问题,玩家互为节点,就近选择即可。**详情可以参考Minecraft Bedrock Edition的XBOX多人联机超时的情况。

1643189549380.png

  1. “去中心化”使得联机的节点没有一个固定的地址,且广域广播的连接节点会进行跨域互联,均衡负载,这样可以**摆脱常年来困扰广大服主和玩家的DDoS攻击的问题,既然使用分布式攻击,那分布式化解即可。**大厂对于DDoS的操作从来都是砸钱上节点上硬防去抗,而对于Minecraft这种社区性游戏,大多作为个人势的服主和玩家是没有那个资本去抵抗DDoS攻击,那为何不动用广大的社区力量进行化解呢?

1643189850610.png

  1. 广域化,在这种模式下,玩的人越多,节点也自然越多。这种“弹性”的网络可以极大的发挥Minecraft作为社区游戏的优势,从而达到“广域化”。玩的人越多,可以选择的节点也就越多,连接也就越稳定,越快速。在达到一定规模之后甚至可以达到“量变”到“质变”,给万人甚至亿万人同服在线打下了网络条件基础。

弊端

但同时有一个不可避免的问题:将玩家作为连接节点,那当玩家离线之后这个节点也势必会断联,这是一个不可避免地问题:连接不稳定。如果可通过类似p2p打洞一类的技术在中间服务器通信成功后使得通信双方直接握手也许还好说,但是对于NAT环境极差必须依靠中间服务器进行转接的玩家来说如何能通过NAT环境优良的连接节点进行跨域互联容灾,或者有其他更好的方案,是一个待商榷的问题。

以及当前国内运营商的“NAT环境”也同样是一个不可定的要素。在ipv6没有完全普及,ipv4资源相对紧张的当下,部分运营商(如移动)选择使用“大内网”这种方式进行运营,在提高了用户带宽的同时却也造成了一栋楼甚至一个小区更甚者一大片地区公用一个IP的惨剧。如果进行联机游玩的用户全是这种NAT环境的话,那么所谓“NAT优良的玩家作为连接跳板”的前提将不成立。


阶段二:“区块链世界”

当前服务器现存问题

在引言的时候我们有说到基于中央服务器搭建的服务端目前存在的弊端:

受限于Mojang的渣优化,对于高版本的生存等需要加载大量区块进行运算工作的类生电服务器将会极其考验服务器单核性能,从而导致无法实现在高版本的情况下让大量玩家在同一服务器进行生存游玩。且受限于服务器的物理位置,导致一些特殊偏远地区会出现高延迟/连接超时等情况

针对这种几乎不可避免的现存问题,目前大部分人的主要精力都放在两点:升级服务器配置,优化服务端,不可否认的是这确实是简单直接的方法,但我会质疑这种方式是否真的有效。在服务器的领域,几乎任何东西都会和资本扯上关系。开服务器?可以。你有多少钱?而对于服务器的配置升级势必要花费资本和精力,为了维持这种资本开销会去选择用服务器去获利,进而维持服务器本身的资本开销。这就是当前服务器领域“资本滚雪球”的现状。并不是说这种方式不可取,但很遗憾的是这种模式催生了无数的歪门邪道,而真正需要赞助的“公益服”,只能眼睁睁的看着这些歪门邪道越滚越大。而服务端的优化,我认为在MC广泛且强大的社区支持下尚有进步的空间,但受限于Mojang底层的渣优化也终究是有极限的,除非重写

事实上对于Minecraft服务器的世界的“多步异载”已经有先人提出方案——WorldQL,通过多个服务端来加载同一个世界,(详情可查看https://www.worldql.com/posts/2021-08-worldql-scalable-minecraft/ ),这似乎能解决上述服务器现存的性能问题。但同时带来的是难以预估的资本游戏:**如果要运行一个支撑的起上万,数十万,数百万甚至上亿的玩家同时在一个Minecraft世界中进行游戏,那将会开销多少钱,又能获得多少回报?**就像上面说的,服务器的开销以及获利必须要达到平衡,而获取暴利可以进行服务器的再升级来承载更多的人数的资本滚雪球。但让大量玩家在一个世界里游玩这种事情,至少目前看来,有这种能力的大资本家,不感兴趣。这也难怪,以我短浅的目光来看,我觉得这种技术尽管有实现的意义,但是我似乎找不到能从中找到获利的要素。

最重要的,我认为作为一款社区游戏,去靠资本家提供的强大服务器集群放一块玩,这不合适。

那万人同世界,千万人同世界,甚至亿万人同世界,真的只是妄想了吗?对此我深夜脑瓜一抽,便想出了这个方案:区块链世界

区块链世界实现思路

警告:以下提供方案及思路几乎没有任何现存的方案去实现,简单来说就俩字:科幻。所以请各位大佬不要太当真,图一乐就好,萌新也不要太当真,期望越高失望越大)

“区块链世界”要想实现联机,用传统的中央服务器式的转接联机显然是不行的。因为这样的话就会失去“区块链”原有的特征:集体维护,所以想要实现“区块链世界”,阶段一提及的“联机方式的革新”的实现是必要的。

区块链是一个信息技术领域的术语。从本质上讲,它是一个共享数据库,存储于其中的数据或信息,具有“不可伪造”“全程留痕”“可以追溯”“公开透明”“集体维护”等特征。基于这些特征,区块链技术奠定了坚实的“信任”基础,创造了可靠的“合作”机制,具有广阔的运用前景。 ——百度百科

假设我们已经跨越了阶段一的一切技术难关,并且在全球都有了一定的“连接节点”后。我们便有了“区块链世界”的实现基础。“区块链世界”简单概括就是:玩家需要使用自己设备的算力进行自己所加载的区块的运算,且玩家间的“区块链世界”互通。通过玩家自己的设备进行相应的区块计算可以大大缓解上述服务器的性能问题,且可通过联机方式的“区块链化”达到彻底摆脱中央服务器的限制,达到广义上的“亿万人同世界”。基于这种设备网络条件下,我对这个“区块链世界”进行了如下定义:

  1. 区块链的运算由玩家自己的设备进行,数据可本地保存也可自动上传同步至广域节点
  2. 所有玩家所处的”区块链世界“种子必须是同一个,确保整个世界的完整性。
  3. 所有玩家的权限平等,不会出现OP等“世界管理员”的存在。
  4. 所有玩家会通过IP所在的经纬度坐标,转换为MC世界的坐标点作为初始化重生点。
  5. 玩家存储发送的“区块链世界数据”仅包含“更改数据”,不包含“初始数据”
  6. “区块链世界”数据会自动逐步同步到所有在线节点,且任何人无法更改

不过这样的设想看似美好,但却有很多十分现实的问题,大致分为以下这几类:

  1. 玩家间区块拼接重合运算的问题
  2. 数据保留与传输的问题
  3. 数据安全的问题
  4. 技术手段

相关的问题讨论我在群聊和各路大佬都沟通过,普遍认为这个方案不可行,以下是我在某个群聊里的聊天记录,记录着我的想法以及问题。

1643194023034.png

这个设想只是一个模糊的轮廓,甚至没有一个雏形,但比起作为转瞬即逝的想法,我觉得记录下来,对于今后的发展来说更有意义。指不定哪天就能实现了呢(挠头

对于更加详细的“画大饼”,我觉得留到以后慢慢讨论也不迟~~(画大饼什么的最喜欢了,咕咕咕)~~

结语

Minecraft对我而言,其最大的魅力不是在于其“无限的可能性”,而是将无限的可能性变为现实的“你们”,Minecraft最成功的地方不在于他的代码,不在于游戏性,**而是他孕育了一个又一个所向披靡的社区,无数的人在他的身上进行无偿的创作。**这样的一款游戏,不需要领头羊。

**而国内的MC代理厂家——网易,在企图吞并国内整个生态圈,自己作为领头羊后无果,选择了固步自封,将国内的MC游戏环境割裂为了“国际”和“网易”。这是网易作为代理我认为最失败的一点。**关于这方面的相关内容我曾经和MineBBS的站长YYT进行过探讨请教,大概会出一期文章来探讨当前国内MC圈子的现状。希望不会鸽)

也许有的人会觉得“哎这不就是元宇宙吗”,说实话我本人对于“Minecraft”被打上“元宇宙”这种暧昧不清的标签时我的第一反应是抵触。**Minecraft的魅力在于由广大玩家共同创建出的繁华生态,而元宇宙,显然没有提及这点。**所以我对这样的不知所云的“标签”是反感的。在我的心目中,生态以及社区,永远是Minecraft这款游戏最闪耀的光点,对于“元宇宙”这种无厘头的概念,我表示否定。

作为一位玩家来说,我是远远不够格的。常年都没有正常玩过纯生存通关的我早已经失去了自称为“玩家”的资格。但是我依旧在为Minecraft的生态做出自己的贡献,同时我能希望这个圈子,以及在这个圈子里的你们,越来越好。

本文由夏五郎(SummerGoro)原创,转载请事先告知并标注原帖链接,这是对我最基本的尊重,谢谢。