レトロゲームプロジェクトの研究(6) ブロック崩し編[UnrealBrickBreaker32]
「レトロゲームプロジェクトの中にはブロック崩しもあった。これも定番。左右のカーソルキーでパドルを動かして、弾を下に落とさないようにしつつ、ブロックに当てて、壊せるブロックを全部壊せたら勝ち。下に弾を落としてしまうとライフが減っていって、クリアする前にライフがなくなると負け」
妹「ブロック崩しは、たしかうちにはファミコンのがあったような。ジャンボウと、アルカノイド」
「アルカノイドは有名だね。クオリティが高かった」
妹「ジャンボウの方は……」
「ブロック崩しは思考ルーチンの要らないPONGとも言えるし、敵が動かないシューティングゲームとも言える。これもチュートリアルでよく使われる」
妹「作り方はPONGと同じなの?」
「だいたい同じ。弾が動いて、何かに当たると反射して、ある場所を通過すると得点、まあ今回の場合は失点になるけど、そういう仕組み。反射の仕組みは全部Ball_BPにある。何に当たっても同じ計算で反射してる。囲んでる障害物はコリジョン付きのスプライト。ブロックはアクターで、ぶつかった時に消える処理が入ってる。ステージごとに別レベルを作って、そこに手作業でブロックを配置してる」
妹「このゲームなんか難しいね。なんではよくわかんないけど、難しい」
「反射の仕組みが、どういう計算なのか正確にはわからないけど、どうもランダムっぽい。それと最初の弾を撃ちだす位置も自分で決められない。アルカノイドの場合で言えば、パドルに当たった時の跳ね返り先は当て方で調節出来る。中央より左に当てると左側に、右に当てると右側に跳ね返る。そして最初の弾も、位置を調整した後にボタンを押して離す形。こうすることでブロックをある程度狙いうてる仕組みになってる。逆に言うと、それがないブロック崩しは運の要素が非常に強くなる」
妹「あとなんか落ちてきたアイテム? に当たって、弾がぶっとんでいくんだけど。しまいには得点表示にまで……」
「それは意図的にだと思うけど、全部にコリジョン付けてある。そのへんも軌道予測にふくめないといけない。気になるのは壁にまっすぐに近い角度で当たった時に真下に落ちる挙動と、カンカンカンって密集地帯で跳ね返ると弾が消滅することがある。消滅の方は多分すり抜けてるから、コリジョンを厚めにすれば対処できそうな気がするけど」
「ブロック崩しはチュートリアルの題材によく使われるだけあって、UE4用にも作成手順を紹介した動画がある。動画だとブループリントに一部不鮮明なところがあって、UE4を初めた頃に作ってみようとしたけど上手くいかなかったけど」
妹「これは見た。そしてわかんなかった……」
「今見直せばノードの使い方とかわかってきてるから大丈夫かもしれない。このブログの記事も参考になる」