2021年11月6日(現地時間)無料のオープンソースゲームエンジンプロジェクトの最新アップデート Godot 3.4 がリリースされました。
Godot 3.4 新機能
来るGodot 4.0のリリースに焦点を当てている開発者やユーザーも多いですが、堅牢で成熟した3.xブランチで早期にゲームを開発・公開したいという開発者やユーザーもまた多いです。そのため、この最新リリースでは、Godot 3で2Dや3Dのゲームをパブリッシュするために重要な機能やバグフィックスの実装、既存の機能をより最適化して信頼性を高めることにの焦点が当てられています。次の動画で、新機能のハイライトをざっと確認することができます。
また、いくつか抜粋して新機能を紹介したいと思います。
コア
■オブジェクトの有効性チェックをリリースビルドに反映
ほとんどのGodotユーザーは、Objectのインスタンスが削除されたにもかかわらず、スクリプト内のどこかでアクセスされているという状況に遭遇したことがあるでしょう(例:queue_free()の呼び出し)。このような use-after-free になった後のアクセスは、is_instance_valid(obj)で保護する必要がありますが、デバッグビルドとリリースビルドの間には多くのバグや不整合があるため、これを正しく行うことは驚くほど困難でした。
Pedro J. Estébanez氏(RandomShaper)は、このテーマを専門とし、 Godot 3.2.2 と Godot 3.3 に含まれる多くの改良を行いました。この新しい変更によって、デバッグビルドで既に実行されていたチェックが、リリースビルドでも実行されるようになりました。これにより、理論的にはリリースビルドのパフォーマンスが低下しますが、大きな影響はありません。
■大容量ファイルのサポート(> 2.0 GiB)
File APIはPCKファイルを含む2.0GiB以上のファイルを操作できるようになりました。これは、大規模なゲームを制限する要因となっていました。すべてが符号なしの64ビット整数(unsigned 64-bit integers)を使用するようにリファクタリングされており、Godotが840万TiBまでのファイルの読み込みをサポートしたことになります、
■フレームデルタのスムージング
現在、フレームデルタはOSのクロックをサンプリングして計測していますが、これはかなりのランダムな変動を受けることがあり、フレームが一貫してvsyncレートで正確に表示されている場合でも、これらの入力タイミングはオブジェクトの位置を狂わせる可能性があります。 lawnjelly氏は、Godotが一貫してvsyncを打っている時を検出し、サンプリングされた入力時間を固定されたvsyncデルタで置き換える frame delta smoothing のオプションを追加しました。
これにより、モーションの流動性が大幅に改善され、よりスムーズなゲームプレイが可能になります。このオプションはデフォルトで有効になっていますが、プロジェクトでタイミングに関する問題が発生した場合はオフにすることができます。
また、描画後にフレームデルタを同期させるオプションも追加されました。これはデフォルトでは無効になっていますが、より一貫したデルタが得られ、ゲームによってはフレームスタッターがさらに減少する可能性があります。
レンダリング
■Portal occlusion culling
これまでレンダラーに欠けていた重要な機能は、カメラビュー内にありながら、他のオブジェクト(例えば壁)に遮られているオブジェクトをカリング(レンダリングしないようにすること)する機能でした。ラスター(ピクセルベース)のオクルージョンカリングはGodot 4まで使えませんが、Lawnjelly氏のおかげで、Godot 3.4ではポータルオクルージョンカリング(portal occlusion culling)が導入されました。
これは多くのゲームで使われてきたオクルージョンソリューションですが、シーンを手動で設定する必要があります。また、オクルージョンカリングだけでなく、ビューアーの近さに応じてAIや処理をスロットリングするソリューションも提供しています。
さらに、シンプルな幾何学的オクルーダーをシーンに追加する機能も開発されており、3.4では球体オクルーダーが利用可能となります。
■ACES Fitted tonemapper
Godot 3.4では、Endri Lauson氏(Lauson1ex)が提供する新しい ACES Fitted tonemapper option が追加されました。
これにより、明るいオブジェクトのコントラストを正しく処理するなど、シーンをよりリアルに見せることができます。ACES Fittedトーンマッパーを使用するようにアップデートされた Third Person Shooter (TPS) demo で試すことができます。
■3Dパーティクル用リングエミッター
Ilaria Cislaghi (QbieShay)氏によって、3Dパーティクル用の新しいリングエミッタが実装されました。このエミッタは、半径と高さを設定できるリングまたは中空の円筒上にパーティクルを放出することができます。
■シェーダー言語機能
シェーダー言語のメンテナである YuriRoubinsky(Chaosus)は、Godot 4.0の開発ブランチで忙しいのですが、lyuma氏の助けを借りて、最もリクエストの多かった機能、 structs and fragment-to-light varyings のサポート、global const arrays をGodot 3.4に導入しました。また、TIMEの組み込みユニフォームも、デフォルトでカスタム関数で使用できるようになりました。
プラットフォーム
■macOS:Monoユニバーサルビルド、GDNativeフレームワーク、notarization
Monoのバージョンが6.12.0.158 (Preview)にアップデートされたおかげで、macOSのビルドはApple Siliconもターゲットにできるようになり、macOSのMonoビルドはユニバーサルビルドになりました(x86_64とarm64の両方をサポート)。
また、bruvzg氏は、macOS .frameworks
libraries with GDNativeを使用するためのサポートを追加し、Apple notarization process のエディタ内統合を追加しました(macOSからmacOSにエクスポートする場合のみ利用可能)。
Physics
2Dと3Dの両方の physics に多くの改善と修正が行われました。すべてを説明することはできませんが、以下がユーザビリティとパフォーマンスに最も影響を与えるものとなります。
■2Dおよび3DにおけるKinematicBodyの改善
キャラクターコントローラーはGodot 4.0に向けて、より信頼性が高く、すぐに使えるように作り直されていますが、3.4のリリースにもいくつかの大きな改善と修正が加えられています。
- プラットフォームの扱いが改善。
- Godot Physics 2D/3DのRayShapeの安定性を改善。
- Godot Physics 2D/3Dでの床の安定性を改善。
■convex hull(凸包) 生成をより速く、より確実に
Morris Arroad (mortarroad)は、Bulletのより信頼性の高いアルゴリズムを使って、メッシュから物理のconvex hullを生成する作業を行いました。複雑なケースでも数倍速くなり、全体的に良い結果が得られるようになりました
さらに、Camille Mohr-Daurat (pouleyKetchoupp)、jitspoe、lawnjellyの共同作業により、複雑なメッシュから簡略化された convex hull を生成するオプションが追加されました。これにより、多少の精度の低下はあるものの、パフォーマンスに優れた凸包を作成することができます。
■インスペクタのコリジョンレイヤーの刷新
レイヤーグリッドウィジェットが改良され、より見やすくなり、物理で最大32のコリジョンレイヤーをサポートするようになりました。
■Godot Physics 2D の Dynamic BVH
lawnjellyがすでに3D用に行った作業の大部分に基づいて、pouleyKetchouppは2D物理でブロードフェイズ用のダイナミックBVHを使用するためのサポートを追加しました。3D版と同様、一般的にパフォーマンスが向上し、信頼性も高くなっていますが、必要に応じてプロジェクトの設定で古いHashGridに戻すことも可能です。
■Godot Physics 3Dの改善と新機能
Godot Physics 3Dは、4.0でデフォルトの物理エンジンになるように作業されていますが、新機能や改良点は可能な限り3.xにバックポートされており、3.4には以下が含まれています。
- Bullet と同様の最適化を施した HeightMap shapes のサポート。
- Sync to Physics のサポート。
- RigidBody と KinematicBody の様々な修正。
パイプライン
■3DシーンをglTFとしてエクスポート
Ernest Leeが作成したglTFモジュールが、lyumaによって3.xブランチにバックポートされました。このモジュールによって追加された最大の機能は、シーンをglTFとしてエクスポートできるようになったことです。
つまり、CSGなどのお気に入りのツールを使ってGodotでシーンを構築し、そのメッシュデータをBlenderなどの他の3Dアプリケーションや他のGodotバージョンに取り込むことができます。
■ロスレスWebPエンコーディング
WebPは、JPEGとPNGの両方を置き換えることができる新しい画像フォーマットです。WebPには、JPEGやPNGに比べて最適化されたロスレスモードとロッシーモードがあり、PNGに比べて解凍時間が短く、ファイルサイズも小さくなっています。Godot はすでに WebP を非可逆圧縮に使用していましたが、Morris Arroad (mortarroad) の働きにより、Godot 3.4 では PNG の代わりに WebP を可逆テクスチャ圧縮にデフォルトで使用するようになりました。
インポーターにかかる時間は若干長くなるかもしれませんが、インポートされるファイルのサイズとロード時間は大幅に短縮されます。
既存のプロジェクトでは、 res://.import
フォルダを削除して、WebPを使ったロスレス圧縮されたすべてのテクスチャを強制的に再インポートすることができます。PNGも引き続きサポートされており、オプションでデフォルトに設定することができます。
エディター
■刷新されたUIテーマエディタ
Godotは、UIノードの外観をカスタマイズするための広範なシステムを提供していますが、そのためのツールは使い勝手が良くありませんでした。新しいテーマエディタは、コントロールノードの調整を可能な限り簡単にすることを目的としており、以下のような機能があります。
- プロジェクトで簡単にオーバーライドできる、利用可能なプロパティのリストが改善されました。
- コントロールピッカーを使えば、プレビューパネルからカスタマイズしたいノードを視覚的に選択できます。
- プロジェクトに適したシーンからカスタムプレビューを行うことができます。
- 同じ種類のスタイルボックスをまとめて編集できるので、余白や境界線の調整にかかる時間を短縮できます。
- テーマパワーユーザーは、新しいアイテム管理ダイアログを利用して、テーマリソースの一括調整をより詳細に行うことができます。
Rémi は 2020 年 3 月に 4.0 向けにエディタ内のクラスリファレンスをローカライズするサポートを実装しましたが、3.4 向けにこの新機能をバックポートすることになりました。
Godot 3.4には、中国語(簡体字)とスペイン語のクラスリファレンスの翻訳が、高い完成度で含まれています。フランス語、日本語、ドイツ語にも翻訳が含まれていますが、APIのサブセットについてのみです。今後のリリースでは、より多くの言語と翻訳されたコンテンツを追加できるように、翻訳作業への参加を募集しています。
その他
■アニメーションの “reset” トラック
AnimationPlayer を使用する際に最もよくあるハードルの一つは、アニメーションを編集するとシーンの状態が永久に変更されてしまうことです。これを避けるために、ユーザーはアニメーションによって変更されたすべてのプロパティの変更を手動で取り消す必要がありました。
Pedro氏による RESET animation feature の追加により、リセットプロセスを自動化することができるようになりました。RESETアニメーションはAnimationPlayerに自動的に追加することができ、新しいキーフレームが初めて挿入されるたびに、その値はデフォルト値としてRESETトラックにもミラーリングされます。シーンの保存時に、影響を受けるプロパティは自動的にデフォルト値で保存されるので、アニメーションの編集がシーンに保存されている内容に影響を与えることはなくなりました。
■2Dビューポートのスケールファクター
Ansraer は、プロジェクト設定に 2Dビューポートスケールファクタ(2D viewport scale factor)を追加しました。このファクタは、現在のストレッチ モードとは別に、2D 要素を大きくしたり小さくしたりするために使用できます。
■CSGPolygonのパスモードの改善と修正
Pathモードを使用する際の角度の簡略化、UV距離、パス間隔を設定するプロパティが追加されるなど、CSGPolygonは今回のリリースで多くの修正と改良が行われました。
他にもたくさんの変更点があります。すべての変更内容の確認はこちらから
プロジェクトを支援
Godotは、最高のフリーでオープンソースのゲーム技術を世界に提供するための非営利団体です。寄付や企業からの助成金は、100%エンジンに携わる開発者への支払いに使用されており、Godotを持続的なペースで開発できるようにするための重要な役割を果たしています。
もしGodotを使い、気に入って成熟した高品質のフリーでオープンソースのゲームエンジンのためにサポートしたい場合は、こちらから寄付をすることができます。
ダウンロードとシステム要件
Godot 3.4 は OpenGL 2.1 / OpenGL ES 2.0対応のハードウェア、Mono版の場合:MSBuild(Visual Studio Build ToolsまたはMono SDK)で利用できます。
Godot 3.4のダウンロードはこちらから
コメント