ゲーム開発

プロおよび独立系ゲーム開発者向けのQ&A

2
オブジェクトの回転と平行移動にデュアルクォータニオンを正しく使用するにはどうすればよいですか?
これまでは、回転に通常のクォータニオンを使用し、移動にベクトルを使用して、特定のオブジェクトの回転と移動を個別に処理していました。ただし、後でリジッドボディダイナミクスに使用する予定があるため、オブジェクトの移動と回転の両方を処理するためにデュアルクォータニオンを使用したいと思います。基本的にそれが欲しいので、最初のデュアルクォータニオンを持つオブジェクトを作成し、このデュアルに、変位の変化を表す2番目のデュアルクォータニオンを掛けて、変更が適用された後の最終的な位置を表す3番目のデュアルクォータニオンで終わります。特定のオブジェクト(例として球体を使用します)が自身の重心を中心にローカルに回転し、グローバルに移動するようにします。これは、デュアルクォータニオンを使用して達成されたと思われるタイプのモーションのビデオです。 http://www.youtube.com/watch?v=k9I7Bbj02O8 残念ながら、この例のソースコードへのリンクは読み込まれません。今、私はこれを数回動作させようとしましたが、変位しているオブジェクト(ここでも球体)はグローバルに移動しますが、ローカルには回転しませんか、ローカルに回転しますがグローバルには移動しません(その動きは、回転します)。基本的にこれは私がやっていることを要約しています: 1)プログラムの最初に、位置と回転を表す最初のデュアルクォータニオンを持つオブジェクトがあります(このクォータニオンをQ1と呼びます)。 2)オブジェクトの回転速度または並進速度を変更します。これから、回転と加速度の変化を表す2番目の四元数Q2を計算します。 3)次に、2つの四元数を乗算します(この時点では両方の乗算の次数を試しましたが、正しい次数はQ2 * Q1になるはずです)。それらを乗算するために使用している式は、Q1 * Q2 = r1 * r2 + e(r1 * d2 + d1 * r2)です。 4)この時点で、オブジェクトの新しい位置と方向を説明する3つ目のデュアルクォータニオンがあります。双対の実数部はその向きを表すクォータニオンであり、双対部は式t = 2 * dual *(real ')を使用して変換ベクトルに変換できます。ここで、実数'は3番目の双対の実数部の共役です。四元数。 ただし、この方法では希望する結果が得られません。私が得ている結果は予測可能です。それらは、私が探しているタイプではありません。つまり、ローカルローテーションですが、グローバル変換です。誰かがこれを行う正しい方法を教えてもらえますか?

2
Farseerで非常に特殊な種類のジョイントを作成するにはどうすればよいですか?
編集する 問題は解決しました(Drackirの回答を参照)。これが私がこのジョイントで達成しようとしていたことのデモです。この他の質問のシナリオに関する詳細情報。 問題 Farseerで、次のように動作する非常に特殊なタイプのジョイントを作成しようとしています。 オブジェクトは、X軸とY軸の両方で常にオブジェクト間の距離を同じに保つ必要があります。 移動-オブジェクトの1つとの衝突により、グループ全体が一緒に移動する必要がありますが、グループは回転してはなりません。トルクの結果として、個々のオブジェクトのみが中心の周りを回転できます。 回転-オブジェクトは常に同じ回転でなければなりません。オブジェクトの1つとの衝突により、他のすべてのオブジェクトがまったく同じ量だけ回転するはずです。 ここに写真があります: 箱から出してFarseerでこれを実現する方法がない場合は、それを拡張して、このような動作をする新しいタイプの結合を作成するにはどうすればよいですか?基本的に私はすべてのボディが他のボディの「クローン」のように動作することを望みますが、それらの間のオフセットは固定されています。

2
動くオブジェクトがたくさんある四分木
私がやろうとしていることに非常に役立つクアッドツリーの実装があります。私の問題は、ビューポートに多くのオブジェクトがある場合、クアッドツリーの更新に非常に長い時間がかかることです。 非静的オブジェクトの場合、クワッドツリーが遅いことは既知の事実です。高速化するためにいくつかの方法を試しましたが、実際には、多数のオブジェクトを非常に頻繁に更新する必要があります。 代わりに私が見ているより良いアルゴリズムはありますか?あなたが知っているいくつかの派生したクワッドツリー実装はありますか?

1
重力により地面から跳ね返るキャラクター
ゲームに重力を実装すると、キャラクターが地面にぶつかったときにキャラクターがわずかに上下にバウンドし続けます。デバッグすると、キャラクターは基本的に地面の上と外でバウンドします。この問題を解決する方法がわからない場合は、ここで助けていただければ幸いです。 定数値 private float gravity = 0.09f; キャラクターが地面にいる場合は速度に追加 if (!isOnGround) velocity.Y += gravity; キャラクター全体の速度を全体の位置に追加します。 position += velocity * (float)gameTime.ElapsedGameTime.TotalSeconds; キャラクターが地面にあるかどうかを決定する衝突方法の一部。 for (int y = topTile; y <= bottomTile; ++y) { for (int x = leftTile; x <= rightTile; ++x) { // If this tile is collidable, TileCollision collision = Level.GetCollision(x, …
7 xna  physics 

4
独自のボットをプログラミングする永続的なゲーム[終了]
現在のところ、この質問は、Q&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張ディスカッションを誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 自分の「プレーヤー」をコーディング(および追加)できる、永続的な世界を備えたオンラインゲームを探しています(任意の言語/スクリプトを使用できます)。 RTSの一種ですが、ボット用です。 それも存在しますか?
7 multiplayer  mmo  rts  bot 

1
2D、さまざまなレベルのトップダウンマップ
それで、2D、トップダウン、スプライトベース(タイル)ゲームを作成しています。現在、マップ(現時点ではマップエディター)で作業していますが、マップを作成するので、基本的には同じです事)。 シナリオ それで、私は効率について考えて、地図をバラバラに作成しています。それぞれの作品で、「レイヤー」を持つことを計画しています。基本的に、私はそれを「ヒーローの下」レベルと「ヒーローの上」レベルまでレンダリングし、ヒーローが明らかにその間にレンダリングされることを計画しています。「ヒーローと同じレベル」のレイヤーも存在する可能性がありますが、私はまだそこにはいません。イベントや対話についてはまだ心配していません。画面上でヒーローを探しています。 移動のために、私は明らかにどのタイルがどの方向に移動できるかを知る必要があります。現時点での私の計画は、各タイルが8ビットを取得することです(4は「方向に入ることができます」ビット、4は「方向に出ることができます」)。これにより、移動を制限したり、一方向の方向移動を許可したりできます。 ジレンマ これは多くのシナリオに最適です。これにより、マップを基本的に3つのレイヤー(文字列)に保存できるようになり、今後の柔軟性が向上します。ただし、それ自体がレイヤーを持つマップを作成することはできません。良い例は、ユーザーが無効な動きを許可することなく、橋の下または上を移動できる橋です。私はプラットフォームを作成できず、その下を移動できません。これらは私のゲームに含めたいものです。 私の考え 理論的には、複数のヒーローレイヤーを許可してから、「下」と「上」のレイヤー(またはサンドイッチレイヤー)の複数のセットを許可できます。しかし、これは私のシステムを複雑にし、マップ間の移動を潜在的にトリッキーにします(ヒーローがマップの端の3番目のレイヤーにあるが、それが他のマップの2番目のレイヤーに対応している場合、移動を許可または禁止するにはどうすればよいですか)。 私の質問 このような複数のレベルを持つ複数のマップを管理するためのより良い方法はありますか?ユーザーレベルは異なるマップの異なるレベルで「接続」される可能性がありますか? あるいは... 私はこれを難しい方法でやっていますか?私が気付いていないトップダウンの2Dタイルマップを処理するより標準的な方法はありますか? 注意すべきこと、または役立つかもしれないこと これはJavaScriptで行われます(JSONで転送されます) 状態をすばやく転送する必要があるため、マップIDとx / y /方向は、ブール値の「移動可能」値を取得するのに十分なはずです。 マップは標準サイズではありません(特定のタイル数になります) 他の人に助けてもらえるように編集ツールを作るので、ツールで作成できるものが役に立ちます 「テレポーテーション」の場所は、マップの構築や、さまざまなマップセット(必ずしも接続されている必要はありません)へのアクセスや、マップセットへのアクセスのために存在している必要がありますが、まだ作成されていません(現時点ではイベントと一緒になっています)。

2
Unityのマルチプレイヤーサポートは他のエンジンと比べてどのように積み上げられますか?
現在FPSゲームの開発を始めています。開発ツールはまだ決めていません。私は本当にUnity 3Dに惹かれますが、ソフトウェアが他のソフトウェアと比較してどれほど優れているかはわかりません(ゲームにはスムーズなマルチプレイヤーが必要です)。Unityはマルチプレイヤーをサポートしていますか?ウェブサイトからは本当にわからなかった。

2
どうすればOBJモデルを頂点とインデックスの配列に変換できますか?
モデルのロード方法を学ぶためだけに、単純なモデルローダーを作成しています。.OBJファイルをカスタム形式に変換するプログラムを作成しました。(それは事実上.OBJとまったく同じです、私は学習のためだけにもう一度書いた)。すべてのデータをに読み込むことはできますstd::vectorが、頂点とインデックスの配列にデータを配置する方法がわからないため、正しくレンダリングされません。カリングなしでワイヤーフレームを有効にした場合の結果は次のとおりです(球体であることが想定されており、中央のL形はモデルの一部ではありません)。 ポイントリストをレンダリングするように指示すると、すべての頂点が適切な場所にあります。ただし、顔が正しく形成されていないようです... これはそれらをレンダリングするコードです: //========================================================= // CONVERT THE DATA INTO SOMETHING USABLE //========================================================= bool isDuplicate; for(int i = 0; i < polygonCount; i++) { for(int i2 = 0; i2 < 3; i2++) { isDuplicate = false; isCreated = false; selectedVertex = faceDefinitions[i].vertexIndexes[i2]; for(int i3 = 0; i3 < vertexCount; i3++) { …
7 c++  models  directx11 

3
ブレイクアウトのためのより洗練されたボールパドル衝突アルゴリズム?
私が取り組んでいる簡単なブレイクアウトゲームがあります。衝突コードはしっかりしています。物事はあるべきように跳ね返り、物事を通過したり他のファンキーさを行ったりしませんが、反射は少し単純化しています。その結果、ボールがループにスタックしてしまい、ループを壊すことなく最後のブロックを打てない状態になりやすい。 現在、パドル衝突コードはY速度を反映しており、パドルのどちら側に当たるかに応じてX速度を反映しています。 // Check for paddle collisions if ((m_ball.rect()).intersects(m_paddle.rect())) { double ballCenter = m_ball.rect().getX() + (m_ball.rect().getWidth()/2); double paddleCenter = m_paddle.rect().getX() + (m_paddle.rect().getWidth()/2); m_ball.setSpeedY(m_ball.speedY() * -1); if (ballCenter > paddleCenter) { m_ball.setSpeedX(Math.abs(m_ball.speedX())); } else { m_ball.setSpeedX(-Math.abs(m_ball.speedX())); } } アルゴリズムをより「興味深い」ものにして、ボールが同じ四角形でバウンドし続けないようにコントロールを強化する方法はありますか?

3
コンテンツパイプラインなしでXNAにサウンドをロードする
私は、ユーザーがゲームで使用する独自のアセットをインポートするWindows用の「ゲームメーカー」タイプのアプリケーションに取り組んでいます。実行時にエンジン側でこのコンテンツをロードできるようにする必要があります。 ただし、ユーザーがXNAランタイム以外のものをインストールする必要がないので、実行時にコンテンツパイプラインを呼び出すことはできません。 画像の場合、Texture2D.FromStreamを使用して問題ありません。 また、XNA 4.0 は、SoundEffectクラスにFromStreamメソッドを追加しましたが、PCMウェーブファイルしか受け入れないことにも気付きました。 でも、少なくともMP3では、waveファイル以上のものをサポートしたいと思っています。 何かお勧めですか?おそらく、PCMウェーブフォーマットへのデコードを行うC#ライブラリがいくつかあります。
7 xna  c#  sound 

3
スプライトのグループの回転の原点を調整するにはどうすればよいですか?
現在、スプライトをグループ化して、描画に回転変換を適用しています。 private void UpdateMatrix(ref Vector2 origin, float radians) { Vector3 matrixorigin = new Vector3(origin, 0); _rotationMatrix = Matrix.CreateTranslation(-matrixorigin) * Matrix.CreateRotationZ(radians) * Matrix.CreateTranslation(matrixorigin); } ここで、原点は私のスプライトグループの中心点です。この変換をグループ内の各スプライトに適用します。 私の問題は、原点を調整すると、スプライトグループ全体が画面上で再配置されることです。 変換で使用される回転のポイントを、スプライトグループの位置とどのように区別できますか?この変換行列を作成するより良い方法はありますか? 編集 次に、Draw()関数の関連部分を示します。 Matrix allTransforms = _rotationMatrix * camera.GetTransformation(); spriteBatch.Begin(SpriteSortMode.BackToFront, null, null, null, null, null, allTransforms); for (int i = 0; i < _map.AllParts.Count; i++) …
7 xna  sprites  matrix 

4
XNAでゲームを作成しました。どうすれば友達とゲームを共有できますか?
私はアーケードの古典的なTempestの魅力的な(骨なしですが)XNAバージョンのプログラミングを終えました。 やったー! これは宿題だったので、教授や友人/クラスメートと共有してフィードバックを求めたいと思います。 (正直に言いましょう。追加機能を追加する方法について質問がある場合は、このサイトのユーザーと共有できると便利です。) XNAゲームを共有する方法として、ビジュアルスタジオをシャットダウンするよりも優れた方法があります。それをウェブサイトでホストする何らかの方法が理想的です。
7 xna 

2
ぼやけずにピグレットでピクセルアートのサイズを変更するにはどうすればよいですか?
私は8x8ピクセルの画像のタイルセットを持っているので、ゲームでそれらのサイズを2倍に変更したいと思います(16x16ピクセル、たとえば各ピクセルを2x2ブロックに変換します)。私が達成しようとしているのはMinecraft-エフェクトのように、小さなピクセルイメージをより大きなブロックピクセルにスケーリングします。 Pygletでは、スプライトのscaleプロパティはピクセルをぼかします。他の方法はありますか? 作業コード: これが機能する解決策です(DManの永続性とJimmyの洞察力に感謝します)。 image = resource.image('tileset.png') texture = image.get_texture() gl.glTexParameteri(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_MAG_FILTER, gl.GL_NEAREST) texture.width = 16 # resize from 8x8 to 16x16 texture.height = 16 texture.blit(100, 30) # draw
7 python  image  pyglet 

2
XBoxでXNAゲームを入手するための実際のコストは?
Xboxに1のゲームを取り込むには多くのハードルがあるようですが、これまでのところ明らかにしました。 Visual Studioが必要です(ゲームが商用化されると、Expressは使用できなくなりますが、プロ向けに支払う必要があります)。1000ドル以上 次にXBoxを購入して、ハードドライブも必要だと判断します。Xboxハードドライブも購入してください。$ 400 XBox Gold LIVEサブスクリプションを購入する必要があります。$ 70(無料) AppHub Creators Clubサブスクリプション$ 100を購入する必要があります その後、結局のところ、XBoxでインディーズゲームをダウンロードする場所を見つけることさえできません。真剣にWTF-これをすべて実行した後、私はWebGLに習熟し、すべてを無料で行うことができた... ゲームを公開する前に、この道(穴)をずっと進む前に、他の隠されたハードルはありますか? 更新:「オーストラリアの分類委員会がすべてのゲームを評価する必要があるため、オーストラリアではインディーゲームを利用できません。また、法外な費用がかかるため、何かを壊さなければなりません。 ..

1
Android NDKでSFMLを使用することはできますか?
私は最近SFMLを使い始めて、とても気に入っています。Android、Linux、Mac、Windowsに移植できるゲームを作りたいのですが、SFMLには移植性がないようです。 しばらく検索してみたところ、フォーラムで無関係または未回答の質問しか見つかりませんでした。 誰かがAndroid NDKでSFMLを使用する方法、または将来サポートする計画を知っていますか?
7 android  sfml 

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