对象状态机和动画过多生成时卡顿.rar (261.5 KB)
AGM:1.0.22
こんにちは、最近プロジェクトで問題に遭遇しましたので、皆様と共有・議論させていただきたく存じます。
再現方法:
- Z キーを押すと、単純なアニメーションと少量の状態機械を持つオブジェクト(単純オブジェクト)が生成されます。
- X キーを押すと、複雑なアニメーションと多数の状態機械を持つオブジェクト(複雑なアニメーションと状態機械オブジェクト)が生成されます。
- C キーを押すと、単純なアニメーションと多数の状態機械を持つオブジェクト(単純なアニメーションと多数の状態機械オブジェクト)が生成されます。
テスト実行:
比較テストの結果、X キーで生成された多数のアニメーションと多数の状態機械を持つオブジェクトがゲームに最も大きな影響を与え、生成時に画面がカクつく、あるいはテレポート現象が発生することが確認されました。一方、C キーで生成されたオブジェクトの影響は相対的に小さく、カクつきは目立たない程度でした。
結論:
アニメーションの数と状態機械の数はゲームフローに相互に関連する影響を与えます。状態機械とアニメーションの両方が多い場合、ゲームの滑らかさに最も大きな悪影響を及ぼします。
推測:
アニメーションについては、画像の切り出しフレーム数や画像自体のサイズが関係している可能性があります。状態機械の生成については、一度にすべての状態機械を読み込むため、影響が生じている可能性があります。
さらに、プロジェクト内の多数の状態機械では、データベースの呼び出し、変数や条件の頻繁な変更などの操作も行われており、これらもオブジェクト生成時に約 1 秒のカクつきやフレームの飛びが発生する原因となっています。
現在の個人的な解決策:
新しいオブジェクトを多数作成し、主要なオブジェクトを複数に分割して処理するようにしています。
「いいね!」 1
JP:
こんにちは、最近プロジェクトで問題に遭遇したので、皆さんと交流したいと思います。
再現方法:
-
Z キーを押すと、シンプルなアニメーションと少ない数のステートマシンを持つオブジェクト(シンプルなオブジェクト)が生成されます。
-
X キーを押すと、複雑なアニメーションと複数のステートマシンを持つオブジェクト(複雑なアニメーションとステートマシンのオブジェクト)が生成されます。
-
C キーを押すと、シンプルなアニメーションだが複数のステートマシンを持つオブジェクト(シンプルなアニメーションと複数ステートマシンのオブジェクト)が生成されます。
テスト実行:
比較テストでは、X キーで生成される複数アニメーションかつ複数ステートマシンのオブジェクトがゲームに与える影響が最も大きく、生成時に画面がカクついたり、甚だしきに至ってはテレポートするような状況が発生します。C キーで生成されるオブジェクトの影響は比較的小さく、カクつきはあまり目立ちません。
まとめ:
アニメーション数とステートマシン数はゲームの流れに相関的な影響を与えます。ステートマシンとアニメーションの両方が多い場合、ゲームの滑らかさへの影響が最も大きくなります。
推測:
アニメーションに関しては、画像のカット数のフレーム数や画像自体のサイズに関係している可能性があります。ステートマシンの生成時には、すべてのステートマシンを一度に読み込むため、ある程度の影響を与える可能性があります。
また、プロジェクト内の多くのステートマシンにはデータベースの呼び出し、変数や条件の頻繁な変更といった操作もあり、これらもオブジェクト生成時に約 1 秒近くのカクつきやフレームスキップを引き起こします。
現在の個人の解決策:
新しいオブジェクトをより多く作成し、主要なオブジェクトを複数の部分に分割して処理します。
「いいね!」 1
EN:
皆さん、こんにちは。最近、プロジェクトで問題に遭遇しましたので、皆様と議論したいと考えています。
再現方法:
- Z キーを押すと、単純なアニメーションと少数の状態マシンを持つオブジェクト(単純オブジェクト)が生成されます。
- X キーを押すと、複雑なアニメーションと複数の状態マシンを持つオブジェクト(複雑なアニメーションと状態マシンオブジェクト)が生成されます。
- C キーを押すと、単純なアニメーションと複数の状態マシンを持つオブジェクト(単純アニメーションと複数状態マシンオブジェクト)が生成されます。
テスト実行:
比較テストの結果、X キーを押して生成された、複数のアニメーションと複数の状態マシンを持つオブジェクトがゲームに最も大きな影響を与えることがわかりました。生成時に画面がフリーズしたり、テレポートしたりします。C キーで生成されたオブジェクトの影響は比較的少なく、ラグは目立ちません。
要約:
アニメーションの数と状態マシンの数は、ゲームフローに相関する影響を与えます。状態マシンとアニメーションの両方が多い場合、ゲームの滑らかさへの影響が最も大きくなります。
推測:
アニメーションについては、画像切り出しのフレーム数や画像自体のサイズに関連している可能性があります。状態マシンを生成する際、すべての状態マシンが一度に読み込まれるため、何らかの影響を及ぼしている可能性があります。
さらに、プロジェクト内では、多数の状態マシン内でデータベースへの呼び出しや、変数や条件の頻繁な変更などの操作も行われており、オブジェクト生成時に約 1 秒のスタッターやフレームスキップを引き起こしています。
現在の個人的な解決策:
より多くの新しいオブジェクトを作成し、メインオブジェクトを複数の部分に分割して処理します。
これは弾丸設定を使用する際の性能低下に関連しているのでしょうか?
3発のバーストを発射する典型的な横スクロールシューティングゲームのセットアップを作成すると、ゲームは多くの性能を失い、FPSの低下によりスッターします。PGMでは、この同じことを複数の画面スクロールとともに実行しましたが、完璧に動作しました。しかし、AGMでは、キャラクターといくつかのテストタイルしかないプロジェクトでも、発射を開始した瞬間からひどく動作します。
私が言っていることを確認するために、以前にプロジェクトを提出しました。
私は弾発射ノードは使用しておらず、オブジェクトの生成のみを使用しています。AGM では現在、オブジェクトを生成する際にスタッターが発生することが確認されており、その根本原因は以下のように特定されています:
- アニメーションの数(スプライトフレームの数または画像自体のサイズのいずれかに起因する可能性あり)
- 状態機械の過剰な数(アクション内の接続条件や変数呼び出しの過負荷を含む)
公式チームが今後のアップデートでこの問題を最適化してくれることを願っています。
弾を発射するノードを間隔なしに3発発射するように設定していません。最小間隔は通常0.06秒です(これは元のPGMにとって適切でした)。あるいは、弾オブジェクトには状態機械が比較的少なく、画像サイズも小さいため、その影響は大きくありません。
よく見ると実質的に同じで、視覚スクリプトを持つ複数のオブジェクトを同時に生成しています。
「いいね!」 1
Justus
8
弾丸生成にも同様の問題があります。ただし、この投稿で議論されている問題は、「1 つのオブジェクトのみを生成する場合でも」、そのオブジェクトの状態数とアニメーション数によって消費される時間が大幅に影響を受けることを指しているようです。さらに、この影響は過度に大きいように見えます。