スクラッチでマリオっぽいスクロールゲームを作る上級技① マップチップでゲームを熱くするプロの技

スクラッチでマリオっぽいスクロールゲームを作る上級技① マップチップでゲームを熱くするプロの技
グリフパッチ(動画)
ok-scratch(解説)

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

マリオ、マイクラ、忍者伝などの本格スクロールゲームを作ってきたグリフパッチさんが、スクロールゲームの作り方を公開してくれた!マップチップをタイルのように並べるゲームエンジンを一緒に作って、君も大人気スクラッチゲームを生み出そうぜ!
スターター
プロジェクト
リミックス用プロジェクトへ
難しさ

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

LOADING...

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

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

スクラッチでスクロールゲームを(つく)ろうとすると、どうやって画面(がめん)(うご)かすか(なや)()よね。ただ画面(がめん)(うご)かすだけではなくて途切(とぎ)れないようにステージを表示(ひょうじ)させることも(かんが)えると……もうパニック!そこで今回(こんかい)はスーパースクラッチャーのグリフパッチさんが公開(こうかい)してくれているマップチップという画像(がぞう)駆使(くし)するスクロールゲームの(つく)(かた)一緒(いっしょ)()ていく!ちなみにマップチップを使(つか)ったスクロールは上級(じょうきゅう)(わざ)だからかなり(むずか)しい。リストも使(つか)うし数学的(すうがくてき)なトリックもたくさん使(つか)っていく。だからこそ(こう)品質(ひんしつ)仕組(しく)みになる。でもなによりの魅力(みりょく)として一度(いちど)(つく)ればハイクオリティなアクションゲームを量産(りょうさん)できるようになるっていうのがね!(むずか)しくても挑戦(ちょうせん)してやるぜ!って気持(きも)ちをかきたてる。やっほーい!
スクラッチでマリオっぽいスクロールゲームを作る上級技① マップチップでゲームを熱くするプロの技を語るok-scratch ok-scratch

u003cpu003e中級者(ちゅうきゅうしゃ)()けのスクロールゲームの(つく)(かた)はこちらのu003ca href=u0022https://scratch.coach/lesson/mario/u0022u003eマリオの(つく)(かた)(よこ)スクロールを制覇(せいは)せよ」チュートリアルu003c/au003eで公開(こうかい)しているよ。こっちはマップチップではなくてコスチュームでステージを管理(かんり)するから、このチュートリアルに(くら)べると(やさ)しい。u003c/pu003e

今回(こんかい)目標(もくひょう)「マップチップをグリッド(じょう)描画(びょうが)する」

マップチップとグリッドという単語(たんご)()らない(ひと)(おお)いと(おも)うので、まず単語(たんご)説明(せつめい)をしていく。

マップチップとグリッド

まずコレを()てほしい↓
(なに)()える?え?チョコレート?残念(ざんねん)!これは(つち)だね(たぶん)じゃあコレは?↓
これはアレでしょ!ピカっと(ひか)るスキンヘッドを(うし)ろから()画像(がぞう)マリオに()てくるブロックの1つだよね!たくさん(なら)べてみると()かりやすいかも。
出典(しゅってん):グリフパッチさんの動画(どうが)「Star Power Up | Making Super Mario Game in Scratch E20」
↑の画像(がぞう)で3つブロックが(なら)んでるよね。(じつ)はこのスクショを解析(かいせき)するとめっちゃたくさんの「(ちい)さな画像(がぞう)(マップチップ)」が使(つか)われてるんだ。こんな(かん)じで↓
方眼(ほうがん)用紙(ようし)みたいに格子(こうし)(じょう)(せん)()いてみた。実際(じっさい)()えない(せん)だけど、このマス1つ1つにマップチップと()ばれている(ちい)さな画像(がぞう)配置(はいち)しているんだよね。そしてこの方眼(ほうがん)用紙(ようし)マスみたいに(なら)んでいるデザインを「グリッド」()んでいるんだよ。
スクラッチでマリオっぽいスクロールゲームを作る上級技① マップチップでゲームを熱くするプロの技を語るok-scratch ok-scratch

u003cpu003eマップチップはゲーム開発(かいはつ)用語(ようご)だけど、グリッドはデザイナーとかプログラマーでも(かなら)()っている用語(ようご)だよ。u003c/pu003e

このチュートリアルの趣旨(しゅし)としては「マップチップでスクロールゲームを(つく)ろう」というものだけど、マップチップでスクロールゲームを(つく)るというのは、こういう(ちい)さい画像(がぞう)をたくさん(なら)べてステージや(てき)やアイテムを(つく)って、それがマリオの(うご)きに()わせて一緒(いっしょ)(うご)くゲームを(つく)()()えることもできるのだ。そして今回(こんかい)目標(もくひょう)はとりあえずグリッド(じょう)にマップチップをプログラマティックに配置(はいち)するロジックを(つく)りたい。
スクラッチでマリオっぽいスクロールゲームを作る上級技① マップチップでゲームを熱くするプロの技を語るok-scratch ok-scratch

u003cpu003e今後(こんご)はu003cemu003eマップチップのことを「タイル」u003c/emu003eと()んでいくね。タイルっぽいっしょ?u003c/pu003e

スタータープロジェクトをリミックスしよう

グリフパッチさんが用意(ようい)してくれたスタータープロジェクトを、日本(にほん)らしくマリオの画像(がぞう)とか音楽(おんがく)除去(じょきょ)したものを用意(ようい)したので使(つか)ってほしい!オリジナルのスタータープロジェクトとは以下(いか)(てん)(ちが)うよ。
  • マリオはスクラッチキャットに()わってる
  • マリオ固有(こゆう)のキャラ(クリボーやノコノコなど)とアイテム(キノコやフラワーなど)は()してある。(ただしクリボーはピコに、キノコはリンゴにしておいた)
  • マリオ固有(こゆう)音楽(おんがく)削除(さくじょ)してある(ジャンプ(おん)とかは(のこ)ってる)
  • 実際(じっさい)のマリオのゲーム背景(はいけい)っぽい画像(がぞう)はスクラッチの背景(はいけい)画像(がぞう)()()えてある
スクラッチでマリオっぽいスクロールゲームを作る上級技① マップチップでゲームを熱くするプロの技を語るok-scratch ok-scratch

u003cpu003eグリフパッチさんが()()イギリスではフェアディーリングという法律的(ほうりつてき)解釈(かいしゃく)があって、()商業(しょうぎょう)目的(もくてき)私的(してき)学習(がくしゅう)目的(もくてき)なら著作権(ちょさくけん)とか寛容(かんよう)らしい。一方(いっぽう)(いま)のところ日本(にほん)ではそういう法律(ほうりつ)はないのでマリオの画像(がぞう)などは除去(じょきょ)したスタータープロジェクトになっています。u003c/pu003e

タテにタイルを(なら)べる

まずはタイル(マップチップ)を(たて)(れつ)(なら)べるロジックに()()んでいくぞ。ロジックの特徴(とくちょう)としては(した)から(うえ)()かって(なら)べていくところ。じゃあタイルのスプライトを(えら)んでいこう!
それでコスチュームを9番目(ばんめ)のBlock-Goldに変更(へんこう)しておこう。なぜって?そりゃ、このブロックはグリフパッチさんのお()()りだからだよw

サイズ

すべてのタイルは縦横(じゅうおう)16x16の正方形(せいほうけい)なんだけど、ちょっと(ちい)さいから()()を2(ばい)にして(あつか)っていく。つまり()()は32x32の正方形(せいほうけい)になる。
スクラッチでマリオっぽいスクロールゲームを作る上級技① マップチップでゲームを熱くするプロの技を語るok-scratch ok-scratch

u003cpu003e16とか32というサイズの()は、今回(こんかい)のスクロールシステムを構築(こうちく)する(うえ)(ちょう)重要(じゅうよう)数字(すうじ)になってくる。ある意味(いみ)ではこの16と32がプログラム全体(ぜんたい)大黒柱(だいこくばしら)といっても過言(かごん)ではない。32を基準(きじゅん)にしたいからu003cemu003e1マス = 32 x 32の正方形(せいほうけい)u003c/emu003e、という意味(いみ)使(つか)っていくね。u003c/pu003e

位置(いち)

暫定的(ざんていてき)中央(ちゅうおう)()くように設定(せってい)する。

実験(じっけん)してみよう!

ここからは実験(じっけん)タイムだ。まずはクローンを(つく)ってY座標(ざひょう)を32()えるブロックを()いてみて。どっか適当(てきとう)場所(ばしょ)()いてOK。
これをクリックしてみて。そしたらこんな(かん)じになるはず↓
おお!なんかすでに完成(かんせい)()えたw()(はや)いかw

ループで自動生成(じどうせいせい)する

じゃあもっとたくさん(つく)るようにループで(かこ)ってみようか。5(かい)()(かえ)すようにしよう。
クリックしてみると↓
(はしら)()った!

変数(へんすう)「■クローン生成(せいせい)(すう)Y」を(つく)

この5という数字(すうじ)はあとで(すこ)()えるけど、(たて)にクローンを何個(なんこ)(つく)るかという定義(ていぎ)として変数(へんすう)()しておこう。変数(へんすう)(めい)は「■クローン生成(せいせい)(すう)Y」だ。(ぼく)のマイルールだけど、■という接頭語(せっとうご)定数(ていすう)意味(いみ)するよ。定数(ていすう)一度(いちど)設定(せってい)したら、ゲーム開始(かいし)()()わらない変数(へんすう)のことなんだ。
スクラッチでマリオっぽいスクロールゲームを作る上級技① マップチップでゲームを熱くするプロの技を語るok-scratch ok-scratch

接頭語で変数やブロック定義などの種類をパッと見で分かるようにする方法は、コーディング規約としてまとめてあるよ。興味がある人はチェックしてね。

初期(しょき)()する
これは(みどり)(はた)()されたときに初期(しょき)()されるようにしておこう。
使(つか)
実験(じっけん)(ちゅう)のプログラムでも使(つか)っていく。
結果(けっか)()わらないので()(つづ)きやっていこう。

ブロックの位置(いち)をズラす

(いま)はブロックが画面(がめん)(うえ)(かたよ)ってるから、これを中央(ちゅうおう)配置(はいち)されるようにセンタリングしてみる。これでブロックをズラす感覚(かんかく)()っていこう。ズラし(かた)はカンタン。たんにY座標(ざひょう)()えるだけ。まず(しき)(つく)ってみよう↓
変数(へんすう)「■クローン生成(せいせい)(すう)Y」にマイナス16を()けた数字(すうじ)をY座標(ざひょう)(くわ)える……おっといきなりマイナス16という(なぞ)数字(すうじ)()てきたね。16というのはブロックのサイズ(32)の半分(はんぶん)意味(いみ)してるんだ。半分(はんぶん)ズラしたいから16を使(つか)ってるよ。で、なぜマイナスかというと今回(こんかい)はブロックを(した)()げたいから。くっつけて実験(じっけん)(よう)プログラムに追加(ついか)してみよう。
テストすると……。
画面(がめん)中央(ちゅうおう)にブロックが配置(はいち)されるようになったね!これでタテにブロックを(なら)べるという要件(ようけん)実現(じつげん)目処(めど)()った。素晴(すば)らしい。(おお)いなる一()だよ。

グリッド(じょう)にタイルを(なら)べる

タテにタイルを(なら)べることに成功(せいこう)したというのは、方眼(ほうがん)用紙(ようし)のタテ一(れつ)のマスが(つく)れたようなものだよ。あとはこれをヨコにもズラしていきたいね。さぁどんな作戦(さくせん)がいいかな。うん、今回(こんかい)はヨコに1マスだけズラして(ふたた)(した)から(うえ)にタイルを配置(はいち)するようにしていこう。

ヨコに1マス(うご)かす

とりあえず(となり)(れつ)移動(いどう)するためにX座標(ざひょう)を1マス(うご)かそうか。
これで実行(じっこう)するとこうなる↓
最後(さいご)の1つがヨコにズレたね。よしよし。じゃあもう一(かい)、いや4(かい)くらい(つづ)けて実験(じっけん)(よう)プログラムをクリックしてみてくれる?すると……。
おおお!なんかいい(かん)じにグリッド(じょう)(なら)んだよ!完成(かんせい)じゃんwいや、まだだ、まだ()わらんよ……。

自動(じどう)でグリッド(じょう)(なら)べる

いちいちクリックせずに()まった回数(かいすう)だけX方向(ほうこう)にもタイルが配置(はいち)されるようにしていこう。

変数(へんすう)「■クローン生成(せいせい)(すう)X」をつくる

まぁ(つく)るんでしょうね、と(おも)っていたあなた!正解(せいかい)です。Yを(つく)ったならXも(つく)るのです。
初期(しょき)()する
5を()()てておこうか、とりあえず。
Yの(うえ)()いとく、X→Yのほうが自然(しぜん)ゆえ。(うご)きに()はないけど。

実験(じっけん)(よう)プログラムをループで(かこ)

この変数(へんすう)回数(かいすう)()(かえ)すループブロックで実験(じっけん)(よう)プログラム全体(ぜんたい)(かこ)おう。

X方向(ほうこう)にも(はん)マスだけズラしておく

Y方向(ほうこう)にもズラしてセンタリングしたので、X方向(ほうこう)にもズラしておこう。実験(じっけん)結果(けっか)()やすくなるし、X方向(ほうこう)にもズラす感覚(かんかく)()につけることができる。

テストしてグリッド(じょう)になってるか確認(かくにん)する

実行(じっこう)するとこんな(かん)じになるはず!
きたこれ。ほぼグリッドだわ。ん?なにか()いたそうだね?(ひと)(あま)ってる?いや、()のせい()のせい、ちっちゃいことは()にすんなワカチコ……ん?たしかに1つ(あま)ってるタイルがいるね!ひゅー、(ぼく)じゃなきゃ見逃(みのが)しちゃうところだったね。

本体(ほんたい)(かく)

この1つはクローンではなくて本体(ほんたい)なので、最初(さいしょ)表示(ひょうじ)するブロックを()いて最後(さいご)(かく)すブロックを()けば解決(かいけつ)だよ。
実行(じっこう)結果(けっか)は↓
スマッシュ!やったぜ。

実験的(じっけんてき)にタイルをランダム生成(うみな)してみる

いまはグリフパッチさんが大好(だいす)きな9番目(ばんめ)のコスチュームだけなんだけど、(ため)しにこれをランダムで()えてみようか。
スクラッチでマリオっぽいスクロールゲームを作る上級技① マップチップでゲームを熱くするプロの技を語るok-scratch ok-scratch

u003cpu003eタイルを()える処理(しょり)について(すこ)しずつ()れていくためだよ。u003c/pu003e

これで実行(じっこう)するとデタラメなタイル生成(せいせい)成功(せいこう)する↓

ブロック定義(ていぎ)「_初期(しょき)()する」を(つく)

さて、(いま)まで実験(じっけん)(よう)にクリックで実行(じっこう)してきたプログラムを、ブロック定義(ていぎ)にまとめていこうと(おも)う。(さい)描画(びょうが)()しで実行(じっこう)する初期化(しょきか)処理(しょり)としてまとめていく。
ぱっと()(さい)描画(びょうが)なしって()かるように、接頭語(せっとうご)にアンダーバーをつけておこうと(おも)う。

実験(じっけん)(よう)プログラムをまるっと移動(いどう)する

このブロック定義(ていぎ)にさっきまで(つく)ってたプログラムを()れていこう。

()()

(みどり)(はた)のところで()()すようにする。
(いま)まではズラ~~~っとタイルが配置(はいち)される様子(ようす)()えてたけど、これでパッと生成(せいせい)されるようになったはず!
やったぜ。

スクロール処理(しょり)(つく)っていく!

グリッド(じょう)表示(ひょうじ)する基礎(きそ)(ととの)った。これを画面(がめん)全体(ぜんたい)拡大(かくだい)させるまえに、スクロールする処理(しょり)(つく)っていく。そのほうが全体(ぜんたい)のメカニズムを把握(はあく)する(うえ)効率的(こうりつてき)だからなんだ。区切(くぎ)りがいいからスクロールは(つぎ)記事(きじ)解説(かいせつ)していく。ここまでだけでもグリッドシステムを共有(きょうゆう)することができて(うれ)しい。スクロールゲームに()けて素晴(すば)らしい一()()()せてるよ!この調子(ちょうし)でやっていこう♪
ブクマよろしくお願いします! ブクマよろしくお願いします!
どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!

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

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

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