六畳の享楽

アニメ・ゲームの感想を書いたりするつもりです

Unityビジュアルスクリプティングアセット『Arbor3』を使おう

Arborとは

有限ステートマシン(FSM)とビヘイビアツリー(BT)からなるビジュアルスクリプティングツール。
類似アセットではPlayMaker(FSM)、BehaviorDesigner(BT)あたりが有名。グローバルで見ると、そっちの方がスタンダードなんじゃないかな。
assetstore.unity.com

Arborの特徴

  • 作者が日本人のため日本語サポートが充実している。
  • FSM、BTが単一のアセットで完結するため、たぶん楽。(UI習熟とか連携とか)
  • ちょっと安い。(Playmaker+BehaviorDesignerの$65+$80=$145に対して、Arborは$50)
  • 他ツールに対する機能的な優劣は不明。(Arborしか使ったことないので)

これ以降の対象読者について

上記が刺さった人は、とりあえず公式のチュートリアルを触るなり、よその紹介ブログを見るなりして大体の機能イメージを掴むのが良いと思う。無料の試用版も公開されているので環境は整っている。
これ以降の対象読者は、チュートリアル相当の内容は一通りなぞり、これから実際に使おうという人になる。詳細な機能にまで突っ込んだ話になっているので、初心者が見てもたぶん全くわからないと思う。
世間のアセット紹介によくあることだが、チュートリアルより先の実際の運用に関する情報が極端に少ない。ミニゲーム制作程度ならそれで十分かもしれないが、それ以上の規模のゲームへそのまま適用するにはちょっと心許ない。そんな思いから、以降の段ではより実践的な運用上の心構えやTipsを紹介したい。

ビジュアルスクリプティングツール使用時の心構え

スクリプトを書こう

ビジュアルスクリプティングツールを使う目的は、処理の見通しを良くして増改築をしやすくすることにあると思ってる。なので、死んでもコード書かないマンと化して既存のスクリプトを大量に連ねて複雑怪奇な実装をするのはあまり良くない。処理の組み換えが生じ得ない粒度であれば、さっさと専用スクリプトを書いてしまったほうが幸せになれると思う。

FSMとBTを使い分けよう

FSMは非常に柔軟で何でもできる反面、可読性が落ちやすい。ステートの接続数が簡単に爆発していく。それに対して、BTは木構造と優先度によってフロー制御に対して強い制約を設けるかわりに見通しの良さや増改築のしやすさを得られる。なので、将来的に組み替えたりするかもな~という感じの行動選択のおおまかなフローはBTで作って、その先のひとまとまりの挙動はより柔軟なFSMで作るのが良いと思う。
弊サークルにおけるザコ敵の行動AIを例に取ると、索敵、追跡、逃走、攻撃などの行動選択まではBTで作っておいて、それぞれの行動の詳細な処理(アニメーション制御、移動制御、効果音、攻撃判定etc.)はFSMで作っている。

グラフを階層化しよう

グラフを階層化すると、より見通しが良くなって複雑な挙動も作りやすくなる。先程のBTからFSMへの階層化もその一例。

Arbor使用時のTips

参照グラフを使おう?

Arborでは階層化のやり方として、親グラフが直接子グラフを持つパターンと、親グラフが外部のグラフを子グラフとして参照するパターンがある。(グラフの階層化 | Arbor Documentation
出来ることにはそれほど差が無いように思われるが、個人的には以下の理由でほぼ後者を使っている。

  • 複数の親グラフから共通のグラフを参照できるため、処理の共通化ができる。
  • グラフの中身を表示するまでに必要なクリック数が少ない。(前者のような直接の子グラフでは、一度親グラフを開いてから辿る必要がある。ツリー表示がなく直接の親子間でしか行き来ができないため、階層が深まるほどしんどい。)

普段から呼び出し元が変わりうることを考慮してスクリプトを書く必要があるものの、こちらの方が便利だと思う。

子グラフのヒエラルキーに気をつけよう

階層化において、直接子グラフを持つ場合は子グラフは親グラフと同じGameObjectにアタッチされていると思えば良い。これに対して、外部グラフを参照する場合は親グラフがアタッチされたGameObjectの子Objectにアタッチされる。
なので、普段からこれを踏まえてヒエラルキー上の位置に依存しないスクリプトを書くべき。nodeGraph.rootGraphプロパティによって親グラフを取得できるので、親グラフがアタッチされたGameObjectの別コンポーネントを取得するときなどはこれを経由すればいい。

FlexibleFieldを使おう

普段のように「public int」や「[SerializeField]int」といった形で変数を定義すると、その変数はインスペクタから設定できるようになるものの、ベタ書きするしかなく柔軟性に欠ける。
これに対して、ArborではFlexibleFieldという便利なものが用意されている。FlexibleFieldとして定義すると、インスペクタから変数を設定する際に「定数ベタ書き」「パラメータ」「データスロット」の3通りから選べるようになり、ノード間の連携が可能になる。(データフロー | Arbor Documentation
スクリプトを自作する際には、とりあえずFlexibleFieldとして定義しておけばいいと思う。後から直すの面倒なので……

パラメータ定義方法を使い分けよう?

パラメータの定義方法には、ParameterContainerを使うパターン(ParameterContainer | Arbor Documentation)と、グラフに直接定義するパターンの2つがある。(グラフの階層化 | Arbor Documentation)この使い分けについては未だに正解がよくわからないので、僕の使い分けを紹介する。
グラフに直接定義するパラメータにはSet、Getの権限設定ができる。そのため、親子グラフ間の引数の受け渡しに使うパラメータであればこちらを使うことになる。グラフ内でのみ有効な内部変数が欲しければ、Set、Get両方とも無効化すれば良い。
一方で、ParameterContainerを使うとパラメータを普段のインスペクタビューから簡単に閲覧・編集できるので、デザイナー向けの調整パラメータなんかはこちらを使うようにしている。

ちょっと困っていること

割り込み発生時のお片付け

FSM、BTいずれにおいても、割り込み処理というものがある。(例:攻撃挙動中に殴られると怯み挙動に移行する)このような割り込みによってステートを抜けたときのお片付け処理をスマートに記述できなくてちょっと困っている。
一応、それぞれのノードを抜けたときの処理を記述できるようになってはいるが、もう少し大きい粒度で記述できたらなあと思っている。(サブグラフ抜けたら、くらいの粒度)

PlatformEffector2DのUse One Way Groupingオプションの使い道

現在、Unityで2Dゲーム制作中です。

下から通り抜けられる床*1を実装する方法を調べていて、その中でわかったことがあったのでメモしておきます。誰かの役に立てば。

下から通り抜けられる床を実装する、恐らく一番簡単な方法はPlatformEffector2Dというコンポーネントを使用すること。それをアタッチし、Use One Wayオプションを有効にするだけで衝突判定が特定の方向からのみ有効になります。コンポーネントの使い方は以下の記事が具体的でイメージがつきやすいと思います。

kan-kikuchi.hatenablog.com

ただ、その記事中でも機能がいまいちはっきりしていないオプションがありました。Use One Way Groupingです。制作中のゲームの仕様を満たすには、このオプションが鍵になりました。

ここで、図のように複数のコライダから構成されるカプセル形状を考えます。Use One Wayオプションを有効にしたコライダに対しては、下からは通り抜けられて、上からは着地するような振る舞いが期待されます。そして大体の場面では期待通り振る舞います。

f:id:katopan:20160501172609p:plain

しかし、これだけでは不十分です。図のようにカプセル形状を構成する一部のコライダのみ通り抜け、残りのコライダは通り抜けられなかった場合を考えます。その場合、通り抜けることができたコライダに関しては衝突判定が有効になってしまい、図のようにカプセル形状の途中で着地してしまいます。

これを回避できるのが、Use One Way Groupingオプションです。このオプションを有効にすると、同一のオブジェクトにアタッチされたコライダが、Use One Wayオプションを有効にしたコライダに対して衝突判定が有効かどうかのフラグを共有するようになります。先ほどの例だと、一部のコライダは通り抜けきっておらず衝突判定が無効のため、カプセル形状全体としても衝突判定が無効になります。わーい。

余談ですが、カプセル形状についてはUnityの中の人がCapsuleCollider2Dを作っているという話(動画参照)があるようです。3DではCapsuleColliderが用意されているのに、2Dには相当するものがないというのも妙な話なので、まあそうだよなあという感じですが。早々にCapsuleCollider2Dが実装されて、楽々2Dゲーム開発ができるようになると嬉しいなと思います。


docs.unity3d.com

*1:長い。どなたか別名知りませんか。

『王と枢機卿』『トーレス』雑感

またまた昔なじみとアナログゲームを楽しんできた。

今回は久々に大物のボードゲームをプレイ出来たので、そのあたりの雑感をば。

王と枢機卿

権力網を途切れないよう張り巡らせる修道院コマ、エリアの覇権を争う枢機卿コマの二面からエリアマジョリティを目指すゲーム。

ボードゲームらしい重厚感のある見た目に反して、手番に行えることはいたってシンプルなので、全員初プレイでもサクサクと進んだ。サクサク過ぎて展開の起伏に乏しい*1ようにも思ったが、その辺りは慣れるにしたがって勝負どころが見えてくることで解決されるんだろう。プレイヤーに訓練が求められる感じ。

終わってみると、「競り合った末にギリギリ勝つ」ことが利益の最大化に繋がるようにデザインされていることが感じられて印象的だった。誰も見向きもしない地方でお山の大将やってちゃ大した名声は期待できない。力を示すには丁度いい踏み台が必要という含蓄あるゲームだなあ。

トーレス

広くて高い城を造り上げて騎士コマを送り込み、高いところを陣取るゲーム。

権威に弱い僕にはドイツ年間ゲーム大賞受賞作という点ももちろん魅力的だったけど、一番はコンポーネントから溢れるロマンにやられた。人間というものは、積むのも好きだし登るのも好きなんだよ*2

f:id:katopan:20150502155658j:plain

プレイヤーの思惑が絡み合って作られる城は、プレイする度にその姿を変える。城の形はそのまま争いの記録であり、それが立体的に目の前に表れているというのは強い。実際、その場にいる人達で作り上げたという事実はプレイ後の充実感に直結しているように感じた。

城を階段状に作って登り降りするという直感的な動きの他に「扉」ルールとアクションカードによる移動があり、それらがいいスパイスになっていた。それらの移動手段によって、3次元的に広がるフィールドでの奇抜な動きが生まれていて、戦術的な幅もあり、盛り上がり的にも良かった。*3

インストにとんでもなく時間がかかったけど、慣れてしまえば難しくないように思うので、今後活躍する場が多くなりそうなゲーム。ただ、箱がでかいんだよなあ……

おわりに

僕の運搬能力の限界から、最近はゲーム会と言ってもほとんどカード系ばかりだったのだけれど、やはりたまにボードゲームらしいゲームをプレイすると満足感が違うと感じた。でかいボードゲームを安定してプレイできる環境を構築したいなあ。


王と枢機卿 日本語版
王と枢機卿 日本語版
posted with amazlet at 15.05.04
gamefield
売り上げランキング: 308,301
トーレス Torres 並行輸入品
Rio Grande Games
売り上げランキング: 434,547

*1:この点、プレイ時間の短いカードゲームでは良い方に効くような。同デザイナー作のコロレットなんかがそれか。

*2:たぶん。

*3:予想外の一手で妨害されると、悔しくもあり感心もする。そんな感じ。

ここがすごいよコロレット

今日は、昔なじみとアナログゲームを楽しんできた。

これまでも何度か似たような会を開いてきたんだけど、今回のために買っておいたカードゲーム『コロレット』がかつてないほどに好評*1だったので、簡単にその魅力をお伝えしたいと思う。

プレイ人数がちょうどいい

3〜5人って一番扱いやすい。2人だったらタイマン専用のゲーム探すほうが良いだろうし、6人以上だったら2卓立てればいいということで、その間を埋めるこの人数は嬉しい。

プレイ時間がちょうどいい

30分弱ってのは、いろんなゲームをとっかえひっかえして遊ぶ会においてはかなり具合がいい。ゲームの勘どころやスピード感を掴んだり、プレイ中の気付きを次のゲームに活かしたりというのは、やはり可能な限り一度の集まりの中で体験したいものだと思う。その点、1ゲーム30分というのは、一度の集まりで2〜3回プレイしやすくて良い。*2

プレイ感が軽い

手順が非常にシンプル*3なうえ、手札がないことなどから手番ごとの選択肢がさほど多くないため、ゲーム全体が軽快に進む。疲れ過ぎない。

その割にジレンマ、インタラクションがある

すべての行動は場札(≒共有財)へのアクションであり、いつ損を取るか、どうやって相手の得を減らすか、と常に考えさせられることになる。そのため、アナログゲームの醍醐味たるジレンマをしっかり味わえて、ソロプレイ感もない。

カウンティングが要らない

カードの枚数構成がシンプルで覚えやすい上に、手札、捨て札のような隠匿情報が全くないので、カウンティングが要らない。場を見れば解決する。*4

暗記すべきルールが少ない

言語依存ゼロ&例外的なルールがないため、初プレイの人を迎えてもすぐに本プレイに移れる。スコア計算の詳細だけは直感的でない数値*5が必要になるが、各自が手元で参照できるようにきちんと外部化されている。

物理的に小さい・軽い

幸せ!*6

というわけで、年度末にかけて各種旅行にでかける皆様*7においては、UN○などではなくこの『コロレット』をお供にいかがだろうか。

Coloretto コロレット 日本語版
Moebius
売り上げランキング: 13,020
ボーナンザ 日本語版
ボーナンザ 日本語版
posted with amazlet at 14.03.01
AMIGO / メビウスゲームズ
売り上げランキング: 9,624

*1:もちろん、僕としても大当たりという感想。

*2:ちなみに、別の卓の重いゲームが終わるまでの時間調整にもちょうどいい。

*3:カードを引いて列を伸ばすか、列を取ってラウンドから抜けるかの2択

*4:僕はカウンティングめちゃくちゃ苦手なんですよ。ハーツとかだいたい勘でプレイする。

*5:例えば「1列に置けるのは3枚まで」というのはすぐに身体が覚えるけれども、「4枚で10点、5枚で15点、6枚で21点」というのは覚えづらい(よね?)

*6:主に僕が。

*7:まあ正確にはこの条件だと人数的に嬉しくない場合があるとは思う。2卓って雰囲気ではないだろうし。

アクションゲームにおける声の演出かっこいい

最近あまりにゲームをやらなすぎていると思ったので,先週末に『The Unfinished Swan』というゲームを衝動的に購入し*1,その日のうちにクリアした.

The Unfinished Swan | プレイステーション® オフィシャルサイト

リンク先を見てもらえばなんとなく伝わると思うが,このゲームは少しアート寄りな印象のあるインディーズゲームという感じ.『風ノ旅ビト*2を購入していると安くなるという点からもわかるかもしれない.なのでまあ,初っ端から実に尖ったデザインというか,一発ネタをめっちゃ洗練してかっこ良くしましたー,と言うのがしっくり来るかと思う.


以下,ネタバレ注意.


その中で今回注目したいのは,最終章のナレーション演出.そこではプレイヤーがこれまでに通ってきたステージに似た世界を,NPCの昔語りという体で追体験する.ステージの奥へ進むごとにナレーションが進行していくのが,まるでプレイヤーをクライマックスへと追い立てているかのように感じられて非常にわくわくした.ゲーム要素的には目新しいものが全くない,いわば使いまわしなのだが,むしろこの章のためにこれまでがあったのではと思えるほどに引き込まれた.全4章と短いゲームにも関わらずその内の1章を丸々この演出のために費やすことからも,この演出への制作者の気合は伺い知れるかと思う.

これでふと思い出したのが『アンチャーテッド*3シリーズ.かなりメジャーなので知ってる人も多いと思うが,こちらは映画的な展開・セリフ回しをリアルタイムに体験しながら進めるゲーム.このゲームをプレイした時も大変わくわくした記憶があるので,僕はこういう演出が好きなようだ.歩いている時や仕掛けを動かしている時にペラペラ喋ってくれるだけで臨場感のようなものが生まれていたと思う.アクションの間の箸休め的にセリフが入るのとはまた違った趣があった.

しかしこの演出にはローカライズの壁がたちはだかるよなあ.インディーズゲームの話に絞ると,凝ったものってやっぱり海外勢の勢いが強いと思うんだけど,リアルタイムに流れてくるナレーションを聞きながらプレイするとなるとやっぱり母国語じゃないと入り込めないよね.音楽は国境を越えても,言語はやっぱりなかなか越えられない.*4

そう思って色々調べてたら,日本語へのローカライズを完全に行うことを前提としたインディーズゲームポータルがあるようで驚いた.インディーズゲームと言うとSteamの印象しかなかったけど,こういう差別化のポイントを持っているところは支えてあげたくなる.時間ができたらいくつか買ってみようかな.(しかし声までローカライズしてくれているだろうか……?ちと不安.)

インディーズゲームならPLAYISM

まあそれはさておき,こういう演出に目が向いてしまうと,ちょっくら自分の作るゲームにも盛り込んでみたくなったりするわけで.妄想だけが広がって良くないなあ,という話でした.


余談1
最終章での鏡の演出もおもしろかった.昔語りへの導入が唐突でわかりづらいのに対して,鏡によって今プレイヤーが誰なのかを示すというのがなかなか良かった.それが極まっているのが葬儀のシーンでの柱を挟んだ一瞬の切り替わり.あれはやってもらわないと伝わらない感動があると思う.

余談2
タイトルもローカライズしてほしい派としてはこのタイトルは好かんなあ.いまいち垢抜けない.

*1:こういうときDL販売は便利.

*2:積んである.

*3:実はクリアしていないのだが.壊滅的にFPS,TPSのセンスがないんだよ…….『バイオショック』も途中で積んでるなあ…….

*4:そう考えると音楽すげえ.(今更)

『銀河鉄道の夜』が静かに熱い

銀河鉄道の夜』を見た.原作はどれかの文庫の版を既読.ただ,未定稿であることもあってか話が飛んでいる部分があったりしてあまり読みやすくはなかった記憶がある.それに対して映画化ということでひとつの切れ目ない作品に仕立て上げられているというのは結構うれしい.きっと制作にあたって研究も重ねたことだろうから,賢治の意図をうまく汲みながら作っていることだろう.と信じて,原作は読み返さずにこのエントリを書く.原作との違いとか全くわからないので,そこはまあ目を瞑っていただけると本当に幸い.

なんというか,これほどまでに作者の死生観を全面に出した作品ってのは珍しいよなーと感じた.エンターテインメントにテーマを盛り込んだのではなく,テーマのために書いているという印象.そしてそのことをオブラートに包もうという気が一切感じられないことも特徴.鮮烈なまでの眩しい十字架から,初めはこの人はキリスト教徒か何かなのかと思っていたのだけれど,仏教的な(?)認識を示しているようにも見えて,特定の宗教とかはどうでもいいんだろうなという感じがした.*1

そんなようにして,全編を通して空想世界を舞台に時に比喩的,時に直接的に死生観が発せられているわけなのだけれど,それそのものについての賛否はとりあえず置いておきたい.というか,僕の手には余ってよくわからない.そんなわけで,ここではジョバンニとカムパネルラの関係に燃えたことについて書こうと思う.

まずもってプロットが熱い.銀河鉄道での旅路はそのままカムパネルラという友と今際の言葉を交わす機会なわけだけれど,実際にはカムパネルラの死に場所と,ジョバンニの寝落ち場所は離れている.しかしそんな物理的な距離など彼らの間では問題ではなく,精神は最後の時間を共に過ごす.そんな展開に,ロマンを感じずにいられようか.(いや,いられない.)

そして映画は,「(カムパネルラと)どこまでも一緒に行く」事を誓うジョバンニが川原を去るシーンで締めくくられる.カムパネルラは既に死んだわけで,そうなるとここでいう一緒とは有り体に言えば魂のことだろう.ジョバンニは,自身も友のように貴い魂であることでカムパネルラと共にあろうと決意するわけだ.それでも,自己犠牲的な死を礼賛するわけではなく,ミルクを抱えて現実へと戻っていく.このミルクは,これからも人生*2が続いていくこと,ジョバンニが現実をしっかりと掴んで離していないことを表しているように思う.友と共にあるために友の示した道を歩き始めるラストは静かに熱く,前向きで,好きだ.

余談1
鳥捕りの人*3の挿話はよくわからなかった.ので,いろいろ調べたらなんかそれなりに納得した.
http://contest.thinkquest.jp/tqj2002/50133/e/analysis_08.html

余談2
ジョバンニの持つ切符は天上でもどこまででも行ける特別な切符だった.これは,ジョバンニが生者であるということから来る可能性なんだろうなと観ていて思った.思った上で,上記リンク先の文章を読むと,これはジョバンニの魂の未だ折れていない様も表しているのかなと思ったり.

余談3
丘へ至る道の演出が良かった.細く,だんだんと掠れていくような道は,丘という地形や画面内を上昇するということもあって,まるで銀河に続いているかのようにも見えた.銀河ステーションという名前も頷ける.それでいて,街から逃げ出すかのように木々の間を走る映像や,細い道からは疎外感,圧迫感がひしひしと感じられた.

余談4
鳥捕りに飛来する鷺の群れが花びらの柱のようで綺麗だった.

*1:宗教とかちゃんと調べないで適当ぶっこいているので注意.まあ,賢治の宗教的寛容という態度については割と一般的に言われているようなので,大筋はいいんじゃないかな(適当)

*2:猫だが.

*3:猫だが.

子供たちの選択と、それを見送る大人の物語 ‐ 『おおかみこどもの雨と雪』雑感

先日『おおかみこどもの雨と雪』を見てきました。気付けば『サマーウォーズ』から3年、『時かけ』からは6年も経ってるんですね。全然そんな気しませんが、早いものです*1

さて、折角なので例によって感想でも書いておこうと思います。ネタバレ全開なのでご注意ください。

僕はですね、この映画についてはエンディングテーマが大体語ってくれてると思ってます。これは家族の話で、子供の成長の話で、選択の話です。それを僕ら観客が一歩引いた視点から、大人*2として、若しくはそろそろ大人になる未来が現実的に見え始めてきた青年として見る、というのが想定されている。そんな印象を受けました。

狼と人、というモチーフがあると、ついつい自然と人間という対立項に目が行ってしまいがちですが、この作品について言えばあまりそういった目的を持って作られたようには感じませんでした*3。それよりもむしろ、狼と人というわかりやすい可能性、選択の道を持ってしまった二人がどのようにして生きるようになるか、というところに焦点があったように思います。田舎という舞台設定は自然と人間社会の入り混じった境界域として、子供らの選択に制限をもたらさないという意味があったように思います。

印象深かったのは、子供らの選択が親の介在無しに自己意思によって行われるように描かれていたところです。親としては少し寂しいんですけど、エール送るしかないんですよね、もう。この作品、富野監督がべた褒めだったということですが、個人を尊重しつつ次代を産み、育てていく共同体としての家族という描き方に思うところがあったんじゃないでしょうか。妄想ですが。

作中は雪の落ち着いた語りによる追想といった趣で、ラストにおいては静かに将来の存在を感じさせるような作品でした。選択をした子供たちにはその後の”自らの”将来がしっかりと存在しています。いいですね。

【おまけ1】一人で見に行った僕の隣の席にはファミリーが座っていたのですが、上映後お父さんらしき人が娘に向かって「子供には少し難しかったかな?」と語りかける言葉が何とも言えない響きでした。子供がいたら、その子が自分の手を離れる瞬間とか考えたりするのかなーなんて思ったり。さて。

【おまけ2】これ言うとまるっきり台無しなんですが、僕としてはもう少しわかりやすくエンタメっぽい作品のほうが好きです。上映後はそんなに興奮度高くなかったです。

*1:老化

*2:子持ちを想定

*3:インタビューの類を全く読んでないので実際のところはわかりませんが。こっちメインだったらとても恥ずかしいです///