1.取り組んだ内容
まず、担当をそれぞれ決めました。
私たちのチームでは、私が主にプログラムを担当し、山崎が主にグラフィックを担当しました。
次に、プチコン3号の使い方を調べながら、ゲームを原案を考えました。
そんな時に、コース授業でD門先生に相談すると、
「ゲームは基本的に三すくみがバランスが良い。だからそれを基準にしてゲームを作っていくといいよ。」
と言われました。
その言葉からヒントを得て、タングラムパズルというものを知り、パズルゲームを作るということに発展しました。
次に、パズルゲームを作るにあたって、類似するゲームを探しました。
タングラムパズルを題材にしたゲームは、任天堂から一つだけ出されていました。それもただパズルを解いていくだけのゲームのようでした。
なので、同じものではなく、違う要素も入れてみようと思い、ストーリー要素を追加したものを作ることにしました。
次に、ゲームのパズル部分だけを作成しました。
当初、スプライトを使わずにパズルを作成しようとしましたが、プチコン3号の仕様上、図形描画ではピースを回転させる時にサイズが変わってしまうという問題があったので、断念しました。
そのあと、スプライトに図形を書き込み、三角形2つと四角形1つを組み合わせてすべてのピースを作成しました。
パズルで表示されるシルエットは、ピースをコピーし、黒塗りにして完成図の座標に表示させています。
パズルの判定方法は、ピースの各頂点に衝突判定(SPCOL)を4ドット範囲指定し、シルエット毎の各頂点、または凹みにも同じように衝突判定を4ドット範囲指定し、それらすべての判定がtrueである(-1でない)ことを確認するものです。これによって、どんな解答をしても、すべてのピースを使用してシルエットにあっていれば正解になります。
この判定方法はアクションゲームの棘の衝突判定のつけ方を参考にしました。
衝突判定は一つのスプライトにつき一つなので、ピースに複数のスプライトを重ねてすべての頂点に衝突判定を付けています。回転時にはその角度ごとに頂点の座標を書き換えています。
次に、ゲームのストーリー部分を作成しました。
これはプチコンの公式サイトに載っているものを参考にしました。背景とキャラクターの画面上の動きについては、山崎が担当しました。私は、背景の木や岩の衝突判定を付けるために、実機の位置を背景画像のバイナリ配列上で確認し、木や岩の場所に移動したら止まるという処理を作りました。
モブの会話は文字列の配列を呼び出し描画して、Aボタン入力を待つというものになっています。
次に、モブに話しかけるとパズルに移動するようにしました。
モブとの衝突判定がtrueの時に、Aボタンを押すとフラグが立ち、そのフラグを元に会話とパズルが表示されます。
クリアするとストーリーに戻り、クリア後会話が表示され、諦めると諦め後会話が表示されます。クリアした問題は記録され、最後の会話変化に関わります。
次にエンドカード表示とエンド会話の変化を作成しました。
エンドカードはスプライト一枚で表示しています。
エンドの会話は助けた人数で変化します。
それぞれの会話作成しましたが、エンド会話の表示は現在作成中です。
h以上が、今まで私がやったことのすべてになります。
2. よくできたところ
パズルの正解判定です。
1ドットずつずらしながら判定の座標を確認する作業は、冬休みをすべて費やすほどかかりました。
当初3ドットずつでしたが、他の人にやってもらったときに、判定が厳しいという指摘がありましたので、改良し4ドットがちょうど良いという結論に落ち着きました。
3. うまくいかなかったところ
木や岩の衝突判定です。
もっとうまいやり方があると思ったのですが、山崎の作ってくれた背景画像の都合上、配列を読み取ることになりました。
バイナリ配列上で実機の位置をずらすのは微調整が難しく、ずれも生じるので、修正に2週間ほどかかりました。
この判定は、現状妥協した部分が多いので、時間があったら実機がめり込まず、もっと精度の高いものにしたかったと悔しい気持ちがあります。
4. 卒業研究の感想
前回の卒研もそうだったのですが、スケジュール管理がやはり甘すぎたということがありました。
始まった当初はロジックを生み出すことがこんなに時間がかかることだと思っていませんでした。そして、細かな調整にこだわりすぎた結果、遅れてしまった部分が多々ありました。
これらを踏まえて、スケジュール調整とクオリティの妥協ができるようになっていきたいと思います。
お疲れ様でした。
5. 書いた人が特定できる情報
内容からわかると思いますが、バヤシです。