Blenderは、2.79までBGEがありましたが、そのフォークとして、UPBGEが出ていますが、2.79版がアップデートされていたので、使ってみる事にしました。
UPBGEは、0.3AlphaがEeveeが使用できるのでシェーダーを調整できるようになっているのですが、こちらも
のように5/5に最新版が出ていました。
Blenderもアルファリリース版として3.0がリリースされており、
今月末に出る、2.93がベータになっていますが、9月あたりに出るバージョンもアルファ版がリリースされています。
U PBGE
UPBGEは、Blenderにゲームエンジン部分が追加されているゲームエンジンで、ゲームは、プレビューするだけではなく、実行形式で書き出して使用する事ができます。WINDOWS版だと、.exe形式での書き出しが可能で、Linuxだと.sh形式になると思いますが、UPBGEで制作したアプリケーションはそのまま実行形式として書き出す事ができます。
また、Blenderと同様にオフラインで動作し、登録なしで使えるようになっています。
UPBGEは、
■ UPBGE
からダウンロードできますが、現在は、
■ 正式版 : 0.2.5b (Blender 2.79ベース)
■ α版 : 0.3Alpha (Blender 2.9ベース)
となっています。
UPBGEについては、0.2.5の以前のバージョンでは、
■ キャラとカメラのコントロール
のような物を作っていますが、その後、0.3Alphaがリリースされていたので、
■ カメラのコントロール
のような動画をアップしていますが、UPBGE 0.3 Aplhaでは、アクションの制御が出来るので、
■ シェイプキーのコントロール
■ ディスプレイスメントのコントロール
■ ディスプレイスメントのコントロール
のようなことができるようになっています。また、0.3AlphpaはEeveeベースで動くので、質感のコントロールはノードで行うのですが、
■ 質感のコントロール
のようにコントロールできるようになっていますから、
■ 内観のテスト
■ 質感のテスト
のような品質になります。0.3Alphaの場合ですが、この場合、
■ Eevee
■ レンダービュー
の二種類が選択できるので、影の計算をせずに質感だけ出す場合だと、レンダービューでゲームを作って書き出すと、fps数を高くできるのですが、WorkBnechよりは重たいので、シェーダーや影の計算が増えると重くなる傾向があります。
U PBGEの使い方
UPBGEは、インストールするのではなくフォルダー内の実行ファイルを実行するだけなので、圧縮ファイルを展開後に.exe形式のファイルを実行するだkで実行できます。
ただし、この時の圧縮方式が、Lunuxだと標準的に使用できる、7zip形式なので、WINDOWSではOSで標準実装されているアーカイバでは展開できないので、7zipなどのアーカイバツール(圧縮書庫の圧縮・展開ツール)をダウンロードしてくる必要があります。圧縮書庫がRARとかで配布されていることもあるので、LAHACAなどをダウンロードしてきた方がよさそうですが、7zip形式だけに対応する場合だと、マイクロソフトノストアにもありますが、そう言ったツールをダウンロードしてインストールしておく必要があります。7zipを立ち上げると、
のような画面になるので、
のようにファイルの場所を選択して、【 -展開 】 のアイコンをクリックします。すすると、
のようなダイアログが出るので、ここで、 【 OK 】 を選択すると、展開が始まります。展開後にはフォルダーが出来ているので、フォルダーを開いて最下層の 【 📁Releace 】 を開くと
のようにいろいろなファイルが出来上がっているので、この中にある
【 blender.exe 】 をダブルクリックするとUPBGEが起動します。
U PBGEの使い方
UPBGE 0.2.5を立ち上げると、
のような画面になっており、2.79シリーズまでのUIのレイアウトになっています。バージョンを見ると、
となっていますが、ゲームエンジンなので、通常のレンダーには実装されていない
のようなゲームのプレビューを行う為のレンダリング機能が実装されています。
2.79のレイアウトなので切り替えは上部にあり、
の場所で切り替える事が出来る世になっていますが、ゲームの挙動は、ゲームロジックで指定する事になります。2.79では、シーンをオーバーレイとして使用できるようになっていたので、
のシーンは、呼び出して表示することで、
【 異なる設定のカメラの状態を指定して重ねる事ができる 】
ので、平行投影とパースの付いたカメラで見た素材を画面内で重ねる事が出来るようになっています。レンダーの設定ですが、2.79なので、
のよにBlenderレンダーが使えるのですが、Cyclesがあるので、テクスチャBAKEが行えるようになっています。
マテリアルについては、
のような設定になっているので、この素材に対して、テクスチャを別のプロパティで設定する仕様になっています。
マテリアルについてもゲーム用の設定があり、
のような項目が用意されています。
設定については画面のレイアウトが変わっているので、
のようにモードの切り替えも画面の画部に用意されており、シェルフとメニューもも開くことが出来るので
のような画面構成で作業をすることが出来るようになっています。
■ ノードを調整する
ノードについては、2.79ではコンポジションに統合されているので、
から指定する事になりますが、
のように
■ マテリアル
■ レナリング結果
■ テクスチャー
の状態を決定するアイコンがあり、マテリアルを選択すると、シーン内世に要されているオブジェクトが表示されます。ここでノードを表示にすると、
のような標準的なノードが使用できるようになりますが、統合型のオードもあるので、
のように追加することで、更に細かい指定が出来るようになっています。
■ 通常の設定
通常の設定だと、UV展開をして指定を行ったテクスチャを機能を指定して適応していく流れになりますが、2.79では、テクスチャのプロパティから追加する仕様になっています。UPBGE 0.2.5も2.79までの仕様ですから、
のようにテクスチャのプロパティから指定できるようになっています。
ここでもプロシージャルテクスチャの指定が出来るのですが、
の中から選択できるますが、画像テクスチャの選択が可能になっています。画像テクスチャを指定すると、
のように画像が適応できますが、この時に
の場所でどう言った画像の使い方をするのかを指定します。
2.79での透過テクスチャの場合、マテリアルで透過して、テクスチャの影響でTrabcelucencyの数値を下げないと透過されないので、設定の方法が決まっているのですが、それぞれの効果を指定する事ができます。UV展開をした状態で、テクスチャを指定すると、オブジェクトに適応できるのですが、適応後に実査にどんな動きになるのかの確認ができます。実行してみると、
のように60fps以上出ていますが、GPUのレイテンシが高くなっていますが、
のような形で動作させることができます。
■ 挙動の指定
Blenderの機能で素材やシーンを作る事になりますが、ゲーム内での動きの設定が出来ません。そこで、動きを指定する事になります。
UPBGEでは、ロジックエディタを使う事になりますが、これを用いる事で、
【 入力 】 → 【 判定 】 → 【 処理 】
と言う流れで、挙動を指定することでオブジェクトを動かす事ができます。ロジックエディタでは、
のような画面になりますが、露軸を設定するのは、画面の下部になります。オブジェクトを選択後にそのお武家クトに対してロジックを追加する事になりますが、
の部分で機能を設定します。まず、左にある
の部分がプロパティになりますが、UPBGEでは、ここが変数の格納を行う場所になります。これは見えない変数なので内部の変数になりますが、シーン内ではグローバル変数のように使えますが、シーンやゲームをまたぐ場合にはローカル変数として機能します。つまり、シーン内でデータを格納して、それを使うようにすればグローバル変数のように使用できます。その為、シーンをまたぐ場合だとパルスを送ることはできますが、値を維持する為にはPythonスクリプトで外部ファイルにDictファイルを用意してそれに読み書きをすることでデータを圧化必要があります。ロジックにつては、
の部分で指定する事になりますが、各項目は、
■ センサー
■ コントローラー
■ アクチュエーター
を使用できるようになっています。最新版では、
0.3AlphaのようにViberationが使用できるので、コントローラーの入力だけでなく、振動機能のついたコントローラーを使った場合に、モーターの振動で何かを持った時の間隔の表現などが出来るようになっていますが、現在は、こしたコントローラーの実装機能を使った処理も使用できるようになっています。
U PBGE 0.3Alphaの場合
UPBGE 0.3 Aplhaを立ち上げると、
のようなスプラッシュが出るので、ここで日本語に切り替えることもできますが、設定個後に、
のようなスプラッシュにあんります。この設定は、後で、プリファレンスで切り替える事が出来るので、ここで選択ミスをしても後から変更できます。
UPBGE 0.3 Alphaの仕様を見ると、
のようになっており、今年の9月にリリース予定の3.0.0Alphaがベースになっています。立ち上げあると、
のような画面になりますが、
のようにシーン構築をレイアウトから行う事になります。レンダーの設定ですが、
のようにレンダーの部分がゲーム設定になっているので、Eeveeの設定でゲームでのプレビューが出来るようになっています。
各項目を見ると、
のように、ウインドウ内と独立したウインドウの二つが選択可能で、ゲームを実行できるのですが、ビューポートレンダーの設定でもゲームの書き出しをすることができます。
ゲームをする場合、状態を確認して調整をすることになりますが、この時にパフォーマンスモニターが必要になります。UPBGEでは、デバグ表示で状態をアック人できる世になっており、
のようにマウスカーソルなども表示することもできます。サンプリングの指定もできるので、
の場所で設定ができますが、ジャギーを消す方法として、SMAAを使用できるようになっています。
また、インディレクトライティングも対応しており、間接光の計算もできるようになっています。
のように間接光を使う事ができます。これは、間接光の影響などを計算する事が出来ます。
映像や画像の場合、質感をカラーマネージメントで指定できるのですが、
のように露出やガンマを調整したり、コントラストの変更で質感を変更できますが、トーンカーブをクロマだけでなく、RGBのカーブも変更できるので質感のコントロールが得来ます。ここで、ベースの質感を作って反映できるのですが、ロジックエディタにも2Dフィルターがあるので、、シーンの中で色彩を変更する硬貨を追加するkともできるようになっています。
シーンについては、レンダービューの場合、
のように、IBLが当たっているので、Eeveeとは異なる結果になります。ちなみに、
のようにオブジェクトを追加して、ゲームとしてテストすることもできるのですが、
のようにデバグの項目を指定して、スタンドアローンで実行すると、
のようになりますが、ゲームを書き出すと、設定したウインドウの設定で書き出す事になりますが、
のサイズのような感じになりますが、負荷を見ると、
のようになっていました。マシンスペックがかなり低いのでこんな感じになっていますが、表示だけで57.1fpsになっていました。
バ ージョンによる仕様の違い
UPBGEは、0.2.5と0.3.0ではBlenderのバージョンが異なるので仕様が異なります。
その一つがシーンの取り扱いになりますが、UPBGE 0.3.0ではコレクションのコントロールが出来るのですが、シーンのコントロールが異なります。
upbge 0.3.3はbLENDER 3.0.0をベースにしているので、bgeの要素が存在しない為、ワークスペースを新規に作る必要があります。
のようにレンダリングのワークスペースを追加して、ここからメニューを開いて
の中から選択します。3.0.0では、アセットブラウザが追加されるので、
のような管理機能があるので、ここに追加したアセットを呼び出してシーン内に追加できるようになっています。9月以降はこの機能あ正式版で使えるようになりますが、今月末の2.9.3はLTSになるようです。
ここをロジックエディタに切り替えて、シーンを表示してみると、
の用の項目が少なく、以前のシーンの項目がコレクション(同一シーン内のレイヤー) に切り替わっています。
2.79系だと、BGEと同じなので、シーンレベルで管理する仕組みなので、
のようにシーンをレイヤーのように重ねて使用する仕組みになっています。
その為、0.2.5と0.3.0では、シーンとロジックの組み方が違います。かなり前に
■ BGEを使って作った物
のようなのを作っていますが、これが、シーンを使った処理になります。シーンをまたぐとロジックだけでは変数の共有ができないので、このサンプルでは、スコアとゲームでシーンを分けて、メッセージを送る事で、条件式でパルスを飛ばし、そのパルスの受信でスコアに対して定数分だけ加算を行っています。
ゲームオーバーの表示もオーバーレイでシーンを使っていますが、この時にリトライまでの流れを作っていますが、この時に下層のシーンを停止させています。この状態にすると、最上位のシーンのみ動作を受け付けるようになるので、ここにリトライの処理などを入れています。
ゲームについては、ゲーム単位の入れ替えとシーン単位の切り替えが可能に案っていますが、変数の保存が存在しないゲームだとゲーム単位で管理したほうが軽くなりそうですが、シーン内のオブジェクトの差し替えで状態を入れ替える事もできます。
シーン内の挙動ですが、自動処理の実行が可能なので、アクションを作っておいた理、モーションをロジックで組むと、その通りに動かせるので、
■ ステレオ3Dのサンプル
のような作り方もできます。これは、シーンを上下に組み合わせてレイヤーのように使えるので、こう言った作り方が出来るのですが、マシンスペックが高い場合、シーン内でアクションを実行するだけでムービーのように動作させることもできます。
UPBGE 0.3.0でのテキスト表示については、
■ 画面内に文字を固定する
のような動画をアップしていますが、ゲーム内にテキストを表示できないわけではありません。動画内では、GUBEの正面にカメラが向き、カメラに対して常にスコアが向いている状態になっていますが、ペアレントの指定をすることで、テキストが常にカメラに向いた状態で表示できるようにする事ができます。
その為、同じ挙動を行う場合でもシーン愛の状態を止める場合でもバージョンで処理が変わるので、0.3.0の場合だと、ステイとアクティブの二つの状態を用意しておいて、ポーズをかけた時に全てのオブジェクトに対してメッセージを送る事で、反応する 【 ステイの処理の実行 】 を行えるようにすると、ゲームプレイ中の一時停止の処理実装できます。
■ 軽量化
影の向きが同じ場合で、影の干渉が存在しない場合、セルフシャドウの計算をせずにテクスチャーベイクで質感を追加する事ができます。例えば、
■ セルフシャドウしの背景
■ テクスチャベイクを使った物
のように質感を変える事ができます。影の色がおかしいので、この辺りを調整したり、シャドウベイクをしたオブジェクトの色の調整をして使用して、ペアレントをかけて動かすと、意図した状態で動かせるので、影を計算するよりも負荷が低くなります。
ただし、テクスチャベイクで作ったシャドウと物体にかかっているセルフシャドウの色がおかしい場合、違和感が出るので、、影の色が合うように設定する必要があります。
あと、視点で条件が変わってきますが、ローレゾの場合、樹木を板ポリゴンにすると軽くなるので、
■ 板ポリゴンの樹木のテスト
のような物を使う事もできます。ただし、始点によっては、傘のような作りにしたほうがいい場合もありますし、枝を十字に配置して樹木を作る方法もあります。
ゲ ームエンジンの場合
ゲームエンジンでは、グラフィックは作れますが音は作れないので、別途音を作る必要があります。その為、
■ Audacityで作った音
のようなSEや、音楽は作れませんから、
■ オーディオが機能するように作った物
のような感じの物を作る場合、SEとBGMが必要になるのでそれを用意する必要があります。ちなみに、これは、やっつけで作っているので、テキトーすぎるBGMとSEもこれを作る時についでに作っています。(その日のうちに終わりましたが、音楽や音はゲームの素材制作やロジックとは別の作業になりますが、ソフトが違うので、ゲームエンジンとは異なるソフトを使う事になります。)
音楽を作る場合ですが、ゲームエンジンだとオーディオファイルの方が都合がいい場合があるので、ミックスダウンが可能なDAWを用意する必要があります。DAWだと登録なしでVSTも使えるツールに
■ LMMS
があるので、それを使うと音楽を作れます。LMMSについては、やっつけで機能だけ触った感じのものになりますが、
■ 板ポリゴンの樹木のテスト
のような動画をアップしています。サンプル音源やフレーズなどもあるので曲は作りやすいような気がしますが、VSTiやVSTプラグインの拡張で音源やエフェクトを追加できるようになっています。
基本的にPCMで書き出せばゲームエンジンで使用できるので、声の素材も使えますから、ゲーム内でボイスをSEとして使う事もできます。この時に声を加工して使うという選択がありますが、
■ Audacity
を使うと、色々な加工ができるのですが、テンポを下げると
■ テンポを下げた時の音の変化
■ ボコーダーを使う
のような変化を入れる事ができます。また、音を変える場合だと、
■ 音圧の変化
の動画で行っていますが、音圧を上げると、同じ波形を重ねると音圧が上がり、音圧を上げ過ぎると音が歪む事について書きました。これを意図的に行ったのが、
■ 音圧を振り切らせて三角波を加工した物
になりますが、三角波にエフェクトをかけているだけですが、ディストーションやオーバードライブのような歪み系フィルターをかけたような音の変化になっていると思います。このように音圧レベルを振り切らせると 【 フツーに音が歪む 】 ので 【 音の状態が維持されずに破綻する 】 わけですが、オーディオを扱うソフトの実装フィルターにディストーションやオーバードライブがない場合、こうした方法で音を作ると、トラックとマスターの音圧レベルの調整だけで音を歪ませることができます。
自 動処理
ゲームは自動処理になりますが、基本的にMOBなどは自動処理になりますが、動きには条件で動いている物が一般的です。例えば、追尾と言う条件がある場合、追尾に必要なアルゴリズムを実装する子tになります。
UPBGEには、センサーにお武家クトの検知があり、探索にはナビゲーションメッシュが使用できるので、MOBに思考をしているようなアルゴリズムを実装できるようになっています。
ナビゲーションメッシュを使用してターゲットを追尾するようにすると、
■ ナビゲーションメッシュだけで動かしたもの
のようになります。ちなみに、乱数で
■ 軸回転
■ 移動
■ ショット
を決めて、ラグを入れて動かしたのが
■ 乱数で動く物
になります。これとは別に4方向移動にショットを加えた5つの挙動を乱数で制御し、タイミングをずらしたものが、
■ 乱数で動く物
になります。乱数を使うと石や目的がない挙動になりますが、ナビゲーションメッシュだけでも使いにくい動きになるので、こうした物は単体で実装する物ではなく、 【 挙動を構成する要素 】 として使用する事になります。
ゲーム内では、自動で極物は複数ありますが、プレイヤーのニュ力デバイスの操作によるリアクションではなく、任意の条件で動くアルゴリズムを用意しなければ動作しない物も存在します。
こうした動作する物とは別に、ゲーム自体を制御しているシステムを作る必要もあります。