【Godot Engine】始める前に抑えておきたい事【ベストプラクティス①】

GodotEngine

今回は、GodotEngineで作業を開始する前に押さえておきたいベストプラクティスや注意事項を、公式ドキュメントを基にまとめていきます。

この記事でわかること
  • Godot Engineで作業をするときに気を付けることは?
  • Godot Engineで効率的なデータ整理やプログラミングを行うにはどうすればいい?
  • Godot Engineで推奨される命名規則やセオリーを確認したい
一言コメント
一言コメント

エンジンや開発環境にあったセオリーを押さえておくことで、後々の作業効率化や保守性向上を図りましょう!

表記について

学習コスト低減のため、各項目の重要度/使用頻度を以下の形式で表示します。
【★★★】:重要でよく使うもの。初心者,スピード重視の方はここだけ覚えれば十分。
【★★】:覚えておくと便利 or やや難めかつ習得が必須でない内容
【★】:あまり使わない or 上級者向け機能*
  *可読性確保のため、上級者向け機能については原則的に別ページで詳細解説

命名規則【★★★】

Godot Engineでは以下のような命名規則が推奨されています。

命名規則
  • フォルダ/ファイル名:snake_case
  • ノード名:PascalCase

フォルダ・ファイル名のsnake_caseは、GodotスクリプトがPythonベースであることや動作環境(OS)による大文字・小文字の際による不具合防止、ノード名のPascalCaseは組み込みノードシーケンス仕様との整合性確保といった理由で上記の形が推奨されているようです。

フォルダ構成【★★★】

Godotはシーンベースでプロジェクトを構成し、標準のファイルシステムをそのまま利用可能です。

また、Godot Engineの設計思想として、「どんな小さな単位でもできる限りシーン化する」という志向があります。プロジェクトフォルダ群を構成する際は、以下のポイントを押さえておきましょう。

フォルダ構成時の留意点
  • プロジェクトファイルの構成は、可能な限りシーン単位でまとめる。
    →あるシーンを構成するために必要なものは、その単位フォルダ内にそろっている状況
  • サードパーティーのリソースは原則*として最上位フォルダへ配置する。(addons/)
    *ただし、上述の“シーン単位”にて依存関係がある場合は適宜調整

Godot推奨例:(シーン単位で分類)

root
├ project.godot
├ addons
│ └ sample_assets
├ characters
│ ├ player
│ │ ├ player.tscn
│ │ ├ player.gd
│ │ ├ sprite_player.png
│ │ └ model_player.dae
│ ├ enemies 
│ │ ├ slime
│ │ │ ├ slime.tscn
│ │ │ ├ slime.gd
│ │ │ ├ sprite_slime.png
│ │ │ └ model_slime.dae
│ │ └ goblin
│ │   ├ goblin.tscn
│ │   ├ goblin.gd
│ │   ├ sprite_goblin.png
│ │   └ model_goblin.dae
│ └ npcs  
└ levels  
  └ stage1
    ├ stage1.tscn
    └ stage1.scn

一般的な構成:

root
├ project.godot
├ addons
│ └ sample_assets
└ assets
 ├ gd
 │ ├ player.gd
 │ ├ slime.gd
 │ └ goblin.gd
 ├ sprite
 │ ├ sprite_player.png
 │ ├ sprite_slime.png
 │ └ sprite_goblin.png 
 ├ scene  
 │ ├ stage1.tscn
 │ ├ player.tscn
 │ ├ slime.tscn
 │ └ goblin.tscn
 ├ model
 │ ├ model_player.dae
 │ ├ model_slime.dae
 │ └ model_goblin.dae
 └ scn 
   └ stage1.scn

フォルダを構成していく際には、各シーン間で共依存関係が発生しないように留意することが、保守性を高めるために重要です。
こうしておくことで、例えば敵キャラクターやプレイヤーのパーツを別プロジェクト等で流用したい場合にフォルダごと移動するだけで対応できます。

ここで説明した内容は、公式ドキュメント内にある以下ページからも確認できます。

プロジェクトの構成
はじめに: Godotにはプロジェクト構造やファイルシステムの使用方法に制限がないため、エンジンを学習する際にファイルを整理することが難しいようです。このチュートリアルでは、出発点として適切なワークフローを提案します。また、Godotでのバージョン管理の使用についても説明します。 構成: Godotは本質的にシーンベー...

シーン(ルートノード)≒クラスのような単位とも考えられ、以下を定義する役割を持ちます。

  • ノード構成・スクリプトで使用できるノード種別
  • 各種初期化
  • シグナル接続
一言コメント
一言コメント

最適なフォルダ構成は使用するゲームエンジンや開発環境、開発者の管理方法などによって様々です。Godot以外では別の形式が適合する場合がありますのでご留意ください。

特定のフォルダをGodotインポートから除外する【★】

Godotでは、あるフォルダ内に[.gdignore]という空ファイルを作成することで、そのフォルダをGodotで読み込まないようにすることができます。

一言コメント
一言コメント

不要なファイルの読み込みをなくすことで、インポートの高速化に加えて、編集操作のミスによるデータの破損などを防ぐことができます。

Godotスクリプトスタイルガイド【★★】

GodotのスクリプトはPythonライクであることから、基本的な考え方はPEP8スタイルガイドに準じます。

この項では、公式ドキュメントの内容を踏まえ、何点かのポイントをまとめていきます。
(より詳細な規則や応用例は各サイトをご参照ください)

スクリプトスタイルガイド
  • ファイル名・クラス名は以下のように適宜変換を行う(クラス・ノード名はPascalCase)
    ファイル名:player_controller.gd ⇔ クラス名:PlayerController
  • クラスをロード(変数/定数へ格納)する時、PascalCaseで命名する
    例)const Item = preload(“res://item.gd”)
  • オーバーライドが必要な仮想メソッド・プライベート関数/変数は先頭に「_」を付与する:
    例)var _counter = 0
    func _recalculate_path():
  • シグナル名はsnake_caseの過去形で命名する
  • 定数はCONSTANT_CASEで表記する
  • 列挙型の名前はPascalCase、メンバはCONSTANT_CASEで表記する
    →enumはクラス・ノード、そのメンバは定数の扱いであるため
  • ブール演算子は「&&」,「||」ではなく、「and」,「or」表記を使う
  • 大きい数値は「_」(アンダースコア)区切りで見やすく整形する:
    例)「1234567890」→「1_234_567_890」(適用の基準は7桁以上から)
  • 引用符は極力「”」(ダブルクォート)を使用する
    →エスケープ処理をしたいときに「’」(シングルクォート)を使えるようにするため
  • 16進数を使用するときはすべて文字で表記する:〇「0xff」・×「0XFF」
  • 各所にはコメントを挿入する(コメント化/コメントアウトショートカット:Ctrl+K
一言コメント
一言コメント

スタイルガイドはあくまで可読性を高めることが目的です。ここに記載の内容にとらわれず、どのような書き方が自身の作業にとってプラスになるかで適宜カスタマイズしていきましょう。

GDScriptスタイルガイド
このスタイルガイドには、エレガントなGDScriptを作成するための規則が記載されています。目標は、クリーンで読みやすいコードの作成を奨励し、プロジェクト、ディスカッション、およびチュートリアル間の一貫性を促進することです。うまくいけば、これも自動フォーマットツールの開発を促進するでしょう。 GDScriptはPyth...

参考サイト

この記事はGodotEngine公式ドキュメントを参考にまとめさせていただきました。

最新情報やより詳細な解説を得たい場合は以下公式ページをぜひご参照ください。

<日本語翻訳版>

Godot Docs – 4.2 branch
Godot Engine の公式ドキュメントへようこそ。フリーかつオープンソースで、コミュニティが運営する 2D/3D ゲームエンジンです! このドキュメントが初めての方は、 概要である 『はじめに』のページ を読まれることをおすすめします。 サイドバーにある目次から、関心のあるトピックにすぐアクセスすることができます...

<英版>

Godot Docs – 4.2 branch
Welcome to the official documentation of Godot Engine, the free and open source community-driven 2D and 3D game engine! If you are new to this documentation, we...
ひらまめ(hiramame)

普通の会社員をやりながら個人でゲーム開発を行っている者です。
「個人でも、初心者でも、社会人として働きながらでもゲームが作れる!」をテーマに情報発信をしています。

ひらまめ(hiramame)をフォローする
GodotEngine
ひらまめ(hiramame)をフォローする
ひらまめゲーム制作研究室

コメント

タイトルとURLをコピーしました