▼発想を逆転させるのよ、って千尋さんが言ってた

 ここんところずーっとブログを放りっぱでしたが、その間延々とプチゲームを作ってました。プチゲーム作りにのめり込んでいると、気づいた時にはもう夜中ってことが多くて、「あ、記事を書く時間がないなー。じゃあまた明日で……」を繰り返していているうちにこんなことになってしまって。クリエイターズボイスのドラクエ9の感想とか書きたかったんですけどね。ちょっと機を逸してしまった感があります。
 まぁ、 沢山時間をかける ≒ 面白いものができる なので、結局自分の手が遅いのが問題なんですよね。例によって作るのと平行して仕様を固めていったので、紆余曲折ありまくりのグダグダぶりです。
 でもまぁ、色々考えて手をかけた分は面白くなったかな、という気持ちもありまして。久しぶりに手応えのあったプチゲームではありますね。



 今回、最初は普通(?)のスカイダイビングのゲームを作るつもりでした。簡単に言えば、飛行機から突き落とされた複数名が1個のパラシュート入りバックパックを巡って争奪戦を繰り広げるという内容です。
 で、パラシュートをキャッチできなかったプレイヤーは有無を言わさず地表に落下。犬神家よろしく地面に突き刺さるか、それとも人型のクレーターを穿つか、マンガ的表現でオチは取れるので、おお、これは面白いぞ、と最初は思いました。
 ただ、ゲームの流れは構想できても、パラシュートを奪い合う過程をなかなかゲーム性に反映できなかったんですね。無重力感や、爽快感、操作性、逆転性、難易度、時間制限などなど、要求する項目が多すぎて纏まらなかったんです。
 キャラを実際に動かしてみると、空中での動き、自由の利かないもどかしさが凄くそれっぽくて(まぁ、実際にスカイダイビングなんてやったことないですけど!)面白かったんですが、一方でこの不自由性は、パラシュートに接触するという明瞭な目的設定とはすこぶる相性が悪かったんですね。制動を自在にしてしまえば浮遊感が消えてしまいますし、かと言って全くランダムではゲームが成り立ちません。
 メイドイン俺のバランス設定的には、デフォで90%の確率でゲームを成功させるのが適切かなと自分は思っています。あとはテンポアップで徐々に成功率を削っていく感じで。その辺りの考えもあって、高い成功率と不自由さを同時に満たすゲームデザインをずっと模索していたんですが、結局はやっぱり難しいなという結論に至ったんですね。精緻な操作を必要とするゲームはもっとプレイ時間が必要で、それはメイドイン俺のコンセプトにマッチしないと。


 でまぁ、これはダメだ、という結論は頭の中では出たんですが、せっかくドットも打ったのに勿体無いなーという気持ちも同時にあって、なかなか企画を捨てる気にはなれませんでした。
 どうも悪い癖なのか、自分は絵が完成しないとなかなかAIが組めないんですよね。動いてる様子を脳内だけでは再現できないというのもありますし、当たり判定を調整するのに最終版が必要だという理由もあります。そのおかげでコンコルド錯誤的な泥沼に良くハマるんですよね。
 そんな感じで、どうしようかなーと悩みつつ、キャラが画面内を動き回るだけのバージョンを延々プレイし続けていたんですが、ふとパラシュートに近づくんじゃなくて、パラシュートから離れるゲームにすれば、動作とゲーム性とを両立できるんじゃないかと思いつきました。
 メイドイン俺の表示領域、横192ドット縦128ドットの内、パラシュートの占めるサイズは縦横16ドットだけでした。24576ドット中の256ドットに接触するゲームよりも、24576ドット中の256ドットから逃げるゲームの方が遥かに自由度が生まれます。上下左右どちらに動くか予測がつかない不自由なキャラを活かすには後者の方がより適切だと自分には思えました。
 ですが、そうなると「パラシュートをキャッチするゲーム」というそもそもの前提が崩れてきます。そこでパラシュートを爆弾に描き変えて「爆弾から逃げるゲーム」という形にしたら、これがすんなりと収まったんですね。まぁ、「スカイダイビングと爆弾ってどんなシチュエーションよ?」みたいな不条理さはあるんですけど、その不条理さも逆にくにおくんらしいハチャメチャさが溢れてて面白いと思ったんですね。


 ただまぁ、爆弾を避けるだけだとちょっと消極的過ぎて楽しさに欠けるよなーとも思いました。基本的に野球なんかは守備よりも打撃の方が楽しいですし、STGも避けるよりも当てる方が楽しいです。
 それぞれ慣れると守備や避けに味を感じるようにもなりますけど、初めて野球に触れた子供の頃ってやっぱりバッターの方が圧倒的に楽しいですよね。なので、このゲームにも避けるだけじゃなくて攻める要素を入れたいなと思いました。
 元々、パラシュートを巡ってキャラ同士が乱闘する予定でしたので、相手をキックする要素は実装済みだったんですが、ついでに爆弾も蹴り飛ばせるようにしました。爆弾キックは爆弾を遠ざけつつ、相手に爆弾を押し付けられる一挙両得の戦法です。これを盛り込んだことで、プレイヤーがより積極的にゲームの成否に関与することができるようになりました。
 まぁ、爆弾は画面端で跳ね返るので、爆弾を蹴ることが必ずしも正解ではありませんし、そもそも爆弾に近づくこと自体がリスキーでもあります。ただ、リスクを承知しつつ、相手に爆弾をぶち当てる快感がリターンとして大きかったので、爆弾キックの導入でゲームが楽しくなったという実感は大きいです。
 この辺、わかりにくければ、スーパーマリオブラザースを想像して貰えればと思います。マリオが敵を「踏む」のは、リスクとリターンが背中合わせになった行為です。敵を踏んづけた瞬間の爽快感は、リスクを承知で飛び込んだスリルに対する報酬なんですね。


 さてまぁ、そんな感じでデザインの目途はついたんですが、実際にAIを組んでみるとバグが次から次へと沸いてきてえらいことになりました。アクション性の強いゲームはタイトなタイミングで衝突判定を試行することが多くて、見た目には問題のない1フレームの動作がバグの温床になることが多いです。
 特に自分の場合、場所チェンジを多用する関係から、意図しないタイミングで場所チェンジが起こるバグがわんさか出てきました。具体的に言えば、爆発が終わった後なのに爆弾が画面上に残っているとか、爆風で吹き飛ばされたはずのキャラが平然とそこにいるとか、爆風で吹き飛ばされたキャラが画面端からひょっこり現れるとか、そんな感じです。
 この辺は単純に爆弾と爆風のAIだけをチェックすればそれで済むという問題ではなくて、他のAIとも色々絡んでいるので、どこが問題の発火点なのかを見つけるまでに結構手間取ります。おまけに色々な処理が重なったタイミングでのみ起きるバグなので、再現が難しいんですよね。
 AとBを場所入れ替えして、BとCを場所入れ替えして、CとDが重なっていたらAをCの場所に移動させて、Dのフラグが立っていたらCとBを場所入れ替えする…… みたいな感じ。どれが原因なのかワケわからんのです。
 本来的にはバグは発火要因を潰すように修正するものなんですけども、まぁ、今回はあんまりにAIが込み入っててそれだけじゃ防げなかったので、バグが発生しても即座に消滅させる力押しでバグへの対応をしています。これは下策も下策ですけど、幸いにも判定回りのバグじゃなくて、アニメ表示の関係のバグばっかりだったので、単純に画面外に移動させてしまえば傍目にはバグと映らなくなるんですね。
 まぁ、実作業中は原因に見当がつかなくて力押しで修正せざるを得ない場面はあるんですけど、仕事中の待ち時間とか通勤時間にぼーっと処理の流れを考えているとなんとなく原因が見えてきたりもします。今回もそれでバグの解決策が2つ見えてきたので、根を詰めても成果が上がらないときは気分転換が大事ですね。


 とまぁ、そんな感じで色々やってたので、ここ10日ばかり、ブログほったらかしでした。全部作業が終わってから、こんなことがあったんだよー、と苦労話を披露する分にはネタも尽きないので、作業中でもそれなりに書ける話はありそうなんですけどね。
 でも、進捗状況をいちいち報告するのはねー、なんか違うかなーと思うんですよね。現在進行中の悩みってオチがつかないですし、かと言って誰かに助力を請えるようなシロモノでもないですし……
 締め切りの決まっている創作物なら自分を追い詰める意味で状況をお知らせするのもアリだと思うんですが、まぁ、趣味でやってるものですし、見切り発車は毎度のことなので、お蔵入りする可能性もちょくちょくありますしね。
 あとはやっぱり完成品を見て貰いたいってのもありますね。ちょくちょく状況を披露するのは完成品の驚きを切り売りしているようで、なんかもったいない気分がするんですよね。
 最近で言えば、エレベーターアクションを作ろうと思ったらエラい難易度が高くて断念した覚えがあります。なんというかメイドイン俺だと「エレベーターが上下に動いている最中にキャラが左右に動く」という動作が凄くやりづらいんですね。この辺、うまーく操作する目が見えれば再挑戦するかもしれませんけど、まぁ、ちょっと現状アイディアが浮かばないです。