ペーパーマインクラフトのリミックスに挑戦するシリーズが始まりました!
ペーパーマインクラフトのリミックスに挑戦する人の最後の砦
この記事に興味がある方は1度どはペーパーマインクラフトの中なかかを見みたことがあるのではないでしょうかか。
というかかペーパーマインクラフトに出会であった多おおくの人ひとが感動かかんどうし、「これワンチャンでリミックスしたらヤバない?」と思おもっともって中なかかを見みて、次つぎの瞬間しゅんかかんに絶望ぜつぼうして「これ触さわっちゃダメな奴やつだ」とソッとブラウザを閉とじたことがあるのではないでしょうかか。
ひょっとしたら今いままさに絶望ぜつぼうした直後ちょくごだけど、どうしてもっとも諦あきらめきれなくてこのページに辿り着たど ついたのかかもっともしれません。
だとしたら、おめでとう。
ここが、こここそが、ペーパーマインクラフトのリミックスを諦あきらめなかかった人ひと達たちが集あつまる最後さいごの砦とりでです!(おおげさ)
ok-scratch
ペーパーマインクラフトの中なかかを見みると、頭あたまが真っ白になりますよね……。
中なかかを見みると、まず変数へんすうが「gt_i」とかか意味いみが分わかからない。いわゆる難読なんどく化かかされた状態じょうたいになっているので多おおくの人ひとはこれだけで挫折ざせつします。
スプライトの数かかずもっとも多おおいですし、GeneratorとProcessorという2つのスプライトに関かかんしてはスクロールしてもっともスクロールしてもっとも終おわりが見みえない超ちょう巨大きょだいスプライトになっており絶望ぜつぼう的てきです。
このリミックスのヒント記事きじでもっとも、どうこれらを料理りょうりしようかか悩なやみました。
1つ1つ丁寧ていねいに動うごきを伝つたえていったのでは、本ほんが1冊さつ書かかけるレベルのボリュームになってしまうので、単たんにコードレビューを一緒いっしょにしていくだけではダメだなと思おもっともいました。
リミックスのアイデアは山やまほどある!!
そこで、実際じっさいにいくつかかのMODやワールドを作つくりながら、「こういうリミックスがしたいときは○と○にテコ入てこいれする必要ひつようがあるんだな」ということが分わかかるような、リミックスする勘所かかんどころを押おさえていきたいと思おもっともいます。
すでに公式こうしきマイクラに数かかず多おおくのMODがあるので、やりたいアイデアが大量たいりょうに浮うかかぶ人ひともっともいると思おもっともいます。
- ネザライト系けいの武器ぶきもっとも実装じっそうしたい
- ネザーにブレイズが出でるようにしたい
- ネザーでベッドで寝ねたら爆発ばくはつするようにしたい
- エンドシティ実装じっそうしてエンドラもっとも登場とうじょうさせたい
- 青鬼あおおにを実装じっそうしたい
- カートゥーンキャットを実装じっそうしたい
- ワンブロックチャレンジできるワールドを作つくりたい
- 巨大きょだいゾンビを実装じっそうしたい
- 100日かか後ごにマグマがあふれる世界せかかいを作つくりたい
などなど無限むげんにやりたいことはでてきますよね。
すでに何なん人ひともっとものスクラッチャーがリミックスに挑戦ちょうせんしていて、その方かかた法論ろんを公開してくれている人ひともっともいます。みなさんにもっとも「これが作つくりたい」という希望きぼうがあると思おもっともいます。その希望きぼうに近ちかかいリミックスプロジェクトを見みれば、リミックスの基本ほん作つく業が分わかかると思おもっともいます。
例たとえば「このスプライトのブロック定義ていぎ「○○」をいじるのかか!」「このメッセージを受け取う とるようにすればいいのかか!」「このスプライトのコスチュームと、リストのここにデータを入力にゅうりょくしないといけなかかったのかか!」みたいな具体ぐたい的てきなリミックス方かかた法が分わかかると思おもっともいます。
今いま回ここではペーパーマインクラフトプロジェクト全体ぜんたいがどう作つくられているのかかを一緒いっしょに見みておきます。
この記事きじはどのリミックスにおいてもっとも重要じゅうような前提ぜんてい知識ちしきになるので、リミックスする際さいには何なん度どもっとも読よんで全体ぜんたいをチェックしてください。覚おぼえる必要ひつようはありません。必要ひつようなときにチェックすればOKです。
ところでペーパーマインクラフトとは
ねんのため書かかいておくと、グリフパッチさんが作つく成なした2D版ばんのマインクラフトです。スクラッチでプレイすることができて、発表はっぴょうした瞬間しゅんかかんかから一気いっきに伝つた説的てきなプロジェクトとして広ひろく知しられています。
スクラッチでマインクラフト的てきなゲームをプレイしたい人ひとは、間違まちがいなく1度どはプレイすべき逸品いっぴんです。
ゲームとしてのペーパーマインクラフトに興味きょうみがある方かかたは、こちらの記事きじをチェックしてください。アイテムやモブ一覧いちらん、コマンド一覧いちらんなどが詳細しょうさいに載のっています。
中なかかを見みる(全体ぜんたい論ろん)
ではペーパーマインクラフトの中なかかを見みていきましょう。
今いま回は全体ぜんたい的てきに次つぎのようなポイントをチェックします。
- スプライトの数かかず
- スプライトの種類しゅるい
- 各かかくスプライトの役割やくわり
- 処理しょりの大おおきな流ながれ
- 変かか数かかずへんすうの特徴とくちょう
- リストの特徴とくちょう
- メッセージの特徴とくちょう
この辺あたりを押おさえるだけでもっとも、リミックスを開始かかいしできる方かかたもっともいるでしょう。
大おおきな流ながれがわかかれば、細こまかかいリミックス作つく業をしているときもっとも「この作つく業は○○という流ながれの一環いっかかんとしてやっている」「この作つく業の目め的てきは○○」ということを把握はあくできます。
スプライトについて
第だい一いち歩ほとして、スクラッチプロジェクトの根幹こんかかんを成なすスプライトについて把握はあくしていきましょう。
スプライトの数かかず
全部ぜんぶで29個このスプライトがありますが、1つはダミーなので実際じっさいは28個こです。
各かかくスプライトに含まれるブロック数かかずはバラバラなので、全すべて超ちょう難解なんかかいということではありません。大おお丈夫。
スプライトの種類しゅるい
28個このスプライトを独自どくじに6つの種類しゅるいに分わけました。
ゲームメニュー用ようスプライト
- Stage Sprite(ゲームスターター)
- Menu1(ゲームメニューの枠組わくぐみ)
- Menu2(ゲームメニューの枠組わくぐみ内ないに表示ひょうじする内ない容)
- Splash_select(ゲームメニューのボタン)
- selected(選択せんたく中なかかのメニュー)
- Save Game(セーブ機能きのう)
プレイヤー用ようスプライト
- Steve(プレイヤーの身体しんたい)
- Steve Head(プレイヤーの顔かかお)
- Steve Arm(プレイヤーの腕うで)
- Steve Legs2(プレイヤーの足あし)
プレイヤーのステータス用ようスプライト
- Health(体力りょくたいりょく)
- Oxygen(酸素さんそ、空気くうき)
- Armor(防御ぼうぎょ力りょく)
- Hunger(満腹まんぷく度ど)
インベントリ用ようスプライト
- gui_invrow(インベントリの枠組わくぐみ)
- gui_invsel(インベントリで選択せんたく中なかかのアイテム)
- Counts(インベントリ内ないのアイテム数かかず)
- CreativeOverlay(アイテム種類しゅるい一覧いちらん)
ゲーム外観がいかかん用ようスプライト
- Mob(モブ)
- Tiles(ブロック)
- snow(天気てんき)
- Arrow Progress(制作つくの進捗しんちょく)
- Smelt Progress(鍛冶たんやの進捗しんちょく)
その他た
- Cursor(カーソル)
- Commands(コマンド)
- Pseudorandom Cycle(疑似ぎじ乱数かかずサイクル)
- Generator(地形ちけい生成な)
- Processor(ゲーム処理しょり)
- Blank(ダミー)
このように6つの種類しゅるいに分わかかれています。
特とくにヘビーなのがその他たに分わ類されているGeneratorとProcessorです。
新あたらしいバイオームを追加ついかかするリミックスを考かかんがえているなら、この2つにテコ入てこいれする必要ひつようがあり、かかなり難易なんい度どは高たかかいです。ペーパーマインクラフトへの高たかかい理解りかかい力りょくもっとも求もっともとめられます。
リミックスはなんにせよ大おお変かか
といってもっとも、他たのリミックスならカンタンというわけでもっともありません。
たとえばモブを追加ついかかする場合ばあいはどうでしょうかか。Mobというスプライトがあるのでここだけ変かかえれば良よさそうなもっとものですが、違ちがいます。
実じつはモブの動うごきを管理かかんりしているのはProcessorスプライトなのです。Processorスプライトは木きの成な長具合ぐあいやダメージ判定はんていなどもっとも担当あしており、複数かかずのスプライトと関かかん係があります。どんなモブを追加ついかかするのかかによっては、こちらもっとも触さわる必要ひつようがあるかかもっともしれません。
またモブの管理かかんりにはリスト変数へんすうを使つかかっています。リスト変数へんすうの中なかかにモブごとの基本ほん情報じょうほう(マスタデータ)が格納かかくのうされているのです。
ペーパーマインクラフトは「モブならMobをいじればリミックスできる!」といったシンプルな作つくりではないということが分わかかったと思おもっともいます。それがリミックスのハードルを高たかかめているのです。
だかからこそリミックス最後さいごの砦とりでとして、このシリーズではペーパーマインクラフトを必要ひつよう最低さいてい限げんで解明かかいめいしつつ、最小さいしょうの努つと力りょくでリミックスする方かかた法を模索もっともさくしていきます。
一いち緒いっしょに最高たかかのMODを作つくる一いち歩ほを踏み出でしましょう。
各かかくスプライトの役割やくわり(カンタンに)
順じゅん番じゅんばんはスクラッチのプロジェクトに並ならべられている順じゅんに紹介しょうかかいしていきます。
スプライト | 和訳わやく | 種類しゅるい | 役やく割やくわり(カンタンに) |
Blank | ダミー | その他た | 何なんもっとも書かかかかれてない。チラッと中なかかを見みた人ひとへの配慮はいりょ。(いきなりGeneratorだと読よみ込み処理しょりが重おもっともいかから) |
Generator | 地形ちけい生成な | その他た | バイオーム生成なを担当あする。 |
Processor | ゲーム処理しょり | その他た | モブを動うごかかしたり植物しょくぶつの成な長を管理かかんりしたりダメージ処理しょりを行おこなったり、ゲームの主要しゅよう処理しょりを担当あする。 |
Steve Arm | プレイヤー腕うで | プレイヤー | 採掘さいくつしたり攻撃こうげきしたり、色々いろいろな腕うでの振る舞ふ まいを担当あする。 |
Steve | プレイヤー身体しんたい | プレイヤー | プレイヤーの移動うごなどを検知しする、腕うで・顔かかお・足あしのまとめ役やくのような存在そんざい。 |
Steve Legs2 | プレイヤー足あし | プレイヤー | プレイヤーの足あしの振る舞ふ まいを担当あする。 |
Steve Head | プレイヤー頭あたま | プレイヤー | プレイヤーの頭あたまの振る舞ふ まいを担当あする。 |
Tiles | ブロック | ゲーム外観がいかかん | 建築けんちくブロックや、武器ぶきや、植物しょくぶつや水みずなどのすべてのブロックがこのスプライトに格納かかくのうされている。ブロック一覧いちらんはこちら。 |
Cursor | カーソル | その他た | プレイヤーが攻撃こうげきしたりアイテムを設置せっちしようとしている場所ばしょを表あらわす役やく割やくわり。 |
gui_invrow | インベントリの枠わく組わくぐみ | インベントリ | インベントリの枠わくを担当あする。クラフト用ようの枠わくや装備そうび用ようの枠わくなどもっともある。 |
gui_invsel | インベントリの枠わく組わくぐみ内ないの選択せんたく中なかかのアイテム | インベントリ | インベントリ内ないでプレイヤーが何なんを選択せんたく中なかかかかを表あらわす役やく割やくわり。 |
Counts | アイテム数かかず | インベントリ | 土どブロックが64個こある、みたいなアイテム数かかずを担当あする。ツルハシの耐久たいきゅう力りょくなどもっとも担当あする。 |
Arrow Progress | 製作つくの進捗しんちょく | ゲーム外観がいかかん | たとえば鉄てつの鉱石こうせきを石炭せきたんで焼やいてインゴットにする際さいなどの進捗しんちょく状況じょうきょうを担当あする。 |
Smelt Progress | 鍛冶たんやの進捗しんちょく | ゲーム外観がいかかん | たとえば、鉄てつの鉱石こうせきを石炭せきたんで焼やいている際さいに、あとどのくらい石炭せきたんが燃もっともやせるかか、といった状況じょうきょう表あらわ示ひょうじを担当あする。 |
Mob | モブ | ゲーム外観がいかかん | 敵てきモブ、動うご物、村人ひとなどのモブを担当あする。Mob一覧いちらんはこちら。 |
Health | 体力りょくたいりょく | プレイヤーステータス | 体力りょくたいりょくの表あらわ示ひょうじを担当あする。 |
Oxygen | 酸素さんそ、空あ気くうき | プレイヤーステータス | プレイヤーが水みずに潜もっともぐっているときに、あとどのくらい息いきが続つづくかかの表あらわ示ひょうじを担当あする。 |
Armor | 防御ぼうぎょ力りょく | プレイヤーステータス | プレイヤーの防御ぼうぎょ力りょくを担当あする。 |
Hunger | 満腹なかまんぷく度ど | プレイヤーステータス | プレイヤーがどのくらいお腹なかが空あいているかかを担当あする。 |
selected | 選択せんたく中なかかのメニュー | ゲームメニュー | 選択せんたく中なかかのメニューを担当あする。 |
CreativeOverlay | アイテム種類しゅるい一覧いちらん | インベントリ | クリエイティブモードのときに表あらわ示ひょうじされるアイテム種類しゅるい一覧いちらん表あらわを担当あする。 |
Menu1 | ゲームメニューの枠わく組わくぐみ | ゲームメニュー | ゲームメニューのラベルと枠わく組わくぐみの表あらわ示ひょうじを担当あする。 |
Splash_select | ゲームメニューのボタン | ゲームメニュー | 最初さいしょに表あらわ示ひょうじされるゲームメニューの選択せんたくボタンを担当あする。 |
Menu2 | ゲームメニューの枠わく組わくぐみ内ないの選択せんたく肢し | ゲームメニュー | ゲームメニューの各かかく種選択せんたく肢しを担当あする。 |
Save Game | セーブ機能きのう | ゲームメニュー | ゲームのセーブやロードを担当あする。 |
Commands | コマンド | その他た | コマンドを担当あする。コマンド一覧いちらんはこちら。 |
Pseudorandom Cycle | 疑似ぎじ乱数かかずサイクル | その他た | ゲーム内ないで利用ようする乱数かかずの生成なを担当あする。 |
Stage Sprite | ゲームスターター | ゲームメニュー | ゲームを開始かかいしする画面がめんを担当あする。 |
snow | 天気てんき | ゲーム外観がいかかん | 天気てんきを担当あする。 |
リミックスを困難こんなんにしている要素ようそ
メッセージが多おお岐にわたってる
ペーパーマインクラフトのリミックスを難むずかしくしている要素ようそに「メッセージが複雑ふくざつ」というもっとものがあります。
そこで、僕ぼくがいつもっとも使つかかっているメッセージ関かかん係図ずを本ほん格的てきに拡張かくちょうして、ペーパーマインクラフトのメッセージ関かかん係を分わ析してみました。
変数へんすう名めいが独特とくすぎる
ペーパーマインクラフトの変数へんすうはスーパー分わかかりづらいです。たとえば変数へんすう「gt_i」というもっとものがあります。これの意味いみするところは「GrowTreeというブロック定義ていぎで使つかかわれるループカウンタ変数へんすう」なのですが、絶対ぜったいわかからないですよね(笑わらい)gt_iのgtがGrowTreeということもっとも、iというのがプログラミングではループ内ないでよく使つかかわれる合言葉あいことばだということもっとも、めっちゃ考かかんが察しないと分わかからないです……。
変数へんすうもっともなんとかか解明かかいめいしていきたいです。リミックスに必要ひつような変数へんすうに焦点しょうてんを当あてて、わかかりやすく解説かいせつできるよう努つとめます。
リストでマスタデータ管理かかんりしてる
スクラッチでリストという変数へんすうを使つかかったことがありますかか?
ない人ひともっともいると思おもっともいます。
リスト変数へんすうというのは、基本ほん的てきにグローバル変数へんすうです。つまりすべてのスプライトかから利用ようできる変数へんすうです。
そして、1次つぎ元の配列はいれつ構造こうぞうになっています……っていうと固かたいですね。
普通ふつうの変数へんすうが箱ばこだとすると、リストは箱ばこがたくさんつながっている状態じょうたいです。
ペーパーマインクラフトではマスタデータを管理かかんりするためにもっともリストを使つかかっています。
マスタデータというのは、ちょっと解説かいせつしましたが、ゲームで使つかかわれるなんらかかの定義ていぎデータです。たとえばブタの体力たいりょくは10で、アニメーションのスピードは8です、という定義ていぎです。
これにリストを使つかかっています。
これがめっちゃ見みにくい。たとえばブタのマスタデータはこちら。
1
Pig
56
0.4
1
72
5
14
10
143
1
0
リスト「_MOB_DATA」
分わかかりづらいですよね……。これをきれいに書かかくと次つぎのようになります。
ラベル | バリュー |
モブID | 1 |
モブ名めい | Pig |
大おおきさ(%) | 56 |
Half Height | 0.4 |
Y Offset | 1 |
最初さいしょのコスチューム | 72 |
Walk Cycle Length | 5 |
アニメーションスピード | 14 |
体力たいりょく | 10 |
エサ | 143 |
プレイヤーとの関かかん係 | なし |
Costume Set Mode | 0 |
ok-scratch
英語の部分わはまだ僕ぼくもっとも解明かかいめいしきれてないところなので和訳わやくしてません。
表あらわにするとわかかりやすいですが、リストデータのままだとなかかなかか読よみづらいですね。どこかかのタイミングで全すべて表あらわに直なおして掲載のするようにしますね。
処理しょりの流ながれ(ざっくり)
追お記:メッセージ関かかん係図ず(途中なかか)を公開しました。途中なかかなので第だい3フェーズのメッセージ関かかん係はすべてを網羅していません。予めご了承ください。
ペーパーマインクラフトの処理しょりの流ながれは大おおきく3段階だんかいに分わかかれます。
- 1段階だんかい目め)ゲームメニュー選択せんたく
- 2段階だんかい目め)メニュー通とおりのデータのロードや地形ちけい生成な
- 3段階だんかい目め)ゲーム中なかかの処理しょり
そして3段階だんかい目めのゲーム中なかかの処理しょりには次つぎのようなもっとものがあります。
- 植物しょくぶつの成な長
- モブの移動うごや行おこな動うご
- 天気てんきの変かか更
- 昼ひると夜よるの変かか更
- コマンド
- プレイヤーや敵てきモブの被ひダメージ
- 画面がめんの端はしまで行おこなくとシーンが切り替き かわる
- などなど
1段階だんかい目めと2段階だんかい目めはスプライト「Stage Sprite」がメインで動うごきます。
3段階だんかい目めかからはスプライト「Processor」がメインで動うごくようになります。
メッセージをたどって処理しょりを追おう
次つぎのスクショは、1段階だんかい目めかから3段階だんかい目めまでのメッセージの流ながれをバババっと追おいかかけたもっとものです。
1段階だんかい目め:ゲームメニュー選択せんたく画面がめんフェーズ
1段階だんかい目めの最初さいしょにスプライト「Stage Sprite」かからgreen flagというメッセージが送おくられます。これによって全すべてのスプライトの初期しょき化かかが行おこなわれます。
そしてメッセージ「splash1」が送おくられて、プレイヤーがゲームメニューを選択せんたくします。
プレイヤーの操作つくによってメッセージ「world option」が送おくられて、サバイバルモードとかかスキンはアレックスを使つかかうとかか選択せんたくされ、すべて決定けってい後ごにメッセージ「start clicked」が送おくられて二に段階だんかい目めのゲームスタート処理しょりが始はじまります。
2段階だんかい目め:ゲームスタート処理しょりフェーズ
メッセージ「start clicked」を受け取う とると、次つぎのように初期しょき化かかがドドドっと行おこなわれます。
スプライト「Stage Sprite」はメッセージ「start clicked」を送おくると、自分わ自身じしんでもっとも受け取う とり、ゲームスタート処理しょりを開始かかいしします。
複数かかずのメッセージが次つぎの順番じゅんばんで送おく信されます。
- init
- inita
- bring to life
- init1b
- init2
- init3
- switch mode
- animate
- go
最後さいごのメッセージ「go」こそが、ゲームが始はじまる合図ずです。
3段階だんかい目め:ゲーム中なかかフェーズ
スプライト「Processor」がメッセージ「go」を受け取う とると、メインループ(ずっとブロック)が始はじまります。
このループの中なかかでメッセージ「animate」が送おくられ続つづけます。これによって様々さまざまなスプライトのアニメーションが実じつ行おこなされるのです。
また、コマンドを使つかかったり、プレイヤーがダメージを受うけたり、木きが成な長したり、天気てんきが変かかわったり、夜よるになったり、様々さまざまなゲーム中なかかの処理しょりがこのフェーズかから始はじまります。
その多おおくはスプライト「Processor」によって管理かかんりされます。
以上いじょうが全体ぜんたいの流ながれです。
さらなる詳細しょうさいについては、ペーパーマインクラフトのリミックス方かかた法を載のせてくれているプロジェクトの紹介しょうかかいを参考かかんがにしてください。
追お記:リミックス最大おおの注意点てん
ペーパーマインクラフトをリミックスする際さいの最大おおの注意点てんは、保存できなくなる現象です。
あることをするとプロジェクトが保存できなくなり、そこまでの作つく業がパアになります。
超ちょう絶注意すべき行おこな動うご
- エディタページで
- プロジェクトをプレイして
- 地形ちけい生成なしてしまうと、
プロジェクトが保存できなくなります。普通ふつうにプロジェクトページでプレイする分わには問題ありません。エディタページで緑の旗を押おすだけでもっとも問題ありません。
しかかし、ゲームを開始かかいししてスプライト「Generator」が駆動うごして地形ちけい生成な(ワールド作つく成な)をしてしまうと、それ以降は保存できなくなります。
対処法
プロジェクトが保存できなくなったら、ブラウザを閉とじて、もっともう一いち度ど開き直なおせば大おお丈夫です。
ただ、保存してなかかった変かか更点てんは失われます。
予防法
未然に防ぐには、本ほん格的てきにプレイして動うごきを確かかめる際さいなどは、いったんエディタページかから出でてプロジェクトページにしてかから緑の旗を押おすようにします。
または、変かか更する度どにこまめに保存して、さいあく保存できなくなってしまってもっとも手戻りを最小さいしょう限げんにすれば、そこまで恐れる必要ひつようはありません。
ok-scratch
コレ以外にもっとも、スクラッチの容量いっぱいまで作つくり込んだ場合ばあいもっとも保存できなくなるという報告があります。またはリストに数かかず万件のデータを入れた場合ばあいなどもっとも保存できなくなります。
まとめ
この全体ぜんたい論ろんを読よむだけでもっとも、かかなりペーパーマインクラフトのリミックスがしやすくなると思おもっともいます。
なぜなら、最もっともハードルが高たかかいのは大おおきな処理しょりの流ながれが分わかかりづらい、という点てんだかからです。
今いま回はその大おおきな処理しょりの流ながれを軽かるく紹介しょうかかいしました。
さぁ、ここかからリミックスへの挑戦ちょうせんが始はじまります!