マインクラフトでマリオを作った話

まずこちらの動画をご覧ください。


こちらのマイクラマリオステージをどのようにして作ったか、
どういう仕組みで動いているかを解説していこうと思います。

はじめに

このステージの特徴として、MODを一切使っておりません
(当時FRESHというサイトでMODの配信が禁止されていた)
リソースパックでテクスチャを書き換え、コマンドブロックで動いています。

尚、このステージは2年ほど前に作ったもので、
マインクラフトのバージョンは1.12.2で動いています。(現在は1.16.3が最新)

現在とは微妙に仕様が変わっていたりする可能性がありますので、
今回は「作り方の解説」ではなく、昔こんなのを「作った話」としてご覧ください。

ステージの全貌

ちなみに、遊んでいる本人の視点はこんな感じです。

リソースパックを使わないとこんな感じになります。

テラコッタ等の、あまり使っていなかったブロックのテクスチャを差し替えました。
勿論、差し替え用の画像は自分で作りました、、

壁の後ろ側はこんな感じになっています。

制御用のコマンドブロックがいっぱいです。
2年前の自分、たった1回の放送の為によく頑張ったなぁ。。w

ステージギミック

ここからはギミックの解説と、その仕組みを解説していきます。

ゲーム開始

まずステージの入口に感圧板があります。

これを踏むと、お馴染みのテレッテテレッテ♪という曲が流れます。
それと同時にプレイヤーは、ジャンプ力がマリオ並に上がり、赤い帽子を被ります。

仕組みは簡単です。

感圧板から来る信号で、まずコマンドブロックが2つ発火します。
(画像だと見えませんが壁の裏にもう一つコマンドブロックがあります)

// プレイヤーに帽子を被せる
replaceitem entity @p slot.armor.head minecraft:帽子のブロックID
// プレイヤーにジャンプ力を付与
effect @p minecraft:jump_boost 600000 4 true

帽子のブロックはリソースパックを使って適当なブロックを書き換えています。
詳しくはこちらの記事をご覧ください。

Screenshot

マインクラフトでオリジナルアイテムを作ろう!

リソースパックを使ってオリジナル3Dアイテムの作り方を解説しています。

それから、レッドストーンリピーターで適当に遅延を与えながら音符ブロックで演奏させます。

「?」ブロック

「?」ブロックを頭で叩くとアイテムが出てきます。

ここから段々めんどくさくなっていきます。
後ろのコマンドブロックを見てみましょう。

少し見辛いのですが、
「?」ブロックの裏側に紫のコマンドブロック(リピート)があり、
そこからレッドストーンコンパレーターレッドストーン回路と続き、
オレンジのコマンドブロック(インパルス)緑のコマンドブロック(チェーン)と続いています。

まず紫のコマンドブロックは電力を必要とせず常に起動し続けるブロックです。
testfor @p[x=-371,y=74,z=-252,dx=0,dy=1,dz=0]
これは特定の座標にプレイヤーが来ると発火する、というコマンドです。
今回の場合、「?」ブロックの1マス下の座標にプレイヤーが来た時に発動するようになっています。
そして、信号はレッドストーンコンパレーターから次のコマンドブロックに向かいます。
summon Item -371 77 -253 {Item:{id:0297,Count:1}}
このコマンドで特定の位置にアイテムを召喚します。
「?」ブロックの右上にアイテムを出現させています。信号は次のコマンドブロックへ。
fill -373 75 -254 -373 75 -254 minecraft:air
fillというコマンドは特定の座標に特定のブロックを配置するコマンドです。
これは「?」ブロックを何度も叩いて、何度でもアイテムが入手出来てしまわないように、レッドストーン回路を破壊しています。
コンパレーターコマンドブロックの間にレッドストーンを置いていたのは、破壊と修正を楽にするためです。
そして最後のコマンドブロックへ。
fill -371 75 -252 -371 75 -25 minecraft:silver_glazed_terracotta
このコマンドで、「?」ブロックを叩いた後の空のブロックに変更しています。

孔明ブロック

特定の場所に近づくと急に隠しブロックが出てくる、いわゆる「孔明ブロック」もあります。

これも先ほどの「?」ブロックと基本的に同じ仕組みです。
プレイヤーが特定の座標に現れた時に発火し、特定のブロックを表示させるという仕組みです。
絶妙のタイミングで壁を表示させてプレイヤーが通過できないようにする為に、何度も検証を重ねて座標を決めました。

土管ステージ

ある土管は、入ると「土管ステージ」に入れます。

これぐらいなら先ほどのfillでもいいのですが、cloneを使っています。
壁の裏を見てみましょう。

壁の裏に、後から表示させるステージを作っています。
今回は土管の中に設置した感圧板を踏むことで発火させます。

// 壁の裏に作ったステージをコピペする
clone -355 60 -274 -335 69 -274 -355 60 -272
// プレイヤーを土管の下にテレポート
tp @p -351 68 -272
// 土管ステージの背景になるブロックを置く
fill -355 69 -273 -335 60 -273 minecraft:concrete 15
// 初期出現アイテムx3
summon Item -347 67 -272 {Item:{id:0297,Count:1}}
summon Item -348 67 -272 {Item:{id:0297,Count:1}}
summon Item -349 67 -272 {Item:{id:0297,Count:1}}
ちなみに土管の出口にはtestforで発火するコマンドブロックがあり、
プレイヤーを土管の外へ運び、土管ステージを元に戻す(消す)コマンドが入っています。

ゴール

マリオのゴールといえばこれですよね。

仕組みは簡単です。
ゴールのバーの座標をtestforして、
あとはレッドストーンリピーターで遅延を与えつつ時差式cloneで旗を下げていけばOKです。

最後におまけで花火もcloneで表示してます。

おわり

実際にはこの先にステージ2があったりするんですが、仕組みは一緒なので割愛します。
testforで検出してsummonやらcloneを使って、最後にfillで回路を壊して、の繰り返しですw
ちなみに、間違えて発動させてしまったり、テストした時にすぐに元に戻せるように、元に戻すための回路も用意していました。

実際こんな数のコマンドブロックを置いていると、頭がおかしくなってきます。。
こうしてできたステージを、生放送で初めて挑戦してもらうと緊張感が半端ないです。
でも結果、無事に動いて本当に安心したのを覚えています。

これをご覧頂いた皆さんも是非素敵なステージ作りに挑戦してみてください♪

投稿者

じん
「とかい育ち」という3人組でゲーム実況やってます!
生放送の画面作りにこだわりだして、そのことをブログに書かせてもらってます。
プログラミングは独学で素人レベルですが、動けばいいの精神で色々作ってます!

コメントを書く

*
*
* (公開されません)