ブループリントで簡単ビジュアルスクリプティング

2015年8月29日(土)
出村 成和
Unreal Engine 4の歩き方
Unreal Engine 4を手に入れて今すぐゲーム開発に飛びこもう!Amazon詳細ページへ
この記事は、書籍『Unreal Engine 4の歩き方』の内容を、Think IT向けに特別にオンラインで公開しているものです。詳しくは記事末尾の書籍紹介欄をご覧ください。

UE4は、ゲームエンジンですので、何かしらのプログラミングは必要不可欠です。UE4からは、C++に加えてブループリント(BluePrint)と呼ばれるビジュアルスクリプティング環境が追加されました。このブループリントを使うことで、従来のようにコードを書くことなく、ノードベースでプログラミングできます。

実装済みの処理

UE4では、ゲームに必要な処理を一から十まで自分でプログラミングする必要はありません。ゲームジャンルに応じたテンプレートを選択することで、プログラミングすることなくゲームの基礎が構築できます。

例えば三人称視点のテンプレートからプロジェクトを生成すると、キー入力、コリジョン、物理演算、基本的なアニメーションといったゲームの基礎的な処理は設定済みです。

後はスケルタルメッシュの追加・変更、コリジョンの編集、ブループリントを使ったプログラミングといったようにゲーム制作を行います。

2つのプログラミング環境

UE4がサポートしているプログラミング環境は、ブループリントとC++の2つがあります。

UE4でゲーム開発する場合、原則としてブループリントを利用し、ブループリントでは対応が難しい処理や、既存のソースコードを併用する場合は、C++も使って開発することになるでしょう*1

[*1] といっても、個人制作などの小規模開発ではC++を使うことは、ほとんどありません。

ブループリント

ブループリントは、よくあるプログラミング言語のように、文法に沿って関数定義や演算処理を英数字で指定するプログラミングスタイルではありません。各機能が一つの箱(ノード)で表示され、箱同士を線で結びつけることで入出力や処理の順序を表すといういわゆるノードベースでプログラムを作成します。ブループリントでは、処理の流れは白い太線で表し、左から右へと処理され、入出力の変数は色つきの線で示しています。

キー入力による移動を記述したブループリント

図1: キー入力による移動を記述したブループリント

実行時は、処理の流れが視覚的に理解しやすくなっています。そのため、アーティストなどの非プログラマーな職種であっても、これまでより抵抗感なく取り組むことができるでしょう。

実行中の流れは太く表示される

図2: 実行中の流れは太く表示される

ノードの選択は、接続元の機能(アクション)と関連した機能を絞り込んで表示し、そこから選択するといったように、効率的に行えるようになっています。

接続元に応じた関数の候補が表示される

図3: 接続元に応じた関数の候補が表示される

編集中は、ブループリントのルールに反した箇所(文法エラー、型変換エラーなど)を作成しようとした際、即座に問題箇所を指摘するため、明らかに実行不可能なコードは作成できないようになっています。とはいえ、論理上正しいコードであれば実行できるので、エディタが完全にバグを防ぐわけではありません。過度な期待は禁物です。

実行不可能な処理は、即座に指摘される

図4: 実行不可能な処理は、即座に指摘される

ブループリントは既存のプログラミング言語と見た目が大きく異なるうえ、カラフルな色使いから一見「単純な機能しかないプログラミング言語」と思ってしまうかもしれません。

しかし、実際はそんなことはなく、C++などのオブジェクト指向言語の機能を備えています。制御構文(if、for、foreach、whileなど)はもちろんのこと、クラスブループリント、インターフェイスといったオブジェクト指向言語の機能を備え、ブループリント間のメッセージ送信ができます。

クラスブループリントを使うことで、既存クラスに変数(パラメータ)やコンポーネントを追加し、新しくクラスを作ることもできます。この機能によって、スタンドの形をしたスタティックメッシュにライトを追加して「室内用ランプ」を新規に作成(「室内用ランプ」クラスと同義)し、レベルエディタ上で「室内用ランプ」を複数配置(「室内用ランプ」インスタンスと同義)できます。もちろん、個々の「室内用ランプ」の値(ここでは色)は変更できます。

C++

先ほども解説した通り、UE4ではC++による開発もできるので、ブループリントを利用せずにC++のみで開発する選択肢もあります。テンプレートからプロジェクトを生成する際、「ブループリント」と「C++」から選択できます。ここで「C++」を選択すると、最初からブループリントとC++を使った開発が行えます。かといって、「ブループリント」を選択した場合でも、そのプロジェクトではC++による開発が一切できないわけではなく、開発途中でもC++のコードをプロジェクトに追加できます。

テンプレートはブループリントとC++から選択できる

図5: テンプレートはブループリントとC++から選択できる

また「C++」ベースのテンプレートを元にゲームを開発する場合は、対象となる開発プラットフォームに合わせた開発環境が必要となります(Windowsでは、Visual Studio 2013*2、MacではXCodeとなります)

[*2] Visual Studio 2013であれば、Professional、Community、Expressなどいずれも利用できます。

ブループリントとC++の使い分け

UE4ではブループリントとC++を使って開発できると説明しましたが、では、どのように使い分けていけば良いのでしょうか?

先からも解説している通り「ブループリントを主体に進めていき、ブループリントでは難しい箇所をC++で補う」という進め方が良いでしょう。

ここではもう少し具体的に、ゲームデザイナーとプログラマーといった業種別にどのように開発をすすめていくべきか、考えてみます。

ゲームデザイナーは、キャラクターによる演出に関する制御はブループリントを利用しましょう。ブループリントならば、UE4エディタのみで作成や検証ができます。

もし、ゲームデザイナーでは手に負えない演出、複雑な処理が必要になった場合は、プログラマーに依頼してベースとなるブループリントを作成してもらいましょう(必要に応じてC++のコードも)。そして、できあがったブループリントを元に、演出の調整などを行うと良いでしょう。

プログラマーは、ゲーム自体の流れや基本的なロジックはブループリントで構築すると良いでしょう。これは、ブループリントを使うことで、開発時間の短縮や、第2章で解説した通り他業種との連携がしやすくなるメリットがあるからです。

とはいえ、ガッツリとゲームを作成するにはブループリントのみでは厳しい場面もあります。例えば、テーブルゲームの思考ロジックなどはC++で記述するしかありません。

ブループリントとC++は、関数を相互に呼びだせますので、C++のコードはブループリントから呼び出されることを前提に、機能の切り分け、入出力の設計を行うべきでしょう。これにより、ロジックの組み替えや、C++で作成された関数の再利用性が高まります。

UE4のプログラミングは、C++とブループリントで行います。ブループリントは見た目に分かりやすく、従来のプログラミング言語と比較するとビジュアルで理解できるため、プログラマー以外の職種でも扱いやすいでしょう。

C++とブループリントは適材適所で使い分けますが、最近では先に挙げたプログラミング言語以外の言語も扱えるようになりつつあります。例えば、ブループリントからLuaのコードを呼びだすことができるプラグインがあります(Lua Blueprint Extension)。

この記事のもとになった書籍
Unreal Engine 4の歩き方

出村 成和 著
価格:1,500円+税
発売日:2015年4月17日発売
ISBN:978-4-8443-3810-9
発行:インプレス

Unreal Engine 4の歩き方

GDC 2015で事実上の無料化が宣言された話題のゲームエンジン「Unreal Engine 4」。この本では、Unreal Engine 4(UE4)の入門以前となる、UE4の豊富な機能やエディタの概要を解説しています。UE4を使い始めて、機能や編集機能の豊富さを目の当たりにして途方に暮れる前に、本書で機能やエディタを一通り把握しておくと、目的の作業を行う際や、リファレンスマニュアルで調べる際にも、その知識が役に立ちます。100ページちょっとで手軽にサクッと読める一冊です!

Amazon詳細ページへImpress詳細ページへ

フリーランスプログラマー。主にC、C++、アセンブラがメインでいろいろと活動中。PS1、PS2を中心にゲーム開発に携わっていた時期がある。Oculus RiftなどのVR環境を使ってソフトを作ろうかと画策中。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています