きっポグ

- kitposition's weblog -

驚異の全部入りAVG制作支援ツール「Adventure Creator」オーバービュー

この記事はUnity アセット真夏のアドベントカレンダー 2017 15日目の記事です。

前日の記事はbaba_sさんの
Project ビューのフォルダを彩る「Rainbow Folders」紹介」でした。
これはMacのラベル機能を愛用してる人には特に便利ですね!

baba-s.hatenablog.com

2017.09.03追記

 「Adventure Creator」の英語チュートリアルを翻訳しながら実際にゲームを制作して解説している凄いブログを見つけました!しかもとても丁寧に説明されている!僕のブログの続き読むよりこちら読んだ方がいいですよw

(ブログ主は@corevale_comさんです。AC以外の記事もありますよ!)

corevale.com

はじめに

 今回ご紹介する「Adventure Creator(以降AC)」は、名前の通りアドベンチャーゲームAVGの制作を支援するアセットです。


Adventure Creator: Trailer 2

 AVGという単語の意味する範囲は広く、日本では「ポートピア連続殺人事件」などの推理ゲーム恋愛アドベンチャーノベルゲーム、更にスマホアプリ界隈で現在ブームの脱出ゲームなどもその範疇に含まれるでしょう。
 ACはそうした様々なAVGを作れてしまうとにかく機能豊富なアセットで、私も現在制作中のゲームで使用しています。いつかはご紹介したいと思っていたのですが、あまりに機能が多いのでまじめに全部説明していたら1年くらいの長期連載になることは間違いなく、なかなか書けずにいました。
 そこで今回は個々の機能の操作を説明するのはやめ、このアセットでどんなことができるのか、という簡単な紹介にとどめます。それでも少々長いですがよろしければお付き合いください!

3D/2D/2.5DのAVG制作に対応

  日本ではAVG=2Dというイメージの人が多いと思いますが、ACは2Dはもちろん3Dや2.5Dにも対応しています。2.5Dという単語の意味は文脈によって変わってきますが、ACでの2.5Dは「背景はイラストや実写写真等の2D、キャラクターは3D」というものです。(下図はAC公式サイトより)

f:id:kitposition:20170813213237p:plain

 Unity的に一番作りやすいのは多分3Dで、2Dや2.5Dは「キャラクターの平面上の移動を奥行き方向への移動と解釈し、画像の重ね順を制御して疑似的に奥行きを表現する」というプログラマーには楽しく(?)デザイナーは泣きたくなる処理が必須となりますが、ACではその辺が最初から実装されています。

AVGのあらゆる要素を制御

 ACはとにかく「全部入り」で、およそAVGを制作するにあたって開発者が制御したいことはほぼ全て網羅されています。以下に主な機能を列挙します。多分これでも漏れが多数ありますw

入力
プレイヤーキャラの
コントロール方式

マウスクリックした場所に移動、ドラッグで移動、
カーソルキーで移動など。

ナビゲーション Unityのパスファインディングまたは
AC独自のパスファインディングを選択可能。
入力デバイス キーボード、マウス、ゲームパッド
タッチスクリーン
アニメーション Mecanim、レガシー形式、
2Dスプライトアニメーションを制御可能
キャラクター制御 足音(速度により可変)、
ブレンドシェイプによる表情制御など
カメラ
種類 キャラクター追尾、アニメーションするカメラ、
3人称視点など様々なカメラを設置可能
カメラワーク 複数のカメラをシーンに配置し切替可能
切替時は「クロスフェード」「ブレンド」などの効果を設定可能
VR(部分対応)
会話
テキスト

キャラクターにセリフ(テキスト)を喋らせる
キャラクターの顔アイコンを表示
複数キャラクターに会話させる
会話の途中に選択肢を設定しセリフを分岐
ローカライズ機能

音声 セリフに合わせて音声ファイル再生
リップシンク
セリフの台本出力(声優用)
アイテム管理 複数のアイテムを定義し、メニュー表示時のテクスチャを選択時、非選択時等に分けて設定可能。
各アイテムはシーン内の特定スポットで使用した場合のイベントを定義可能なほか、間違った場所や未定義の場所で使用した際のイベントも設定可能。
同一アイテムの複数保持や保持数によるイベント条件分岐も対応。
アイテム合成対応。
UI AVGの基本的なUI(アイテム画面、オプションメニューなど)の制御機能はあらかじめ実装済
実際のメニュー構築には同梱済みのAC独自のプレハブかuGUIを選択可能
セーブ・ロード シーンやオブジェクト、アクション等の様々な状態のセーブ・ロードを実装可能。オートセーブも対応。
オプション設定やプレイヤープロフィールの保存も実装可能。
変数 グローバル/ローカル変数を定義にAC内のアクションに利用可能。
PlayMakerなどのサードパーティーアセットや自作スクリプトとの変数連携も可能。
カットシー アクション機能(後述)を利用したカットシーンを作成し、ゲーム中に任意の時点で実行可能。
Timeline(Unity2017以降)、Cinema Directorで作成したカットシーンも制御可能。 
その他

サウンド制御
可動オブジェクト(物理演算対応)
パーティクル・ライトのスイッチング
公開APIへのアクセスによるスクリプトからの制御

など

ノンコーディングで各種設定にアクセスできる「マネージャー」

 ACは「ノンコーディング」が売りの1つ*1ということで、各種設定は「マネージャー」画面から調整することができます。
 用途に応じて8つのマネージャーが用意されていますが、例えば一番使用頻度の高いScene managerはこんな感じ。

f:id:kitposition:20170815130013p:plain

 まあこういうのの操作を覚えるのとコードをゴリゴリ書くのとどっちが楽かは微妙なところですがw なお、このマネージャーの設定はアセットファイルに保存されているため、ACをアップデートしても消えることはなく、他のプロジェクトからマネージャーアセットを持ってきて使い回すことも可能です。

ゲーム中の多彩な機能実行を可能にする「アクション&アクションリスト」

  こうした様々な機能は、基本ゲーム中の任意のタイミングで実行できなければ意味がありません。
 ACでは、そうした各種機能を制御するための「アクション」というスクリプトがあらかじめ豊富に用意されており、更にそれらを数珠繋ぎして「アクションリスト」という一連の流れを組み立てることで、それをゲーム中に実行できます。

 実際のプロジェクトで説明してみます。(あくまで紹介ということで詳細な操作は省きます。)
 ここでは、「ユニティちゃんを操作して森の中を探検しているとダイヤモンドを見つけたので、クリックしてゲットしたらユニティちゃん大喜び」という安直なシチュエーションを作ってみました。 *2

f:id:kitposition:20170815124403g:plain

 前準備として、まずアイテム「ダイヤモンド」をACのInventory manager(アイテム管理用のマネージャー)に定義しておきました。結構細かい設定ができますが、ここではアイテム名とゲットしてインベントリ*3に表示された時のグラフィックを設定しただけです。

f:id:kitposition:20170814204809p:plain

 次にACのメニューから「Hotspot」という黄色いキューブを作り、シーン内のダイヤモンドを包みます(ゲーム実行時には見えません。)。

f:id:kitposition:20170814205334p:plain

 「Hotspot」はプレイヤーの操作(クリックなど)に応じて、予め登録されたアクションリストを実行します。アクションの起点としてはこの他、ゲーム内のキャラクターがある場所に出入りしたときにアクションを実行する「Trigger」を配置することもできます。
 脱出ゲームのように「特定のアイテムをセレクトした状態でクリックすると特別なアクションをする」などもできますが*4、ここでは単純に手ぶらの状態でクリックした時のアクションリストを作成し、Hotspotに設定しておきました。

f:id:kitposition:20170814211916p:plain

 いよいよ本題のアクションリストですが、こちらは1つのアセットファイルとなっており、その中身の編集は専用のActionList Editorを使って行います。

f:id:kitposition:20170814213635p:plain

 このようにAcsionList EditorはUE4やUnityのPlaymakerArbor2などでおなじみの(といっても遥かに簡素ですが)ビジュアルスクリプティング*5になっています。
 上の図では、

  1. シーン中のダイヤモンドを除去(ゲットしたのに残ってたら変だから)
  2. 所持アイテムにダイヤモンドを追加
  3. 現在のユニティちゃん追尾カメラから固定視点カメラに1秒かけて切り替え
  4. ユニティちゃんにアニメーションさせる

という一連のアクションを作成しました*6。これを実行したのが先の動画です。

 ここでは簡単な例で説明しましたが、もちろん条件分岐もできますし、パラメーター(引数)も使用できるので、「ダイヤをゲットする時とルビーをゲットする時は対象アイテムをパラメーターとして与えて同じアクションリストを使い回す」などの使い方が可能です。

 驚くべきはアクションの豊富さで、上で使ったもの以外にも総数で100種類以上用意されており、うまく組み合わせればほぼ何でもできる気がします。そのうえ、個々のアクションは1つのクラス、つまり1個のスクリプトなので、ルールに従ってコードを書けば独自のカスタムアクションを作ることもできます。

カスタマイズにも柔軟に対応

 ACは確かにコードを書かなくても殆どのことができてしまうのですが、それでも独自の仕様を追加したい局面はあるかと思います。そんな時も基本的なAPIが用意されているので、自作のコードからACの機能にアクセスすることはそこそこ柔軟に可能です。あと私はプログラマーではないので実際どうかよくわかりませんが、個人的な印象としてはACのコード自体が(膨大ではあるものの)比較的平易なので、自分で手を入れて魔改造することもそんなに大変ではない感じです。

 サードパーティ製アセットとの連携も強力

 アクションの中には、人気のサードパーティ製アセットを制御するものも含まれています。マニュアルにあるのは以下の通りです。

 ACにはそれ自体にカットシーン作成やカメラ制御、ビジュアルスクリプティングなどてんこ盛りではあるのですが、より高度な機能を扱いたい場合には他のアセットとの連携は非常に有効です。更に、実は上記にないアセットでも、前述のカスタムアクションを自分で書けば結構制御可能だったりします。*8

活発なアップデートとユーザーコミュニティ

 ACは頻繁にアップデートされ機能が追加されます。例えば、先ほどの機能一覧表にチラッと載せましたが、本記事執筆時点で既にUnity2017のTimelineを制御するアクションが追加されていたりします。バグもどんどんつぶされていくので、この種のアセットとしては安定した動作が実現されていると思います。
 また、作者のChris Burton氏とユーザーのフォーラム等でのコミュニケーションも活発な印象です。

Adventure Creatorを学ぶ

 これだけのアセットですから当然マニュアルがついてくる訳ですが、このマニュアル、ついこの前までトータル180ページの中に図版は1個だけであとは全て英文のテキストのみで説明されているという古文書のようなすさまじい構成でした。
 それがなんと先日のバージョン1.58で全面リライトされ、スクショなどの図版を豊富に(ってほどでもないけどそこそこ)取り入れたいわゆる普通のマニュアルになったのですが、図版が入ったせいで総ページ数350ページになってしまいましたwもう下手な技術書より分厚いです。

 そんなの読んでられない!という方には(ていうか大抵の人はそうでしょうw)、公式の動画チュートリアルがおすすめです。といってもこちらも英語ですが、実際の操作の様子が見られるのでいきなりマニュアル読むよりは少しはわかりやすいです。何より1本の動画で3時間半とか凄いボリュームなので、頑張って制覇できれば結構わかってきます。
 以下、もろもろ参考になりそうなリソースをご紹介します。

まとめ

 Adventure Creatorはそこそこ値がはりますし、日本語情報が殆どないこともあって学習コストもそれなりに高いです。とはいえ、一度習得してしまえばAVG制作の強力な味方になるアセットだと思います。興味を持たれた方はぜひ上の各リンクを参照してみてください。そのうえでよし買ったれ!と思った方はぜひ当ブログのリンク↓からw(セールになると5000円以下で買える時もあるので狙い目です

 さて、アドベントカレンダー明日の担当は…いないw
 現時点で次に入っているのは8/19の青木ととさんです!それではまた!

*1:ACに限りませんが「ノンコーディング」という言葉に釣られるのは少々危険というのが個人的な意見です。なにより「コードを書かなくていい」というのを「コードが読めなくていい」と混同しない方がいいです。むしろ上手く動かない時やバグが出た時は見知らぬ他人様のコードを追わないといけない訳なので、こういうアセットを使う時ほど尚更コードの勉強はしておく必要があると思います。あとぶっちゃけコード書いた方が楽なことも多(ry

*2:これは完全にノンコーディングです。画面中の各UIやユニティちゃんを自動追尾するカメラ、「マウスでポイントするとアイテム名が表示されてアイテムがハイライトされる」等の仕掛けも全てACに組み込まれています。当然気に入らなければカスタマイズできます。

*3:脱出ゲーム等によくあるアイテム一覧メニュー

*4:その他、テキストありの脱出ゲームでよくある「ここでは使えないようだ」「特にかわったようすはない」などの「未定義の箇所でアイテムを使用した場合のアクション」なんてのも設定できます。 

*5:図でラインが途中で曲がっているのは「ビジュアルスクリプティングなんだよ~ん」と言いたいだけで全然意味はありません。

*6:実際のゲーム制作では、元に戻るメニューの表示(とそれをクリックしたときの元に戻るアクションリストの実装)、役目が終わったHotspotの無効化など他にも色々必要ですが基本的に全てアクションリストから可能です。

*7:見つからなかったのでUnityのアセットとしては無くなったぽい?

*8:現在私が制作中のアプリでは、このブログでちょくちょく紹介しているFinal IKを制御するカスタムアクションを書いて使っています。