これまで作った作品を振り返る
初めに
専門学校に入学してからはや2年がたちます。就活も近づいてきたのでつかいまわすためにも改めて自分がこれまで作ってきたゲームを振り返っていこうと思います。
紹介
1年生
ももたろう(仮称)
5月~6月 開発期間 1か月程度
いらすとやの素材のみ使用した童話ももたろうをモチーフに作成したにゃんこライクな主人公が動き攻撃できるタワーディフェンスゲームです。
敵の投げてくる棍棒をタイミングよく攻撃すると跳ね返すことができ、確率で貫通するため爽快感もあるゲームです。
ほぼ同時期に並行して学んでいたC言語検定の試験日の6日後が提出締め切りというなかなか時間配分に苦労した制作でした。
今改めてコードを見るとマジックナンバー、似た処理のコピペ、謎命名だらけで鳥肌が立ちそうです。成長してる証ですね。
デバッグ画面
とんでもないデバッグ画面です。当たり判定の可視化ぐらいでしか使わなかったです。
当時のX(Twitter)
勇者育成所
7月中旬~8月末 開発期間 1か月半程度
基本図形を用いた描画のみを使用するという課題の作品でした。
マウスで主人公を弾き飛ばし持っている剣を使ってひたすら敵を倒すゲームです。
コンセプトは自在な回転ですべてのオブジェクトが回転しても正常に描画されます。
四角の描画関数が回転に対応していなかったりなどしたため他の人は基本的に回転はさせなかったため、これにより唯一自在に回転できるゲームとなっていました。
640×360の画面サイズ指定だったためよく画面外までマウスがいって何も見えなくなって死んでいました。
チュートリアル画面
画面外まで吹っ飛んだらそのままゲーム開始となります。
この始め方を提案していただいた先輩に感謝。
ゲーム画面
魔法陣から敵が出てきてそれをひたすら斬ります。
難易度が高すぎて30秒持ったらいい方です。
当時のX(Twitter)
構想初期
どんな作品を作ろうかぼんやり考えていた頃です。
用意されている基本図形描画関数は回転しなかったので
回転や実座標の計算についての理解を深めさせるのが目的だろうなとか考えてこの方向で何か作ろうとこのあたりで決めました。
今ではMatrixで一発。楽になったものです。
迷走中
基準点からどの角度にどれだけ離れるかの定義を連打して剣を作りました。
サイズが可変なので後からサイズ感調整ができるようにしています。えらい。
この頃は地面に刺さっている聖剣が勝手に自我をもっている想定で作っていました。
連打したら角度0(右)に飛んでいくバグに悩まされていました。
基礎部分がある程度固まってきました。
地面と重力の判定順番がおかしくて地面ですごいプルプルしてます。
気分転換に魔法陣を作って遊んでいました。
ほぼ完成
締め切り1週間前でほぼ完成です。あとは見栄えをよくしたり敵の種類を増やしたりしました。
Magia(チーム制作)
10月~2月 開発期間 4か月 +公開に向けた作業期間
ランダムマップのダンジョンを探索しより強いスキルを目指して奥深くへ潜っていく疑似2.5D[1]のローグライクゲームです。
チーム制作の作品のため私の主にかかわった部分について説明すると、
- 2Dテクスチャの疑似2.5D化
- テクスチャ、マジックナンバー外部ファイル化、読み込み&描画簡易化、マネージャークラスの作成
- ランダムマップの生成
- カメラ制御
- ミニマップ
- 他メンバーの作成したコードの統合、エラー修正、リファクタリング
- 難易度の段階強化
- ゲームのセーブ、ロード
- メインループ構造
主にはこれらです。
主人公と敵、インベントリ、ステータス、素材らは任せてそれ以外のほとんどに関わりました。
リファクタリングという名の魔改造しまくったので任せたとも言えませんが…
git使っておけばよかったと今になると思います…。
学年内47チーム中5位に上り詰めれたのはチームのおかげです。ありがとう!!
こちらのゲーム一般公開されております。ぜひ遊んでみてください。
当時のX(Twitter)
チーム制作ということもありどこまで上げていいものか…
共有フォルダで100GB使い切った時
校内での発表会用の作品verが奇跡的にキリ良くできた時
一般公開用にセーブ、ロードの実装を手掛けていた時
これだけです。
2年生
ScrapAndBuild
5月上旬 開発期間 約1週間
これまで学んできていることを使って新フレームワークでゲームを作れ(春休みさぼってたかチェック)、ということでシューティングゲーム課題です。
核となるパーツに外部装甲と攻撃手段を兼ねる部品を足していって主人公をより拡張していく、というゲームになります。
敵の攻撃を受けて核との繋がりが途切れると部品は爆散したりします。
部品配置を変えることもできて♡型にして敵に愛を押し付けたりもできます。
プレイ映像はこちらをどうぞ。
こちらのゲームですが進行すればするほどパーツ数がかなり多くなるため、当たり判定を軽率に全オブジェクトに対して行うとまともなパフォーマンスが発揮が出ません。
そのため最大半径での判定を事前に挟む等といった軽量化が必須となってきました。
当時のX(Twitter)
テクスチャの有無だけでだいぶ違います。
この段階ですでに締め切り1週間前前後で焦っていました。
CubeSweeper
5月下旬~6月下旬 制作期間 1か月
授業では3Dに向けまずは2.5Dの開発について学んでいて、2.5D、したい人は3Dで制作してよいとのことで3Dでの制作に挑戦しました。
ゲーム内容としてはマインスイーパーを立体にした爆弾処理ゲームです。
後述しますが、Unityでのゲーム制作を行うことが決まっていたため、コンポーネント指向に慣れるため、コンポーネント指向を採用しての開発となりました。更新順番についてしっかりと考えないと意図しない挙動が発生したりして大変でしたがどのオブジェクトも何にでもなりえるという点が新鮮かつ便利でした。
このゲーム、やる分には非常に楽しいのですが、発表しながらの操作となると頭がバグって大変でした。
プレイ映像はこちらをどうぞ。
番外編 セミファイナル
7月下旬 制作期間 2日
Unityを用いたチームでの短期ゲーム開発・発表するセミナーに参加しました。
一つのチームが5~6人で構成(内一人は非エンジニア)され、2~3年生が混在するチームで企画、開発していきます。テーマが「音」となっていて同じ学校のサウンド関係の別学科の方、いわゆるクリエイターを交えての初の開発という貴重な経験でした。
私のチームは5人で全員2年生、Unity経験ほぼ皆無となっていて、かなり苦戦しました。
私は主に当たり判定、発表原稿作成/発表、素材探しなどを担当しました。
ゲームの出来に満足はいきませんでしたが、コンセプトは「セミがリズミカルに求愛する」という面白いものだったので発表原稿を気合で仕上げ、「ゲームはまだできることがあるけど発表がうまい」と評価を頂きました。褒められてはいるんですが少し複雑です。
Infinite Labyrinth
開発中
3D空間上にランダム生成されたダンジョンを探索していくゲームです。
生成されたダンジョンの外側視点。ロード中に生成風景を見せることで生成待ち時間も楽しめるようにしています。
ダンジョンの内側視点
ランダム生成の手順
- ランダムに空間上に「部屋」(敵が湧く)となる場所を作成
- 空間に対して部屋の座標で空間三角形分割を行う
- 最小全域木を求める(最短経路のみでは一本道気味なのでいつくか再生させる)
- 経路探索をして廊下、階段を設定する
エディタ
今回このゲームは拡張のしやすさを意識して制作しています。
エディタを実装しており、
- オブジェクトの追加、削除、命名
- オブジェクトへのコンポーネントの追加、削除、編集
- オブジェクト、またはシーン丸ごとの外部ファイルへのセーブ、読み込み
等が可能です。
エディタで作成した部屋を特定のフォルダに入れることで何種類でも部屋のバリエーションを増やすこともできます。
改善の余地が無限にある中で就職活動にも力を入れなければいかないのがなかなか大変です。
最後に
いかがでしたでしょうか。
たった2年でプログラム未経験からかなりランクアップした気がします。
今後もより良いコードと作品を目指して頑張ります!!
-
実際の3D空間への画像描画ではなく、2D環境上での画像の拡縮を駆使した疑似的な2.5D描画方式 ↩︎
Discussion