我所做的事情是为Minecraft服务器实现跨平台运营

首先

我整理了研究和做了一些关于能够进行Minecraft跨平台游戏的事情。
为了与家人一起进行跨平台游戏,我搭建并运营了一个Minecraft服务器。
如果你想了解更多信息,请从标题中跳转。

我所调查的是关于可进行跨平台游戏的事项。

Minecraft的类型是什么?

以下是中文的同义句:《Minecraft》是一个很受欢迎的游戏。

    • Java版

 

    統合版(Bedrock Edition)

有两种类型存在。

PS4/5、Switch和手机等设备将成为统一版本。
而PC上则可以选择购买Java版或统一版。
※对于MacOS而言,只能选择Java版。

跨平台游戏的定义是

在线上跨越不同硬件和类型进行游戏。

- windows同士だが、それぞれJava版と統合版で種別が異なる
- 統合版だが、PS4とSwitchでハードが異なる
- MacOS(Java版)とSwitch(統合版)

一般情况下,支持跨平台游戏的版本,但不支持Java版本和综合版本的跨平台游戏。

要实现跨平台游戏,需要做些什么?

Java版 と 統合版 が参加できるサーバーを用意(借りる)する。
ローカルで立てて公開するか、課金してクラウドを借りるかの二択になるようだ。
また公開したサーバーはHackしておく必要がある。(後述

クロスプレイに最低限必要なもの

    Microsoftアカウント もしくは Xbox Liveアカウント

跨平台建设的估价

在本地搭建并公开。

作为我的招聘手段,我采取了

    1. 在Mac Mini上启动Minecraft服务器

 

    1. 为Minecraft服务器进行跨平台设置

 

    在全球范围内进行公开

我追求并建立了这一目标。
我正在参考的文章在这里。

可以使用Docker构建Minecraft服务器。

(Minecraft servers can be built using Docker.)

Google検索で Minecraft docker-compose で検索し、
実際に運用されている方の記事を参考にしました。

估算工作

    1. 更新Mac Mini的操作系统

 

    1. 安装Docker Desktop for Mac

 

    1. 创建docker-compose.yml文件

 

    1. 启动docker-compose

 

    1. 获取动态DNS

 

    1. 添加动态DNS设置

 

    1. 添加MOD

 

    在Minecraft服务器上实现跨平台游戏设置

跨平台建设工作

任务列表

    1. 准备Mac Mini

更新Mac OS
安装Docker Desktop for Mac

在Github上创建仓库

创建docker-compose.yml文件

初始设置

克隆仓库
运行docker-compose up
编辑config.yml文件
在本地localhost上确认

在局域网(LAN)上确认

更改Mac Mini的设置
更改路由器/调制解调器的设置

在广域网(WAN)上确认

获取并设置动态DNS
更改路由器/调制解调器的设置

任务详细

Mac Mini 的准备

在2016年推出的Mac Mini

macOS Monterey 12.4 をクリーンインストール
Docker Desktop for Mac を公式よりインストール

在Github上创建存储库

链接:https://github.com/mabubu0203/minecraft_multi

请点击上方链接,进入GitHub页面,查看mabubu0203的minecraft_multi项目。

为了实现跨平台游戏。

在JavaEdition ✖️ SPIGOT服务器上启动Minecraft,并安装以下插件。

    • Geyser-Spigot

 

    floodgate-spigot

在BedrockEdition中,我们将通过Geyser来进行游戏

docker-compose.yml/ports 的含义是指通过配置文件 docker-compose.yml 来定义容器端口映射。

記載内容説明19132:19132/udpBedrockEditionからはGeyserを介する19133:19133/udpBedrockEdition(IPv6)からはGeyserを介する25565:25565/tcpJavaEdition用の標準ポート25575:25575/tcpRcon用のポート

docker-compose.yml文件/环境

有关详细设置的解释请参见以下链接:https://github.com/itzg/docker-minecraft-server/blob/master/README.md

特に大事だと思ったものは下記に抜粋

propertyvalue説明DIFFICULTYeasy
HARDCOREfalseハードコアを許可するかどうかMAX_PLAYERS15最大接続人数MODEsurvival
PVPfalseユーザー同士で対戦するを許可するかどうか
propertyvalue説明ENABLE_WHITELISTTRUE許可されたユーザーのみアクセスできるようにするEULATRUE
MODS_FILE/extras/mods.txt
TYPESPIGOT
TZAsia/Tokyo
VERSION1.192022/07時点で最新のものを指定

最初的设置

    1. 克隆存储库

 

    1. $ git clone https://github.com/mabubu0203/minecraft_multi.git

首次启动
$ docker-compose -f ./docker/docker-compose.yml up –build –remove-orphans
确认没有错误
$ docker-compose -f ./docker/docker-compose.yml stop

修改插件设置
vi ./docker/data/plugins/Geyser-Spigot/config.yml
remote.auth-type: online -> floodgate
重新启动后,从Mac Mini上的minecraft (Java Edition)进行连接确认
连接到: localhost:25565

在局域网(LAN)上确认

    1. Mac Mini のセキリティを変更

 

    1. システム環境設定 -> セキリティとプライバシー -> ファイアーウォール

 

    1. ルーターのポートフォワードの設定を変更

 

    1. 25565(TCP)

 

    1. 19132(UDP)

 

    1. Mac Book Pro(Mac Miniとは別の端末)から繋いで確認

 

    1. 観点:Java版同士の疎通確認

 

    1. Switchから繋いで確認

 

    1. 観点:統合版からの疎通確認

 

    参考: 【プラグイン紹介】統合版とJava版でクロスプレイが出来るプラグイン【GeyserMC】

通过WAN(广域网)进行确认。

    1. 获取动态DNS

 

    1. 对Mac Mini进行动态DNS设置

 

    1. 让朋友连接并确认

 

    考虑事项:WAN连接验证

作業していてハマったこと/苦労したこと

docker-compose.yml/environment 的汉语表达如下:

docker-compose.yml/环境配置

value値に ture/false を クォートコート(‘) or ダブルクォート(“) で括らない場合怒られる
-> value値は文字列か数値しかだめboolはないんですね、なるほど

TYPE: “PAPER” だとswitchからアクセスできない
-> 原因がわからない。TYPE: “SPIGOT” で動作しているので諦めた

起動ログの時間がおかしい
-> タイムゾーンの設定(TZ: “Asia/Tokyo”)で回避した

间接式水龙头

将以下路径下的文件进行修改:
./docker/data/plugins/Geyser-Spigot/config.yml
将其中的 “remote.auth-type: online” 修改为 “floodgate”。

无法从局域网进行连接。

    • MacOSのファイアウォールに妨げられていた

 

    ルーターのポートフォワードの設定が足りていなかった

无法与WAN连接

    • 2重ルーターとなっていた

auひかりから貸与されているホームゲートウェイにブリッヂモードで接続していなかったことが発覚

参考:auひかりに市販のWi-Fi機器を接続する方法【ブリッジモードを使おう】

LAN内からだとダイナミックDNSで接続できない

運用やってみての気づき

WHITELIST

在部署时,whitelist.json文件是空的,因此没有人可以进入服务器。
我手动向whitelist.json文件中添加了用户。
顺便也手动向ops.json文件中添加了具有管理员权限的用户。
参考: 【Minecraft】白名单的设置方法

从现在开始,有操作权限的用户可以通过命令 “/whitelist add” 来添加用户。然而,被添加的用户需要知道自己的用户名。

裏技で、ホワイトリストに弾かれたログからユーザー名を逆引きすることもできる。

有可能根据硬件要求进行强制更新

PS4/5 ,Switch ,手机等根据硬件情况可能会强制进行更新。
由于服务器端通过docker-compose的描述固定了版本,所以可能会出现差异。
Java 版本允许用户自己选择启动的多个版本。

每个人对于想要玩Minecraft的时间有不同的想法

当Mac Mini关机时,公开的Minecraft游戏会关闭,但并不一定需要多人游玩,所以提供一种能够始终游玩的友好设计是很贴心的。

改进影像

在M1Mac上安装影Mod的情况很少。

关于在mods.txt文件中指定的插件。

通过jenkins的lastSuccessfulBuild机制来获取最新的jar文件。
因此,如果不查看docker的启动日志,就无法知道使用的是哪个版本的插件。
※ 实际上不需要关注插件的版本,所以没有问题。

bannerAds