タグ付けされた質問 「efficiency」

4
半径内のすべてのエンティティを効率的に継続的に見つける方法は?
非常に多数のエンティティ(ユニット)があります。各ステップで、各ユニットは近くのすべてのユニットの位置を知る必要があります(距離は定数Rより小さい場合)。すべてのユニットは連続的に移動します。これは3Dです。 平均すると、特定の制約を持つ他の特定のユニットの近くに、合計ユニット数の1%が存在します。 ブルートフォースなしでこれを効率的に行うにはどうすればよいですか?

1
クワッドツリー/グリッドベースの衝突-ロジックを実行する
まず第一に、私は自分のゲームロジックを短期間しか書いていないので、これが率直に思えるかもしれないことをおizeびします。 私は四分木とグリッドベースの衝突検出についてたくさん読んできました。私はロジックを理解しています-基本的にオブジェクトが近くにない限り、衝突をチェックしないでください。しかし、実際にこれをどのように実行するかについては言及されていません。 私は私の頭の中にいくつかの可能な方法を持っていますが、どれがベストかわからない 一般的な衝突テスト-最適化なし for(var i:int = 0; i < objects.length; i++){ //find object A var objectA = objects[i]; for(var j:int = i + 1; j < objects.length; j++){ //find object B var objectB = objects[j]; if(objectA.collidesWith(objectB){ //handle collision logic } } 近隣を保存する(方法1) しかし、衝突を最適化して近くのオブジェクトのみをチェックする場合はどうでしょう。それでもすべてのオブジェクトを実行しますか、それともチェックするオブジェクトの近くに配列を作成しますか? var objects:Array = new Array(); var …

3
パウダーゲーム:どのように機能しますか?
最近、次の2つの宝石を見つけました。 http://powdertoy.co.uk/ http://dan-ball.jp/en/javagame/dust/ 私の質問は次のとおりです。非常に多くの要素を持つ物理学はどのように効率的に処理されますか?私は現代のコンピューティングパワーをひどく過小評価しているのですか、それとも各セルが対応する位置に配置されているものを記述し、各ステップで各セルをシミュレートする2次元配列を「ちょうど」持つことは可能ですか?または、同じ種類の大きな領域を単一のデータセットにまとめ、必要に応じてそのセットを分離するなど、より複雑なことを行っていますか? このようなオープンソースのゲームはありますか?

2
多くの小さなコライダーを大きなものに結合する
私は何千ものグリッドの正方形で作られたタイルマップを使用してゲームを作成しています。現時点では、各正方形には衝突をチェックするための正方形コライダーがあります。 しかし、何千もの小さなブロックがある場合、それらすべての衝突をチェックするのは非効率的です。タイルマップが事前にこのように見えることを事前に知っていた場合、数千の小さなコライダーではなく、3つまたは4つの大きなコライダーを使用できたはずです。 多くの小さな隣接するタイルを最大限に大きなタイルに結合するための何らかの標準的なアルゴリズムはありますか?もしそうなら、誰かがそれをここで説明したり、そのようなアルゴリズムに関する文献を指すことができますか? あるいは、この方法でタイルコライダーを前処理することは、完全に間違ったアプローチかもしれません。もしそうなら、非常に多くのコライダーの効率に対処するための正しいものは何ですか?

3
完全な状態の更新よりも効率的にマルチプレイヤーゲームの状態を同期するにはどうすればよいですか?
私は以前に少しゲームネットワークコーディングを行いましたが、主にリアルタイムニーズのないゲームのTCPを使用しました。ネットワーク化されたマルチプレイヤーで2D Javaゲームに取り組んでいます。学習のために、私はこれを既存のネットワークAPIなしで自分で行いたいと思っています。 サーバーからクライアントに送信されるゲームの状態を効率的に表すにはどうすればよいですか?最も明白ですが、おそらく最も効率の悪い方法があります。これは、各プレーヤーの場所、アニメーションの状態などを使用してゲーム状態コンテキストオブジェクトを作成し、更新ごとにそれを各プレーヤーに送信することです。それを実装することはそれほど難しくはないように見えますが、おそらくリアルタイムの相互作用に近いものを達成するには大きすぎるでしょう(もちろん、これに関する私の経験は限られているため、私は正しくない可能性があります)。 状態の変化のみを送信するために以前に使用した確かな方法はありますか?パフォーマンスに十分な格差があっても、追加の作業に値するでしょうか?

4
n個のオブジェクトのシステムの衝突チェック効率を上げる方法はありますか?
多くの画面上のオブジェクトで構成されるゲームを作成しています。その1つがプレーヤーです。どの反復でもどのオブジェクトが衝突しているかを知る必要があります。 私はこのようなものを作りました: for (o in objects) { o.stuff(); for (other in objects) if (collision(o, other)) doStuff(); bla.draw(); } これにはO(n ^ 2)があり、これは悪いと言われています。これをより効率的に行うにはどうすればよいですか?私はこれをJavascriptで行っています、そしてnは通常30より低くなります、これが同じままなら問題になりますか?

3
マップ上の国間の接続を表すデータ構造
私がクライアントのために開発しているゲームでは、主要なゲームのコンセプトには、マップ上を移動することが含まれます。この場合、さまざまな国のサイズや形状などは関係ありません。ある国から隣接する国への移動は、1つのステップとしてカウントされます。 国間のつながりを内部的に表すための最良のデータ構造を見つけ出そうとしています。特定の国では、ゲームは隣接する国を知る必要があります。プレイヤーが移動できる方法を知るためと、ゲームのAIがルートを計画し、国から国への可能なパスを決定するためです。AIはまた、国がそのすぐ隣の隣国だけでなく、それらの国の隣国などとどのように接続されているかを評価する必要があります。 私はいくつかの可能性を見つけましたが、それらはあまりにも非効率的で非効率的です。AIは、その移動について適切な決定を行うために、可能なルートの束を計算する必要があるため、「非効率」は非常に問題があります。 これはやや一般的なCSパズルであり、共通の解決策があると思いますが、検索しても多くを見つけることができませんでした。どんな提案でも大歓迎です。

2
マルチスレッドゲーム-更新、レンダリング、およびそれらを分割する方法
StackOverflow投稿から(これを移動することをお勧めしました): それで、私はゲームエンジンに取り組んでいて、かなり良い進歩を遂げました。ただし、私のエンジンはシングルスレッドであり、更新とレンダリングを別々のスレッドに分割することの利点は非常に良い考えのように思えます。 どうすればよいですか?シングルスレッドのゲームエンジンは(概念的には)作成が非常に簡単で、更新->レンダリング->スリープ->繰り返すというループがあります。ただし、特に更新レートを変更した場合(たとえば、更新ループを25秒に1回実行し、レンダリングに60fpsを使用している場合)は、更新とレンダリングを分解する適切な方法を考えることができません-途中で更新を開始するとどうなりますか?レンダーループを介して、またはその逆?

2
2Dのピクセル単位の衝突検出で影響ポイントを見つけるにはどうすればよいですか?
私はプラットフォーマーを作成しており、ピクセルごとの衝突検出を実装しています。しかし、これは私がまだ理解していない2つの障害を引き起こしています。この質問に関する最初の障害は、影響のポイントを効率的に見つける方法がわからないことです(他の問題はおそらくこのStackExchangeの別の質問になるでしょう)。 ピクセルで指定されたレートでキャラクターを転倒またはジャンプさせます。つまり、たとえば、フレームごとに文字が4ピクセル落ちたり、ジャンプしたりする可能性があります。キャラクターが落下してオブジェクトと交差する場合、キャラクターはそのオブジェクトに着地する必要があります(ジャンプしてオブジェクトにヒットする場合は、その逆も同様です)。ただし、たとえば、キャラクターが4ピクセル落ちて、オブジェクトに3ピクセル入ると、落ちるのは止まりますが、適切な場所に配置されません。キャラクターはインパクトの最初のピクセルで止まるように見えるはずです。 では、どうすれば効果的なポイントを効率的に見つけることができますか?私は、輪郭のピクセルを比較し、衝突をテストし、衝突があるまでそれらを1つずつ増減するという漠然とした考えしか持っていませんが、引き離すのは複雑に思えるかもしれません。 プラットフォームについて知りたい場合は、XNA for Windows Phone 7を使用して開発しています。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.