このプロジェクトについて

Godot-Pythonは、GodotゲームエンジンにPython言語サポートをスクリプトモジュールとして導入することを目的としたプロジェクトです。これにより、開発者はGDScriptの代わりにPythonでゲームスクリプトを記述でき、Pythonのエコシステムと構文を活用できます。 **主な機能:** - **GodotでのPythonスクリプティング:** Godotノード(例: `Node2D`、`KinematicBody`)を継承するPythonクラスを使用し、`@exposed`デコレータを介してエンジンに公開します。 - **エクスポート:** `export(<type>)`を使用してエクスポートされた属性とプロパティを定義し、Godotのインスペクタと統合します。 - **完全なAPIアクセス:** 生成されたバインディング(例: `Vector2`、`ResourceLoader`)を通じてGodotのAPIにアクセスします。 - **ヘルパークラス:** 公開されていないPythonクラスを内部ロジックに使用できます。 - **ビルドシステム:** Scons、Cython、Jinja2に基づき、Linux、Windows、macOSをサポートします。 - **テストと例:** pytestベースのテストとPongのサンプルプロジェクトが含まれます。 **現在のステータス:** このプロジェクトは、現在のコードベースと互換性のないGodot 4をサポートするために大規模なリファクタリング中です。開発は`godot4-meson`ブランチで進行中です。masterブランチはGodot 3.xを対象としています。 **インストール:** ユーザーはGodotのアセットライブラリからインストールするか、アセットライブラリのウェブサイトからダウンロードするか、リリースページからプラットフォーム固有のビルドを取得できます。 **使用例:** ```python from godot import exposed, export, Vector2, Node2D, ResourceLoader @exposed class Player(Node2D): name = export(str) @export(int) @property def age(self): return self._age @age.setter def age(self, value): self._age = value def talk(self, msg): print(f"I'm saying {msg}") def _ready(self): self._age = 42 print(self.get_name()) def _process(self, delta): self.position += Vector2(10, 10) * delta ``` **ソースからのビルド:** Python >= 3.7とCコンパイラが必要です。手順には、GDNativeヘッダーのサブモジュールの初期化、仮想環境の作成、依存関係のインストール、プラットフォーム固有のコマンド(例: `scons platform=x11-64 release`)でのSconsの実行が含まれます。 **FAQのハイライト:** - **プロジェクトのエクスポート:** 手動エクスポートが必要です。Python環境とGodotバイナリをリリースフォルダにコピーします。 - **Pythonパッケージの使用:** `ensurepip`でpipをインストールし、`pip install`を使用して埋め込みインタープリタにパッケージを追加します。 - **PyCharmでのデバッグ:** Godotバイナリの名前を'python'を含むように変更し、「Attach to Local Process」を使用します。 - **スクリプトの自動ロード:** `project.godot`の`[autoload]`と`[gdnative]`で設定します。 - **PoolArrays:** 効率的なアクセスには`arr.raw_access()`コンテキストマネージャを使用しますが、メモリ安全性に注意してください。 **注記:** このプロジェクトはGodot 3向けには積極的にメンテナンスされておらず、今後のアップデートについては`godot4-meson`ブランチを確認してください。