2022年8月5日(現地時間) – 無料のオープンソースゲームエンジンプロジェクトの最新アップデート Godot 3.5 がリリースされました。
新機能ハイライト
開発の焦点は、間もなくリリースされる Godot 4.0 に向けられていますが、堅牢で成熟した 3.x ブランチでゲームを開発し公開することを望んでいる貢献者やユーザーも多く、Godot 3 ユーザーに対して、より優れたゲーム開発体験を提供し続けることが重要だと考えられています。
Godot 3.5 では、大小さまざまな新機能が追加されています。ほとんどの作業は、Godot 3.x で 2D および 3D ゲームを公開するために不可欠な、不足している機能の実装やバグの修正、そして既存の機能をより最適化し、信頼性を高めることを目的としています。
■障害物回避機能を備えた新ナビゲーションサーバー
Godot 3.5 には、多くの貢献者の献身的な努力の結果、完全にオーバーホールされたナビゲーションシステムが搭載されています。
新しいNavigationServerはRVO2ライブラリを使った障害物回避のサポートが追加され、ナビゲーションメッシュをランタイムにベイクすることができるようになりました。API全体が、以前よりずっと柔軟になっています。
バックポートは、合理的な範囲でAPIの互換性を維持しようとしながら行われましたが、基本的な動作は、主に、より多くの機能と柔軟性を提供するために変更されています。すべてのユーザーが喜んで新しい NavigationServer に移行してくれることを期待していますが、3.4 からのアップグレードで動作が悪化した場合は、問題を報告してください。
■3Dでの物理的な補間
Godot は、固定物理ティックレートとは独立したフレームレートでレンダリングすることができますが、これはオブジェクトの動き(物理ティックに発生する傾向がある)がレンダリングフレームと一致しない問題を引き起こし、見苦しいジッターを発生させる可能性があります。
lawnjelly氏の専門知識のおかげで、プロジェクト設定に新しい physics/common/physics_interpolation
オプションが追加されました。この設定を有効にすると、Godot は自動的にオブジェクトを補間し、レンダリングフレームを滑らかにします。
オブジェクトを動かし、ゲームロジックを _physics_process()
で実行すると、新しい物理補間の恩恵を受けることができます。詳細については、更新されたドキュメントを参照してください。
固定タイムステップ補間は今のところ3Dのみですが、3Dバージョンの最初のフィードバックとバグフィックスの後、2Dサポートを追加する予定となっています。
■SceneTreeTweenを使ったトゥイーン操作の改善
Tomasz Chabora(KoBeWi)氏は、Godot 4.0のTweenクラスを完全にオーバーホールし、よりパワフルで柔軟なものにしました。Haoyu Qiu(timothyqiu)氏 は、既存のTweenを維持するために、この機能をSceneTreeTweenとしてGodot 3.5にバックポートし、互換性を維持しました。3.5のアップデート後、Tweenの実装は2つに分かれ、3.xのオリジナルのものを使い続けることも、新しい4.0 APIを採用することも可能です。
■時間シングルトン(Time singleton)
Aaron Franke (aaronfranke)は 4.0 で新しいTime シングルトン(Time singleton)を追加しました。Time singleton は、Operating System から現在時刻を読み取る様々な方法をより良く抽象化したものです。4.0では、時間に関連する様々なメソッドがOSシングルトンからTimeシングルトンに移されました。3.5 では、OS シングルトンからメソッドが削除されなかったので、OS または Time シングルトンのメソッドのどちらかを使用することができます。4.0との互換性を保つために、できるだけTimeシングルトンを使用することが推奨されています。
■Label3D と TextMesh
Godot は、3D シーンにテキストを表示するために、待望の Label3D ノードを提供するようになりました。より高度な使用例としては、TextMesh を使用してフォントグリフから 3D メッシュを生成し、シーンに WordArt を追加することができます。
この2つの機能は、テキストレンダリングの専門家である Pāvels Nadtočajevs (bruvzg)氏 が Godot 4.0 の master ブランチで実装し、3.5 にバックポートしました。
■ユニークネームによるノードへのアクセス
Godot 3.5 では、スクリプトから特定のノードにアクセスする一般的なタスクを支援するために、ノードに “scene unique names” というコンセプトが追加されました。シーン固有の名前を持つノードは、新しい名前プレフィックス %
を使用して、 get_node("%MyUniqueNode")
のようにシーン内で簡単に参照することができます。これは、リファクタリング時にシーンツリー内で移動する可能性のある特定のコントロールノードを見つける必要がある場合、GUIに特に便利です。シーンのユニークネームは、Juan Linietsky (reduz)氏 によって master ブランチに追加され (GH-60298)、Tomasz Chabora (KoBeWi)氏によって 3.5 にバックポートされました。
■新しいフローコンテナ
2つの新しいフローコンテナ (HFlowContainer と VFlowContainer) は、子コントロールノードを左から右、または上から下のフローで垂直または水平に並べるものです。オートラップラベルやCSSフレックスボックスレイアウトのテキストと同様に、同じ行に収まらなくなるまで、コントロールノードで行が埋め尽くされます。
新しいコンテナタイプは、異なるウィンドウサイズでの動的なコンテンツに特に有効です。この機能は、もともと Hendrik Brucker (Geometror)氏が Godot 4.0 用に開発したもので、Haoyu Qiu (timothyqiu)氏が 3.5 にバックポートしました。
■非同期シェーダコンパイル+キャッシング(ubershader)
Pedro J. Estébanez (RandomShaper)氏の好意により、OpenGLでのシェーダーコンパイルのスタッタリングを減らすための改良が行われました。
この新しいシステムでは、各マテリアルに「ubershader」(すべてのレンダリング条件をサポートする大きなシェーダで、遅いですが起動時にコンパイルされ、オプションで将来の実行用にキャッシュされます)を使用し、より効率的で条件固有のシェーダは非同期にコンパイルされるようになっています。
ライトの種類、シャドウイングを有効にするかどうかなど、特定の条件下で初めてマテリアルを使用するとき、レンダリングは1、2秒遅くなる可能性はありますが、デバイスによってはそれほどひどくはないかもしれないとされています。
この機能はデフォルトでは無効になっており、プロジェクト設定の rendering/gles3
セクションで有効にすることができます(これはGLES3のみの機能です)。
■オクルーダーシェイプポリゴン(3D)
3.4のOccluderShapeSphereの追加に続いて、lawnjelly氏はOccluderShapePolygonという形で、より適応性があり、基本的なオクルージョンカリングを簡単に追加する方法を追加しました。
シーンにOccluderノードを追加し、OccluderShapePolygonの作成を選択することで使用できます。これは、最初は四角形として表示され、ノードトランスフォームでポリゴンを移動したり、角をドラッグして形を変えたり、ポイントを追加して削除したりすることができます。ポリゴンの背後にあるものは、視界から切り取られます。
ゲームレベル内の好きな場所に配置するだけで使用できます。詳しくはこちらのドキュメントをご覧ください。
■Android エディタの移植と最適化
2年前、thebestnom氏はGodotエディタ(GH-36776)のAndroidへの移植に取り組み始めました。Godot エディタは Godot 自身でビルドされているので、ビルドシステムをいくつか変更すれば、Android 用にコンパイルすることはそれほど難しくありませんでしたが、このコンパイル版を実際にAndroid端末できちんと動作させるためには、マウスとキーボードのサポートを改善し、タッチ入力の向上させ、デスクトップのようにエディターの上でプロジェクトを実行できるようにするための多くの作業が必要でした。
興味を持ったユーザーによる多くのテストにより、物事はゆっくりですが着実に進み、 Android メンテナーの Fredia Huya-Kouadio (m4gr3d) 氏は、この作業を Godot 3.5 (GH-57747)にマージするための最後の仕上げを行いました。現在のバージョンはモバイルに特化した変更があまりないので、キーボードとマウスを備えたタブレットでしか本当に使えませんが、基礎はできており、今後改善していくことができます。
Android エディターの APK ビルドは、こちらのダウンロードページでご覧いただけます。ビルドは現在署名されていませんので、インストール時に警告が表示されることに注意してください。
この最初のリリースは実験的なものです。また、タッチ入力やバーチャルキーボードでの使用には最適化されていません(そのため、マウスと物理キーボードで試してみることをお勧めします)。Godot 3.6 でさらに使い勝手を良くするために、この体験を改良することが計画されています。
また、Dan Edwards(Gromph)氏と Péter Magyar (Relintai)氏の協力により、Fredia氏は移植版エディタが使用している Android (GH-59606)の低プロセッサ使用モードも修正することが出来ました。これで、Androidで非ゲームアプリや非リアルタイムゲームを作っていて、バッテリーの寿命を保ちたいユーザーも問題なく使えるようになるとされています。
■マテリアルオーバーレイ
fbcosentino氏 は、3.5 と 4.0 の両方で同時に MeshInstances に新しい material_overlay プロパティを追加するために尽力してくれました。material_overlay プロパティは、メッシュのすべてのサーフェスをそのマテリアルで再度レンダリングするために使用されるマテリアルを割り当てることができます。この機能は SpatialMaterial の next_pass マテリアルと同じですが、SpatialMaterial が適用されたサーフェスのみではなく、メッシュのすべてのサーフェスに適用されます。
next_pass
を使用して効果を適用すると、一度に1つのサーフェスにしか適用されません。material_override
を使用すると、ベースマテリアルが新しいマテリアルに置き換わります。material_overlay
を使用すると、すべてのサーフェスでベースマテリアルの上に正しくエフェクトが追加されます。
■その他のレンダリングに関する変更
通常通り、多くの新機能とバグフィックスがレンダラーに追加されました。その多くは、もともと4.0で計画されていた機能のバックポート版です。その中には、以下のようなものがあります。
- 2D でのライン描画は、バッチレンダラーでの使用に最適化され、多くの場合、数倍速くなりました。
- FXAA、Glow、DoF などの後処理効果を透過 Viewport で使用できるようになりました。
- シャドウフィルタリングモードPCF13のパフォーマンスが大幅に改善され、PCF5よりわずかに遅くなっただけで、品質は大幅に向上しました。
- ディレクショナルシャドウアトラスのサイズを変更するために再起動が必要でしたが、ランタイムに調整できるようになりました。これにより、ゲーム内の設定として公開したり、パフォーマンス目標を達成するために動的に調整したりすることが大幅に容易になります。
- CanvasLayers はこの
visibility
プロパティを利用するようになり、CanvasItems と同じように非表示/表示できるようになりました。 - シェーダー編集に関する多くの改善と修正が4.0からバックポートされ、より使いやすく合理的になりました。
■VCS UI の大きな改善
Godotエディタにおけるバージョン管理システム(VCS)統合のための多くの新機能、例えばプッシュ、プル、フェッチ操作や、非常に素晴らしいdiffビューUIなどの機能はすべて、公式のGit統合プラグインに実装されています。Godot 3.5 をサポートする最新の 2.x プラグインリリースについては、リリースページをご覧ください。
■その他の改善
Godot 3.5 には、ライト、パーティクル プレースホルダー、マスキングに使用できる 2D グラデーション テクスチャなど、他にも多くの改善が含まれています。
その他すべてのアップデート内容の確認はこちらから
今後の予定
これは 3.x ブランチの終わりではありません。新しい 3.6 マイルストーンがすでに存在し、Godot 4.0 からのバックポートや、3.5 プロジェクトへの継続的なサポートが期待できます。
Godot 4.0 はベータ版に近づいており、ほとんどの貢献者はこのブランチに集中しています。そのため、将来的には 3.x ブランチに対する機能追加やバックポートが少なくなることが予想されます。3.6 のマイルストーンでは、現在の開発をまとめ、4.x の安定版リリースと並行してバグフィックスを行う長期サポート 3.x ブランチを準備する予定になっています。
プロジェクトを支援
Godotは、可能な限り最高のフリーでオープンソースのゲーム技術を世界に提供することを目的とした非営利団体です。寄付や企業からの助成金は、100%エンジンに携わる開発者への支払いに使用されており、Godotを持続的なペースで開発できるようにするための重要な役割を果たしています。
もしGodotを使い、気に入って成熟した高品質のフリーでオープンソースのゲームエンジンのためにサポートしたい場合は、こちらから寄付をすることができます。
ダウンロード
Godot 3.5 は、Godot 3.4.x プロジェクトと互換性があり、すべての 3.4.x ユーザーに対してアップグレードが推奨されています。
ダウンロードはこちらから
コメント