RANDOM-MARATHON
【RM】ローグライクゲーム「ランダムダンジョン」
公開日:
2020/06/13
【RM】ローグライクゲーム「ランダムダンジョン」

はじめに

4/29~5/29の1ヶ月間に部内で行われたチームでの共同開発競争「Random Marathon」においてローグライクゲーム「ランダムダンジョン」を制作しました。 このゲームは、ランダムに構造が変化するダンジョンを性質の違う3つの攻撃を駆使して50階まで目指すというシンプルなローグライクです。 メンバーは、けんや, kazetta, nnskn, ぺとりこーる の4人で製作しました!

けんや

この作品では主にコーディングを担当しました。基本的にプレイヤーや敵のパラメータ変更と、プレイヤーや敵の動きを作っていました。まずパラメータ変更についてですが、HP管理でとても苦労しました。これはC#を理解していなかったからということが、1番の要因だったと思います。作り始め当初、ただ単に「条件を満たした場合に」HPを変更すればいいんじゃないかと言う考えのもと、配列を使ったHP変更方法を思いつきました。フィールド情報(プレイヤーの位置、敵の位置、壁の位置など)を全て2次元配列にして、プレイヤーの攻撃方向の座標に敵がいるとその敵にダメージが入るという方法です。しかし、重大な問題が起きました。私が作った敵の生成方法では、全ての敵が共通のHPを持ってしまいます。つまり、敵1体に攻撃するとステージ上の全ての敵にダメージが入ってしまいます。これに気づいた時、何時間もかけて作った敵の生成方法をもう一度作り直さないといけないのかと絶望しました。だから頑張って打開策を考えました。そもそもHP情報を敵に設定する必要は無いんじゃないか、配列は数字の変更操作が簡単だという2つの考えのもと、1つの突破口を導き出しました。フィールド情報を壁の位置、プレイヤーのHP、敵のHPと表現し、プレイヤーが攻撃した場所の座標にプレイヤーの攻撃力分を引くことで敵がダメージを受けたことを表現しました。次に敵の動きについてですが、作っていて楽しかったです。自分よりも何マスか離れいているとランダムに行動し、自分から何マス近くなると近づいてくるという単純なものです。移動方向に壁があると別の方向に移動するように設定することでそれとなく行動してくれました。

他にも色々な機能を加えようとしていたのですが、私の実力不足のせいで出来ませんでした。例えば、コインを使ってショップでアイテムを購入したり、武器や防具を装備することで攻撃力や防御力を上げたり、あるマスを踏むとダメージを受けたり回復したり、カメラの切替で視点を変更したり、他にも...

やっぱりコーディングって難しいですね。自分の思っていることの10分の1くらいしか実現できなかったような感じでした。一見簡単そうに見える動作も、コードに書くとなったら膨大な時間がかかってしまいました。このRMを通して、自分の無力さと先輩や周りの人々の凄さを実感しました。

kazetta

今回自分は作品の原案や基盤のコンテンツ等を作成させていただきました。

このローグライクというゲームは自分が初めて触れたゲームであり、一番どハマりしたゲームでもあります。戦略性も高くバトル生も高く個人的にとても刺さっているコンテンツです。それもあって、今回の作品は自分がいつかしてみたかったローグライクゲームに取り組まさせていただきました。まず感じたのが本当に申し訳なかったなと思い周りの凄さを痛感しました。自分はまず基盤に取り組みランダムなダンジョンを生成させる分野に取り組んでいて、そこまではいろんなものを参考にしつつでしたがなんとか形に仕上げることには成功しそのことについては非常に嬉しく感じています。特に部屋をランダムに出現させるときのさせ方には注意を入れながら作成させていただきました。

しかし人を置き動かすことができなかったり、アイテムのオブジェクトなどに関しては周りの力をたくさん借りて行いました。本当に助かりました、こういう感じに自分一人の力以外の方々と一緒に物事を行うことは新鮮でしたがとても参考になったしとても良かったです!あとはメッセージコンソールなども作成しました。これに関してはキャラクターが行動したことに関してメッセージが出力されなくてはいけないことがとても大変だと感じました、、。

実際もっといろんなことがしたかったですしかしより時間をすることができなかったこととか特に自分自身のできなささを痛感しました。もし可能なら今後三回生になった際にリベンジなどを果たすことができれば嬉しいと思います。最後に今回一緒に取り組めた方々に感謝します(―_―)

nnskn

今回私はgithubの管理・コーディングの一部と最後の調整を担当しました。 具体的にはレベル管理の一部とアイテムや装備など持ち物のインベントリシステム(実装できなかった)などです。 また最後の調整ではアセット(3D モデル等)の適用やスクリプトの調整などを行いました。

レベルアップの仕組みは単純で、(次のレベルまでに必要な経験値)=(基本ポイント+プレイヤーのレベルに応じて増加するポイント)という感じです。

アセットの適用ですが、最初このゲームではオブジェクトが大体が球体などの単純な立体だったので、それをkazetta氏が探してくれた3Dモデル等に置き換えるというものです。
上の画像がアセットの適用前、下が適用後です。
やはりちゃんとした3Dモデルを使うと見栄えが全然違います。 図1.アセット適用前
図2.アセット適用後
 こういう比較ができるのは面白いとは思うのですが、先にアセットを集めてから開発すべきだったかもと思いました。もっといい方法はあるかもしれませんが、後からアセットを適用するとスクリプトを元のオブジェクトから付け替えたり、スクリプトがオブジェクト名を参照していたらオブジェクトの名前を変えなければならなかったりします。また、今回のローグライクでは移動方向に体の向きを変える必要があったのでその動きも追加したり… 些細なことではありますが、最初からアセットを導入していれば終盤の手間を減らせたかな?と思いました。

あと、ゲームが始まったときにログ表示のところにちょっとしたモノローグが出るようにしました。これは、ゲーム内の説明画面ではゲームの目的である「ダンジョン50階の制覇」はわかっても、どうやって階を上がっていくかが分かりにくいと感じたため追加しました。「ランダムダンジョン」では階段ではなくUnityにもともとあるTreeのオブジェクト(図2右下の白いもの)に触れると上の階に行きます。時間の都合で階段に差し替えられなかったので、「この木を登っていけば出られるかも」みたいなモノローグをつけました。これは時間がRandom Virtual World当日の明朝ということもあってメンバーに相談できなかったため勝手にやってしまいました。共同開発においてはあまりよい行為ではないとは思います。

今回のRMですが、自分にとって反省点がかなり多いですね… 1番は自分の役割が全うできなかったことです。具体的にはアイテムや装備などのおおよそのローグライクが備えているはずの要素が実装できなかったことです。今回1回生で参加してくれたぺとりこーる氏が案を出してくれたのですが、それを実装できなかったのが申し訳ないです。実装できないにしてももっと早い段階で無理そうと伝えておけば何かしらの手は取れたかもしれません。少なくとも2週間進捗ほぼ0なんてことには…。
いずれにせよ情報伝達は大事。

また、大学の授業・課題と開発の両立にも苦しめられました。両立しなければならないこと自体は普段のランダムの作品開発期間とそう変わらないのですが、前回の白鷺祭のときよりも苦しめられました。共同開発でプレッシャーを感じていたからなのか、オンライン授業で春休みから生活リズムが矯正されなかったからなのか、どちらも効率よくできないという結果になってしまっていました。長期間の共同開発では特に、計画性を持って取り組むことは大事ですね。

しかし、反省が多いということは改善の余地が多いということです。特に共同開発では情報伝達と計画性を持って取り組むことは必須ですね。 社会ではゲームに限らずチームでのプロジェクトは必ずあると思うので、この経験を糧にしていきたいと思います。

最後に、このゲームを遊んでくださった方々、そしてチームの皆さん、本当にありがとうございました!

ぺとりこーる

どうも、武器案・フリーbgm収集担当をしていた一回生のぺとりこーるです!  残念ながら武器の実装はされませんでしたが、数十種の武器やbgmの提案などをしていました。拙筆ではありますが短いので最後まで読んでいただけるとありがたいです。

正直、今回の共同開発での自分の貢献度というものはかなり低かったと思います。 ゲーム開発未経験者であり飛び入り参加でもあったために事前の知識面で劣っていたこと、コード類での協力ができなかったことが原因です。また、開発への積極性も低く、具体的な反省点を挙げればキリがないです……。

暗い話になってしまいましたが得られたこともいくつかありました。 競技プログラミングでやるような問題を解くためのコードではなく、実際にゲームを動作させる生のコードに触れられたのは特に大きな収穫です。まだ全部は見れてませんがいずれは先輩方が書いたコードを理解できるようにしたいです。 また、個人・グループで共に課題があることは伸びしろだと捉え、これからの開発に活かしていく所存です。

最後になりますが、「ランダムダンジョン」をプレイしてくださった方々、快く新入生の自分を受け入れてくださり開発に尽力してくださった先輩方、本当にありがとうございました!初めての事ばかりでしたがいい経験になりました。ここでの経験を踏まえ次に繋げていきたいです。ではでは!

さいごに

今回、4人とも共同開発の経験がほとんどない中、何とかゲームとして期限内に提出することができてよかったです。 全てが最初の構想通りに行ったわけではなく、反省点も数あるのですが、1か月間の開発期間の中で確かに得られたものもあったと思います。

RVWは6月いっぱいまで公開されているようなので、まだ遊んでない作品があるという人はぜひ覗いてみてください!
https://virtual.ch-random.net/

「ランダムダンジョン」を遊んでくださった方も、この記事を読んでいただいた方も、本当にありがとうございました!

loading...