人生

やっていきましょう

226日目

今日はAsepriteで作った素材をGB Studioに移植する。それぞれの素材を繋げて移動ができるようにする。

作業に入ってまもなく致命的なミスを確認した。GB Studioの背景は1つにつき256*256を超えることはできないというものだった。そのため背景の素材はいくつか分割する必要がある。

また1マスを16*16と勘違いしていたが、実際は8*8だった。これは同じ倍数であり、また主人公が16*16なので特に問題はないが、1マスは8*8という認識に改めたい。

したがって分割するにあたって次のことを意識する。まずAseprite上でグリッドを16*16から256*256に変更する。それにより分割されたマップを1つのマップとして扱う。そのため家の位置をちょうど256*256のマップに入りきるようにする。

つぎにグリッドを8*8に設定し、部屋の扉や建物の入り口が、ちょうど1マスの中に入り込むかどうかを確認する。この2つのチェックによって統一されていたマップを分割しGB Studioの仕様に変更する。

また、必ずしも256*256にする必要はない。マップのサイズは最低160*144を超えていればいい。なので違和感の出る空白は256*256と残り、という分け方ではなくて、256*256より小さいマップと、少し大きな空白という分け方でも問題ない。

f:id:nihility:20200131142705p:plain
これは最初の町を256*256のグリッドで分割し、かつY軸を-80動かしたものである。左下の自宅を基準としてうまく分けられるようにした。たまたまサイズが4分割できるほどの大きさだったので、簡単に分けることができた(軸を動かす際には注意が必要だ。これも8*8(もしくは16*16)の倍数でなければならない)。

だが家や木の位置がマップを超えて違和感を与える。これらの位置をまずはアバウトに修正する。また右上のマップの出口の空白を右下に収めるようにするため木を植える。

f:id:nihility:20200131143204p:plain

完成した。これを4分割して用いる。

f:id:nihility:20200131170112p:plain

GB Studio上ではまずマップ同士をつなげる必要がある。トリガーという、触れればイベントが開始する機能(オレンジ色の線)を用いて「シーン切り替え」を行う。この時場面移動相互に行うことを忘れてはならない。

シーン切り替えではマップや座標の設定の他にフェード速度や移動したあとの方向を設定できる。方向を設定しないと移動した先のマップで常に下を向くことになり違和感がある。よって下から上に行く場合は上方向、右から左に行く場合は左方向といった具合に方向を設定していく。

次に衝突判定(赤色の線)を設定する。衝突判定がある部分は通行することができない。これを利用して背景に重なるよう壁を作る。完成すると図のようになる。

動作を確認した。制作画面で見た時よりは狭い印象がある。だがゲームとしては問題ない。ここまでの一連の流れを学習したので、他の部分についても応用できるだろう。

ひとつ懸念がある。それは256*256の制約を想定出来ていなかったことだ。町の外の道や、隣町を今回のようにきれいに分割できるようには思えない。部分的に何かを切り捨てる必要があるだろう。とくに道中はひどく長くしすぎたので、短縮する必要がある。

f:id:nihility:20200131172611p:plain

長さの短縮という点でまず修正しなければならないのは自宅の1階だ。現時点で360*316あり、これを256*256未満に縮小しなければならない。横の部分は問題ないだろう。問題は縦の方だ。キッチンとソファの間の微妙な隙間をどうにか短縮してみる。

f:id:nihility:20200131173359p:plain

完成した。違和感は残るが256*256に収めることができた。これにより自室とはじめの町が接続可能になったのでGB Studioで編集する。

f:id:nihility:20200131175805p:plain
完成した。実際にビルドと実行をして問題なく動いた。あとはこのマップにNPCを配置するだけだ。だがそれは次の機会にする。

今日は思わぬアクシデントに対処しなければならなかった。それで予定が大幅に遅れてしまった。疲労もたまった。道中と隣町の分解は更に難しくなるだろう。なので今日の作業はこれで終わりにする。明日は道中と隣町を分解してGB Studio上に移行する。