前回前々回は Godot での開発に必要な初歩的な知識を説明しました。今回はゲームアプリを開発するために、最初に設定しておくべきプロジェクトの初期設定について解説します。これを最初にやっておかないと、せっかく作ったものをすべてやり直す羽目になりかねません。えっ!? そんなの最初に説明するべきだって?そんなつまらない説明から始めたら、最初から挫折してしまうじゃないですかあ(滝汗

というわけで、プロジェクト設定です。このメニューから設定を始めます。
プロジェクトの設定



  • 一般
基本的な設定がたくさんあります。上から順に必要な項目のみ説明していきます。

アプリ/構図
アプリ/構図

名前
ゲームアプリの名前を入力します。デフォルトのままプロジェクトを作りましたので、「新しいゲームプロジェクト」となっているかと思います。ここにゲームアプリの名前を入力します。
※ ここではとりあえず Sample Shooting と入力しました。

将来、実行ファイルをエクスポートした時などに、この名前が用いられます。ローカライズされた名前という項目は、分かる人はわかると思いますので今回は説明しません。

説明
実行ファイルのプロパティで表示されます。こちらは特になければ空白でも構いません。

バージョン
私は 1.0.0.0 のように4桁を指定しています。特に取り決めがなければ、4桁で指定しておくと良いでしょう。Major.Minor.Build.Revision という意味になります。

Major大規模な変更を意味します。ここが変わると別物になることも。
Minor新機能搭載などの追加仕様で変化します。
Build小さな機能追加やバグ修正などの軽い変更で変化します。
Revision内部更新番号です。小さなバグ修正などです。

ちなみに私はバージョン番号を 2025.10.23.1830 のように指定することもあります。これは日時そのまんまですが、意外と使い勝手が良かったりします。ただ、まあ、見られると恥ずかしかったり、古いことがバレたりとかで売り物にはあまり使用されている例はみないです…。

アイコン
設定するとエクスポートでの見た目そのままになります。SVG というあまり馴染みのない形式が使用されています。これはベクターデータです。なんて言ったら良いのかな、イラストレーターみたいに輪郭形状などで構成されているデータというのかなあ。メリットはどんなに拡大しても綺麗なままになります。ただ、この形式で最初から作成するのは、専用のツールが必要なので、ここでは説明しません。興味のある人は Inkscape 等のフリーソフトを確認してください。

.svg ファイル作成のもう一つの方法が .png などからコンバートすることです。但し、これは画像をそのまま埋め込んでいるだけなので、拡大すると表示がぼやけてしまいます。まあ、アプリアイコンなら埋め込みでも十分かなと思います。.png から変換する最もお手軽な方法は GPT-5 に画像を渡して「この画像をドットがくっきり分かるように SVG 形式に変換してください。」と依頼するだけです。こんなに綺麗に変換してくれます。
svg変換で拡大してもきれいなアイコン
こうして得られた svg ファイルをプロジェクトファイル内の icon.svg と置き換えるだけです。どのみち、デフォルトアイコンは捨てるのですから、同じ名前で上書きします。
アプリ/構図を設定した

アプリ/実行
アプリ/実行
現在は grass.tscn が割り当てられています。複数のシーンを作れるようになったとき、今のシーンが起動だとマズイ事も多々あると思います。この設定は今は変更しませんが、将来必ず変更が必要になると思います。

表示/ウィンドウ
表示/ウィンドウ/サイズ
起動時の初期サイズを設定する大変重要な設定項目です。サイズ項目にあるビューポートの幅と高さは、そのまま表示する解像度だと思ってください。私のオススメは、小さすぎず大きすぎずで、960x600 です。モードは Windowed のままで良いと思いますが、まあ好みで変えてください。初期位置タイプの Center of Primary Screen は、メインディスプレイの中心という意味です。これはこのままがオススメです。
ストレッチモードをviewport に設定
あと、ストレッチモードは viewport とします。これでウィンドウクライアント内のサイズ調整ができるようになります。※ この設定の効果は後でスクリプトで解説します。

とりあえず、これだけまずは変更しておいてください。それ以外の項目に関しては、おいおい好みに応じて変更すればよいと思います。

アイ・オー・データ IODATA ゲーミングモニター 27インチ GigaCrysta WQHD 180Hz AHVAパネル ブラック(HDMI×2/DisplayPort/VESA対応/高さ調整/縦横回転/土日サポート/日本メーカー) EX-GDQ271JA
アイ・オー・データ
2023-10-03
※私が使ってるのはこれの古い型です。27inchのWQHDはとても便利で、一度使うとFHDが狭すぎて戻れなくなります。縦1440は本当に素晴らしい。1080なんて全然ダメダメだと思うようになります。



  • インプットマップ
先の Godot キャラを動かすでは、組み込みアクションを使用しましたが、これだと例えばノートPC向けに [W][S][A][D]でキャラが動かせなかったりと多少不便な面があります。そこで、自前で登録するのをオススメします。一旦、組み込みアクションを表示スイッチを off にします。これで見た目的には空っぽになります。
空っぽになったインプットマップ
続いて、移動方向キーを登録していきます。全て自分で好きな名前を割り当てることが出来ます。このブログでは入力の上下左右を "inp_U", "inp_D", "inp_L", "inp_R" と名付けることにします。最初に "inp_U" を登録してみます。新しいアクションの追加に inp_U と入力して+追加をクリックします。
inp_Uを追加した
新しいアクション "inp_U" が登録されました。続いて入力設定を行います。 "inp_U" の右側にある+をクリックします。
入力待ちダイアログ
イベント未設定とデカデカと書かれたダイアログが表示されます。入力ボックスにはうっすらと「入力を待機しています...」と表示されています。試しにカーソルの上キーを押します。すると、
カーソルキーの上を押したら
自動で入力が反映されました。イベント未設定と書かれていた項目名は Up(物理) と書き換わっています。もし、押し間違えても、次に正しいキーを押し直せば更新されます。これで良ければ OK ボタンをクリックします。
Up物理が登録された
カーソルの上キーが "inp_U" に登録されました。"inp_U" 横の+をクリックすれば、いくつも入力が登録できます。ジョイパッドの上ボタンだろうと、マウスのボタンだろうと登録できます。"inp_U" にキーボードとジョイパッドを入力してみました。
inp_Uに全ての入力を設定した
これで上の入力設定が完了です。続けて "inp_D", "inp_L", "inp_R" 全てを登録します。それぞれ下移動の入力、左移動の入力、右移動の入力を意味します。確実に設定しておきましょう。
上下左右全ての入力を設定した
※私がテストで使ってるコントローラがこちら。無線じゃなく有線。だからバッテリーのヘタリとか気にしなくて良い。遅延も私には感じない。安い。小さい。唯一の弱点はXInputなのにボタンのマーキングが任天堂準拠なので位置が合わないが、それはそれとして受け入れています。


  • スクリプトを書き換える
スクリプトで組み込みアクションを指定していましたが、自分で作ったアクションに置き換えます。ついでに上下左右にも移動できるようにしてしまいましょう。
const SPEED = 200
func _process(_delta: float) -> void:
	var move_speed = _delta * SPEED
	if Input.is_action_pressed("inp_L"):
		slime.global_position.x -= move_speed
	if Input.is_action_pressed("inp_R"):
		slime.global_position.x += move_speed
	if Input.is_action_pressed("inp_U"):
		slime.global_position.y -= move_speed
	if Input.is_action_pressed("inp_D"):
		slime.global_position.y += move_speed
説明しなくてももう分かりますよね。
※ 分からないという人は、もう一度こちらを御覧ください。
自由に動けるようになりましたが…
これで自由に動けるようになりました。



  • 見かけ上の解像度設定
さて、“動ける”ようにはなりましたが、背景画像が左上に張り付いて、右下に余白があるのが大変みっともないです。これをなんとかしたい。先にプロジェクト設定で指定した表示ウィンドウサイズは、この場合だとウィンドウのクライアントサイズなだけで、ゲーム内の解像度を指定しているわけではないのです。

背景に使用している backGround.png の解像度が 640x400ドットなので、ゲーム内の見かけ上の解像度を、これに合わせましょう。

var win = get_window() win.content_scale_size = Vector2i(640, 400)
たったこれだけです。この指定が効いているのは、先の初期設定でストレッチモードを viewport に切り替えているためです。これがもし disabled のままだと解像度の指定は無効となります。要は「視野角」を調整して表示を拡大しているのですから、それを disabled と禁止されれば、解像度が変わらないのも道理というわけです。
正しい画面表示
get_window() で取得した win は、プロジェクト設定の表示/ウィンドウで指定する多くの設定を、スクリプトコード側から指定することも出来ます。例えば、win.always_on_top = true とすれば常に最前面という指定になりますし、win.content_scale_aspect = Window.CONTENT_SCALE_ASPECT_IGNORE とすればウィンドウのサイズでゲーム画面がストレッチするようになります。
ウィンドウの形状にストレッチするように
えっ!? ストレッチされないし最前面も効かない?それはエディタからデバッグ実行をしているためです。通常実行は実はエディタからではなくてプロジェクトマネージャーから行うのです。
プロジェクトマネージャー
プロジェクトマネージャーの右側に「▶実行」ボタンがあります。プロジェクトをクリック(今回の例であれば Sample Shooting )して選択後、右側の実行ボタンを押します。これでウィンドウのサイズ変更やストレッチなどの実行が確認できます。デバッグ実行でも反映してくれれば良いのになあとは個人的には思うのですが、何か問題があったんでしょうねぇ(しらんけど)。

※20251025 08:00追記
X で教えてもらったのですが、デバッグ実行中の画面の...から、「次の実行時にゲームを埋め込む」チェックを外すことで、ウィンドウサイズの変更やストレッチが正しく反映されます。
ゲームを埋め込むチェック外すを
さて、これでプロジェクトの初期化関連の解説は終わります。他にも色々設定項目があったと思いますので、遊びながら試してみると理解が早いと思います。ではまたー

※もう長年使い続けてるキーボードがこれ。キータイプの音がめちゃくちゃ静か。押下時のストロークは浅いけど、私は特に気にならないかな。電池の持ちもかなり良いです。年に一度交換するかなあ、前回はいつだっけと思い出せない程度には、毎日かなりの時間使っていても電池が続きます。