プレーヤーが作成した過剰な瓦bleをどのようにクリーンアップできますか?


92

私が作っている最新のゲームでは、このgifで示されている2Dオブジェクトを任意にスライスできます。

ここに画像の説明を入力してください

数百または数千のピースに連続的にカットできます。これは多くのラグを作成しません。なぜならそれらは常に眠っている物理状態にあるからです。しかしそれらを動かすと問題があります。

私はそれを作る方法に本当に自信がないので、何かを切り離すことからそれほど瓦はありません。一定の時間が経過した後、それらを削除したくありません。しばらくして切り取ったものに戻ると、ランダムに消えてしまうのが好きではありません。

プレーヤーが作成した過剰な瓦bleをどのようにクリーンアップできますか?


17
あなたの質問から、あなたが実際に何を望んでいるかは明確ではありません。あなたは「瓦theをきれいにしたい」と言いますが、同時に、瓦disappearをしばらくして消えたくないと言います。
フィリップ

10
タイニー&ビッグは小さなピースを破壊します。大きな部分がレベルにとどまっていることは確かですが、私はそれを完全に覚えていません。ここでは例を示します。youtu.be/236ly0ApPqg?t=177
TyCobb

2
範囲外のアイテムは、戻ったときに削除および交換できます。
ローレンペクテル

3
ちょっとした意見ですが、カットアクションによって影響を受ける最小オブジェクトサイズを設定します。カットするピースを選び出すのが難しい場合、カットすることはできません。(さておき、素晴らしいゲームダイナミクス、これは間違いなく足を持っている!)
AJFaraday

12
カットメカニックはgithubで見つけた無料のアセットなので、カットメカニックを作成したことに対する信用はありません。この例を使用して、オブジェクトを切り取るための使用方法についてのアイデアを得ることができます。(プレイヤーは私によってコーディングされたので、ゲーム内の他のすべてのものもそうです。
Ducktor

回答:


71

まず、そのゲームメカニックは非常に楽しいように見えるので、考えてみてください!この特定の問題を解決するために独立してまたは一緒に使用できる2つの簡単なソリューションを次に示します。

非常に小さな部分を削除する

プレイヤーを邪魔したり、環境に実際の影響を与えたりしない小さな衝突を回避することはあまり重要ではありません。余分な衝突ロジックを計算するだけでは価値がないため、これらのピースを削除するか、衝突を削除します。

プレーヤーのカットを制限する

無制限のカットを行うことで、すべての妨害オブジェクトをドロドロの山にスライスすることができれば、パズルの多くを本当に簡単にすることができます。プレイするプレーヤーに数カットだけを与える(または時間をかけてゆっくりリチャージする)と、千の破片の衝突に対処する苦労を排除することに加えて、パズルがより難しくなることがわかります。


1
どんな種類のパズルゲームも作るつもりはないので、最初にやると思います。
ダックトール

36
マイケル・ベイは、小さな破片も見えなくなったらそれを止めます。それはログではなく、おがくずです。または爆発のおがくず。何故なの?!
corsiKa

26
@corsiKaカットモーションにフレーミングエフェクトを追加すると、一定の幅の切れ目が接触点に焦げ跡を残す​​可能性があります。オブジェクトが非常に小さく、完全に「焦げている」場合、炎で破裂し、数秒で燃え尽きる可能性があります。
T.サー

155

ボトルネックを把握する

数百の動くオブジェクトは問題になりません。ただし、衝突するオブジェクトは数百個になる可能性があります。テストには多少時間がかかりますが、ボトルネックは衝突だと思います。

ところで、何個のオブジェクトについて話しているのでしょうか?プラットフォームは何ですか?モバイルゲームの100個のオブジェクトは、Webゲームの100個のオブジェクトやデスクトップゲームの100個のオブジェクトとは異なります。

同じゲームをテストしますが、カットされたオブジェクト間の衝突を無効にして、同じ量のオブジェクトで遅れるのを確認します。その場合、大量のオブジェクトが問題の原因であることを意味します。そうでなければ、衝突が問題です。

これにより、パフォーマンスを改善するために何を行うかについての決定が通知されます。以下のすべてのアイデアが当てはまるわけではなく、いずれにしてもテストが必要になります。


プレイヤーから遠く離れた大量のオブジェクトの最適化については説明しません。オブジェクトと対話するときに問題が発生するようだからです。

あなたがそれらを移動させるときに問題があります。

オブジェクトと対話するときに問題が発生した場合、表示されていないオブジェクトを削除することでどのように解決されるかは不明です...まだ、それが役立つかもしれないと思います。

プレイヤーから遠く離れたオブジェクトに問題がある場合は、レベルを小さくすることから始めるか、プレイヤーの行き先に応じてロードおよびオフロードできるチャンクにゲームを分割することを検討することができます。


立入禁止で

瓦rubをきれいにすることに関して、まず最初にすべきことは、範囲外のオブジェクトを取り除くことです。たとえば、穴に落ちた破片。プレイヤーがそれを見るためにそこに到達できる方法がない場合、それを保持する理由はありません。

これに戻ります。


より現実的にする(パート1)

のこぎり、a、または同様の道具で木材を切ると、材料が失われます(おがくず、削りくずなど)。レーザーで切断しても、レーザーは木材を燃やします。さらに、木材ではないものについては、通常、カットの周りの変形、崩壊などがあります。

私が言っているのは、カットが完璧ではなく、いくつかの素材が失われるということです。ゲームでそれをモデル化できます。その赤いカッティングの魔法は厚さを持っています。オブジェクトからその厚さを削除します(罪悪感が大きすぎる場合は、パーティクル効果を追加します)。

これは、その厚さよりも小さいものはカットできないことを意味します。実際、それを試みるとゲームから削除されます。それはいいです!瓦thereの量には上限があり、ゲーム内でそれをきれいにする機械的に健全な方法があることを意味します。


小さなオブジェクトのギアを変更する

衝突が問題になる場合、これはうまく機能します。

オブジェクトが小さすぎると、そのオブジェクトが持つさまざまな角度の詳細はあまり重要ではなくなります。精度の低い衝突メカニズムに変更できます。たとえば、サークルコライダーを使用できます。

さらに小さなオブジェクト同士を衝突させることなく扱うことができます。それらとエージェントオブジェクト(プレーヤーのアバターやAIが制御するキャラクターなど)との衝突のみを考慮してください。

最後に、非常に小さなオブジェクトがほこりに変わる可能性があります(パーティクル効果)。


より現実的にする(パート2)

衝突が問題になる場合、これはうまく機能します。

材料は圧力を受けると変形し、破損します。厚さが非常に薄い長いオブジェクトになった場合、上記のソリューションを活用できるように、オブジェクトを小さなオブジェクトに分割します。

厚みが小さすぎて、叩くと砕けて壊れるふりをすることができます。


オブジェクトをマージする

オブジェクトの数に問題がある場合、これはうまく機能します。

多くのゲームがパフォーマンスを損なう可能性のある大量のドロップを処理するために使用する一般的なトリックは、ドロップを一緒にまとめることです。

互いに近くにある小さなオブジェクトに対して同様のことを試すことができます。それらを単一のオブジェクトにします。しかし、私はピースを一緒に貼り付けるつもりはありません。物理を処理する単一のオブジェクトを作成することを意味します。おそらく、パーティクルエフェクトに似たテクニックを使用して、オブジェクトを構成する個々のピースを表すことができます。


より現実的にする(パート3)

風を聞いたことがありますか?現実の世界には風があります。

風を使って小さな物体を押しのけます。

それは小さなオブジェクトが少なくともすぐには休まないことを意味するため、直感的に反響することがあります。判断する前に以下をお読みください。

あなたは、することができます使用し 、風を前に離れて小さなオブジェクトをプッシュする-あるいはできるだけ早く-彼らがたまり始めます。小さいオブジェクト(それらを結合したり、それらの間の衝突を除去したりする)に最適化を使用している場合、これはより適切に機能します。

さらに、風を使用してアイテムをピットに押し込んだり、その他の方法で範囲外にしたりできる場合は、アイテムを削除する口実として使用できます。私はその話に戻ると言った。たとえそうでなくても、プレイヤーから離れすぎている小さなオブジェクトを削除する口実として機能します。プレイヤーが見ていなかったときに風がそれらを取り除いたふりをするだけです。

プレイヤーが見ていなくても、いくつかのオブジェクトを削除できます。私の祝福があります。

それに加えて、風を追加する口実があります。これは、ゲームの他のメカニズムまたは障害物の一部として風を追加できます。物事をきれいにしようとする風の精神を物語に加えることさえできます。

:きれいにする瓦isがある場合は、必ずしも風を引く必要はありません(それは機能しますが)、おそらくランダムな間隔で風を起こすことができます。


ビーバー!

いくつかの迷惑なビーバーが来て、あなたの木材を盗みます!

これで敵のタイプができました!

さらに、もちろん、あなたが見ていなかった間に彼らは木材を取り除きます。かつては山だった木片で逃げているビーバーを見るために戻るように設計することさえできます。それは思い出に残る瞬間になり、木材が消えた理由を説明し、直面しているパフォーマンスの問題のいくつかを一度に解決します。


すべてのトレードオフです

プラットフォームまたは選択したツールには制限があり、ゲームを開発するために必要な時間と予算さえも制限です。まだ現実の完全なシミュレーションを作成することはできませ誰もできません

すべての開発者は、ターゲットプラットフォームとその時点で課せられていたツールの制限内で動作し、最高のゲームはゲームを楽しく魅力的にするためにトレードオフを行わなければなりませんでした。多くの場合、彼らは現実的ではないため、楽しくて魅力的です。

創造性はこれらの制限から生まれます。

ただし、開発に便利な現実の部分を選択することで、ゲームをよりリアルにすることもできます。時々、プレイヤーから離れたオブジェクトを削除することは、楽しいゲームを作成するコストの一部であると考えてください。


36
この投稿は、瓦rubのオーバーフローの問題に対する決定的な答えです。テクニックの完全な要約を提供し、創造性を発揮する必要性を明確に示し、環境に合ったソリューションを選択するとともに、メカニズムと物語がどのように連携するかを示しました。私は自分がどのように感銘を受けているかを表現するのが難しいと言いたいだけです。
ドラゴモック

12
ビーム幅よりも小さいオブジェクトをカットしようとしても、オブジェクトが完全に消える必要はありませんが、1つの小さなオブジェクトが生成される場合があります。重要なのは、切断されたオブジェクトがビーム幅を超える場合にのみ、オブジェクトの数を増やすことができるということです。
-supercat

1

世界は離散的です。ピクセルより小さいオブジェクトをレンダリングすることはできないため、そのようなオブジェクトの存在を許可しないでください。(これは、Theraotが行ったリアリズムのポイントのいくつかに似ています。)

実際、これは無料で入手できます。プレーヤーは、カットラインを基本的に画面上の離散化されたラインとして指定します。切り取りの効果は、すべてのオブジェクトを、そのライン上のピクセルまたはその下のピクセルと、厳密にその上のピクセルで構成されるサブオブジェクトに分割することです。1ピクセルのオブジェクトは、ラインの上下に配置することはできないため、このアルゴリズムではカットできません。

すべてのカットテーブルを個々のピクセルにカットしても、追跡するオブジェクトが多すぎる場合は、最小サイズを大きくしても機能する可能性があります。

または、心配しないでください。プレイヤーがオブジェクトをほこりに切断するのに長い時間を費やす準備ができている場合、彼らは明らかに急いでいないので、彼らが引き起こした遅れに対処することができます。;-)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.