LinuxでもGodotは動くので、Atom D510にインストールしてみました。
現在は、Vulcan対応になっているようですが、Atom D510の場合ライブラリのバージョンやシェーダーのバージョンが古いので3Dは無理と思うのですが、とりあえず、インストールをシてみることにしました。
アーキテクチャが新しい場合だと、Godotは軽快に動作するはずなので、
【 ゲームエンジンなのに嘘のように軽い 】
と感じると思います。Blenderは多機能なので重たそうに感じるかもしれませんが、バージョンアップごとに軽量化されているので、アーキテクチャが新しい場合だと、バージョンアップを行ったほうがパフォーマンスが向上します。
流石に、リリース直後のものをアップデートをするとわからない部分もあるので、安定動作が見込めるようになてから入れ替えると言う方法もありますが、内部処理に関しては新バージョンのほうが高速になっています。
ちなみにAtom D510の場合ですが、Blenderの64bit版は2.66辺りで頭打ちなので、相当古いバージョンしか動作しません。
また、このバージョンでは、VSEとBGEは存在するもののグリースペンシルなどが存在しません。
現在は4.1ですが、それと比較すると相当古いことが確認できます。BlenderはPythonを使用できますが、print()の形式なので、3.x系になってはいますが、既にサポート対象外のPythonで動かすことになります。
Godotについては、3.5系が動作するので、インストールができたのですが、現在は4.x系ですから世代が全く異なります。
また、現在の4.x系だとプリンシプルBSDFでマテリアルを指定してもblendファイルがそのまま読み込めるので、シーンを構築したファイルをそのまま配置することができます。
Godotもバージョンが違うので古いものを動かすことになりますが、どのように動くのかを確認してみることにしました。
Godotと挙動
今回使用しているのは、
■ Atom D510
■ DDR2 x1
■ IGP
■ SATA HDD
■ Lubuntu x64
という環境になります。Godotを立ち上げると少し待つ感じにはなりますが、ごく当たり前に起動しました。
のようなスプラッシュが出て、
のようにプロジェクトの生成をする画面に切り替わります。画面右側には、
のようなボタンが配置されているので、 【 新規プロジェクト 】 を選択してプロジェクトを作ることになります。クリックすると、
のようなダイアログが出ますが、
のように作業用のフォルダが生成されていない場合エラー表示になります。その為、名称を決めた後に
でフォルダの作成をすることで、作成が可能になります。
画面下部にはシェーダーの指定が出来るようになっていますが、Atom D510のIGPは対応しているシェーダーモデルそのものが古いので
しか選択できず、
のように3.0は選択できないようになっていました。作業フォルダーの名称を指定してフォルダを作成すると、
のように参照先の問題がクリアされてチェックが入るので、
をクリックすることでプロジェクトを作ることができます。
エディタ
作成をすると、
のようなスプラッシュが出た後にエディタが開きます。流石に古すぎるので3DCGは無理だと思っていたのですが、案の定
のように表示が破綻していたので、3Dでの作業ができないことが解りました。
その為、3Dのゲームは作れそうもないので2Dに限定して動作確認をすることになりそうです。
画面は3つのペインに分かれており、上部にはメニューが並んでおり
右のペインの上部にはシーンの選択が出来るようになってます。立ち上げた直後では、
のようになっていますが、ここでシーンとUIのどの作業をするのかが選択できます。下部にはファイルシステムが用意されており、現在プロジェクト内で使用できる素材などw配置できるようになっています。
真ん中のペインの上部には、
■ シーンの選択(2D/3D)
■ スクリプト
■ アセット
が切り替えることができます。また、インターネットに接続した状態だとネット上からアセットをダウンロードすることが出来るようになっています。
その下には、ビューポートが用意されており、
その下側には、
のようなUIのが用意されています。右下には現在使用しているGodotのバージョンが表示されています。
そして、ビューポートの右上にはフルスクリーン表示のUIが用意されています。
右上部には、
のようなUIが用意されていますが、左端の▶が現在のプロジェクトの実行ボタンになります。
コーディングを行う際にIDE(統合開発環境)を使用した場合、F5キーや同様の再生ボタンのようなUIでコードを実行しますが、Godotにも同様のUiが用意されています。
更に丈夫には、シェーダーのバージョンの切り替えが出来るプルダウンも用意されています。
そして、その下にはインスペクターが配置されています。
ここで、インスペクターとノードの切り替えが出来るようになっています。
プロジェクトの選択
エディタを立ち上げると、左のペインに何を作るのか?を指定できるようになっていますが、これは上部にあるタブと同じなので、
■ 2D
■ 3D
■ メニュー類
などを切り替えることが出来るようになっています。
ここでは、
■ シーン(2D/3D)
■ コード
■ シーン以外のオブジェクト
を指定できるような状態になっているようですが、今回は2Dのシーンを選んで試すことにしました。2Dのシーンに切り替えると
のようになりますが、ファイルシステムを見ると
のような構成になっています。そして、インスペクターも先程とは異なるので、
のようになります。
プロジェクトを実行する
プロジェクトを実行する場合には、現在のシーンを保存する必要があります。2Dに切り替えた後にシーンを保存していない場合、
の中の 【 ▶ 】 をクリックして
のダイアログが出た後に 【 現在のものを選択 】 を選択しても、実行されませんから、
【 CTRL 】 + 【 S 】
で保存をします。保存をするとダイアログが出るので、
のように名称を決めて保存をします。特に名称に問題がない場合だとそのまま保存しても大丈夫ですが、使用するオブジェクトの名前を事前に決めておいてリネームして使用することになります。
保存をすると、
の中の 【 ▶ 】 をクリックして
のダイアログが出た後に 【 現在のものを選択 】 を選択して実行をすると、
のようにウインドウだけが表示されます。
アイコンを配置する
Godotは立ち上げた直後からアイコンが用意されているので、これを配置するとウインドウ上で表示をすることができます。
のようにアイコンを選択して、
のようにウインドウ上に持っていき
のようにアイコンを配置することができます。配置するとシーンの中にアイコンが追加されます。
この状態で先程のようにプロジェクトを実行すると、ウインドウ上にアイコンが表示されます。
インスペクター
アイコンを選択すると
のようになりますが、インスペクターも選択したアイテムのプロパティが表示されます。
インスペクターの上部では、
のような項目が用意されているので、オフセットの指定が可能なので一の変更などができます。その下にはアニメーションの項目があり、
のようになっていますが、ここで指定できるのは、ウディタのようなタイルマップを作ってタイルのサイズをして逸しておいて、タイルの中に格納した画像を切り変える時に使用できます。その下には、
の項目が並んでおり、その下には、Tranceformの項目が並んでいます。これは変形なので、
数値を変えて
のようにすると、サイズの変更と回転が実行されているので、
のようになります。この値を戻して
のようにすると、元の形に戻ります。
制御の仕組み
ゲームエンジンの仕組みは
オブジェクト ∈ シーン
という関係性なので、プレイヤーキャラやMOBは
プレイヤーキャラ ⊂ シーン
M O B ⊂ シーン
のような関係担っています。これは、シーンの中にそれぞれが包含されていますから、命題だと
プレイヤーキャラならシーンなり
と言う日本語としては全く意味が通じない関係性が成立しています。この表記は命題だと
プレイヤーキャラ → シーン
M O B → シーン
のようになります。これに逆や待遇の関係性を含めて考えることになりますが、構造としては、包含された状態になります。その為、2dの場合、これらを個別に作ってメインのシーンに繋ぐことになりますが、Scratchと同様に
■ シーン
■ オブジェクト
は分けて考える作りになっています。また、Scratchでは、
スプライトに処理を実装する
と言う仕組みになっていましたが、Godotも同じように処理を実装する仕様になっています。
例えば、
のようにアイコンを選択して、
のように上部にあるスクリプトのアイコンをクリックすると、
のようなダイアログが表示され、作成をクリックすると対象のノードにプロジェクトを追加することができます。
のような画面になり、アイコンを見てみると、
のようにスクリプトのアイコンが付与されています。マンかなのペインはコードエディタになっており、
下部には
のようにターミナルが用意されています。インスペクターは、
のようになっています。
スクリプトをあタッチすると、自動で先程のコードが実装されますが、このコードでは、
のような構造になっています。最初の変数の部分はコメントアウトされていますが、この内容は、
のようになっています。コードの形を見てもらうと
def 関数名:
処理
のようなPythonの関数の構造に似ていますが、Godotで使用できるGD ScriptはPythonに似た構文になっているので、動きなどを実装する際には関数を実装してそこに動きを追加するような流れになっています。
ゲームエンジンの構造は関数の多い外部ライブラリと同じなので、その仕様に合わせた記述を覚える必要があります。
Godotの場合、GD ScriptだとPythonと構文的にに似ているのでそれに準じた処理の実装を行うことになりますが、C#も使用できるのでWINDOWS環境だとC#の構文で処理の流を実装することになります。
動かしてみた雑感
現在はキーボードが不調なので、アイコンを動かすコードを書いて操作をしてみたら入力がおかしくなることはありましたが、今回の作業程度だと重くなる要素がないのでAtom D510に2GBのメモリーを実装した環境でもそれほど重くなりませんでした。
とりあえず、3Dのサンプルゲームは重くて機能しませんでしたが、2Dだと少し条件が変わるのかな?という気はしました。
操作と移動だけでも遅い感じはありましたから、現在のごく当たり前のアーキテクチャで動かした場合よりも可なら遅く動いているはずですが、ソフト自体がごく当たり前に動いているので、動作することだけは確認できました。
ただし、ゲームの場合、
■ プレイヤー
■ システム
■ MOB
■ 音
の制御が必要になるので、音が入ると無理が出てきそうな気がしますが、操作までだと速度は出ないもののアプリケーション自体が不安定になって落ちる雇用なことはありませんでした。
その為、近年のごく当たり前な環境で使用すると相当軽いのではないかな?と思います。