■『UNKNOWN』
概要
DirectX12を学習し、初めて制作を行た作品です。ゲーム内容は、片方のスティックで移動、片方のスティックで弾を撃ち敵を倒していく
シューティングゲームです。
初期
ゲーム性を大幅に変更
・ゲームの終わりが見えない:次々と大量に出てくる敵を倒す→3フェーズ+ボスに変更・スコアがどれくらい増えたのか→オブザーバーのような表記を追加
・背景のキューブに当たりそう→四角い枠の内側で発生してたのを外側に移動
・敵の配置情報のコードをjson化、RapidJsonで読み込み
現在
・オフスクリーン、マルチパス、マルチレンダーターゲットに取り組み、ブルームを実装・ボスの動きの調整
・敵の行動の調整
グラフィック面だけでなく、敵が弾を出すなど、ゲーム面も調整を行いました。
追加で、ゲームのプレイがしにくくなるため明るさを下げているが、明るく表示したもの
ブルームMapを渡せるようにしているので、以下のようなことも可能。
■開発情報(個人制作)
環境
C++ / DirectX12VisualStudio 2022、v142ビルドツール
メッセージ
この作品は、DirectX12と3Dの学習のために個人で取り組み制作を行いました。また、DirectX12へ取り組むため、シンプルな遊びとなるように、遊びの部分は2Dのようなゲームを制作しました。
就活が終わり次第、次の制作に入る予定です。(アクションゲームを作ります。)
制作を始めた頃から現在までを簡単に
〇2022年に学習を始め、10月ごろから、11月に行われる展示を目指し制作開始11月に行われた展示時点では、ゲームのステージがチュートリアルと通常ステージのみで、延々と出てくる敵に当たらないように全て倒していく「Geometry Wars」のようなゲームでした。
〇展示時の意見などから、12月から2月上旬、制作展に向けて大幅に変更
ステージを作り直し現在のゲームに。
グラフィックス効果としてブルームに取り組み、敵の出現情報のデータやサウンド、メッシュのデータを外部ファイル化、エフェクトの追加等見た目の変更等、コードを整理しつつ、ゲームを面白くすることに取り組みました。
コードで力を入れた、こだわった箇所
コードでアピールしたい部分に関して、今回したことが多いため、現在整理を行いながら、アピールできる部分を思い出しています...※DirectX12の部分は次の制作で作り直す予定なので、
マテリアル番号管理→enum class管理の変更のような、コードとして明らかに読みづらい部分など、現在は軽い整理のみしか行っていません。
・コンポーネント指向を実装
背景のキューブを生成しているオブジェクトのコードです。
・・・次回作では、コンポーネントもポリモーフィズム化して更新を行うようにする。
・当たり判定
コンポーネントで当たり判定を使用可能にし、コンポーネントが使用開始されたら、当たり判定管理クラスのコンテナに格納され、格納されたデータから判定を行い、衝突していた場合GameObjectが持つOnTriggerEnter()関数が呼ばれるようにしている。
・・・次回作ではC++にインターフェースはないので疑似インターフェースを実装する。
・スクリプトを軽く取り入れた
企業の1Dayインターンでスクリプトについて知り、ボスの中は関数とステートを実行する処理のみで、ステート内でボスの関数を呼び、動かすというものを実装しました。
ボスの周りを回転するオブジェクトの数もステート側の引数を変更すれば、多くしたり少なくしたりできます。
ですが、全体で行わないとほぼオブジェクト内で関数を呼び出しているものとほぼ変わらない為、改めて実装する際には、イベント時に外部ファイルを読み、そのイベントにあったスクリプトを呼ぶなどの本格的なものに取り組みたいと思っています。
・敵の情報を外部ファイル化
敵の出現情報が書かれていたステージのソースファイルが、3ステージ分、3つのヘッダ・C++ファイルがあったものが1つにまとめられたので、ステージが簡単に増やせるようになっている。
■データ
GitHub : https://github.com/elAsTeru/UNKNOWN-3rdYearStudent.git■学生情報
希望職種 : ゲームプログラマー作成者 : 照井一歌
卒業年度 : 2024年3月卒業見込み(4年制)
学生番号 : 20010010
学科 : スーパークリエーター科
スーパーゲームクリエーター専攻
学生へのメッセージ、スカウトなどは「お問い合わせ」からご連絡ください。