第5回サウンドゲームジャム/LudumDare#35成果物「RhythmicalCreation」
2週間前ですがサウンドゲームジャムに参加してきました!
第5回サウンドゲームジャム
- 2016年4月16,17日に開催のサウンドに特化したゲームジャム
- 今回で5回目の開催
- 一昨年(第3回)のときに初参加して2回目
- 当時は音の波形でステージ生成する横スクロールアクションを作った
- 他のチーム/メンバーの成果物に関しては動画としてアップされている
LudumDare#35
http://ludumdare.com/compo/ludumdare.com
- ルーダムデア、と読む(らしい)
- 年に3回実施されていて、今回で35回目の開催
- 世界中の人が参加するオンラインゲーム開発イベント
- 以下の二つのルールがある
- テーマがユーザの投票によって決められる
- 今回のテーマは「Shapeshift」
- 以前から存在は知っていて興味はあったので初参加
成果物「RhythmicalCreation」
- LudumDare: http://ludumdare.com/compo/ludum-dare-35/?action=preview&uid=84331
- Play(PC/ブラウザ): https://lycoris102.site44.com/unity/rhythmical_creation/index.html
- Source: https://github.com/lycoris102/RhythmicalCreation
使用アセット
企画/仕様
- 今回考えたことをつらつら書いて行きます
音ゲー + Shapeshift
- サウンドゲームジャム参加前に師弟系の音ゲーを作ろうと考えていた
- 今回のLudumDareのテーマが「Shapshit」
- 現状メッシュの変形周りとかのアプローチに疎いので置き換え系
- 何の変哲も無い■が色とりどりの物質に変形して行くの楽しそう
建物モチーフ
- プレイヤーに「意味のある行動」をしていると思わせる
- 神が万物の原型となる物質となる■を置いて行く
- あなたはその動きを模倣して■に意味を与える
- 無駄に壮大に
- スペースキーを押すという小さな体験で大きな事を成すことによる快感
- レパートリーの作りやすさ
- 家、ビル、タワー....
とにかくシンプルに
- LudumDare = (プレイヤーからすると) 一期一会の感覚
- 難しいゲームはよっぽど引きが無い限り直ぐに離脱される印象
- 複数のキーによる操作を排除
- そもそも実装時間が限られている
- サウンドゲームジャムの作業時間は概ね20時間程度
実装
MusicEngine
- @geekdrums さんによる音楽同期スクリプトを使用
- 何小節目の何泊目かという情報にアクセス出来たり
- 小節や拍が切り替わったタイミングを取得することが出来たり
- 以下の用途で使用
- 音に合わせてオブジェクトの大きさを変形する
- 音に合わせてカーソルが動く
- 音に合わせて建物が飛び出てくる
- スペースキーを押した時にどの建物が該当するか判定する
ステージ生成
- Start時に32個のGameObjectを作成しておき、非アクティブにしておく
- CSVを読み込み二次元配列に格納しておく
- タイミングに合わせた出現
- 曲再生中
Music.IsNearChanged()
を使用してUnitが切り替わる直前に出現させる - https://github.com/lycoris102/RhythmicalCreation/blob/master/Assets/Scripts/StageCreator.cs#L40
- 出現処理は
SetActive(true)
/ ■のサイズ変更 / 生える演出 / カメラシェイクによって構成 - https://github.com/lycoris102/RhythmicalCreation/blob/master/Assets/Scripts/StageCreator.cs#L73-L116
- 曲再生中
判定処理
- スペースボタンを押した地点にActiveなGameObjectがあれば当たり判定
- Justの地点にObjectが存在しなければNearで判定するようにしている
- XXX 最初のノーツに関してはNear判定取れてないので厳しめ....
- https://github.com/lycoris102/RhythmicalCreation/blob/master/Assets/Scripts/Player.cs#L17-L34
- https://github.com/lycoris102/RhythmicalCreation/blob/master/Assets/Scripts/StageCreator.cs#L146-L154
当たり判定
- 縦に延ばしたSpriteを戻す/建物生やす/建物Sprite変更/パーティクル発生
次のループへ
- スコアの加算/建物を非アクティブに
音楽
- とにかく思いつかなかった...
- 深夜3時くらいまでフレーズ考えてたけど結局ボツにして翌朝作り直した
- 展開(レベルデザイン)だけ意識して後は割と自分の好きなよう作った
- 前半はとにかく緩やか
- 徐々に音数増やして行く
- ブレイクタイム設ける (裏打ち地点)
- 後半でスパート掛ける
感想/反省
実装
- 1つのクラスがデカい = 適切な名前空間に分割出来ていない
- 最初のノーツの判定が厳しい = Near判定が最初のノーツだけ効いていない
- 全体的に判定が厳しい
- 判定の取り方をUnitで判定するのではなく時間で判定すると良さそう
- 特にBPMを早くするに従って、判定の幅が狭くなるので固定秒で
- 各ノーツの前後何秒に含まれているからそのノーツを消すといったような
- LudumDareのコメントで判定周りの指摘はたくさん頂いているのでもう少し制度上げる工夫をすれば良かった
- 今思うと少しシンプル過ぎた気がする
- 演奏感が足りない
- 複数(2-3)のキーを使用しても良かった気がする
- 演出的には空に浮いているオブジェクトを作ったりしたら良さそう
サウンドゲームジャムについて
- Unityや音に関して強い豪華なメンバーが集まった印象
- 多分分からない事あったら誰かに聞けば直ぐにレスポンス来ると思う
- 学生さんもとても尖っていて才能を感じた
- そんな人たちに自分のゲームを見てもらう/プレイしてもらう幸せ
- 「これいいね!」って言って貰えて地面に頭をめり込ませたい気分だった
- そういえば久しぶりのジャム1人参加だった
- コミュニケーションによる摩擦無く自分の作りたい世界を作れた感覚
- ただし時間とクオリティを犠牲にして成り立っているのを改めて実感
- 専門職集まった方がよりクオリティの高いものが作れただろう
- とても楽しかったので、機会があればまたお邪魔させてください...!!
LudumDareについて
- 初参加、英語分からず、ドキドキ
- ゲームアップのフロー等余力あればどこかでまとめたい気分
- 多くの人に遊んでもらえる/コメント貰える幸せ
- 海外の方はリアクションがオーバーかつポジティブ
- Amazing music and graphics. とか言われたら泣いちゃう
- (他のゲーム見てもわりとそういうリアクション付いてるが多い)
- 互いに評価し合う仕組みなので、コメントから自分のゲーム見てね!って意図はあるかも
- こんなに楽しいイベント、もっと早く参加すれば良かったなぁ、という感じ
次回
- 暫くは外務のゲームジャムに出る予定は無いです
- SPAJAMの予選の様子やUnityのTIPS、勉強会の様子辺りのブログは記載するかも