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

数学の問題は、ゲームの開発で使用される算術、幾何学、微積分、公式およびその他の計算を扱います。

10
Pongでは、パドルから跳ね返ったボールの方向をどのように計算しますか?
ゲーム開発におけるこの非常にHello World-yの問題を回避しようとしています。XNAでTicTacToeゲームを作成したので、次のステップはBreakoutクローンになると思います。 ゲームプログラミングについての知識も、どこにどの数学を適用すべきかも知らないことを覚えておいてください。それが私がこの質問をしている理由です。 質問:画面の下部にあるパドルに当たったときにボールが跳ね返る場所を判断するにはどうすればよいですか? 私はそれが次のようなものになると想像します: 入ってくるボールから速度と角度をキャプチャします。 バーに触れた場所(左端、右端、中央)を検出し、それに従って外側の領域に触れた場合により高速になります。 これは私が立ち往生しているところです。へへ。 洞察はありますか?これは単純な回答タイプの質問ではありませんが、ある時点で誰もが直面するものであると確信しています。 このウェブサイトで推奨されている「線形代数」という本を読んでいますが、ここで適用すべきかどうかはまだわかりません。
28 xna  c#  2d  mathematics  physics 

7
一端に偏った連続的な重み付きランダム分布
現在、ゲームのパーティクルシステムに貢献し、エミッタシェイプを開発しています。 線または長方形の領域に沿った私の一様なランダム分布は問題なく動作します-問題ありません。 しかし今、私はこの分布に1次元の勾配のようなものを持ちたいです。これは、たとえば、低い値は高い値よりも一般的であることを意味します。 この問題に適切な数学用語が何であるかはわかりませんので、この検索スキルでは私の検索スキルはかなり役に立ちません。パーティクルシステムは効率的である必要があるため、計算が簡単なものが必要です。

8
遭遇のバランスを支配する小さな数値的利点を防ぐに​​はどうすればよいですか?
私はしばらくの間ゲームをいじくり回してきましたが、何かにかなりのトラブルがあります: 私は2人のキャラクターを持っています。それぞれが範囲(1〜20)の属性(約10)を持っています。これらの属性を使用して「ロール」を生成し、より高いロールがその特定のエンカウンターに勝つようにします。2つのキャラクターがお互いにダメージを与えたり防御したりしていないことに注意してください。彼らは両方とも、私たちがスキルチェックと呼ぶことができると思うものに合格するかどうかを確認しています。両方とも、共通の値に対して合格/不合格に転じています。それらは互いに相互作用しません。 しかし、キャラクターの1人が小さな数値的優位性さえ持っている場合、私が考え出した式の結果は、これまでにないほど優れたものが多くの時間を勝ち取った結果になります。これは望ましくありません。 テストの「最も関連性のある」属性に80%、他の属性の合計に20%の重みを付けてみました。また、平均値を比較して相対的な差異を生成し、それを使用して弱いキャラクターを後押ししました。どちらのアプローチも、私が取り除こうとしている重要な利点をもたらしました(たとえば、遭遇を5,000回実行すると、片方の陣営が5,000をすべて獲得することがかなり定期的に発生します)。 「運」コンポーネントを追加することだけが重要であると思われますが、それは何らかの形でより低いキャラクターに有利に重み付けされており、私はそこでバランスが取れていません。 小さな数値的優位性の影響を鈍くするためにどのようなアプローチをとることができますが、属性の相対的なギャップが増加しても、その優位性を維持および向上させることができますか? 要求ごとに、ここに私がこれまで持っている詳細があります。私がまだ理解していないいくつかのことから、それらは一般性のままです。 現時点では、ロールは次のように生成されます 0.8 * (mainAttribute) + 0.2 (1/3 * subAttA + 1/3 * subAttB * 1/3 subAttC) 現在、これにより4.0付近の数値が生成されます。属性は、指定された範囲間でランダムに生成されます。現在のテストでは、2〜4の属性を持つ1つのキャラクターと、3〜5の対戦相手を使用しています。予想どおり、これはそれぞれ3と4に近い平均を生成します。 このワンポイントアドバンテージにより、55%から60%の領域で2つの勝ちのうち強い方を見たいと思います。これにより、平均属性アドバンテージで約80%の勝ちになります。 5または6、7または8の利点で90%、ギャップが大きくなると勝ち目がなくなる可能性があります。私は勝ちを保証したくないが、おそらく物事が非常に起こりそうにないことを望んでいる-ギャップが非常に大きくなる時間の99.5%または99.6%に勝つ曲。 現在の式は、非乱数を生成します。ランダム性は、関連する属性の選択に由来します。すべての属性が各ロールに使用されるわけではありません。全体的に弱い属性を持つものが、そのロールに関連する領域で強くなり、勝ちを奪う可能性があります。しかし、予想通り、それはめったに起こりません。 私の次の試みは、それぞれのすべての統計値の平均を取り、それらを相互に分割し、その値を使用して下位のキャラクターに小さなブーストを与えることにより、相対的な強さを比較することでした。これにより物事は少しスムーズになりましたが、5,000回の試行のうち1人の男に5,000勝というようなものを生み出す顕著な傾向がまだありました。

12
角度の比較と違いの解決
角度を比較して、それらの間の距離を把握したいと思います。このアプリケーションでは、度単位で作業していますが、ラジアンや卒業生でも動作します。角度の問題は、モジュラー演算、つまり0〜360度に依存することです。 1つの角度が15度、1つの角度が45度であるとします。差は30度で、45度の角度は15度の角度よりも大きくなります。 しかし、これは、たとえば345度と30度の場合に破綻します。それらは適切に比較されますが、それらの差は正しい45度ではなく315度です。 どうすれば解決できますか?アルゴリズムコードを書くことができます。 if(angle1 > angle2) delta_theta = 360 - angle2 - angle1; else delta_theta = angle2 - angle1; しかし、私は比較/分岐を避け、完全に算術に依存するソリューションを好むでしょう。

3
チームはソースファイルの上書きをどのように防止しますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 4年前に閉鎖されました。 たとえば、ゲームエンジンなどが複数の人によって同時に処理されているときに、上書きをどのように防ぐことができるのか、ということが起こりました。 開発者1が作業してAudio.cppおり、開発者2も作業をしているとしましょう。Audio.cppこれは、一般的に大規模なチームで上書きに対処するためにどのように管理されていますか?(つまり、開発者2がファイルを開くのを停止して、開発者1が終了するまで)
26 project-management  version-control  teamwork  java  2d  collision-detection  vector  collision-resolution  unity  directx  directx11  directx10  xna  ios  monogame  windows-phone-8  xamarin  design-patterns  oop  xna  collision-detection  collision-resolution  bounding-boxes  rotation  collision-detection  mathematics  javascript  algorithm  separating-axis-theorem  xna  2d  monogame  image  xna  directx  graphics  performance  opengl  2d  3d  c++  directx11  unity  c#  scale  c#  xna  collision-detection  collision-resolution  leaderboards  scoring  glsl  srgb  tilemap  three.js  tiled  unity  physics  xml  dialog-tree  xna  c#  .net  opengl  lwjgl  vbo  physics  graphics  procedural-generation  simulations  water  opengl  java  textures  lwjgl  frame-buffer  unity  unity  2d  collision-detection  collision-resolution  trigonometry  java  android  libgdx  xna  c#  frame-rate  c++  unreal-4  procedural-generation  java  graphics  lwjgl  slick  c++  software-engineering 



3
グラフィックスカードは、ベクトルの4番目の要素を最終位置として何をしますか?
この質問から、行列乗算で位置を変更する方が簡単なので、4要素の位置ベクトルが必要になります。 これは、4D要素を3Dポイントの表現と見なす場合(変換なしと仮定した場合)、4番目の要素を単に無視することを意味しますが、4番目の要素がvector4をGPUに供給する場合、要素は1つではなく、レンダリングされません-なぜですか? ラスタライザに配置された4番目の要素の意味は何ですか? 編集:レビューの際、この質問の言葉遣いはやや不十分でした。2番目の段落が「4番目の要素の値が特定の範囲内にない場合、「正しく」/「期待どおり」にレンダリングされない」と言う方が正確です。

3
ループする値(色相や回転など)を切り替えるにはどうすればよいですか?
デモを見る ジョイントをキャンバスの中心の周りで、マウスポインターの角度に向かってスムーズに回転させようとしています。私が持っているものは動作しますが、マウスの角度に到達するために可能な限り最短距離をアニメーション化したいです。この問題は、値が水平線(3.14および-3.14)でループするときに発生します。その領域にカーソルを合わせて、方向がどのように切り替わるかを確認します。 関連コード // ease the current angle to the target angle joint.angle += ( joint.targetAngle - joint.angle ) * 0.1; // get angle from joint to mouse var dx = e.clientX - joint.x, dy = e.clientY - joint.y; joint.targetAngle = Math.atan2( dy, dx ); 「ギャップを越えて」最短距離で回転させるにはどうすればよいですか?

3
より高速な正弦関数はありますか?
ジェネレーション3d perlinノイズに取り組んでいます。C#Mathライブラリは、ほとんどの関数が二重の精度を使用しているため、私が必要とするものに対してはやり過ぎのようです。いくつかの場所でMath.Sin()を使用してノイズを生成します。誰もがより高速な正弦関数を知っていますか?
25 xna  c#  mathematics 

5
2Dタイルゲームで視界面積をすばやく計算する方法は?
タイルのマトリックスがあり、そのタイルのいくつかにはオブジェクトがあります。プレイヤーに見えるタイルと見えないタイルを計算したいので、非常に効率的に行う必要があります(したがって、大きなマトリックス(100x100)と多くのオブジェクトがある場合でも十分に高速に計算されます)。 Bresenhamのラインアルゴリズムを使用してそれを実行しようとしましたが、時間がかかりました。また、いくつかのエラーが発生しました: ----XXX- ----X**- ----XXX- -@------ -@------ -@------ ----XXX- ----X**- ----XXX- (raw version) (Besenham) (correct, since tunnel walls are still visible at distance) (@ is the player, X is obstacle, * is invisible, - is visible) 私はこれができると確信しています-結局のところ、NetHack、Zangbandがあり、彼らはすべてこの問題に何らかの形で対処しました:) これにはどのアルゴリズムを推奨できますか? 必要に応じて、次のように可視を定義します。タイルは、タイルの少なくとも一部(コーナーなど)がプレーヤータイルの中心に障害物と交差しない直線で接続できる場合に表示されます。


7
円運動でオブジェクトをインターセプトする方法
2D宇宙ゲームを作成していますが、宇宙船が惑星を妨害する必要があります。直線切片の作業コードはありますが、円軌道での惑星の位置の計算方法がわかりません。 ゲームは科学的に正確ではないので、慣性、重力、楕円軌道などについて心配していません。 宇宙船の位置と速度、そして惑星の軌道(半径)と速度も知っています。

6
距離関数を最適化する方法は?
かなり単純なRTSのようなゲームを開発しているときに、距離の計算がパフォーマンスに影響を与えていることに気付きました。 常に、ユニットがターゲットの範囲内にあるかどうか、発射体がターゲットに到達したかどうか、プレイヤーがピックアップを乗り越えたか、一般的な衝突などがあるかを知るための距離チェックがあります。 2点間の距離が多く使用されます。 私の質問はまさにそれについてです。フレームごとに何千回も実行している場合、かなり時間がかかる通常のsqrt(x * x + y * y)アプローチ以外に、ゲーム開発者が距離をチェックするための代替手段を知りたいです。 マンハッタン距離と二乗距離の比較に気づいていることを指摘したい(sqrtボトルネックをスキップすることによって)。他に何か?

4
ベジェ曲線の弧の長さ
参照: Math.SEの同じ質問 ベジェ曲線の弧長を見つけるにはどうすればよいですか?たとえば、線形ベジェ曲線の長さは次のとおりです。 length = sqrt(pow(x[1] - x[0], 2) + pow(y[1] - y[0], 2)); しかし、二次、三次、またはn度ベジェ曲線はどうでしょうか? (私の目標は、サンプリング解像度を事前に推定することでしたので、次のポイントが前のポイントに触れているかどうかをチェックする時間を無駄にする必要はありません。)

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