ボトルネックを把握する
数百の動くオブジェクトは問題になりません。ただし、衝突するオブジェクトは数百個になる可能性があります。テストには多少時間がかかりますが、ボトルネックは衝突だと思います。
ところで、何個のオブジェクトについて話しているのでしょうか?プラットフォームは何ですか?モバイルゲームの100個のオブジェクトは、Webゲームの100個のオブジェクトやデスクトップゲームの100個のオブジェクトとは異なります。
同じゲームをテストしますが、カットされたオブジェクト間の衝突を無効にして、同じ量のオブジェクトで遅れるのを確認します。その場合、大量のオブジェクトが問題の原因であることを意味します。そうでなければ、衝突が問題です。
これにより、パフォーマンスを改善するために何を行うかについての決定が通知されます。以下のすべてのアイデアが当てはまるわけではなく、いずれにしてもテストが必要になります。
プレイヤーから遠く離れた大量のオブジェクトの最適化については説明しません。オブジェクトと対話するときに問題が発生するようだからです。
あなたがそれらを移動させるときに問題があります。
オブジェクトと対話するときに問題が発生した場合、表示されていないオブジェクトを削除することでどのように解決されるかは不明です...まだ、それが役立つかもしれないと思います。
プレイヤーから遠く離れたオブジェクトに問題がある場合は、レベルを小さくすることから始めるか、プレイヤーの行き先に応じてロードおよびオフロードできるチャンクにゲームを分割することを検討することができます。
立入禁止で
瓦rubをきれいにすることに関して、まず最初にすべきことは、範囲外のオブジェクトを取り除くことです。たとえば、穴に落ちた破片。プレイヤーがそれを見るためにそこに到達できる方法がない場合、それを保持する理由はありません。
これに戻ります。
より現実的にする(パート1)
のこぎり、a、または同様の道具で木材を切ると、材料が失われます(おがくず、削りくずなど)。レーザーで切断しても、レーザーは木材を燃やします。さらに、木材ではないものについては、通常、カットの周りの変形、崩壊などがあります。
私が言っているのは、カットが完璧ではなく、いくつかの素材が失われるということです。ゲームでそれをモデル化できます。その赤いカッティングの魔法は厚さを持っています。オブジェクトからその厚さを削除します(罪悪感が大きすぎる場合は、パーティクル効果を追加します)。
これは、その厚さよりも小さいものはカットできないことを意味します。実際、それを試みるとゲームから削除されます。それはいいです!瓦thereの量には上限があり、ゲーム内でそれをきれいにする機械的に健全な方法があることを意味します。
小さなオブジェクトのギアを変更する
衝突が問題になる場合、これはうまく機能します。
オブジェクトが小さすぎると、そのオブジェクトが持つさまざまな角度の詳細はあまり重要ではなくなります。精度の低い衝突メカニズムに変更できます。たとえば、サークルコライダーを使用できます。
さらに小さなオブジェクト同士を衝突させることなく扱うことができます。それらとエージェントオブジェクト(プレーヤーのアバターやAIが制御するキャラクターなど)との衝突のみを考慮してください。
最後に、非常に小さなオブジェクトがほこりに変わる可能性があります(パーティクル効果)。
より現実的にする(パート2)
衝突が問題になる場合、これはうまく機能します。
材料は圧力を受けると変形し、破損します。厚さが非常に薄い長いオブジェクトになった場合、上記のソリューションを活用できるように、オブジェクトを小さなオブジェクトに分割します。
厚みが小さすぎて、叩くと砕けて壊れるふりをすることができます。
オブジェクトをマージする
オブジェクトの数に問題がある場合、これはうまく機能します。
多くのゲームがパフォーマンスを損なう可能性のある大量のドロップを処理するために使用する一般的なトリックは、ドロップを一緒にまとめることです。
互いに近くにある小さなオブジェクトに対して同様のことを試すことができます。それらを単一のオブジェクトにします。しかし、私はピースを一緒に貼り付けるつもりはありません。物理を処理する単一のオブジェクトを作成することを意味します。おそらく、パーティクルエフェクトに似たテクニックを使用して、オブジェクトを構成する個々のピースを表すことができます。
より現実的にする(パート3)
風を聞いたことがありますか?現実の世界には風があります。
風を使って小さな物体を押しのけます。
それは小さなオブジェクトが少なくともすぐには休まないことを意味するため、直感的に反響することがあります。判断する前に以下をお読みください。
あなたは、することができます使用し 、風を前に離れて小さなオブジェクトをプッシュする-あるいはできるだけ早く-彼らがたまり始めます。小さいオブジェクト(それらを結合したり、それらの間の衝突を除去したりする)に最適化を使用している場合、これはより適切に機能します。
さらに、風を使用してアイテムをピットに押し込んだり、その他の方法で範囲外にしたりできる場合は、アイテムを削除する口実として使用できます。私はその話に戻ると言った。たとえそうでなくても、プレイヤーから離れすぎている小さなオブジェクトを削除する口実として機能します。プレイヤーが見ていなかったときに風がそれらを取り除いたふりをするだけです。
プレイヤーが見ていなくても、いくつかのオブジェクトを削除できます。私の祝福があります。
それに加えて、風を追加する口実があります。これは、ゲームの他のメカニズムまたは障害物の一部として風を追加できます。物事をきれいにしようとする風の精神を物語に加えることさえできます。
注:きれいにする瓦isがある場合は、必ずしも風を引く必要はありません(それは機能しますが)、おそらくランダムな間隔で風を起こすことができます。
ビーバー!
いくつかの迷惑なビーバーが来て、あなたの木材を盗みます!
これで敵のタイプができました!
さらに、もちろん、あなたが見ていなかった間に彼らは木材を取り除きます。かつては山だった木片で逃げているビーバーを見るために戻るように設計することさえできます。それは思い出に残る瞬間になり、木材が消えた理由を説明し、直面しているパフォーマンスの問題のいくつかを一度に解決します。
すべてのトレードオフです
プラットフォームまたは選択したツールには制限があり、ゲームを開発するために必要な時間と予算さえも制限です。まだ現実の完全なシミュレーションを作成することはできません。誰もできません。
すべての開発者は、ターゲットプラットフォームとその時点で課せられていたツールの制限内で動作し、最高のゲームはゲームを楽しく魅力的にするためにトレードオフを行わなければなりませんでした。多くの場合、彼らは現実的ではないため、楽しくて魅力的です。
創造性はこれらの制限から生まれます。
ただし、開発に便利な現実の部分を選択することで、ゲームをよりリアルにすることもできます。時々、プレイヤーから離れたオブジェクトを削除することは、楽しいゲームを作成するコストの一部であると考えてください。