【自分の記事まとめ】ゲームエンジンGodot4.0でスマホ３Dゲームを作ってみる

# 本記事まとめについて
　初心者がGodotゲームエンジン4.0を操作してAndroidスマホ3Dゲームをつくるための記事を書いています。実際作業した手順をそのまま記事にしているので、記事と同じように実際に手を動かして実装することで、Godotの開発の仕方の一例を体験することができます。
　その１からその５までGodotの勉強をして、その６からはよくスマホ広告で見るゲームの実装をしていきます。最初は小さなプログラムに機能追加をしていき、その３２まで手を動かすとこんな感じになります。まだ機能追加中です。
![スクリーンショット (534).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/fe816741-a78a-ae5f-0dfa-eaa9ea2304f8.png)


　3Dと言っていますがゲーム内容は2Dでも実現できるものです。見映えをよくしたいので、キャラクターやステージを3Dでつくっています。

# github
　記事ごと（その５以降）に完成したプロジェクトをgithubにアップしています。あまりきれいなプログラムではありませんが参考になれば幸いです。
　https://github.com/footinglow/Godot4/tree/main/02_study

# Godotについて
　Godotはオープンソースかつ無料の2D/3D用ゲームエンジンです。Youtubeの発音を聞くと「ごどー（⤵）」と言っているような気がします。
　エディターが優秀でとても便利です。実行しなくてもキャラクター／ステージ構成をエディター上でリアルタイムにビジュアルで確認できるのは開発効率という面で大きなメリットです。25年前にゲームを開発したときはコードに書いてビルドして実行するまで思った通りに画面に表示されず何度も微調整を繰り返していました。便利な時代です。
![スクリーンショット (293).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/667d3c9f-e718-85bd-723c-95ceb84591bf.png)

## Godot4.0を使う理由(3.5.2ではなく）
 GodotはLTS安定版の3.5.2と2023/3/1にリリースされたばかりの4.0があります。3.5.2のほうが環境は安定しているし情報も多いのですが、今後は徐々に4.0が主流になっていくと思います。4.0系ではクラス名の変更など破壊的変更がありましたので、これから勉強するなら4.0だと個人的には思います。~~あとは個人的には簡単に日本語が使える点が4.0の一番のおすすめポイントです。~~ 
　Godot4.0でもAndroidアプリとしてエクスポートする場合は、日本語フォントを追加する必要があるのがわかりましたので、3.5.2でも手間は同じです。

## Godotをお勧めする理由
　私がGodotを勧め理由は下記になります。
（１）環境構築の敷居が低い
　ダウンロードしたzipファイルを解凍して実行するだけです。
　2D/3Dエディター、スクリプトエディター、実行環境もすべてはいっています。
　動作も軽くて私のWindowsPCはRyzen5でRAM8Gですが快適に開発しています。

>参考:開発環境
> * Windows11
> * CPU：AMD Ryzen 5 3450U with Radeon Vega Mobile Gfx     2.10 GHz
> * RAM：8G

（２）エディターが便利
　スクリプトエディターは補完機能やリアルタイムエラー検出もあり実装しやすいです。
　2D/3Dエディターは実行しなくてもキャラクターやステージ構成をビジュアルで確認しながら作成できるので効率が良いです。

（３）3D、物理エンジンがすぐ使える
　3D物体を簡単に配置して動かすことができます。また物理エンジンも搭載しているので、衝突、落下なども簡単に利用できます。

（４）GDScriptがPythonに似たも構文を採用している
　Godotの機能を利用しやすくするため、GDScriptという独自言語が組み込まれていますが、Pythonに似た構文を採用しているためPython経験者は入りやすいと思います。
　また逆にGDScriptでプログラムの勉強をすると、後々Pythonにも入りやすいと思います。
　個人的に学生向けのプログラミング教育にもいいんじゃないかと思っています。ゲームは興味を引く題材だし、自分のスマホでも動くと嬉しいと思います。

（５）商用利用可能
　Godotで作ったものは自分のものです。

# Godotをお勧めしにくい理由
　比較対象はUnityになることが多いと思いますが、目的によってはGodotが適切な選択肢ではないこともあると思います。
（１）Godot4.0は不具合が多い（3.5.2の安定板を使うことで回避できます）
　本記事は2023/3/1にリリースされたGodot4.0 Stable版を利用していますが、OpenSourceということもあり不具合がまだ残っています。もし4.xが安定するまで待てない場合はLTS版の3.5.2を使用する選択肢もあります。

（２）ドキュメントが少ない
　Unityに比べると、書籍もWeb上の情報も少ないです。

（３）たぶんUnityのほうが仕事につながる（と思う）
　将来にゲーム開発を仕事にしたい人の場合は最初からUnityを使ったほうが良いかも。

（４）Godotが不得意なものがある
　Godotのマニュアルやサンプルにないことをしようとすると、はまる可能性が高くなります。
　（Godotには限らない話です）

# 記事概要
　ゲーム開発はその６から開始しています。
## （１）Androidアプリケーションのエクスポート方法
　Androidスマホにインストールするapkファイルをエクスポートする方法です
　ちょっとややこしいところがあるので、後回しでもよいと思います。

https://qiita.com/FootInGlow/items/cde673e0a424413ca109

## （２）Godotの勉強
　Godotのノードやシーン、3D、物理エンジンについて紹介しています。

https://qiita.com/FootInGlow/items/8ec2354f579ebee2df08

https://qiita.com/FootInGlow/items/d11c475ced28250e753b

https://qiita.com/FootInGlow/items/0b0638e1d8189f2f99c5

https://qiita.com/FootInGlow/items/e14447c5e8ddcbb061f2

## （３）ゲームの基本部分を実装していきます。
　Playerと敵が攻撃し合うように実装します。お互いの攻撃は相殺することができます。
　上の方の大きな円柱が敵で、下の方の球がPlayerです。こめつぶみたいのがPlayerと敵の攻撃です。ビジュアル面は後で変更します。
![スクリーンショット (286).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/188f2c79-951e-889b-de19-860b0ca5b673.png)


https://qiita.com/FootInGlow/items/a55b1137fc2a89b7aa20

https://qiita.com/FootInGlow/items/8287ebe80d1eeb5aebb8

https://qiita.com/FootInGlow/items/564dfe87dc7fc5135c67

https://qiita.com/FootInGlow/items/dd0f63bf7a9cd92801b7

https://qiita.com/FootInGlow/items/5b1c78669e2d56d98f1b

https://qiita.com/FootInGlow/items/195236f04bba83cad129

https://qiita.com/FootInGlow/items/885fd54f8f4992361e06

## （４）キャラクターのデザインをします。
　3Dの基本型を組み合わせて色をつけてキャラクターをデザインします。
　アニメーションもつけていきます。
　3Dで作ったものを縮小して表示すると、雑に作ったものでも意外と見れるものになると思っています。
![スクリーンショット (292).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/b86148e0-3a38-b92c-73b9-8071bc7c4bcc.png)


https://qiita.com/FootInGlow/items/0bada2d1485c4a667a82

https://qiita.com/FootInGlow/items/121ccdfdb156100117f2

https://qiita.com/FootInGlow/items/6f06196980bdb8523648

https://qiita.com/FootInGlow/items/4ed492ba96645ddfca1c

## （５）ゲームシステムを実装します
　タイトルシーンとゲームシーンの切り替えや、ゲームシーン中のステージクリア、失敗判定、ステージの入れ替えなどゲームのシステムを実装します。
　設定画面と設定の保存も実装します。

https://qiita.com/FootInGlow/items/887c1765058ffde646fa

https://qiita.com/FootInGlow/items/c68af46ada40f09af453

https://qiita.com/FootInGlow/items/f067ae62fe974b82f28e

https://qiita.com/FootInGlow/items/a12d1ae9b4b8e1afb053

https://qiita.com/FootInGlow/items/08a31719f0077d09d4eb

https://qiita.com/FootInGlow/items/3253204d9952cff4acfd

https://qiita.com/FootInGlow/items/8dd07805f4c8f2f72cb2

https://qiita.com/FootInGlow/items/1b62221a35c06269d006

## （６）Androidスマホで動作するようにします
　いつのまにかAndroidスマホアプリにエクスポートできない、実行できないプロジェクトになっていたのでいくつか問題を対処しました。

https://qiita.com/FootInGlow/items/2f3fc2e60b8ddf9e7594

## （７）ステージギミックやアニメーションを追加します。
　ステージ上のギミックを追加します。またテクスチャやパーティクルを使って見映えもよくしていきます。
<img width="250" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691050/fe816741-a78a-ae5f-0dfa-eaa9ea2304f8.png">

https://qiita.com/FootInGlow/items/3471795db18e4480cd3d

https://qiita.com/FootInGlow/items/fa28fce8a86b18ca8736

https://qiita.com/FootInGlow/items/d22c1949e2c1d33fa756

https://qiita.com/FootInGlow/items/90bc94b06a8fda667fe6

https://qiita.com/FootInGlow/items/f7661fdeadb2dbcbdbdf

https://qiita.com/FootInGlow/items/9c13022f39eb7101eaac

https://qiita.com/FootInGlow/items/f4ae34c28984a37ed534

https://qiita.com/FootInGlow/items/a61c28b0c12f96a7e034

https://qiita.com/FootInGlow/items/0b49328748973bd0db00

https://qiita.com/FootInGlow/items/5bfc2c281638930fe10e

　以上です。