マインクラフトの裏側を解明!JavaScriptでゲーム世界を自分好みに

default eye catch テック

今回は、超有名なゲーム、マインクラフトで使われている、JavaScriptの技術について調べてみました。

JavaScriptはもちろん、ウェブ開発の分野で多くの人が使用する言語ですが、実はゲーム開発の世界でも活躍しています。

特に、あの大人気ゲーム「マインクラフト」にもJavaScriptが関わっていると聞けば、「そんな身近な技術がゲーム開発にも役立つんだ!」と驚く人も多いのではないでしょうか。

では、どのようにしてJavaScriptがマインクラフトの世界で使われているのか、そしてその技術がどのようにゲームを支えているのか、詳しく見ていきましょう。

JavaScriptがマインクラフトに登場する背景

まずは、JavaScriptがどのようにしてマインクラフトの世界に関わるようになったのか、その背景を簡単に説明します。

マインクラフトは、もともとJavaで開発されたゲームですが、MicrosoftがMojang(マインクラフトの開発会社)を買収した後、より広範なユーザー層に対応するため、クロスプラットフォーム対応が求められるようになりました。

ここで登場したのが
Bedrock Edition」というバージョンです。

JAVA 版と BEDROCK 版の違い
どちらを選ぶべき?

このバージョンでは、Windows、モバイルデバイス、コンソールなど、様々なプラットフォームで一貫した体験を提供するために、JavaScriptやC++が重要な役割を果たしています。

特に、JavaScriptは「Minecraft Script Engine」としてゲーム内のカスタマイズやアドオンの作成に活用されており、プレイヤー自身がゲームの中で独自の機能を実装できるようになっています。

Minecraft Script Engineの基礎

マインクラフトのBedrock Editionで使われているJavaScriptの技術として、まず注目したいのが「Minecraft Script Engine」です。

これは、プレイヤーがゲーム内で独自のスクリプトを作成し、ゲームの挙動や動作をカスタマイズできるようにする仕組みです。

例えば、モブ(動物やモンスター)の動きを変えたり、新しいアイテムを追加したりすることができます。
言い換えれば、JavaScriptの知識を持っているプレイヤーであれば、自分だけのオリジナルマインクラフトを作り上げることができるのです。

このエンジンは、JavaScriptをベースにしたシンプルなAPIを提供しており、比較的容易にゲームの挙動を制御することができます。
APIはドキュメントが整備されており、公式のドキュメントには、スクリプトを作成するための多くのサンプルコードが掲載されています。
これを参考にしながら、プレイヤーは自分だけのユニークな世界を作り上げることができるのです。

※ githubでチュートリアルガイドなどが公開されています。

minecraft-creator/creator/Documents/ScriptingIntroduction.md at main · MicrosoftDocs/minecraft-creator
This is the repository for Minecraft Bedrock documentation. - MicrosoftDocs/minecraft-creator

JavaScriptを使ったカスタマイズの実例

では、実際にJavaScriptを使ってどのようなカスタマイズができるのか、いくつかの例を見てみましょう。

  1. モブのカスタマイズ
    例えば、ゾンビを昼間でも燃えないようにしたい、あるいはエンダードラゴンをもっと強力にしたいといった要望に応えることができます。
    JavaScriptのスクリプトを使って、モブの行動やステータスを変更することが可能です。例えば、以下のようなスクリプトで、
    ゾンビが太陽の光に無敵になるように設定できます。
JavaScript
world.events.beforeMobEffect.add((eventData) => {
    if (eventData.mob.type === "minecraft:zombie") {
        if (eventData.effect === "minecraft:fire_resistance") {
            eventData.canceled = true;
        }
    }
});

このスクリプトは、ゾンビが炎上する前に「耐火性」を付与することで、燃えなくするというシンプルな仕組みです。

  1. 新しいアイテムの追加
    新しいアイテムを作成して、ゲームに追加することもできます。これにより、ゲームのプレイ体験がさらに広がります。
    たとえば、特別な剣を作成して、ダメージが通常の倍になるように設定することも可能です。
JavaScript
let customItem = new Item("my_custom_sword", {
    "display_name": "Super Sword",
    "damage": 20,
    "durability": 1000
});
world.items.add(customItem);

このスクリプトでは、「Super Sword」という名前の特別な剣を作成しています。通常の剣よりも強力で耐久性も高いため、プレイヤーにとっては強力な武器となるでしょう。

  1. ゲームルールの変更
    ゲームのルール自体を変更することも可能です。例えば、落下ダメージを無効にしたり、特定の条件下で天候をコントロールしたりすることができます。
    これにより、独自のサバイバルモードやアドベンチャーモードを作成することができます。
JavaScript
world.events.tick.subscribe(() => {
    world.setWeather("clear");
    world.players.forEach((player) => {
        player.setHealth(20);
    });
});

このスクリプトでは、天候を常に晴れに保ち、プレイヤーの体力を自動的に回復させるというシンプルなルールを追加しています。
こうすれば、プレイヤーは安全に探索や建築に集中することができるようになります。

なぜJavaScriptが選ばれたのか?

「でも、なんでJavaScript?」と思うかもしれません。ここでは、なぜJavaScriptが選ばれたのか、その理由について少し触れてみましょう。

  1. クロスプラットフォーム対応の強み
    JavaScriptは、ウェブブラウザをはじめとする多くのプラットフォームで動作するため、クロスプラットフォーム対応が求められるマインクラフトには非常に適した言語です。
    どのプラットフォームでも一貫した動作を保証することができる点が、選ばれた大きな理由の一つです。
  2. コミュニティの活発さ
    JavaScriptは世界中で広く使われており、活発なコミュニティが存在します。これにより、多くのリソースやサポートを得ることができるため、開発者やプレイヤーがスクリプトを作成する際にも役立つでしょう。
  3. 学習のしやすさ
    JavaScriptは、他のプログラミング言語に比べて比較的学習しやすい言語とされています。
    プログラミングにそれほど詳しくないプレイヤーが自分でスクリプトを作成し、マインクラフトの世界をカスタマイズするための障壁が低い点も、この言語が選ばれた理由の一つです。

JavaScriptがもたらす可能性

JavaScriptがマインクラフトに導入されたことで、ゲームの可能性が大きく広がりました。
プレイヤーは、JavaScriptを使って自分だけの世界を作り上げることができ、その結果として、無限のプレイスタイルが生まれています。

さらに、この技術は単なる遊びではなく、実際にプログラミングの学習にもつながります。マインクラフトを通じてJavaScriptに触れることで、プログラミングに興味を持ち、そのままウェブ開発やゲーム開発に進む若者が増えるかもしれません。これは、教育の面でも非常に大きな可能性を秘めています。

まとめ

今回は、マインクラフトで使われているJavaScriptの技術について見てきました。

JavaScriptが、どのようにしてこのゲームの中で重要な役割を果たしているのかを知ることで、ゲーム開発の裏側にある技術の一端を垣間見ることができたのではないでしょうか。

JavaScriptとマインクラフトに興味があれば、ぜひオリジナルのスクリプトを書いてみてください。
マインクラフトの世界で、自分だけの冒険を作り出すことができるかもしれませんよ。

それでは、素敵なマインクラフトライフをお楽しみください!

コメント

タイトルとURLをコピーしました