LoginSignup
1
1

More than 1 year has passed since last update.

【Minecraft BE Addon講座#14】ScriptingAPIとは?/サーバーとクライアントの違い

Last updated at Posted at 2021-10-03

本ページは アドオン講座#14、「スクリプト編、ScriptingAPIとは?/サーバーとクライアントの違い」 です。
目次や、この講座については#1の記事をご覧ください。

スクリプト編で理解してほしいこと!

2022年4月19日のアップデート、Minecraft 1.18.30(Bedrock)(ベータ版では2022年1月27日のMinecraft Beta 1.18.20.21)をもって ScriptingAPIは削除されました。
本Addon講座#14、#15で解説されているScriptingAPIは、これ以降のバージョンで使用できません。
スクリプトの実行は、代わりにGameTestFrameworkが担っていくようです。

ScriptingAPIは執筆現在、Minecraft Bedrock Edition for Windows10(通称:win10版)でしか動作しません。(でした)
条件を満たさない場合、iOS版、Android版などでは実行できないのでご注意ください。
この制限について、またこの制限の対策について、詳しくは#14「サーバーとクライアントの違い」をご覧ください。

スクリプト編はこのアドオン講座の他の応用編と異なり、.jsonファイルではなく、Javascriptを使用することもあり、レベルとしては応用編の中でも発展寄りになります。
しかし、Javascriptに少しでも触れたことがある方にとってはスクリプト編の方が簡単に感じるかもしれません。

スクリプト編は2ページからなり、前半#14はスクリプトの書き方(記法)と仕組みの理解について扱い、後半#15ではどのように使うのか実際にアドオンを作ってみます。

このスクリプト編では、Javascriptを使うことで、.jsonなどの限られた機能だけではできなかった検知や、それを利用したシステムの製作ができるようになることを目的としています。

  • (前提#3~#4)基礎編
  • (前提#8)ファンクション編復習、コマンドの実行主の理解
  • (#14)ScriptingAPIとは?
  • (#14)サーバーとクライアントの違い
  • (#15)[実践]キルカウントを作ってみよう

ScriptingAPIとは?

アドオン講座も#14と、だいぶ大きな数字になってきましたが、ここまでで解説してきた内容や使用した機能は、ファンクション編を除き、全て既にマイクラ側に実装されているものを利用する形で成り立っているものでした。
ScriptingAPIは、Java版で根付いた「ユーザー製作のコンテンツでMinecraftを盛り上げる!」という文化をBEにも取り入れようと、試験的に追加されたModに近い要素です。
.jsonの書き換えレベルではなく、MoLangという限られた使用しかできない独自言語でもなく、Javascriptという世界的によく使われているプログラミング言語を取り入れたこともあり、拡張性を高めようという気概が感じられます。

しかし、ScriptingAPIには、その拡張性のために二つの条件が付けられました。

  • 「試験的」設定を有効にしたワールドであること。
  • Windows10版であること。

この二つの条件を満たさなければ、ScriptingAPIを実行することはできません1
特にWin10版のみという制限は、クロスプラットフォームマルチプレイを売りにしている(と勝手に思っている)BEにとってはあまりに大きすぎる制限で、BEでAddonを作っているクリエイターにもあまり広まらず、という結果になってしまいました2

マイナス面ばかりの話になってしまいましたが、その代償の分、できることも多いです。
特に、次回紹介するキル検知は、基本スクリプトでしか行うことができません3
また、プレイヤーの場合、プレイヤーを指名してセレクタを使えるので、@pで起きやすい「判定が吸われて…」といったことが一切起きません。
詳しい機能については、次回#15で触れていきます。

まだまだ説明が続きます。今日は座学の日です(笑)。

サーバーとクライアントの違い

ScriptingAPIには、 サーバー(server)とクライアント(client) の二種類があります。
ファイルフォルダ構成(#3)でも紹介した通り、それぞれscripts/serverscripts/clientを使用します。

サーバー(server)はワールドを開いているプレイヤー(の端末)のみが実行します。
ワールド全体のことを書く感じですね。

クライアント(client)はワールドに参加しているプレイヤー全員が実行します。
それぞれが実行することを書く感じですね。

具体的にはListenできるevent(=検知できる条件)が違います
これ以上はドキュメントを読んでもらった方が早いです。

開発していく上での違いはこんな感じですが、完成したアドオンを使っていく上ではこの違いはものすごく重要になってきます。

サーバーだけならwin10版じゃない人もワールドに入ることができるのです!!

サーバーはワールド主の端末のみがスクリプトを実行するので、ワールド主がwin10版であれば、アドオンの他の要素と同じようにクロスプラットフォームでマルチプレイをすることができます!!

表にまとめるとこんな感じ。

<サーバーのみ> win10版 win10以外のBE
ワールド主(ホスト) ×
参加者(ゲスト)
<クライアント使用> win10版 win10以外のBE
ワールド主(ホスト) ×
参加者(ゲスト) ×

win10以外のBEには、iOS、Android、Switchなど、BEのほとんどが当てはまるので、クライアントを使用してしまうとそのアドオンを使えるユーザーはかなり限られてしまいます。

そのため、クライアントについてはほとんど解説しません4
構文はサーバーとほとんど変わらないので、異なる点のみ解説しようと思います。

ScriptingAPIについての説明はこれで以上です!
次回#15では、ScriptingAPIのサーバーの方を使って、実際にキルカウントアドオンを作ってみます!

  1. できることが増えた分、処理が重くなる可能性があるため、という理由らしいです。

  2. それだったらJavaでいいやん!ってなってしまうのです。Java版の拡張性には全く及ばないので…。

  3. コンポネとアニコンを組み合わせればできないこともなかった気がしますが、現実的じゃないくらいに大変で、制限も多いです。

  4. なぜなら私がほとんど使ったことがないから…

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1