
格差社会
駅前で某エナジードリンクの無料配布が行われていて折角なら貰おうと近づいて行ったのに一切無視された皆さんこんにちは。ああいうのも年齢や容姿で区別されるのでしょうかね。職業や収入以外の面でも格差社会が広がっているのを実感します。
杉浦非水展
あまり美術に関して素養はないのですが、地元の美術館で日本初のグラフィックデザイナー杉浦非水の回顧展が開かれていたので、ゲーム作りの勉強になるかもと鑑賞に行ってきました。
杉浦非水は明治から昭和初期に活躍したデザイナー(当時は図案家といったらしい)で、三越の広告デザインを筆頭に数々の商品広告や本の装丁、官公庁のポスター等を手掛けてた方です。アール・ヌーヴォーをベースにした和洋折衷のデザインは今見てもインパクトがあり、逆に新しささえ感じます。

また、直線や曲線を大胆に使用し、デフォルメされたモデルにコントラストをハッキリとつけた彩色の広告などは、一目見るだけで大きな印象を残すもので、そういった面は斬新さが求められるインディゲームの絵作りの参考になるものだと思います。

回顧展では解説付きの作品集も売られていて、ちょっと高め(2,500円)ですが購入させて頂きました。
Flock box dots
Vampire Survivorsのヒットもあり近頃はワラワラと画面一杯に湧き出てくる敵を倒したり、大量のキャラクターを誘導したり集めたりするような、群衆を扱ったゲームが人気になりそうな気配です。
PCやスマホの性能アップもあり画面内に大量のキャラクターを配置しても以前ほど遅延やちらつきの問題が発生しづらくなったので、効率化等の技術検証に工数を割かず割と手軽に手が出せそうですが、そんな時に群衆の制御AIとしてこのアセットは有用だと思います。
Flock Box dotsは、その名の通りFlock(群れ)の動作を作り出すことのできるアセットで、例えば海中の小魚の群れの動きなどを想像してもらえばよいのですが、群れ全体の動きには一体性があり統率が取れていますが、個々を見ていくとそれぞれに個性があり、距離を開けるもの、詰めるもの、群れから離れていき暫くすると元の位置へ戻るもの様々です、そういった集団全体の動きと各々の個性的な動きをFlock Box dotsを使用することで実装することができます。
概要説明
このアセットは主に3つ要素から成り立っています。
- 集団を構成する個体の動作を制御するSteeringAgentコンポーネント
- 個体の動作(凝集、分離、追跡等)を定義したBehaviorSettings
- 各集団の生成、活動範囲の制限等を制御するFlockBoxコンポーネント
同封されているサンプルシーンを開くと、シーンを開いた段階では集団を形成するオブジェトはシーン内に配置されておらず、FlockBoxコンポーネントが付けられた空のオブジェトが配置されているのみとなっています。

このFlockBoxコンポーネントを参照すると集団を形成する個体のプレハブとその数、集団の活動範囲が設定されていることが分かります。

上の図の「Starting Populations」に設定されている「Boid」が個体プレハブ名でその横の数字が生成数です。そして「Dimensions」と「Cell Size」が活動範囲の定義となっています。
これを実行してみるとこんな感じ

SteeringAgent
各個体を実際に動かすのは個体プレハブに設定されたSteeringAgentコンポーネントです。

このSteeringAgentのActive Settingsに個体の動作を定義した設定ファイル(BehaviorSettings)を指定することで、個体の動作が決まり=集団としての動作が決定されます。
このBehaviorSettingsには個体の動作の指針、群れから離れたり、群れの中心に集まったり、ランダムに動いたり、といった動作をどのくらいの頻度(強さ)で行うのかを設定します。
BehaviorSettingsはプロジェクトビュー内で右クリック→Createメニューから作成することができます。

生成されたBehaviorSettingsに対してAdd Behaviorボタンを押して、設定したい動作(凝集、分離、追跡等)を追加していきます。

具体例で説明
話しがちょっとややこしくなってきたので具体例で説明します。
例えば小魚の群れのように各個体が同じ方向に動くような動作をさせたい場合、
まず群れを先導するリーダ役のプレハブと、それを追従するプレハブをそれぞれ用意し、それぞれに役割にあった動作をBehaviorSettingsに設定します。

リーダ役のプレハブ

追従役のプレハブ
リーダ役のBehaviorSettingsにはランダムで動く[Wander]設定

追従役のBehaviorSettingsには追従[LeaderFollow](+分離[Speparation])の設定

次にシーン内にFlockBoxコンポーネントを張り付けたオブジェクトを作成し、リーダ役、追従役を生成する設定を行います。

この設定でゲームを実行すると

ランダムで動くリーダに追従して動く50体の群れを作ることができます。
記事が長くなったのでFlock box dotsで設定できる動作(凝集、分離、追跡等)の説明については次回の更新で。