自作2Dゲームの3Dリメイク版を制作している件について
自分が今まで作ったゲームの中で、特に気に入っている2Dゲームを3Dで見てみたい! と思って作成を始めました。まだ完成ではないのでこのWorksも随時更新予定です!
このゲームは、プレイヤー(主人公)と彼女との行き違いで彼女が走り去ってしまう。
そんな彼女を追いかける。といったあの頃の青春を思い出せるような2Dゲームを
3Dで改良したものになります。製作開始時期は2022/7月です。2D版を作ったときのWorksはこちらです。
~~~~~~~~~~~~~~~~~~ゲーム画面~~~~~~~~~~~~~~~~~
まずはゲーム画面がないとイメージもできないと思うので、とりあえず細かい説明は後にして一気に見せたいと思います。
-------------------------------------タイトル-------------------------------------
------------------------------------プレイ画面------------------------------------
------------------------------------クリア画面------------------------------------
-------------------------------ゲームオーバー画面--------------------------------
-----------------------------------------------------------------------------------
とりあえずゲームシーンはこのようにタイトル・プレイ・クリア・ゲームオーバーで構成されています。各シーンの細かい設定は後に説明していきます。
~~~~~~~~~~~~~~~~~各シーンの説明~~~~~~~~~~~~~~~
ここでは、先ほど見せたゲーム画面のシーンを個別で詳しく説明していきます。
-------------------------------------タイトル-------------------------------------
タイトルシーンでは文字を一つずつモデルとして用意し、それぞれを配列で管理しています。そして、イージング関数を利用することで文字の動きに滑らかさを付けています。
背景であるグラウンドや、校舎、木などはすべてMAYAで自作しています。
【Spaceキー】を押すと文字が一回助走をつけて近づいてきてプレイシーンに移行します。この助走をつける動きもイージング関数を利用しています。
わざわざモデルを1つずつ用意してイージング関数で動かしたのは理由があります。止まったり単調な動きをしているものよりも、イージング関数を利用して動かすことによってプレイした人に「なんかふわふわしてるのも見てて少し面白いな」と思ってもらうためです。
-------------------------------------プレイ-------------------------------------
プレイシーンでの操作方法は【←→キー】で移動、【スペースキー】でジャンプ、そして右上のゲージ(ラブゲージ)がたまった状態で【スペースキー】を押して叫ぶ。という操作のみです。
障害物として車が前方から迫り、車の前にはハートというアイテムが付属しています。
プレイヤーは車と衝突すると、左上のLifeが減ってしまいます。
プレイヤーとハートが接触すると右上のラブゲージがたまっていきます。
ラブゲージがたまると【スペースキー】で叫ぶことができます。
叫ぶことによってエフェクトが出現し、前方を走っている彼女との距離が少し縮まります。
彼女との距離が十分に縮まるとゲームクリア、Lifeが0になってしまうとゲームオーバーになります。
ちなみに、彼女のモデルや道のモデルもタイトルのモデル同様自作しています。
- レーン--------------------------------------------------------------------------
ステージであるレーンはこのような構成となっており道路一つ分の「Laneクラス」があり、それを「Roadクラス」で配列で管理して縦に複製、さらにRoadクラスを「RoadManagerクラス」で配列で管理、横に複製をしています。
そしてこの「Laneクラス」は奥から手前に進んでくるという処理が書かれており、「Roadクラス」で画面外に出た先頭のLaneを【Deque】という配列を使って削除、末尾にLaneを再生成という方法で無限にLaneを自動生成しています。
-----------------------------------------------------------------------------------
↓
そしてここで僕がこだわったところがこのように、「ROAD_NUM」という定数の値を変えるだけで障害物、プレイヤー、彼女の初期位置が変わり、障害物の自動生成もちゃんと3レーンから4レーンに対応したものになり、レーンも自動生成されるところです。レーンの数が奇数か偶数によってレーンの中心位置も自動で切り替わるようになっています。
このように定数を変えるだけで自分の好きなレーン数に変更が出来て、ほかの要素もちゃんと対応する拡張性のあるプログラムを書くことにこだわりを持ちました。このように拡張性が少しでもあると、このゲームに新しくレースのようなミニゲームを作る際にレーンをいくらでも増やせて簡単に調整が出来ます。
- 改善点--------------------------------------------------------------------------
現在、道路が暗く彼女の服やスカートも暗めで見づらく、ユーザーにとってはとても遊びにくいものになってしまっているので道路の色を灰色に変えたり、sdkmesh_animを利用してキャラクターに動きを付け、背景として街を追加したり、エフェクトを付けたり・・などなどユーザーにより遊びやすくしてもらうため、より面白く思ってもらうために見た目の強化などを優先して改善している最中です。
-------------------------------------クリア-------------------------------------
クリア画面は2D画像の淡白なものになっていて、せっかく3Dのツールを使っているので3Dのモノに差し替えようと考えています。
ゲームオーバーの画面も同様の改善点が挙げられます。
----------------------------------------------------------------------------------まだこのゲームも完壁ではないので、もっと良くなるような改善を日々考え、実装しています。そのたびにこのWorksも日々更新していこうと思います。