tanaka's Programming Memo

プログラミングについてのメモ。

1週間ゲームジャム"あける"に参加しました!

2020年最後のUnity1週間ゲームジャム"あける" に参加して、「光花(KOHKA)」という音ゲーを作りました!

f:id:am1tanaka:20201228120004g:plain

光花-KOHKA- | フリーゲーム投稿サイト unityroom

参加しましたブログです。

目次

参加の狙い

今回は専門学校の1年生の皆さんが挑戦できるタイミングだったので、講義の一環としての参加でした。ということで、以下のような狙いを持って参加しました。

  • これまでに講義で扱った技術の応用例を示す
  • 一緒に参加することで開発意欲を促す
  • 今後の講義の題材にできそうなプロジェクトの作成
  • Slackの練習

作業の流れ

ざっくりと作業の流れです。

開催前

開催の2週前から1週間ゲームジャムを想定して、以下のようなことに留意して企画を考え始めてもらいました。

  • 「よけとる」をどのように改造できそうか
  • 使ってみたい技術、アセットの調査
  • 1~2日で作り切れそう
  • 面白くないと感じてもまずは完成させられそうなもの

自分も12/12にこんなツイートして企画案から考え始めてます。

このタイミングでは、色を変えるとか、大きさを変えるとか、角度を変えるとかしてマップの見方が変わるようなタイプのパズルが気になってましたが、よけとると全然違うので没にしました。それはまたいずれ。

1週間前の週は、企画を進めるとともに1週間ゲームジャム用のプロジェクトを作成して、WebGLに切り替え、解像度設定、BGMやSE再生、簡単なシーン切り替え、ネットランキング実装、仮ゲームの実装を行いました。自分もこのタイミングで以下のところまで開発を進めました。この時はBGMは d-elf.com さんのダンス系のを使ってました。

音との同期は既存のアセットなどは使わず、AudioSourceのtimeSamplesを参照して自前で計算しています。講義でやっていない内容は使えないルールなので、計算方法を以下のブログにまとめて紹介しました。

am1tanaka.hatenablog.com

BPMが分かっていてテンポが一定の曲であれば、掛け算や割り算で対応できます。

お題発表

お題は"あける"。ちょっと考えていた方向性と違ったのですが、タイミングが合った時に内側の円が開いて光る → 沢山タイミングを合わせると夜が明けていく → 最終的に花が開くとかでいいか? → 開く演出を花にして開花でいいのでは...というように演出の方向性を連想していって、素振りプロジェクトをそのまま本プロジェクトにして進めることにしました。

なんとなくダンス系より和風かな?ということで、それならH/MIX GALLERYさんに良いのがあるに違いないと選曲をやり直して、今回のタイトルと本編の曲を探し出しました。結果も英語ではなく感じに変更。あとは出現パターンの調整です。

1,2日目

12/21(月)から作業開始。この2日間は学生さんが講義中は作業できないだろうということで、同じ条件にするために16時半過ぎから作業を始めました。

  • タイトルを光花(KOHKA)に変更
  • タイミング判定や画面跳ね返りの不具合修正など
  • 出現場所をランダムから種に変更
  • 種のオブジェクト作成

3,4日目

水木は講義なので、講義中と帰宅後の作業です。

  • 選曲
  • 種の移動データと移動処理
  • 種の円速度設定パターン作成
  • ステージデータ作成
  • タイトルからランキングを呼び出す
  • WebGLビルドとunityroomへの投稿確認

この段階で、一旦ゲームとしては完成しました。まだ開花の演出が円のままだったりで、演出は現状のものとは違ってました。

5日目

この日は卒業制作だったので日中は作業無し。帰宅後も他のことをしていて、作業開始は22時から。以下のみ進めました。

  • 正解時の花の演出作成

6, 7日目

締め切り前の土日。土曜日は数学の問題解いたり別のことをしていて15時過ぎから作業開始。日曜日も作業開始は14時ごろから。

以上で、日曜の17時半ごろに公開予約ができました。このぐらいのタイミングで完了できたのはYOKETORU改か秒速忍者以来?良いペースで完成までたどり着けました。

恋しかった技術

1年生の講義で扱った技術縛りのために使えなかった技術のうち、特に使いたかったものを挙げます。

継承 / ポリモーフィズム

なんといってもこれ。これらが使えないとコピペや分岐が増えて増えて...。switchで分岐させて呼び分ければ解決はできるものの、ポリモーフィズムですっきりさせたい、という欲求が強かったです。

この辺は使いどころが想像できるぐらいの開発経験がないと、ただ習うだけでは必要性が実感できない技術だという印象を持っています。「なるほどこれは便利!」と思える体験を積んでから教えるカリキュラムにしているので正に狙い通りなのですが、早く講義で扱いたいです!

今回のプロジェクトは、シーンの管理やチュートリアルとゲーム中での振る舞いの違いなどをきれいに解決してみせるよい教材にできそうです。

ScriptableObject

こちらもある程度まで経験を積まないと、使いどころが分かりづらい機能ではないかと思ってます。別の場面で使い回したり、修正するような開発経験がないと、インスペクターで設定すればいいじゃん、となってしまいがち。ステージデータの作成や色の設定を別オブジェクトに適用するなど、今回は手作業でちまちまと書き写したりコピペで対応しました。ポリモーフィズムと組み合わせればPluggableな仕組みも作れる本当に強力な機能です。

TextAsset

これは講義で扱っておくべきでした^^; これとSplit()による文字列分割を知っていれば、データ設定ではScriptableObjectの代用が可能でした。Paizaの対策にもなるので、来年度には反映させたいと考えてます。

Slackの利用

Slackは今回が初運用で、良さげな方法を手探りしつつ使いました。

最初は「#1週間ゲームジャム」チャンネルを作ってそこにみんなで報告を書いてもらいましたが、1日だけでも前の発言が埋もれてしまい、発表時に学生の書き込みをまとめて見ることができずに不便なので変更することにしました。

個人チャンネルを作ってそこに報告するというのをUnityゲーム開発者ギルドさんでやっているというのを読んでいたので、それを真似てみたところ情報が追いやすくなりました。

報告の仕方もあれこれ試してみて、今のところ以下のスタイルに落ち着きつつあります。

  • 作業開始時に「作業開始」という言葉に続けて、箇条書きでTODOリストを書く
  • TODOリストの作業が1つ完了したら、その時点で箇条書きで完了した作業項目を書いて日時を残す。ついで、作業開始時のTODOリストを編集して、完了した項目に「(完了)」など書き加える
  • その日の作業が終わったら「今日の作業終了」と書き込む
  • 作業内容をまとめたい時は、続けて箇条書きで残りの作業を書き出す

TODOリストはまとめて置いてあった方がいいのでTrelloに持って行って、Slackにはリンクを貼っておく方がよさそうかな?と思いつつ、今回くらいの規模ならこれでいけました。

まとめ

準備期間をしっかりとって、企画も欲を出さずにまとめやすい方向にしたので余裕をもって公開できました。講義内容でできることを示した上で、オブジェクト指向のあれこれやScriptableObject、SOLID原則なんかを知ることで、よりスッキリしたコードが作れることを示すための土台にもできそうで、今回も良い収穫がありました。

Slackでの作業経過もなんとなく雰囲気が掴めたので今後に活かせそうです。特に今は新型コロナの動向次第では、いつリモートになるか分からない状況です。これまでは卒業制作などの演習科目をどうするかを検討していましたが、Slackによる進捗管理ができるようになれば、あとはGoogle MeetやZoomなどの会議サービスと連携させればなんとかなりそうな手応えを得られました。

狙いのうち「開発意欲を促す」についてはアテが外れましたが、今後の課題として明確化ができました。

企画の面では、他の皆さんの作品を見るとストーリー性というかキャラクター性が出ているものが魅力的に見えました。一発アイディアで世界観を出した上で面白いものを企画し、間に合うように完成させる瞬発力は本当に凄いです。回を重ねるごとにそのような作品が増えていて、収穫が多く、いい勉強、刺激になるゲームジャムです。自分はなかなかそういう感じのものは作れないのですが、継続していたらいずれ何か得られるかも知れません。継続できるペースを保ちつつ、また次回を楽しみにしています。

次回に向けて

企画的に気になっている方向性など現時点での考えを。

  • 大きさ、色、角度、奥行などを変化させることで、ステージの見え方が変わる何か
  • モチーフはプリミティブで
  • 音楽はやっぱ使った方がよさげ
  • 少しストーリー性というか、物語性が出せないか
  • VoxelorerBirdを進めたいので重くならないように

こんなところでしょうか。最初のやつを実現するためにモチーフの研究を軽くでいいので継続したいところですが、他にもあれこれやりたいことが積み上がっているのでできたらいいなというぐらいで。

次回は時期的には春休み辺りになりそうでしょうか。講義が始まっていても6月ぐらいまでは落ち着かないので、Slackでの報告や質問は実施しますが、学生さんは任意参加として今回のように講義で進めることはないと思います。それぞれの考えのもとに参加する人は次回も頑張っていきましょう!

学生さん作品

今回参加した学生さんたちの作品です。公開先が確認でき次第、追加予定です。掲載は名簿順です。

unityroom.com

unityroom.com

unityroom.com

ホペ君は自主的に継続してゲーム開発に取り組んでまして今回が4作品目でした。素晴らしいペース!

最後に

2020年もあとわずか。今年一年お世話になりました。また来年もよろしくお願いいたします。

参考・関連URL