獅子奮迅に関しての報告及び反省
hr.icon
はじめに
どうも、2023-12-17にアドベントカレンダーの作成予約をしたものの、遠征から帰宅した直後で何もできなかった安藤魁星です。 今回は、東京ゲームショウ2023にて出展を行ったゲーム「獅子奮迅」についての報告及び反省を記録したいと思います。
個別の仕事はまたの機会にして、今回は「リーダー」としての目線でゲーム開発全体の報告や反省を綴っていこうかな、と。
https://gyazo.com/743581c525e8cfe7f3d29359b55a7581
hr.icon
概要
獅子奮迅は、初期のコンセプトを小栗先生から頂き、それをもとに形作っていきました。
そのコンセプトとは、「プレイしている人が、側から見ると獅子舞を踊っているように見えるゲーム」です。
「踊る」というアクションを取るためにはある程度アクション性のあるゲームジャンルを基盤にする必要があり、音ゲーにする案もありましたが、アクションゲームということで開発を進めることにしました。
作成開始は2023年6月中旬ごろ、メンバーは計6人で、役割に関しては以下の通りです
table:役割
安藤魁星(リーダー) ゲームデザイン、ハード、プログラム、デザイン、サウンド 研究室としてのDiscordグループはあるのですが、それとは別に獅子奮迅製作用に新規にグループを用意し連絡等を行っていました。
結果としては正解だったのかな、と思っています。研究室Discordは他チャンネルもありますし、辿るのが少し面倒ですので。
使用エンジンはUnity。後述しますが、SteamVRアセットを使用しVIVE機器を活用しています。
hr.icon
ハード班について
ここからは、ざっくりではありますが私の把握している範囲で開発を担当に分けて記載していきます。
ゲーム開発においてハード班があるの、珍しいですよね。愛工大においてはそこまで珍しくもないのが面白いですが。
今回は現実にある獅子舞をコントローラにするため、不自由なく使用できるようにするための作業を行うのがハード班の役割です。
班とは言いましたが、担当したのはほぼ的場君で、私はSteamVR関係を少しいじった程度です。 1.位置・傾きの取得
ハード班の役割で重要なのが、現実の獅子舞の動作をゲーム内に反映させることです。
獅子舞を踊っているように見えるようにするためには、プレイヤーに獅子舞を「動かし」「傾け」「噛ませる」必要があります。
それはすなわち、その要素全てをデジタルな値として読み取れるようにしないといけないわけです。
傾きだけであればM5Stickがあれば十分でかつかなり軽量ですから、それを使用する案もありましたが、プレイヤーに獅子頭を移動させるためにはやはり位置情報が必要だな、ということになりまして、小栗先生から提案されたのはVIVEトラッカーという機器でした。
VIVEというのは、VR機器ブランドの1つであり、VIVEトラッカーは通常、ヘッドセットやコントローラーで取得できない腰や肘などの部分の位置や傾きを、ベースステーションを通じて赤外線で認識する機器です。 (↓VIVEトラッカー)
https://gyazo.com/feb11bab9ee5beef6714431fd01f9cbb
(↓使用イメージ)
https://gyazo.com/6653c7537d6f0a68a0dce504aca29c55
カメラを使った画像認識で位置情報をとらえ、M5Stickで傾きを...という案もありましたが、VIVE機器は1つで位置と傾きを読み取ってくれるのが利点で高精度というメリットもありました。東京ゲームショウを目標にしており期間があまり長くはないため、今回の開発ではVIVEトラッカーを獅子舞にくっつけて動作させる形で作業が進むことに。 VIVEトラッカーから値を読み取るため、SteamVRを使用することに。Unityのアセットとして無料でDL可能です。
VIVE関係のコーディングは私安藤が担当していました。
ただ、結果としてこの「SteamVR」に私、いや、我々は大きく苦しめられることになりました...
2.噛む動作の取得
先ほど記載した通りですが、今回は獅子舞の「噛む」動作もゲーム内に使用することにしていたので、VIVEを使用して取得できる獅子頭の位置・傾きとは別に、顎の状態を検知する必要があります。
噛む動作に関しては、口を閉じているか開いているかが検知できればいいため、M5Stick周辺機器の磁気センサを使用することに。
M5Stickの値はUnityが直接読み込めるアセットがないため、Arduinoを使用してシリアル通信を行いました。
その際にコーディングが必要になるため、ハードを担当した2人にはプログラムも担当した記載をしました。
3.持ちやすく改造
獅子舞をコントローラーとしてゲームを遊べるようにする必要がありますから、持ちやすく改造する必要があります。
今回使用した獅子舞は、相場で言うと中くらいのサイズらしいのですが、コントローラーとしてそのまま使用するには少々厳しい重量感でした。
そこで、自転車のハンドルのようなものを取り付けてみることに。
結果的には、そこそこに持ちやすくはなったと思います。
(↓いろいろな周辺機器がついた様子)
https://gyazo.com/28dfb4aa3ada66354e9eb80766a90849
https://gyazo.com/d5af14b26ab7d1771410be261e639976
感想
よくもまあこの量のタスクをほぼ1人でこなしたな、に尽きます。
私はSteamVR関係を少々と制作のお手伝いはしましたが、全体を通して設計や改造はほぼ全て的場君が行っていました。
制作期間中には、インターンが終わってすぐ岐阜から大学まで移動して作業、なんて日々を一週間続けたこともあり、だいぶ無理のあるスケジュールのなかよく頑張ってくれました。本当にすごい。
hr.icon
プログラム班について
ゲーム制作の花形であり、めんどくさい部分がプログラムです。
前述した、ハード関連の担当は安藤、的場です。
他2人の担当内訳は以下の通りで、
石川:UIやグラフィック、モデル関係など、デザイン班と連携する必要があるもの 矢澤:敵アルゴリズムやゲームの進行など、その他内部的なもの と言う感じでした。ざっくり言うと、フロントを石川、バックを矢澤に振り分けました。
プログラム担当が同時に作業をするにあたってGit連携を使うことになるのですが、まあトラブル続きでした。
これに関しての細かいことはプログラム班の方が語れるでしょうから、今回はこの辺りに。
感想
石川さんの仕事領域に関しての感想:
後述しますが、敵のアニメーションにLive2Dを使用し、プログラム側でもUnityのシステムとしてLive2Dを動作させていました。また、背景が3Dモデルだったりエフェクトがコマ送りのアニメーションだったりと、石川さんだけkk(コンピュータシステム専攻)ということもあり知見も少なかったはずですが、かなりチグハグで雑多なシステム構築を強いられた中、よく対応してくれました! 矢澤君の仕事領域に関しての感想:
デザイン班からフロントの石川さん、そこから矢澤君のルートであったり、ハード班から矢澤君のルートであったりと、タスクの終着点を担ってくれたのが矢澤君でした。自身固有の作業も行いながらよくまとめてくれました。
このゲーム制作全体の進行の遅延の影響をモロに喰らった立場だったと思います。大分と迷惑をかけました。
1、2を争う功労者だったと思います。お疲れ様。
hr.icon
デザイン班について
ハードもある程度同様ですが、ゲームの見た目を担う花形がデザインですね。
デザイン班の役割振り分けはそこまで厳密には行っていませんでした。
なのでちょっと記述が細かいですが、振り分けに関しては以下の通りです。
西山:UI、敵キャラデザイン原案、ヒットエフェクト 牧:敵キャラデザイン・2Dモデル・アニメーション、敵キャラ攻撃エフェクト、照準デザイン 安藤:背景3Dモデル、自機3Dモデル・アニメーション、コンセプトデザイン このような形になりました。
全体的な指示として、「今と昔、和と洋が混ざり合う世界観にしたい」というのを一貫させており、敵キャラデザインはそれを上手に汲んでくれたな、と思います。
UIが顕著ですが、全体的な画風は毛筆・水墨画風にある程度統一しています。獅子舞を題材にする以上、その方が馴染みやすいかな、と思ったためです。
ただ、敵キャラに関しては和の妖怪感を出しすぎると子供にとってとっつきづらくなりそうと考えました。
また、「獅子舞文化を少しでも広げたい」という思いのもと、洋風な要素を取り入れつつポップな範囲に仕上げよう、という結構難しい指示をしていました。
結果的に、敵キャラのデザインは、要素は洋風、絵柄は和風、雰囲気はポップで可愛らしい感じになりました。
https://gyazo.com/6ff92e3df07b71f6f8787d48cccd7d51
原案は西山君、仕上げは牧君です。個人的にはかなり気に入っているキャラクターデザインです。 感想
西山君の仕事領域に関しての感想:
スマホ環境でよくこんなに描けるな、と常々思っていました。デザイン経験もそこまでではないと聞きましたが、これはすごい。結果的にかなりいい采配になったな、と思えるほど良い仕事をしてくれました。
環境を考慮して原案やUIなど、少し軽めな部分を任せてしまったせいで後半若干手持ち無沙汰になっていそうだったのが申し訳ない限りです...
牧君の仕事領域に関しての感想:
私のこだわりで指示した部分をよくこなしてくれました。ありがとう!
敵キャラの動作やディティールなど、結構細かい部分まで口出ししたと思いますがほぼほぼその通りに実現してくれました。私がちょっと渋っていた段階でLive2Dに手をつけたり、ポスターデザインを率先してやってくれたりと、かなりフットワーク軽めに動いてくれた印象です。
hr.icon
リーダーとして動いてみて
私の活動は普段、自主制作が多く、チームで行っていたゲーム制作も、リーダーとしての参加ではなかったり、規模が小さくリーダーが曖昧だったりしました。
そんな中チームのリーダーとして制作を率いる中で、やはり至らない部分は多かった印象です。
ここで反省することで、以後のチーム活動につながればいいな、と思います。
良かった点
コミュニケーションは円滑
今回制作に携わったメンバーは、ほとんどが初めましての状態でした。
唯一ゲーム制作以前に親交があったのが的場君ですが、彼も出会ってまだ日が浅い状態でした。
チームでの制作において、程よくほどけた関係性というのは重要だと考えており、ゲーム概要について話す中で時々冗談も交えつつ、自然と会議等の場が和むように気を遣って話をしました。
また、専用Discordグループを作ったのもそれを後押ししたのかなーと思います。
担当分けは理想的
多少タスクの大小はありますが、基本的にはバランスの良い担当分けができたかな、と思います。
担当箇所の影響で若干手持ち無沙汰になったり、急に忙しくなったりなどはありましたが、あまりに少ない仕事量になることはなかったと思います。もっと人数がいたら良かったかなー、とも考えたことはありますが、タスク管理が難しそうなので結果的にはこの6人で良かったのかな、と。
進捗把握・管理
個々の仕事の進捗や程度などはしっかり把握できていたと思います。全班においてそこそこ細かい指示出しは行えていたはず。
誰かが少し予想外の進行をすれば、意図を示し合わせて齟齬なく進んでいたと思います。また、タスクの優先順位付けは結構細かく行えていたと思います。
良くなかった点
動き出しの鈍さ
ゲームデザイン部分をしっかり固めるまでそこそこ時間がかかりました。特に割りを食ったのがプログラム班だと思います。
「とりあえずこんな感じの動作をさせる予定だよ」程度の伝達すら遅れてしまい、プログラム班の動き出しを遅らせてしまいました。結果としてプログラム班の仕事が後ろ倒しになり後半になるにつれとてつもなく忙しくなるジェットコースターのようなタスク変遷になってしまいました。
ハード班とプログラム班の連携
ハード班(特に的場君)の負担が高く、実際の動作環境を作るのがかなり遅くなりました。
つまりはプログラム班の動作確認が遅れていくわけで、なんということか、実際の環境で動かせたのは締め切り直前でした。
これではイレギュラーなバグ等が発生した場合のリスクがあまりに大きく、結果として展示当日も開始ギリギリまで調整の嵐でした。
こういう場合はハード班の余裕(時間は決まっているので人数)を確保するのが適切です。具体的には、比較的自由に動ける私安藤がハード部分をもっと積極的にいじれれば良かったのですが、的場君以外はハードをほぼ触れない状況でした。予備があるとはいえ獅子舞の改造は無闇にやれることではなかったですからね。信頼を置けるのがDIY系ができる的場君くらいな状況でした。獅子奮迅の制作スケジュールが苦しくなった原因はハード班の多忙にあるのかな、とは思います。
システムに対する見積りの甘さ
今回のゲームの根幹部分のシステム「SteamVR」。これをUnity上で動作させるアセットを使用したわけですが、こいつがかなりの曲者でした。なんと言っても、昨日まで動いていたプロジェクトデータが急に動かなくなるんです。ひどい時は分単位でそれが起きます。原因究明するにしてもネット上での記述があまりに少なく、公式のコメント(英語)を見ても「この辺りが原因だよ!」と書いてあるだけで対処法がわかりません。「じゃあどうすればいいの!?」って感じでした。
ただ、あまりしっかりとした日程調整ができておらず、「ここが遅れたからここで巻こう」みたいなことはできていませんでした。そこは大きな反省点です。
全体的な反省
今回の私を、リーダーという視点で評価した時、良くも悪くもない、というのが総評になりそうです。やはり個人制作の癖は抜けておらず、日程やタスクの調整に課題が残る形になりました。
また、ちょっと"優しすぎた"のかな、とも思っています。
「優しい社長は良い社長ではない」というようなことも耳にしますが、その通りで、遠慮が混じりすぎるとリーダーとしては失格なのだな、と感じました。今回は意識して細かい部分の指摘等ある程度遠慮なく行ったつもりですが、やはり根幹にある遠慮を捨てきれず指示出しに影響が出た気がしています。
明確な今後の反省点ですね。
...と、上記のことをまとめ、色々と反省している最中、思ったことがあります。
もちろん、仕事の振り方や日程調整などが円滑にできていなかったのは私のリーダーとしての失態です。
が、言い訳っぽくなってでも言いたいことがあります!
イレギュラーなこと起きすぎ!!!
私のリーダーとしての働きは、決して優秀だったとはいえません。トラブルが起こった際の対応が結構正面突破だったこともあり、余裕ある制作進行はできませんでした。ただ、悪かったのか?と聞かれるとそうとも言い切れないと思います。事実、メンバーの力ではどうしようもない部分で大半の時間を持っていかれました。
まず、時期が時期でインターンシップが被りまくりました。
一週間動けないメンバーがいる、という状況が何度も積み重なった上、中間報告に間に合わせるため無理な働きをした結果、ハード班2人は揃って体調を崩しました。回復に時間がかかり制作が遅延してしまいました...
ちなみに、中間報告に関してはハード班2人がインターンシップを決めた後に決定されており、この日程に関してはどうしようもなかったです。
故に、制作期間のうち実働期間はかなり短く、かなりカツカツな時間管理だったと思います。
そして、SteamVRの挙動が不安定すぎ!!
昨日まで動いていたシステムが急に動かなくなる挙動は本当に面倒で、動かなくなったことを確認するたびに復旧の時間を要しますから、結構な時間を費やしてしまいます。実際の環境での動作チェックに関しても不具合の原因はほぼこのアセットであり、このアセットが想定通り動いてくれてさえいればここまで苦労はしなかったと思います。
バグやイレギュラーを考慮できなかった結果だ!と言われても仕方ないとは思うのですが、期限が最初から決まって動かせないプロジェクトなので、人数くらいしか余裕を作れる部分がなく、人数を増やしたところで挙動の不安定さは改善できなかったんじゃないかな、と思っています。
hr.icon
まとめ
後半若干愚痴混じりになってしまいましたが、以上が「獅子奮迅」の制作においての全体的な報告及び反省でした。
獅子奮迅というゲームは、コレでもかなり実装したかった要素を切り捨てて完成させています。完成自体かなりギリギリになってしまいましたが、それでもこの辺りの判断はなんとかできた方なのかな、とは思っています。
総評としては、「メンバー、みんな良く頑張りました!」と胸を張って言いたいです。
以後、メンバーがもし何かしらの負い目を感じていたとしたら、それを解消できなかった私の責任です。
今回の制作で学んだことは必ず糧になると思います。
より良いリーダーになれるよう頑張っていきたいですね。