ゲーム開発

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

6
ゲームプログラマ向けの優れた線形代数の本とは何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 優れた物理学を備えた優れたゲームを作成するには、線形代数の学習を開始する必要があると言われました。 私は線形代数の本を読んでいますが、それは私にはまったく異質です。著者は線形方程式(2つの方程式、2つの変数)を解くことから始めて、学校でそれについて学んだことを覚えていますが、ほとんどすぐにネクロノミコンから直接得られると思われる他のものに飛びつきます。 基礎から始めて、良い数学を学ぶためにどの本を読むことができますか? 助けてくれてありがとう。


9
スプライトの周りにアウトラインを描く効率的な方法
私はXNAを使用してゲームをプログラムしており、スプライトで「選択された」効果を実現するためのさまざまな方法を試しています。私が抱えている問題は、スプライトバッチに描画される各クリック可能オブジェクトが複数のスプライトを使用して描画されることです(各オブジェクトは最大6つのスプライトで構成できます)。 Xピクセルのスプライトにアウトラインを追加する方法を教えていただければ幸いです(アウトラインの幅はピクセルのさまざまな数になります)。 前もって感謝します、 グレッグ。
21 2d  xna  sprites 

10
ゲームプログラミングのためのC ++との競合
この質問は、Game Development Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 なぜC ++がゲーム開発で非常に人気があり、代わりに他の言語ではないのかについて興味があります。あなたはそれで非常に高速なコードを作成できることを知っていますが、何がそれを人気にしているのですか? 速いからといって?オブジェクト指向のパラダイムや移植性など、言語の他の機能ですか?時間の経過とともに作成されたすべてのライブラリが原因ですか?または、これらすべての(および他の)理由の何らかの組み合わせ? 誰かが私にこれを記入できれば、私はとても幸せになります。:-)
21 c++ 

6
列車の線路を表すいくつかの方法は何ですか?
私はこれを少し前に小さなプロジェクトで調べましたが、それほど遠くはありませんでした。ユーザーが列車の線路を描いて、「列車」が2D平面でその線路を追跡できるようにする小さなプログラムを作成したいと思います。トラックがかなり自由な形で、すてきな滑らかなラインになるようにしたいと思います。私は三次スプラインをいじってみて、まともな結果を得ましたが、列車をスプラインに追従させるのに苦労しました。また、複数のトラックを作成したり、列車をあるトラックから別のトラックに切り替えたりするのに苦労しました。 誰かが私が何かを理解するのに役立つアドバイス、記事、またはソースコードを持っていますか?ありがとう!

1
変換行列の乗算順序
最終的な変換行列の正しい乗算順序を把握しようとすると、問題が発生します。私はいつも奇妙な動きか歪んだ幾何学のどちらかを得る。私の現在のモデルは次のとおりです。 単一ノードの場合、乗算順序は次のとおりです。 L = S * R * T どこで L =ローカル変換行列 S =ローカルスケールマトリックス R =ローカル回転行列 T =ローカル変換行列 ノードのワールド変換の場合: W = PW * L どこで W =ワールド変換行列 PW =親世界の変換マトリックス L =上記で計算されたローカル変換行列 レンダリングするとき、ノードごとにマトリックスを計算します: MV = Inv(C)* NW どこで MV =特定のノードのモデルビュー変換行列 Inv(C)=逆カメラ変換行列 NW =上記で計算されたノードのワールド変換マトリックス。 最後に、シェーダーには休耕変換があります: TVP = PRP * MV * VP …
21 matrix 

3
一定の速度でA(x、y)からB(x1、y1)に移動しますか?
私は現在、次のようなものを持っています: float deltaX = point0.getX() - point1.getX(); float deltaY = point0.getY() - point1.getY(); そして、0.01秒ごとにオブジェクトの位置を次のように更新します。 object.setPosition(object.getX()-deltaX/100,object.getY()-deltaY/100); これにより、1秒でオブジェクトがpoint0からpoint1に移動します。私が必要なのは、オブジェクトをpoint0から、(point1の方向に)一定の速度で移動できるようにするための2つのポイントを持つことです。したがって、最初のポイントに近いポイントがある場合、オブジェクトは、より遠くにポイントがある場合と同じ速度でそれに向かって移動します。どんな提案も大歓迎です。ありがとう。

3
ピクセルアートモーションの「階段効果」をどのように回避できますか?
アンチエイリアシングによるぼかし効果を避けるために、正確なピクセル座標でスプライトをレンダリングしています(スプライトはピクセルアートであり、フィルター処理するとひどく見えます)。ただし、オブジェクトの移動には可変速度、重力、物理的相互作用が含まれるため、軌跡はサブピクセル精度で計算されます。 スクリーンスペースの速度が十分に大きい場合(vΔtが2または3ピクセルより大きい場合)、これは非常にうまく機能します。ただし、速度が小さい場合、特に対角線に沿って顕著な階段効果が現れることがあります。これは、非常に遅い画面空間速度(v << 1ピクセル/秒)ではもはや問題ではないため、中間速度値のソリューションを探しています。 左側には、オブジェクト座標を単純に丸めることで得られる、大きな速度のプロットされた軌跡があります。中央では、速度が小さくなると何が起こるか、そして私が話している階段効果を見ることができます。右側に、取得したい軌跡の軌跡を示します。 大小の速度で元の動作を維持しながら、エイリアシングを最小限に抑えるために軌跡をフィルタリングするアルゴリズムのアイデアに興味があります。Δt、瞬時の位置と速度、および任意の数の以前の値にアクセスできますが、リアルタイムシミュレーションであるため、将来の値については知りません(必要な場合、特定の仮定の下で推定値を推定できます) 。物理シミュレーションのため、突然の方向変更も発生する可能性があることに注意してください。

5
Vectorクラスに 'w'コンポーネントが必要ですか?
3D空間の回転、移動などを処理するマトリックスコードを書いていると仮定します。 ここで、変換コンポーネントを収めるために、変換行列は4x4である必要があります。 ただし、実際にベクターにコンポーネントを保存する必要はありwませんか? パースペクティブ除算の場合でもw、ベクトルの外側で単純に計算して保存し、メソッドから戻る前にパースペクティブ除算することができます。 例えば: // post multiply vec2=matrix*vector Vector operator*( const Matrix & a, const Vector& v ) { Vector r ; // do matrix mult r.x = a._11*v.x + a._12*v.y ... real w = a._41*v.x + a._42*v.y ... // perspective divide r /= w ; return r ; …

6
「トラフィックAI」を構築する方法は?
私が現在取り組んでいるプロジェクトは、車が道路に沿って移動する、飛行機がエプロンの周りを移動するという意味で、多くの「トラフィック」を特徴としています 現在、使用可能なパスは事前に計算されているため、ノードは、それ自体がエッジで相互接続されている交差点に対して自動的に生成されます。キャラクター/エージェントがワールドにスポーンすると、ノードから開始し、単純なA *アルゴリズムによってターゲットノードへのパスを見つけます。エージェントはパスをたどり、最終的に宛先に到達します。今のところ問題ありません。 ここで、エージェントが衝突を回避し、複雑な交通状況を処理できるようにする必要があります。私はAIの分野に慣れていないので、ステアリング動作に関するいくつかの論文/記事を調べましたが、レベルが低すぎることがわかりました。私の問題は、実際の衝突回避(エージェントは厳密に定義されたパスに従うため、この場合はかなり単純です)ではなく、あるエージェントが行き止まりを去り、別のエージェントがまったく同じものを入力したいような状況です。または、2人のエージェントがボトルネックで会議を行い、一度に1人のエージェントしか通過できないが、両方がそれを通過する必要があり(前に見つかった最適なルートに従って)、もう一方を最初に通過させる方法を見つける必要があります。したがって、基本的に問題の主な側面は、デッドロックを回避するためにトラフィックの動きを予測することです。 説明するのは難しいが、私はあなたが私が意味するものを得ると思います。どこから探し始めるかについて、何かアドバイスはありますか?私を始めることができる論文、サンプルプロジェクト、または同様のものはありますか? 私はあなたの助けに感謝します!
21 ai  movement 

2
オブジェクトが何であるかに基づいてコンテキストメニューを設計する方法
「右クリックオプション」動作のソリューションを探しています。 基本的に、ゲーム内のすべてのアイテムは、右クリックすると、オブジェクトが何であるかに基づいて一連のオプションを表示できます。 さまざまなシナリオの例を右クリックします。 インベントリ:ヘルメットはオプション(装備、使用、ドロップ、説明)を表示します 銀行:ヘルメットにオプションが表示されます(テイク1、テイクX、すべてテイク、説明) フロア:ヘルメットはオプションを表示します(テイク、ここを歩く、説明) 明らかに、各オプションは、言われていることを行う特定の方法を何らかの形で指し示しています。これは、私が理解しようとしている問題の一部です。単一のアイテムに非常に多くのポテンショニングオプションがあるのに、クラスを非常に乱雑にならないように設計するにはどうすればよいですか? 私は継承について考えましたが、それは本当に長くかかり、チェーンが巨大になる可能性があります。 インターフェイスを使用することを考えましたが、Xmlファイルからアイテムデータをロードして汎用の「Item」クラスに配置することができないため、これはおそらく少し制限されます。 Runescapeと呼ばれるゲームに基づいて、目的の最終結果を作成しています。ゲーム内ですべてのオブジェクトを右クリックすると、オブジェクトの種類や場所(インベントリ、フロア、銀行など)に応じて、プレーヤーが操作できるさまざまなオプションセットが表示されます。 これをどのように達成しますか?まず、どのアプローチをとるべきか、どのオプションを表示すべきかを決定し、クリックしたら、対応するメソッドを呼び出す方法を決定する必要があります。 私はC#とUnity3Dを使用していますが、実際のコードとは対照的にパターンを追っているので、提供された例はどちらにも関係する必要はありません。 どんな助けでも大歓迎です。質問や希望する結果が明確でない場合は、コメントを投稿してください。できるだけ早く対応します。 ここに私がこれまで試したものがあります: 私は実際に、さまざまな種類のアイテム(追加攻撃、追加防御、コストなど)のすべての値を保持する一般的な「アイテム」クラスを実装することができました。これらの変数には、Xmlファイルのデータが入力されます。 可能な限りすべての対話メソッドをItemクラス内に配置することを考えましたが、これは信じられないほど面倒で貧弱なフォームだと思います。おそらく、1つのクラスのみを使用し、異なるアイテムにサブクラス化することにより、この種のシステムを実装するための間違ったアプローチを取っていますが、Xmlからデータをロードしてクラスに保存できる唯一の方法です。 Xmlファイルからすべてのアイテムをロードすることを選択した理由は、このゲームが40,000以上のアイテムを使用できる可能性があるためです。私の数学が正しければ、各アイテムのクラスは多くのクラスです。

2
シーン全体をグレースケールにフェードさせる
プレイヤーがすべての命を失ったとき、ゲーム画面全体をグレースケールにしたいが、すぐに更新を停止したくない。また、突然すべての色が失われるのではなく、グレースケールにフェードインすることを好みます。私がこれまでに見つけたのは、スクリーンショットを撮ってグレースケールにするか、特定のテクスチャをグレースケールにすることです。すべてを繰り返すことなく、競技場全体とその中のすべてのオブジェクトをグレースケールに変更する方法はありますか?
20 xna  c# 

3
障害物の周りの多くの群がっている敵を効率的に経路探索する
私はゲームの敵の経路探索を改善しようとしています。現在、彼らは基本的に、プレイヤーとプレイヤー間の角度を計算し、その方向に移動することにより、プレイヤーの正確な位置に向かって絶えず移動しています。また、敵が互いの上に積み重なるのを防ぐ群れアルゴリズムを持っているので、敵が互いを挟むのではなくグループになります。 ただし、タイルベースのマップを追加したので、たとえば障害物や壁の周りを敵が通過できるようにする必要があります。私は最初、群れアルゴリズムが壁や障害物を遠ざけるオブジェクトと見なすように、「歩行不可能な」タイルに分離値を追加しようとしました。私の最初のテストでは、敵が歩くことのできないタイルのない目に見えない「壁」にぶつかったことが示されたので、これが実現可能かどうかはまだ解明していません。 A *を使用してプレーヤーへのパスを計算し、群れを防ぐために群れアルゴリズムを使用するには、パフォーマンスが重すぎるのではないかと考えていました。もともと私のゲームは波ベースのシューティングゲームになる予定でしたが、代わりにホットラインマイアミの静脈内でレベルベースにすることを決めたので、たまに大群とともに敵を減らし、それらが強くなります。 これは実行可能なソリューションですか?ゲームエンジンとしてSlick2DでJavaを使用しています。または、これら両方の問題に取り組むより良い解決策/アルゴリズムがありますか?

2
UNOは、デッキ/ゲームで+ 4、+ 2およびその他の特別なカードが発生する頻度をどのように決定しますか?
UNOのようなカードゲームの場合、特別なカードを受け取るための合理的なprocレートを設定したいときに考慮すべき要素は何ですか(たとえば、UNOの場合:+ 4、+ 2、カラーホイール、リバース、スキップ)。同様のゲームを設計する際に考慮すべき要素は何ですか? 確率などがこれに関係していることを理解しています。誰かがその背後にある数学/概念を実証できれば幸いです。

4
Google PlayなしでAndroidゲームを「公開」するにはどうすればよいですか?
私は開発の初心者であり、出版の障害を理解しようとしています。 Google Playアプリストアを回避する必要がある場合、他のアプリと同様にモバイルブラウザーでアクセスしてダウンロードおよびインストールできるWebサイトにゲームを公開できますか? 「周辺」のGoogle Playの公開はどのように機能しますか?特定の成功事例、ベストプラクティス、または注意すべき問題はありますか? 明らかな答えがあればおologiesびします。ある時点で答えを見つけたと思いますが、覚えていないのでリンクが見つかりません。 編集:みんなありがとう!本当に感謝しています。間違いなく私の質問に答えます。いくつかのオプションがあるようです!

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