🍣

[Godot] 1. 開発環境のセットアップ

に公開

開発環境

  • OS: Windows 11
  • CPU: Core i3-8100
  • メモリ: 8GB
  • GPU: UHD Graphics 630(統合GPU)
  • Godotバージョン: 4.5.beta

Godot(エディタ)のインストール

  • 公式サイトからダウンロード
    • 通常はstableバージョンを選ぶが、rcやbetaでも良いかも
  • zipファイルを展開して、その中にあるエディタ(コンソール付きではない方)を実行する
    • エディタのあるフォルダ内に._sc_の名前で空ファイルを作成しておくと、self-contained modeで動作する
      • エディタフォルダ内にeditor_dataフォルダが作成され、そこにエディタ設定(プロジェクト設定ではない)・データ・キャッシュが格納されることで、ポータブルになったり、違うバージョンのエディタが既存設定に影響しないようにもできる
        • 新しいエディタをインストールした際には、既存のeditor_dataフォルダを丸ごとコピーすれば設定引継ぎができる(バージョンが大幅に変わる場合は何らかの手続きが必要になるかも)
      • sc modeでない場合は%APPDATA%\Godot\に格納される

新規プロジェクト作成

  • まずはプロジェクトマネージャから新規プロジェクトを作成して、基本設定を確認
    • Project Name: test(お好みで)
    • Project Path: D:/GodotProjects/test(お好みで、後でデフォルト設定を変更可能)
    • Renderer: 2DゲームならCompatibilityでよい
    • Version Controle Metadata: Git(.gitignoreと.gitattributesを作ってくれる)
  • エディタが起動する

エディタ設定

  • Editor Settings
    • Interface > Editor > Editor Language: en(お好みで)
    • FileSystem > Directories > Default Project Path: D:/GodotProjects(お好みで、新規プロジェクト作成時のデフォルト設定)
    • Network > Connection > Network Mode: Online(export templateのダウンロードに必要)

FileSystemについて

  • https://docs.godotengine.org/en/latest/tutorials/io/data_paths.html
  • プロジェクトパスにはproject.godotの名前のファイルがあり、このファイルのあるフォルダがプロジェクトルートフォルダとしてres://でアクセスできる(エディタ画面左下のFileSystem dock参照)
  • ユーザデータ(セーブデータやゲーム設定等)は%APPDATA%\Godot\app_userdata\[project_name]に保存され、user://でアクセスできる
    • プロジェクトがパッケージ(ランタイムやリソースパック)としてexportされると、res://では読み取り専用でアクセスできなくなるので、このようなパスが必要
    • セーブデータ等をuser://ではなくパッケージと同じフォルダに保存したい場合、
      • インストーラを使うタイプではProgram Files以下に配置され、書き込みが出来ない
      • ポータブル配布(zip展開型)なら、セーブデータも同フォルダに保持可能
      • ただしユーザデータフォルダは使わなくても作成されるし、user://を使えばOS標準のユーザデータ領域に保存され、管理が容易
    • [project_name]の名前が別のゲームと重複してユーザデータが破損してしまう可能性を考慮して、以下の設定をすれば%APPDATA%\[custom_user_dir_name]user://となる
      • Project Settings > Application > Config(要advanced settings)
        • Use Custom User Dir: On
        • Custom User Dir Name: test_abc123(重複しないフォルダ名)
      • 最初からプロジェクト名を重複しなそうな名前で作成しておけば済む話

デモ作成

単一sceneの作成

  • creating-your-first-sceneに従う
  • エディタ画面左上のScene dockから、左上の+ボタン(Add Child Node)かOther Nodeを押す
  • Node > CanvasItem > Controle > Labelと辿っていくかSearchで探すかしてLabelを選択したらCreateボタンを押す
  • エディタ画面は以下のようになる
  • エディタ画面右上のInspector dockから、Textプロパティに適当な文言を入力すると、viewport(エディタ中央に表示されたsceneのプレビュー画面のこと)にも反映される
  • エディタ画面上部右側のplaytestボタンの中からRun Current Sceneボタンを押すと、まずはsceneのセーブ画面が出てくるのでSaveボタンを押す(FileSystem dockに追加されたのが分かる)
  • 続いて実行画面が表示されるのを確認する(確認後は閉じてよい)

main scene設定

  • Godotにおいてゲームとは複数のsceneから構成されるものであり、特にゲーム実行開始時に一番最初に実行されるsceneのことをmain sceneと呼ぶ
  • プロジェクトメニューから、Project settings > Application > Main Sceneに上記で保存したファイルを選択して、Openボタンを押す
  • main sceneを設定しておけば、エディタ画面上部右側のplaytestボタンの中からRun Projectボタンで実行できる

Export

ゲーム開発フローについて

  1. まずエディタ内での動作確認(ブレイクポイント使用)
    • print()push_error()でログ出力
    • ブレイクポイントでステップ実行
    • Debuggerパネルで変数・スタック確認
  2. 次にdebugモードでexport
    • コンソール付きのランタイムが用意され、print()push_error()出力が確認可能
    • コード内でif OS.is_debug_build():にようにして条件分岐が可能
    • エディタ外での動作確認により、パス・権限・ファイルアクセスの問題を検出しやすい
  3. 最後にreleaseモードでのexport
    • コンソールなし、最適化済み、エラーチェック無効化
    • 商用展開に最適化

Export Templateの事前インストール

  • export(パッケージを出力すること)するためには対象OS毎のexport presetが必要で、そのpresetのためにはexport template(debug用ランタイムやrelease用ランタイムが入っている)が必要
  • エディタメニューから、Export Template Manager > Download and Install(エディタ設定でNetwork ModeをOnlineにしておくこと)
  • Godotのバージョン(main/minorだけでなくpatchバージョンでも)が変わった場合は、それに合わせてexport templateも変えること

Export

  • プロジェクトメニューからExportを実行する
  • export templateのインストールが済んでいれば、PresetsのAdd...から対象OSを選べる
    • 同じ対象OSを複数追加して、それぞれにpresetを設定してもよい
      • ユースケースとして、例えばcustom featureに配布先(steam、dlsite)を設定したpresetを別々に用意しておけば、コード内でif OS.has_feature("steam"):のように処理分けできる(feature毎にpresetを作るのは冗長なので、CLI実行時に--featureオプションで指定してもよい)
  • presetの設定
    • Export Path: パッケージの出力先
      • プロジェクトフォルダ外に出力したい場合は、例えば../build/test.exeのように指定する
      • プロジェクトフォルダ内に出力したい場合は、例えばbuild/test.exeのように指定する
      • どちらもフォルダは自動作成してくれないので、事前作成しておくこと
    • Options
      • Debug
        • Export Console Wrapper: どのexport modeにおいてコンソール付きランタイムを出力するかの指定で、デフォルトのDebug Onlyにしておけばよい(release mode=配布用でのコンソール出力は、通常のユーザー配布では不要だが、開発者向けのリリースビルドでは有効な場合もある)
      • Binary Format
        • Embed PCK: 通常、exportされるパッケージはランタイム(.exe)とリソースパック(.pck)の2種類から構成されているが、ランタイム1つに統合にしたい場合は有効にする
    • Resources
      • Filters to export non-resource files/folders: csvやjsonファイルはリソース(コード内でload()可能なもの)ではないので、通常はリソースパックに含まれず、含めたい場合はここで指定する必要がある
    • Features
      • Custom: コード内で何らかの処理分けをしたいときに記述
  • exportには下記3種類のボタンがある
    • Export Allボタン
      • 事前に全てのpresetにExport Pathを設定しておく必要がある
      • export modeをDebugかReleaseかを選択する
    • Export Projectボタン
      • 選択したpresetをexport対象として、出力先を指定する
      • Export With Debugにチェックを入れれば、debugモードになる
    • Export PCK/ZIPボタン
      • ランタイム(.exe)を含まないため、DLCやパッチ用途

アイコン

  • ファイルアイコン(ランタイムファイル(.exe)のアイコン)
    • Export Preset > Options > Application > Iconで指定可能
    • .svgや.pngを指定すれば、自動的に.icoに変換してくれる
  • タスクバーアイコン(実行中にタスクバーに表示されるアイコン)
    • Project Settings > Application > Config > Windows Native Iconで指定可能
    • 各種サイズを含んだ.icoファイルでなければならない
  • ただし通常はどちらも同じアイコンを使うし、.icoの用意は面倒なので、Project Settings > Application > Config > Iconにだけ設定しておけば、どちらにも使える(個別の設定項目は両方とも空欄にすること)
    • 公式ドキュメントの説明ではexport presetに設定するだけで両方に対応できるように見えるが、実際の挙動は違った(今後修正されるかも)

Git管理

  • GitHubと連携すれば機能的に便利になることもあるが、下記理由で利用しない
    • バックアップ
      • できれば使いたいが、ゲーム開発はアッセットのサイズが大きく、Git LFSを使っても無料枠は10GBなので、容量を気にしなければならない
      • なので別ドライブにプロジェクトフォルダごとコピーすればよい
    • CI/CD
      • エディタのexportで困っていない
    • 共同開発
      • しない
  • 上記の通りリモートリポジトリとしてのGitHubは不要だが、ローカルリポジトリとして履歴管理はした方が良い
    • 開発とは、ちょっとずつ動くものを作っていく過程の中で、試行錯誤の連続であり、さっきまで動いていたものに機能追加したら動かなくなったので戻したいこともある
    • しかし相当手を加えてしまった後で、何をいじったのか覚えてないとか、戻すのも一苦労
    • そんなときプロジェクトをgit管理しておけば、壊れてしまったものを元に(commitしたところまで)戻すことができる
  • 公式の設定では公式Gitプラグインについて触れているが、v4.4.1では動かないとのコメントもあったので、CLIベースでgit操作することにする(設定は個人的な好みが反映されているし、万人向けではない)
    • gitコマンドインストール
      • 公式サイト
      • Powershell
        winget install --id Git.Git -e --source winget
        
    • Windows TerminalにGit Bashを追加
      • GUIDを取得
        • Powershell
          [guid]::NewGuid()
          
      • Windows Terminalの設定ファイルを開く
        • Windows Terminalを起動して設定画面を表示
        • 画面左下「JSONファイルを開く」からsettings.jsonを開く(メモ帳でよい)
      • profilesセクションに以下を追記
        • settings.json
          {
              "guid": "{取得したGUID}",
              "name": "Git Bash",
              "commandline": "\"%PROGRAMFILES%\\Git\\bin\\bash.exe\" --login -i",
              "icon": "%PROGRAMFILES%\\Git\\mingw64\\share\\git\\git-for-windows.ico",
              "startingDirectory": "%USERPROFILE%",
              "hidden": false
          }
          
      • 保存して再起動すると、「Git Bash」が選べるようになっている
      • デフォルトタブをGit Bashにする
        • 設定画面 > スタートアップ > 既定のプロファイル > Git Bash
      • カーソルをブロックにする
        • 設定画面 > 左メニューのGit Bashプロファイル > 外観 > ポインター > カーソルの形 > 塗りつぶされたボックス(■)
    • bash設定(Git Bash上でnotepad ~/.inputrcのようにしてメモ帳でファイルを開いて内容保存すればよい)
      • bashの画面フラッシュ防止
        • ~/.inputrc
          set bell-style none
          
      • vim設定(画面を残す、viの画面フラッシュ防止)
        • ~/.vimrc
          syntax on
          set t_ti= t_te=
          set noerrorbells
          set visualbell
          set t_vb=
          
      • その他(言語、エイリアス)
        • ~/.bash_profile
          export LANG=en_US.UTF-8
          export LC_ALL=en_US.UTF-8
          alias ll='ls -la'
          alias less='less -XR'
          alias vi='vim'
          
    • git設定
      • グローバル設定
        • Git Bash
          git config --global user.name "名前を指定"
          git config --global user.email "メールアドレスを指定"
          git config --global core.autocrlf input
          
      • プロジェクトフォルダに移動(D:\GodotProjects\testの場合)
        • Git Bash
          cd /d/GodotProjects/test
          
      • git管理を有効にする
        • Git Bash
          git init
          
      • .gitignore追加(プロジェクト作成時にversion control metadataにGitを指定していれば存在している)
        • Git Bash
          echo "*.translation" >> .gitignore
          

Discussion