forte1stのブログ

今までに作ったゲームの解説とかを書きます

256FのBGM自動生成システムについて

f:id:forte1st:20181117205217p:plain
256F

2015年4月公開
ニコニコ自作ゲームフェス5にてUnityスタークリエイター賞受賞

 

256Fは自動生成された塔を登っていくジャンプアクションゲームで、BGMがゲームの状況に合わせて自動生成されるのが特徴です。こんな感じのBGMが生成されます。

 

地形の自動生成に関しては、一定の大きさの地形パターンをいくつか用意してランダムに配置した後、穴の開いたパターンを各フロアに1箇所以上配置し、所々に休憩フロアを配置するという単純な仕組みです。横移動を塞ぐ地形がないので、穴が各フロアに1箇所でもあれば通行可能であることが保証されます。

 

音楽の自動生成については少し複雑なことをやっていますが、別に特殊な技術を使っているわけではありません。

まず、コード進行はエリア(64フロア)ごとに固定のパターンを繰り返しています。ただし、固定といっても全く同じコード進行を繰り返すのではなく、似たようなコード進行をいくつか用意してランダムに切り替えています。例えば65F~128FではFM7-G-Am-AmになったりFM7-G-Am-Gになったりします。このコード進行に合わせてベースの音が決まりますが、ベースのリズムパターンはエリアごとに固定です。 

メロディーのリズムは、エリアごとに設定された「音符生成確率テーブル」を元に決定されます。例えば、[1.0, 0.2, 0.2, 0.0]というテーブルが設定されていた場合、各小節の1拍目は必ず音が鳴り、2拍目・3拍目は20%の確率で音が鳴り、4拍目は鳴らないということを意味します(実際には1小節をもっと細かく分割しています)。ここで、プレイヤーのHPに応じて確率に補正をかけ、ピンチの時ほど激しいリズムになるようにしています。また、リズムは毎回新しく生成するのではなく、1回生成したリズムを何度か繰り返すようにしています。人間の作る音楽の多くはそうなっているためです。

こうして生成されたリズムに対して音を割り当てます。音楽理論よく知らないので正直適当です。まず、コード進行が決まっているのでそれに応じたスケール(Cメジャーなど)を設定します。各音符について、その時鳴っているコードおよびスケールの構成音が、割り当てる音の候補となります。これらの候補に対して、以下のルールで確率を設定します。

1. 1つ前の音に近い音ほど確率を高くする
2. 1つ前の音が非コード構成音だった場合、非コード構成音の確率を0とする
3. 表拍は非コード構成音の確率を0とする

 1は、例えば低いドから急に高いドに飛ぶようなメロディーが生成される確率よりも、ド→レ→ミのように滑らかなメロディーが生成される確率を上げるということです。2・3は、非コード構成音が多用されて不自然になるのを防ぐためのルールです。

このようにして設定された確率に応じて抽選を行い、各音符の音を決定します。

 

以上がBGM自動生成の仕組みになりますが、その他にもインタラクティブミュージック的な要素として、フロアを登るにつれてテンポが上がるとか、敵がテンポに合わせて攻撃するとか、休憩所内や一部の敵の攻撃範囲内でフィルタがかかるみたいなこともやっています。

グリーンピースチャレンジ 制作メモ(ネタバレ)

f:id:forte1st:20181104140418p:plain
グリーンピースチャレンジ
2017年3月公開
第22回あほげー優勝作品(お題:グリーン)

 

複数回プレイした方は気づいたと思いますが、よくあるタイミングゲーと見せかけて実は絶対に最高ランクしか出ません。プレイヤーが制御できるのが発射角度だけというのがミソで、角度に応じて発射速度を調整することで必ず同じ位置に着弾するようにしています。Twitterの検索結果を見ると気づいてなさそうな方が多いですね(晒してすみません)

このゲームは、プレイヤーを騙しているとはいえ「一発目で成功する」という嬉しい体験を確実に提供することができます。「誰でも神プレイできるシューティングゲーム」を極端にしたものと言えるかもしれません。

ベンゼン誘導体コレクション 制作メモ

今まで作ったゲームについて、作った時何を考えていたかとか、どういう技術を使ったかとか残しておきたくなったので書いていこうと思います。第1回は「ベンゼン誘導体コレクション」です。

 

f:id:forte1st:20181104095830p:plain

ベンゼン誘導体コレクション
2013年12月公開
ニコニコ自作ゲームフェス3にてCygames賞・Xbox Live インディーズゲーム賞優秀賞受賞

 

5年前なので記憶が怪しいですが、当時は「放置ゲー」というジャンルが定着して少し経った頃だったと思います。「クッキークリッカー」が流行ったのもこの年です。

一般的な放置ゲーは、長時間放置するとゲームの進行が遅くなってしまいます。「なめこ栽培キット」は画面がいっぱいになるとそれ以上なめこが生えてきませんし、「クッキークリッカー」は定期的に新たな施設を建てないと必要クッキー量のインフレに追いつきません。

 そこで、本当に完全に放置してもいいゲームを作ったら(ゲームとしてではなくネタとして)面白いんじゃないかと考えました。当時「艦隊これくしょん」が流行っていたので、コレクション要素を入れることにしました。

コレクションの題材としては以下の条件に当てはまるものを考えました。

1. 艦これの題材である「軍艦」のように、適度に専門性がある
2. 自分が最低限の知識を持っている
3. 絵が描けなくても統一感のあるカードの絵柄が用意できる
4. 進化のような要素がある

その結果、これら全てを満たしていたのがベンゼン誘導体でした。

 

ゲームシステムは、最初にガチャを引いたら一定時間ごとに自動でガチャとクエストが行われ、プレイヤーはゲームの進行に一切介入できないというものになりました。「いくら放置しても効率が落ちない」を実現するためにはプレイヤーの介入余地があってはならないためです。

ただガチャを引くだけだと単調なので、入手可能なカードが合成経路に沿って増えていくというシステムを導入しました。最初は経路の手前の方のカードしか出ない上に、後半は抽選対象が増えて1種類あたりの確率が下がっていくのでコンプガチャより凶悪です。

f:id:forte1st:20181104125803p:plain

 

このゲームを公開した時は「流石に遊びとして成立してないし、フォロワー数人にやってもらえるくらいかな…」とネガティブになっていましたが、予想外にバズりました。

後で気づいたんですが、このゲームのシステムはビンゴゲームと似ています。ビンゴゲームはプレイヤーが一切介入できませんが、途中経過を少しずつ見せることで「リーチ3つもあるのになんで揃わないんだよ!」「まだリーチすらできてないんだけど…」といったコミュニケーションが生まれて楽しめるようになっています。ベンゼン誘導体コレクションも途中経過をツイートできるようになっているので、そういった楽しさがあったんだと思います。