675日後の自分へ VRゲーム(音ゲー)をつくった話
2024/5/25
かなり間隔が空いた&書くべきことが溜まっている
先週学祭が終わった。開発していたVRゲーム(音ゲー)を公開できた。 反省点はたくさんあるが、とりあえずほっとしている。
やったこと
開発
実働3人くらい。VRゴーグルを持っていて、たまにテストしてくれる人が別に1人いた。
かなり幅広く担当していた。
- ノーツや背景をBlenderでモデリング
- エフェクトの実装
- 仕様が定まっていなかたので、何度も作っては壊しを繰り返した。結局、プレイヤーのノイズになりにくい&手軽にリッチな印象にできるため、ビートセイバーのようなデザインに収束した。
- 既存のコードの改修、リファクタリング
- エフェクト実装で必要になった箇所。
- 神クラスの改修をした。苦しい。
- エディタ拡張で譜面エディタを作成。
- csvに譜面直打ちは苦しいので、作って良かったと思っている。
当日
ゲームのインストラクタ、列整理
小さい子供がたくさんきてた。
子供の相手大変。お父さんとお母さんえらい。
反省点
ゲーム内容に関して
- (重要)一曲丸ごと使うのはよくない。疲れるし、飽きる。
- 同じ時間プレイするなら、短いものを2曲の方が良かった
- 「長ければ長いほど嬉しいやろ」と思ってた。
- シーン遷移のUIが少々わかりづらかった。
- ゲームの手触りがあまりよくない(個人的に)
- あまりプレイしていて爽快感がない
- メインで開発していたメンバーがvrゴーグルを持っておらず、学祭の一週間くらい前に初めて実機でプレイした
- できれば、実機でプロトタイプの時からテストプレイしたかった。無理なら、PC上でのテストプレイでも楽しめるゲームを目指すべきだった。
- もっと既存のゲームをプレイしていたら...
- 操作体系があまり直感的でない。
- PC上での実装の名残りで、ビートセイバーでいう棒の持ち手の部分の座標が固定されており、コントローラーの角度に同期させて動かすというシステムだった。
- 直感的に分かりづらいらしい。
- テストランの際、一度棒が完全にコントローラーに追従するようにしたが、その状態でプレイするには当たり判定の実装を大幅に変える必要があり、諦めていた。
- ゲームの手触りにかなり関わる部分なので、こだわるべきだった
- ノーツの種類が少ない
- 連続ノーツと普通のノーツしかない
- 曲が少ない
- フルを2曲作って息切れ気味。短いのを複数作った方が、譜面を作る側としても飽きずに楽しめるのかも。
個人的にかなり労力を割いた(もちろん楽しいからではあるが)だけに、曲の長さの部分で体験が損なわれたのはかなり悔しい。手触り、爽快感の意識が足りなかったのも反省。次開発するならVRゴーグル買いたい。
開発時の反省点
- プロトタイプ(遊べる状態)の完成の遅さ
- プロトタイプはすぐできていたが、譜面のver. 1が出るのが遅く、「とりあえずゲームとして遊べる」状態まで来るのに時間がかかった。
- 遊べるものがあるとモチベが高くなる。逆に、ないとモチベが下がっていく
- この動画を実感した。
- モチベの持続
- 私自身はVRゲームと並行してUnityを触ってアプリを作っていたのでかなりモチベを保てていたが、他のメンバーはそうでもない。
- 今回私はリーダーではなかったが、メンバーとして、チームの雰囲気を良くするためにできることってどんなことがあったんだろう。
- 後半の方は、新しいエフェクトを実装するたびに動画を撮ってslackに投げる、みたいなことをしていたが意味あったのかは謎
- メンバーの反応が薄くても、とりあえず何か困ったことや進捗があればslackで何か呟いておくようにはしていた。ほかのメンバーがどう思っていたのかは謎
- コーディングの規約
- パブリック変数を大量に持つ、あらゆる処理を担う神クラスがあった。
- エフェクトの処理のために触る必要があったので、泣く泣く改修したが、大変だった。
- 個人開発でも似たことをやったが、既存の大きなクラスの改修はやっぱりつらい(正確には、改修も楽しいけど、本来ゲームの面白さを上げるのに使えた時間を改修に費やすことになるので、少ない方が嬉しい)。設計の重要性を感じる。
- 人によってオブジェクト指向に対する意識が違う。しかし、完璧な知識を持ったメンバーなど(自分も含めて)存在しないので、逐一話し合ってチームメンバーでコーディングに関する意識をすり合わせるべきだった。
- 今回はやってない。勝手に改修してた。
- 次チーム開発する時にはそうしようと心に誓った。
- パブリック変数を大量に持つ、あらゆる処理を担う神クラスがあった。
チーム開発難しい。でも、何か機能を実装した時に他のメンバーからフィードバックをもらえるのは嬉しいし、話し合って決めるのも楽しかった。
まとめ
- VRゴーグル欲しい
- もっと既存のゲームを遊ぶべき
- ゲームの手触りについての意識
- チーム開発大変(けど、いいところもある)
694日後の自分へ
2024/05/06
GWが今日で終わる。金から月までの4連休だったが、SPIの参考書を解いたり実験のレポートを書いたりしていて、ほとんど休んだ感覚がない。
とりあえずSPIは割と気が重いリストの上の方にあったので、それを手際よく終わらせたのは偉い。今申し込んでいるインターンが通ると助かるが、流石に長期間のインターンは選考も厳しいと思うので程々に期待する。
実験のレポートも前回は締め切りの5分前に提出したことを考えると、今回締め切り前日に提出できたのは成長。とはいえ、想定していたより時間を使ってしまった。
やりたいことが100あるとしたら、そのうち50くらいはできているという感覚。もっとバリバリこなしたいが、今一つうまく時間をマネジメントできない。
キャパって増やせるんだろうか。増やせるとしたら、どうすれば増やせるのだろうかと実験レポートと戦いながら思った。
もっとゲームもしたい。
708日後の自分へ
2024/04/23
数日感覚が空いたので、題名の日付が正しいかわからない。
毎日書くのは厳しいが、せめてなにか普段と違うことをした日やなにかを考えた日には文章にして残しておきたい。
日曜(今日は火曜)に応用情報技術者試験を受けた。慶応大学で受験した。 解けない問題もあったが、合格ラインが6割であることを考えると多分受かってるんじゃないかと思う。
とはいえ、よくわかっていないままにしている分野がいくつかある。特に、ネットワークの知識(TCP/IPなど)を体系的に理解できていないし、データベースも過去問を解いて出てきた部分をさらっと読んだだけで、実用に活かすのは無理そう。
ネットワークは今季の大学の授業でカバーできそうなので、とりあえず大丈夫そう。
データベースは使ったことないし、直近で使う予定もないので優先度低め。ゲーム開発でどのくらい使うのかわからない。ソーシャルゲームだと使いそうだが、コンシューマーゲームでもよく使われるのだろうか。
応用情報の勉強は午後試験の対策がめんどくさいので、今回で受かっていてほしいもの。
昨日、大学の統計的機械学習の授業で「検定」が出てきた。帰無仮説とかp値とかを使うやつ。検定を勉強するのは今受けている授業を合わせて3回目だが、未だに内容を覚えられていない。
統計に限らず、他の数学や電磁気の授業も、なんとかテストを乗り切ったものの、身についていない(その結果、別の授業を受けたときに勉強し直すことになる)ものが多い。
これは本当に無駄だな(テスト勉強の時間も、あとから勉強しなおす時間も)と感じているので、どうにかしたい。
一方で、上のようなものを完全に理解しようと勉強し始めても中途半端に終わることもある。この際、中途半端に手を付けて結局全て忘れるので、更に時間がもったいない。
しかも内容も理解できないため、苦しい。
明確に分野を決めて、期間を決めて一気にやり切るべきかも。
下に、今自分が勉強したいと思っているものを書き並べた。
理解していないこと vol.1
ゲーム・CG
- UniRx, UniTask
- 現状IEnumeratorで頑張っているが、便利らしいので&割とUnityで調べ物をしてるときにUniRx等で書かれたソースコードが多いので完全に理解したい。
- Unity 非同期
- async await わからない
- Unreal Engine
- かなり興味ある。できる仕事の幅も広がりそう。ただ、Unityを極めることを優先すべきだと感じるので、保留気味。
- C++
- UEで必要なので。
- シェーダー
- C#
- Unity内部で完結してしまうので、言語仕様を詳しく学ぶタイミングを失っている
- (ゲーム)AI
- (授業で間接的に扱う)
- OpenGL
- (授業で間接的に扱う)
- JavaScript
- (授業で間接的に扱う)
- CG数学
- (授業で扱う)
- Typescript
- Blender モディファイア
- Live2d
- UI, デザイン
- 統計 帰無仮説、t分布、χ二乗検定...etc.
- (授業で扱う)
- 数学全般
- Docker
- データベース
このリストから、優先順位をつけて、なるべくシングルタスクで取り組んでいくのが良さそう。 何から手を付けるか、一旦考える。
710日後の自分へ
2024/04/20
応用技術者試験が明日に控えている。
午前試験はいけそうな気がするが、午後試験は微妙。
自分の得意な分野(プログラミング、組み込み)が難しくなると厳しいかもしれない。
割と勉強したつもりではあるが、覚えきれていない部分があることも認識しているので、合格できるかはわからない(合格したいけど...)
わからないものに時間をかけ過ぎない、という点だけ気をつけたい。
712日後の自分へ
202404/18
同期のめちゃ優秀な人が留学するらしい。
あまりにも自分と能力差があるので単純に比較して自分も頑張らなければ、と思うわけではないが、その人の成長と比べて自分は成長できているのだろうか、と思う。
その同期は、一年以上前から目指す分野は変わっておらず、多分今の専門を極めていくのだと思う。
自分は今、ゲーム制作にハマっているが、これは、自分にとって新しい学習領域だから面白みを見出しているのか(ある程度極めると興味を失ってしまうのか)、それともゲーム制作自体に面白さを見出しているのか、区別がいまいちつかない。
とりあえず、今自分ができるのは目の前の開発を進めて、もっと開発の知識をつけていくことだけで、そのあとのことはそのときにしかわからない気がする。
713日後の自分へ
2024/04/17
今日はアルゴリズムの授業で、trackというオンラインジャッジのサービスを使用して、競技プログラミング的なものをやった。
競プロはやったことがなかったので新鮮だった。
普段はプログラムが意図した通りに動くところをゴールにしてプログラミングをしているので、実行速度や計算量をほとんど気にしたことがない。
今回はいつものノリで書くと実行時間内に終了しないため、授業で学習したアルゴリズム(エラストてネスのふるい、累積和、、、etc)を使って実装を工夫する必要があり、また、処理速度が目に見えて早くなっていくのをみるのは、かなり楽しかった。
競プロに夢中になる人の気持ちをなんとなく体験した気がする。
714日後の自分へ
2024/04/16
大学の授業が忙しい。
何も考えていなくても、簡単に時間が過ぎてしまう。小さなことでもいいから、できるだけ毎日自分のためになることをしておきたいと思った。
とりあえず、できるだけ毎日GitHubに1コミットしてみる。「毎日」であること自体が意味のあることかは疑わしいが、継続してコードを書くことで、少なくとも現在の自分よりはずっと前進できる気がする。
publicリポジトリにコミットするのが好ましいとは思うが、現実的に目標を達成し難いので、privateリポジトリも含め、1日1コミットを続けてみる
今日の実験ではじめて本格的にverilogを触った。プログラミングの経験があれば簡単だろうと舐めていたが、雰囲気がかなり違っていて、時間がかかった。
あと、履修する科目を大体決めた。2年の頃に比べてpcを触ることのできる授業が増えて嬉しい。実験は苦しいが、座学に比べると気楽ではあるし、面白いテーマもある。
忙しいことには変わりないが、(授業に関しては)計画的に、余裕を持って過ごせればと思う。