Unityゲームジャム「密」に参加しました
UnityRoomにておこなわれたゲームジャム「密」に参加したので開発記録を残しておきます。前半ポエムで後半は日記です。
https://unityroom.com/unity1weeks/16
完成したブツはこちらになります。
はじめに
過去2回のゲームジャムに参加し今回で3回目になります。(「跳ねる」は勝手に自主開催)
メーーーーー | フリーゲーム投稿サイト unityroom
コロナの影響であまり外出できなかったので何か作りたい気分になってたところゲームジャム開催と聞き迷わず参加を決めました。
僅かにでも使った道具は以下
- Unity
- Visual Studio Code
- InkScape
- GitHub
- SourceTree
- #unity1weekのTL
作り終えて
時間関連
費やした時間は今までで最長かと。平日3、休日4でリモートワークで通勤もなくより時間を掛けられました。
自分との戦いを盛り上げるため(?)事前準備などはせず、タイトル発表から全てはじめました。
引きこもるのは得意ですが企画に詰まるとツイッター見がち。
企画関連
こなれてきたのか調子に乗り企画はざっくりで見切り発車。途中テンション下がってしまったがちゃんと着地できました。
最終的に目指したのは「多くの敵を同時に攻撃し、締めの一発で全員倒して気持ちい~」となれるゲームでした。多くの敵ってのが密な要素になります。
着想としては"スパロボのマップ兵器"や"TOD2の同時撃破で高グレード"みたいなところです。バカゲーっぽいテキストはバカゲーが好きなので目指してみました。"とんでもクライシス"が好きだ...
以前より時間取れるぜ!ということで仕様は多めで右往左往しながら進めましたが時間ありきで何とかなりました。プロジェクトとしては酷かったと思います。軸をしっかり持たないと手が止まったり道を間違え時間を浪費する。共同開発だったらめっちゃ迷惑だと思う。(良い方向への軌道修正であるならいいが)
開発関連
開発系アセット?(PlayMakerみたいなの)は特に使っておらず、コードべた書きです。コーギーエンジンとかプレイメーカーとかよくわかんないけどそういうのも使えた方がいいんだろうなぁと思い始めました。エンジニアとしては全てプログラムで表現することに喜びを見出しますが、一時的な速度を求めたり、ユーザが楽しめるものを作るという観点では使える道具は何使ったっていいのでは?と考えを改める。
木曜日時点で(アクション回りの実装のみでは)ゲームが楽しくなさ過ぎて絶望していましたが、ポイント制度を入れただけでゲームらしくなり気力も取り戻せました。
ポイント計算は↓。とにかく1発のビームでたくさん倒せばおk。
1ヒットで倒した敵のポイント合計x今回のビーム中に倒した敵の数x1ヒットで倒した敵の数
成果物
- 満足度:★★★★☆
- 完成度:★★☆☆☆
まずは完成おめでとう私。
満足度4/5は開発期間の気持ち。今の自分は概ね出し切ったかな。楽しかったし。
完成度2/5は成果物を見ての気持ち。表現ちからの無さに絶望しマイナス3点。ゲームにはなった。
うまくいったところ
- HPがゴリゴリ削れてくのが見えるのは良かったと思う。
- 敵キャラの差別化(ステータス、テキスト(?))
- タイトル
- gifアイコン
反省
ゲームの遊びとしては高得点をとるには削りフェーズと撃破フェーズに分けられます。この削りフェーズは非常事態宣言を使ってHPを20以下に減らすのですが、まじめにやるとすごい時間がかかるし短調で辛い。簡単にクリアされたら悔しいじゃないですか
爽快感を得るための仕込みが苦行が過ぎてるのがよくない。ある程度の仕込み時間はあるべきと考えるがそのバランスが取れなかった。
政治的要素を入れたくないと思いつつも後半ハイになってしまい非常事態宣言追加、密です追加。ぶれぶれ。
評価とコメントを受けて
多くの閲覧、評価(良し悪し関係なく)、コメントを頂けてとても嬉しかった。
敵キャラに名前を付けたことでその名前で呼ばれることに快感を得る。
「HPが削れていくのが楽しい」と頂けて当初の目的は果たせたことを確認した。
評価期間(周りを見て)
わかってたけどレベル高杉内??ツイッター見て笑ってる場合じゃなかったなと反省。
開発中も気づいてはいたけどデザイン周りのセンスもスキルもからっきしだ。プログラムだけ出来ていればいいやと思っていたが1人でゲーム作るとなるとやっぱ限界は近い。足りないと思ったのはこれら
- パーティクル/VFX
- UIデザイン
- 3Dモデル
- Cinemachine
この辺りは仕事だとデザイナーに任せっきりでいざ自分でやるとなるとできない。勉強せんとね。標準の機能はどれも覚えないといけないが機能多い。。
既に出来ることを育てるのも大事だけど他のLv0をLv10でもLv20にでもするのも必要だし成長曲線的には0スタートの方が早いはず。
次回/今後に向けて
とりあえず表現力を上げたい。「俺には感情がない」を疑うぐらいデザインに興味がなくて無視してたけどちゃんと向き合わねば...
純粋なデザインもそうだし、上記のパーティクル、3Dもできるようになりたい。
そのうえで面白いものを生む発想やらスピリチュアルやらのインプットも必要になる。忙しい...
でもこれら一人で全部できれば最強!ゴリラ開発者目指そう...!
購入物
やたら買ってみたものの利用したのはローポリ人々のみで他は無料のアセット、音源です。
以下は1日ごとの日記ですので興味ない場合はスキッポしてください。
ちょいちょい実装回りのメモがあります。
1日目
お題発表。「密」
ネタだしに使ったメモはこれ
モッサ~と敵がいてキモ~となるうごめく物量系の方向にする。大量地獄
密な敵がいるならまとめて撃破で気持ちよくしたい。スパロボのマップ兵器や!TOD2のBrusterや!という感じで大体の方向が決まりました。
この時頭の中では「黒が七で空が三」の勢いで敵が押し寄せてくるイメージでした。
攻撃方法としてホーミングレーザーで焼きたい気持ちが高まってしまったので動画の内容をパクったところで初日は終了しました。
(このときメーは密な敵とホーミングレーザーの融和性の低さに気づいていない)
間に合わない~~ #unity1week pic.twitter.com/KZKCxexbus
— メーーーーー (@meeeeee1021) 2020年4月27日
毛がぴょろぴょろ飛んでく感じ
2日目
- 引き続きホーミングレーザーを進めつつ
- アセット集め(人間、エフェクト)
- UI表示
- 敵の生成、並べる
- 攻撃が増えてもいいように基底クラスから継承するように修正
2日目進捗 「ズドドドドドド 」
— メーーーーー (@meeeeee1021) 2020年4月28日
周りを見ると絵作りがんばっててえらい。まだUnity世界で戦ってます。#unity1week pic.twitter.com/B8LuzS3hsA
3日目
やっぱ技が一つじゃ寂しいので増やしたい。そりゃもうゴン太ビームですね?
- アニメーションコントローラとの格闘
- 足ビーム実装
足ビームは主人公の正面に長いボックスコライダを配置し、OnTriggerStayで滞在している敵を拾ってます。
これは未検証の工夫ですが、拾った敵へヒット処理が必要なためGetComponentが必要になります。このゲームでは最大180回ほど発生しうるので各OnTriggerStayでGetComponentしていたらなかなか遅いはず。
そこでGetInstanceIdでヒットした敵を集めておいて次のUpdateで一気にヒット処理を回す手法を取りました。
GetComponentよりは早いはずですが。ちゃんと検証したいところです。
3日目終了!密になったところを一撃~みたいな #unity1week pic.twitter.com/oJDmFT4jqN
— メーーーーー (@meeeeee1021) 2020年4月29日
4日目
自分の作っているブツに対しての展望の無さ、ガンガン進む#unity1week、虚しくなりほぼ作業なしで天井を見つめる。
- 一定時間ごとに敵を生成
- フェードイン/アウト
5日目
いっぱいねてげんきでた。5日目以降仕事が休みなのでガンガン進める
- 敵5パターン用意
- スコア、ステージ情報追加
- リザルト画面追加
- ランキング、ツイート機能追加
- 複数SE対応
複数SEについて。
以前用意したAudioManagerが複数SEに対応していなかったので対応しました。
AudioSourceは初期で4つ用意し、足りなくなり次第AddComponentする。えぇ割とゴリラ戦法です。ホーミングレーザーは60フレーム60発なのでとんでもないことになりました。ツイートしているのは発射数を削った状態です。たくさん再生させないように注意した方がいいですね。ちゃんとやるなら連射を表現するSEを作るべきです。
#unity1week フローができた pic.twitter.com/s79ij52I7I
— メーーーーー (@meeeeee1021) 2020年5月1日
#unity1week SE拝借して設定した。必要に応じてAudioSourceを増やすようにしたら20個以上作られてうわって思う。連射する1つのSEを作れって話か pic.twitter.com/9uSm0V2BWp
— メーーーーー (@meeeeee1021) 2020年5月1日
6日目
焦りを感じだす。非常事態宣言追加ってなんだ?
- 敵HP表示
- 非常事態宣言追加
- 移動範囲設定
- 同時撃破処理追加
- ゾンビ特殊処理追加
- メニュー画面追加
- タイトル「密蹴」を思いつく
HP表示はダサくなりそうだから嫌だったけど状態が見えるようになって良かったと思う。元からダサい
移動範囲設定はコライダではなく2点からなる矩形で収まるようにClampで移動制限をしています。
ゾンビ特殊処理は本当なら敵クラスを継承したゾンビクラスを作り処理を分けたいところでしたが時間が惜しいのと変更量も少なかったのでベタ書きでした。
お風呂入っているときに「密蹴」を思いつきました。ちょうど蹴りからビームが出ていたのもあり、密集とも掛かっててニチャァと笑ってしまった。
テンションが上がってしまい敵性能と無駄テキストを書いてしまいました。統一された名称が必要だったんだよ!
7日目 投稿日
投稿に向けて細かい作業が増える。当初企画の発端でもあったホーミングレーザーがゲーム的に不要となり泣く泣くオミットする。
- タイトル画面
- 密(減点)処理
- ゲージ減少処理
- TaskからCoroutineに変更
- リソース整理
- ビルド/デバッグ
- 投稿!
- gifアイコン作成
投稿2時間前にWebGLビルド/実機テストを始める危機感の無さ。WebGLだとTask(await Task.Delay?)が動作せず慌ててCoroutineに置き換えました。使っちゃダメなんだっけ?
gifアイコンの作成はこちらを利用しました。Unity Recorderでスクショ連射してリンク先でいい感じにgifにしてもらいます。gifアイコンあるなしで客入りが変わると信じている派です。
UnityRoomに投稿しました!
— メーーーーー (@meeeeee1021) 2020年5月3日
群がる密集団を蹴りビームで一掃するゲームです!
まとめてビームで高得点!
遊んでみてくだしあ!
密蹴 | フリーゲーム投稿サイト #unityroom https://t.co/UzVxjn8doS #unity1week pic.twitter.com/8IxfsACEIH
投稿後
- みなさんのゲームを遊ぶ
- これ
- 表示回り修正
- 処理負荷軽減対応
- パーティクル学び始める