【Godot 4.0】スマホ３Dゲームを作るための勉強　その１　最小の３Dアプリ

 ゲームエンジンgodot4.0で3Dスマホゲームを作りたいと思いますが、その前にお勉強しています。
 [Godot_v4.0-rc1_win64.exe.zip](https://downloads.tuxfamily.org/godotengine/4.0/rc1/Godot_v4.0-rc1_win64.exe.zip)を使用しています。

# 目的
　最小構成の３Dアプリを作成します。

# (1)プロジェクト作成
　新規プロジェクトを作成します。レンダラーはMobileを選択しました。まだ正解がわかっていません。
　Version Control MetadataでGitを選択すると。.gitignoreが作成されます。

:::note warn
警告
 Androidアプリ実行ファイルのapkファイルをエクスポートするときにプロジェクト名がそのままAndroidのパッケージ名になり、先頭文字は英字（大文字or小文字）にする必要があるようです。01_Simple3Dのようなプロジェクト名は避けるべきでした。
:::

![スクリーンショット_20230220_134439.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/3022fc56-833e-adce-24f2-c8c70def698a.png)

# (2)最初のシーンを作成
　新規シーンの画面になります。
　3Dシーンをクリックして、ルートノードとしてNode3Dを追加します。
![01_Simple3D - Godot Engine 2023_02_20 13_59_58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/6d097c52-78dc-0b53-96f3-d926d1e422bb.png)


　Godot3.5から4.0になってSpatialノードがNode3Dノードに名称変更したようですね。
　追加したNode3Dをクリックしてインスペクタを表示すると、Node3DにTransformがあり、positionとrotationを持っています。
　今追加したNode3Dをダブルクリックして名称をglobal_coordに変更して、Ctrl-sでシーンを保存します。保存ダイアログでファイル名を変更できますが、シーン名と同じにしておいたほうが無難かと思います。

![フォト 2023_02_20 14_04_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/ca0b53c2-3dea-6023-de5f-65bbe79d7ea7.png)

　保存されました。
![フォト 2023_02_20 14_08_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/2ce78255-e0bf-71cc-4938-d4fc8eed621d.png)

# (3)球を追加
　先ほど追加したglobal_coordを右クリックして、「子ノードを追加」メニューから、MeshInstance3Dを追加します。
　シーン内のMeshInstance3Dを選択し、インスペクタのMeshの<Empty>をクリックして、新規 SphereMeshを選択すると画面中央に球が表示されます。

![add_mesh.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/5ebb29bd-004c-1929-6fa4-f57459931a42.png)

![(_) global_coord.tscn - 01_Simple3D - Godot Engine 2023_02_20 14_25_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/92fe8607-ca63-47e5-0371-119cfad15ff5.png)

右上の再生ボタン（三角のボタン）を押下して実行しましょう。
![01_Simple3D - Godot Engine 2023_02_20 13_59_58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/9cecf9b0-a144-aab0-834e-555969c87859.png)


　初めて実行する場合、メインシーンが定義されていません、選択しますか？と聞かれるので現在のものを選択しましょう。
　一面灰色のウインドウが開きました。何も表示されないのはカメラを設置していないためです。

# (4)カメラの追加
　3Dアプリの場合、カメラを設置して構図を決める必要があります。
　シーン内のglobal_coordを右クリックして、「子ノードを追加」メニューからCamera3Dを追加しましょう。
　追加したCamera3Dを選択した状態で、画面中央の青い矢印を画面左下の方にドラッグしましょう。
　かわりにインスペクタ内のNode3DのTrasformを見つけて、positionのzに1.0を入力してもよいです。

　
![スクリーンショット 2023_02_20 14_34_39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/d345e33d-13b2-1fcc-3729-b93fada95832.png)

　実行しましょう。

![フォト 2023_02_20 14_37_31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/ad10dfc0-4e5b-df2e-2ce3-fb38634f98aa.png)

　丸いものが表示されましたが、暗いです。

# (5)ライトの追加
　3Dアプリではライトが必須です（だと思います）。
　global_coordを右クリックして、子ノードを追加からDirectionalLight3Dを追加しましょう。
　このライトは光の方向を示すだけなので、どこにあってもよいです。
　球と重なっていると見にくいので、DirectionalLight3Dを選択した状態で、赤い矢印を左方向にドラッグしましょう。
　続いて、赤い輪をドラッグしましょう。球の影が変わるので良い感じになるようにドラッグしましょう。

![(_) global_coord.tscn - 01_Simple3D - Godot Engine 2023_02_20 14_41_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/9ff88102-356e-16a9-74cb-9a9fed8cabe8.png)

　実行しましょう。
　良い感じに3Dの球が表示されたでしょうか。

![キャプチャ 2023_02_20 14_42_27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/68ed57b4-198b-e2e3-1353-a946dda02ef6.png)

# (6)エクスポート実行
　事前に、プロジェクトメニューのプロジェクト設定を開き、Advanced Settingsを有効にして、レンダリングのテクスチャの中のImport ETC2 ASTCをオンにしてください。保存して再起動ボタンも実行が必要だと思います。
　詳細は[【Godot 4.0】Androidアプリ（apkファイル）エクスポート手順](https://qiita.com/FootInGlow/items/cde673e0a424413ca109)を参考にしてください。

　プロジェクトメニューのエクスポートを実行します。
　追加...からAndroidを選択するとこのようなエラーとなりました。

「-無効なパッケージ名：The project name does not meet the requirement for the package name format. Please explicitly specify the package name.」

![error_package_name.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/135e3e15-2a46-2e68-c9f4-82d19e4cfbe7.png)

　Godotのプロジェクト名がそのままAndroidのパッケージ名になり、Androidのパッケージ名の最初の文字はアルファベットの大文字もしくは小文字という規則があるようです。
　プロジェクトメニューからプロジェクト設定を開いて、アプリケーション-構成の名前を変更して、アルファベットから始める様にしましょう。
　プロジェクトメニューのエクスポートから、プロジェクトのエクスポートボタンを押下すると、apkファイルを出力することができます。

以上です。