スクラッチでマイクラ風ゲームを作る④ 新クラフトレシピを追加する

スクラッチでマイクラ風ゲームを作る④ 新クラフトレシピを追加する
グリフパッチ(動画)
ok-scratch(解説記事)

和訳解説は動画作者のグリフパッチさんご本人から許可をいただいて掲載しております。
チャンネルはYOUTUBE ( by griffpatch )からどうぞ。

新しいクラフトレシピを作る方法を学べるよ。
難しさ

任意)自分の作業中のスクラッチ作品URLを記録しておこう!再開するときに便利だよ。

LOADING...

※ この記録は今使ってるPCに保存されます。別のPCで作業するときは表示されません。

スクラッチプログラミングに挑戦している皆さん、どうも!スクラッチコーチです。

前回はチーズのブロックを追加したぞ!

今回のレッスンもペーパーマインクラフトをリミックスする前提だから、まだの人は最初のレッスンから読んでね。スタータープロジェクトもあるから始めやすいと思うよ。

今回の目標を確認する「チーズのレシピを作る」

今回はチーズ(のカタマリ)を、チーズのかけらからクラフトで作るレシピを追加するぞ。

反対に、チーズブロックをチーズのかけらに戻すレシピもやってみる。

このレッスンを通して、新しいクラフトレシピを作る方法を学べるよ。

レシピ用のリストデータを書き出そう

チーズのかけらやチーズを追加するときは_BLOCK_DATAというリストを使っていたけど、レシピは別のリストに格納されているんだ。

その名も「_Recipesレシピズ」だ。レシピの複数形、分かりやすいね。

これを表示して右クリックで書き出しをしよう。

レシピファイルの中身を確認する

_BLOCK_DATA.txtと違って、_Recipes.txtはヘッダー(最初の見出し部分)がたったの4行だけだ。

上からカンタンに説明しとく。

  • Recipe Desc……これは名前だね、レシピ名。ブロックの名前になるよ。
  • Recipe Product……これはブロックIDだね。コスチュームIDではなくて、ブロックIDだから注意。
  • Recipe Quantity Made……1回のクラフトで何個作られるかを定義できるよ。
  • Recipe 3x3……これだけは複雑だけど、実際のレシピを記述するところだよ。

よっしゃ見ていこう!

スクラッチでマイクラ風ゲームを作る④ 新クラフトレシピを追加するを語るok-scratch ok-scratch

今回も何も変更されてないペーパーマインクラフトをリミックスした作品を前提にするから、もしもキミが何らかのMODをリミックスしてるならここから先に出てくるブロックIDとかは適宜自分の環境を確認しながら変えてね。そうじゃないなら気にしなくてOK!

データをコピペする

一番下のデータ4行をコピーして、ファイルにペーストしよう。ここでも一行空白をもうけることを忘れずにね。

データを加工する

とりあえず上3つはカンタンだからサクサクっと変えよう。

表に合わせて変更する

自分の_BLOCK_DATAの中身を見ながら変更しよう。

見出し 変更前 変更後 補足
-- Recipe Desc|レシピ名 -- Emerald -- チーズ 自分で定義したブロック名を先頭のダッシュ2個に続けて書く。
-- Recipe Product|ブロックID 272 289 自分で定義したブロックIDを書く。
-- Recipe Quantity Made|何個できるか 9 1 1個作るようにする、とりあえず。
-- Recipe 3x3|レシピ 後述

続けて-- Recipe 3x3の部分を見ていこう!

-- Recipe 3x3

ここが今回のメインディッシュ、一番の難所だ。

完成形を考える

まずは作りたいレシピを考えてみよう。今回はチーズのかけらを4つ四角く並べたらチーズが1つクラフトできるようにしたい。

こんな感じだね。このタイミングで使う素材のブロックIDをチェックしておこう。_BLOCK_DATA内に定義したものだよ。

今回はチーズのかけらしか使わないから、288だけ覚えておけばOKだ。

スクラッチでマイクラ風ゲームを作る④ 新クラフトレシピを追加するを語るok-scratch ok-scratch

使う素材が複数あるときはどこかにメモっておこう。

レシピデータのルールを把握する

ペーパーマインクラフトのクラフトがどのように実装されているかについて知っておこう。そうすることでここの実装はグッとカンタンになるよ。

左下寄せの法則

ユーザーがどのマスに何を置いたかを調べて、それに合致するレシピを_Recipesリストから検索してクラフトを完成させるようになっているんだ。

この過程で、ユーザーが配置したブロックはいったん左下に寄せて考えるようになってる。そのおかげでユーザーはどのマスに置いても順番さえあってればクラフトできるんだ。

1マス3桁の法則

各マスには素材が入るよね。素材はすべてブロックIDを持ってる。ブロックIDは1桁のものもあれば、3桁のものもある。でも細かいことは気にせずに全部3桁として取り扱うっていうルールになってるんだよ。

  • 素材があれば素材のブロックID、たとえば288。1マス3桁を意識して書くと「2|8|8」みたいな感じ。
  • 何もなければ#だけ書く。1マス3桁を意識して書くと「 | |#」って感じ。

まとめると下記のようになる。

左下スタートの法則

これを一行にまとめるんだけど、どこから書いていくかというとシンプルに左下。左寄せだから左下っていうのは分かりやすくて助かるね。

この画像だけでも分かっちゃう人は自分で書いてみよう。ちょっとむずかしいなっていう人は一緒に①、②、③と書いていこうぜ。

①の行

一番下からやってみよう。

左下にはチーズのかけらがあるから、まず288。

真ん中にもチーズのかけらがあるから288だね。

最後はなにもないから#だけ。でも1マス3桁の法則だから□□#にする。

続けて書くと、

288288  #

となる。

②の行

イエス!まったく同じじゃないか。なら288288 #だね。これを①に続けて書くよ。

288288  #288288  #

こんな感じ。最初の288288 #は①の部分ね。

③の行

なんもないけど、ここも書かないとダメなんだ。

ぜんぶハッシュだ!続けて書くと□□#□□#□□#だね。これを①と②の続きに書くぞ!

288288  #288288  #  #  #  #

よっし!これで完成。これが--Recipes 3x3に記述するレシピデータだ!パッと見だと暗号にしか見えないけど、改めて見ると意味を持ったデータに見えてこない?認識してるかどうかで数字の羅列が意味を持つ、不思議だよね〜。

データの確認

見出し 変更前 変更後 補足
-- Recipe Desc|レシピ名 -- Emerald -- チーズ 自分で定義したブロック名を先頭のダッシュ2個に続けて書く。
-- Recipe Product|ブロックID 273 289 自分で定義したブロックIDを書く。
-- Recipe Quantity Made|何個できるか 9 1 1個作るようにする、とりあえず。
-- Recipe 3x3|レシピ 273 # # # # # # # # 288288 #288288 # # # #  

これで完成だ!

ファイルを保存する

できたらファイルを必ず保存しよう。

  • WindowsならCtrl + S
  • MacならCmd + S

リストデータを読み込む

ではペーパーマインクラフトをリミックスしたプロジェクトを開こう。

スクラッチエディタで、リストを右クリックして「読み込み」をクリックしよう。

こんな感じで今しがた保存したファイルを選択しよう。

これで_Recipesの一番下を見てみよう。

良さそう。

スクラッチでマイクラ風ゲームを作る④ 新クラフトレシピを追加するを語るok-scratch ok-scratch

改行とかミスってると文字が隠れてたりするから、うまくいかない人はリストの中身をちゃんと見てみてね。

クリエイティブモードにして確認する

緑の旗を押して、クリエイティブモードでスタートしよう。

チーズのかけらを確保する

Eキーを押して5 - Foodstuffsフードスタッフスでチーズのかけらを4つインベントリに確保しよう。

サバイバルモードにする

Tキーを押してコマンド入力欄を開いて/gm sと入力しよう。

/gm s

クラフトしてみよう!

Eキーを押してクラフトエリアを開いたらチーズのかけらを置いてみよう!マスの上でスペースキーを押せば1つずつ置けるぞ。

完璧だね。

戻してみる

復習がてらチーズをチーズのかけらに戻すレシピも作っておこう。

_Recipes.txtにデータを追加する

コピペして型になるデータを追加しよう。

とりあえず上3つを変える

  • -- チーズのかけら
  • 288
  • 9

--Recipesを作る

左下に1つでもチーズがあればチーズのかけらに戻るようにしよう。

つまり289が先頭に1つあればOKということ。

289  #  #  #  #  #  #  #  #

データを確認する

見出し 変更前 変更後 補足
-- Recipe Desc|レシピ名 -- チーズ -- チーズのかけら 自分で定義したブロック名を先頭のダッシュ2個に続けて書く。
-- Recipe Product|ブロックID 289 288 自分で定義したブロックIDを書く。
-- Recipe Quantity Made|何個できるか 1 9 1個作るようにする、とりあえず。
-- Recipe 3x3|レシピ 288288 #288288 # # # # 289 # # # # # # # #  

これでファイルを保存してからリストに読み込ませよう。

リストを念のため確認する

おっと、失敗しちゃった。

改行したつもりだったけど、できてなかったみたいだ。しっかり改行してから再び読み込ませたよ。みんなは大丈夫かな?

テストしてみる!

ちぃぃぃぃぃぃぃっず!

固定値フォーマット

以上で終わりだよ。ここは蛇足コーナー。

今回1マス3桁ルールっていうのを紹介したよね。ここは何桁でも絶対に3桁にする、ここは5桁にする、みたいに桁数を固定してデータを管理する手法は固定値フォーマットって呼ばれてる。

固定値フォーマットは実際のシステム開発やゲーム開発でも使われる、めちゃめちゃプロ仕様のテクニックなんだよ。グリフパッチさんはスクラッチでじゃんじゃんプロの現場で使われるテクを使いまくってくれるところも刺激的だよね。

今後スクラッチ以外でゲーム開発しようと思っている人やシステム開発しようとしている人にも、しっかり役立つテクニックだから、このチュートリアルを頑張った人は一歩プロへの階段を登ったことになるんじゃないかな!おめでとう!

次へ

次回はチーズを食べられるようにしたい!チーズ持ってるのに食べられないなんて悲しすぎる!近日公開予定だから、ブクマして待っておいてくれ!更新しました!

ブクマよろしくお願いします! ブクマよろしくお願いします!
どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!

スクラッチプログラミングのゲーム攻略

スクラッチプログラミングのゲーム

    • 厳選されたスクラッチ人気作品リストがレビュー付きで楽しめます
      趣味に関するスクラッチ作品例
      勉強になるスクラッチ作品