First Bolt in Unity

Unityでビジュアルスクリプティングを試す

Posted by 51n1 on 08 Jul, 2020

もくじ

Bolt概要

BoltのMacro = C#のScriptと考えてよい。C#でコーディングする代わりにBoltでノードをつなぐ。ちょっと長くなってしまったが、以下、Unityのチュートリアルを通して色々と感じたことをテキストにした。

Boltのグラフエディタ上でノードを接続し処理を実装する

BoltとはUnityのアセット(拡張ツール)でビジュアルスクリプティングツールのひとつ。他に有名なツールとしてはPlaymakerとかもある。私はBoltしか触れていないので比較はできない。

Boltを使うには、UnityのAsset Storeから購入する必要がある。私はセール時に購入したので$25ぐらいだった。通常$70。Unity Technologiesが最近このツールを買収したので、現在はバージョン2を含めUnityの元で開発されているとの話しである。それらの情報は下記の記事が詳しいのでそちらを参照してほしい。

人気ビジュアルスクリプティングツールのBoltがUnityファミリーになった話

公式マニュアル、チュートリアル

  • Unity Learn - Bolt - Platformer Tutorial

    英語のチュートリアルに沿ってゲームを作成しBoltの使い方を学ぶことができる。最後まで1行もC#のコードを追加せずに横スクロール型のアクションゲームを作成できることがわかる。私はこのチュートリアルを試してみたが、全くの初心者の方がこのチュートリアルを試すというのはおすすめしない。理由は後述する。

  • Youtube - Official Bolt Course

    前述のUnity Learnで学べる内容と同等のチュートリアルがYoutubeでもビデオで公開されている。Boltが買収される前のビデオなので詳細のところは少し異なるかもしれない。

  • Unity User Manual - Scripting - Visual Scripting with Bolt

    Unityの公式マニュアルには既にBoltに関する記述が存在する。

使用感

最初にBoltをUnityの新規プロジェクトにインポートすると、Unity EditorのCPU使用率が常に23%ぐらいになり、ファンが常に回るようになってしまい少し煩い。Unityを使用しているときは、Playモード時ぐらいしかファンが回らなかったので、このツールはちょっと負荷が高いのだろうか?一応、BoltのGraphウィンドウをクローズしたら負荷が下がった。

ノード(Unit)選択する際にマウス右クリックで選択メニューを表示させるのだが、若干バグっぽくて表示が乱れたり、カクカクする感じがあった。また、ノード選択のメニューが固定できず、マウスをリストから外すとメニューがすぐ消えてしまうのは少し不便だと感じた。目的のノードを探しながら深いメニューを選択している途中で、あれあのノードどこにあったっけとマニュアルを見て戻ると消えてしまっているのでまた最初からメニューを辿る必要がある。

チュートリアルを通してみて、うまく動かない場合のデバッグがとても大変だと感じた。チュートリアルの不親切な部分が原因でもあるのだが、どこに原因があるのか当たりを付けるだけでとても時間を費やす。

メリット

以下が、私の感じたメリットである。

  • UIがおしゃれ
  • 条件付きだが、プロトタイプの作成が容易になる
  • Playモード時にBoltが処理している流れをインタラクティブに表示でき、変数の数値が分かりやすく見える
  • 敵AIなどに利用可能なステートマシーンを作りやすい

デメリット

  • 広い画面が必要
    ビジュアルスクリプティングというイメージ通り、視覚的に開発する。コードであれば2、3行のちょっとした処理でも複数のノードを組み合わせて作成するので、広い画面が必要になる。本当にBoltを活用するなら、デュアルディスプレイが必須だろう。
  • デバッグが難しい
    Boltでうまく動作しない場合、基本的にはエラーが表示されないので、エラーの原因を自分で探す必要がある。デメリットの1つとして広い画面が必要であることを挙げたが、デバッグするときは特に広い画面もしくはデュアルディスプレイが非常に必要だと感じた。デバッグをしやすくするためノードグラフの処理がリアルタイムで分かりやすく表示されるのだが、そもそもゲームの実行画面とノードグラフの画面を同時に見ながら検証できるぐらいの画面の大きさが必要。
  • (意外と)難易度高い
    デバッグが難しいということと同様にそもそもUnityで何ができるかを知らないとこのツールを使うことはできないだろう。これは私のビジュアルスクリプティングに対するイメージが誤っているのかもしれないが、初心者向けに分かりやすいツールという先入観があったが、正直なところ、初心者向けとは言えない。Unityのスクリプティングに関して大体のことを知っている開発者がこれを使えば、サクッとプロトタイプを作れるというツールだと思う。
  • スクリプティングの理解が必要
    これも上記と通じる話しかもしれない。一見、コーディングしないでノードのデザインのみでゲーム開発が可能であると錯覚してしまうが、結局プログラミングロジックの理解が必要になるので少なくともUnityのC#スクリプティングの知識は必須。ただ他の方法でそのロジックを学べる方法が確立されれば、真にノンコーディングでの開発が可能になるのではないかと思った。

まとめ

Boltのようなビジュアルスクリプティングを理解するにはプログラミングのロジックというものを知る必要があるし、各開発ツール(Unity等)の機能(オブジェクトやライブラリといった要素)を把握する必要がある。だから初心者がいきなりBoltを使ってUnityでゲームを作成するというのはとてもハードルが高いと思う。

ただ、特定のプログラミング言語を知らなくても、あるいは、高度にコーディングができなくても、ゲーム開発できるような環境というものを私は理想として求めている。だから、もしかしたら、プログラミングのロジックをもっと容易な言語、例えばProcessing等や何か標準的なプログラミング言語で習得し、Unityの持つ各機能をもっと分かりやすい形でBoltのようなツールに組み込めることができれば、このようなビジュアルスクリプティングでもすぐに容易に扱えるようなライトなゲームデベロッパーを目指すことができるのではないか。

現段階のBoltは正直な感想としては企業でゲーム開発をしているような経験のあるUnityの技術者が楽にUnityでゲーム開発するための補助ツールだと思う。それをもっとライトな開発者や初心者に広げるためには上述のような展開が必要だと思う。今後、C#ができなくてもゲーム開発ができるような教育プログラムを開発することが非常に重要だろうと考えることができたので、今回、Boltチュートリアルを実施してとても良かったと思う。しばらくは元に戻ってC#の学習とUnityの機能習熟を続けていきたい。

メモ

便利なショートカットキー

  • Shift Key + Space Bar
    タブウィンドウの最大化 or 最小化
    ※画面が狭いノートPCで使用している場合では常にGraph InspecterとVariablesのプロパティウィンドウを表示するスペースがないため、このショートカットキーは非常によく使う。ちなみにウィンドウ内の何もない領域をダブルクリックでも同じ動作になる。
  • Ctrl + マウスドラッグ範囲指定
    複数のノードをグループ化する
  • Transitionのアイコンを「Alt + マウスオーバー」
    アイコンが横長に伸長しタイトルが表示される

Laptopの画面一つではこれが限界

Shift + Spaceキーでグラフエディタのみ拡大

Boltで実現できない機能の一例
(だが、UnityのEditor側で既にUI化されている機能でもある)

  • AnimatorのState Graph、Animation
  • Particle System