ゲーム開発

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

5
パスの長さをどのように決定しますか?
各プレイヤーに1つの指定されたパスに沿って移動する必要があるゲームがあります。ベジエ曲線を使用してパスを描画します。パスの実際の(直線的ではない)全長と、各プレイヤーが行った距離をどのように決定できますか?(始点とパス上の指定した点の間の距離。) 更新: パスはデカルト平面(2D)で表されます。


5
パスファインディングにおける状況認識
たとえば、ロックされたドアや鍵など、特定のアイテムが収集された後にのみ特定の通路が開かれるダンジョンを通る最短の道を見つけなければならなかったとします。 「最短経路」という言葉に対する通常の腸の反応は明らかにA *です。しかし、A *はこのような環境では失敗します。信頼できるヒューリスティックを定義する多くの問題があり、さらに、ノードに複数回アクセスする必要がある可能性が高いためです。これは、従来のA *では不可能であり、ヒューリスティックを困難にします。 私が考えたのは、ダンジョンの始まりから終わりまでの道を探すことだけで、ブロックされたドアは無視されます。このパスが見つかると、道を塞いでいるドアごとに、適切なキーを探してドアに戻る追加のパスが検索され、ドアに到達する前に通過します。ドアを開くために必要なキーへのパスが、最初に開く必要がある別のドアによって再びブロックされる状況を処理するために、まったく同じシステムが使用されます。 私の解決策で私が見る大きな問題は、アイテム取得のパスを含むすべてのパスが見つかった後、目標から遠い他のブロックされたドアが存在する可能性があるため、エージェントが移動した総距離が可能な限り最小ではない可能性があることですしかし、適切なキーをはるかに簡単に利用できます。A *は、ブロックされたドアが単に無視される最初のパスでこれらのドアを無視します。 私はこれを解決しようとする最初のものではないと私は確信しています。問題についてのいくつかの入力をいただければ幸いです。
11 ai  path-finding 

2
C / C ++マルチプレイヤーゲームのネットワークメッセージをシリアル化およびシリアル化解除する最良の方法は何ですか?
現在JSONを使用しており、クライアントとサーバー間のメッセージの種類によってはバイナリ形式に移行したいと考えています。 構造体をソケットに読み込むだけですか?プロチコールバッファー/リサイクルを使用しますか? データの配列をどのように表すべきですか? データのパック/アンパックのインターフェースはどのように見えるべきですか?

3
Age of Empires IIのパースペクティブの名前は何ですか?
Age of Empires 1の「パースペクティブ」を2Dスプライトゲームとして説明します。 以下は、Age of Empires IIのスクリーンショットです。「見通し」をどのように説明しますか?2Dスプライトゲームですか? 「遠近法」は正しい言葉ではないかもしれません。そうでない場合、何を使用すればよいですか?

5
エンティティ構成をスクリプトの外に配置するのはなぜですか?
スクリプトファイルでエンティティコンポーネントを定義する多くのゲームを見てきましたが、各エンティティを構成し、そのエンティティが持つコンポーネントを指定するとき、他のファイル形式(XMLなど)を使用します。なぜ彼らはそれをするのですか? 私は主に他の人の根拠がこれについて何であったかを確認するように求めています。私はまた、(私はXML JSONを選択しなかったが)外のスクリプトの私のエンティティを設定します。これを行う理由は、セーブゲームを簡単に実装できるようにするためです。また、この種の構成はXMLやJSONのようなものに整理するほうがよいと思うからです。 @ クリストファーラーセンの答え: コメントとして投稿するには長すぎる 質問の主題から少し逸脱しているのではないかと思います。あなたが説明している問題は、階層ベースのエンティティにより関連しています。私の質問では、コンポーネントベースのエンティティについて話していることを述べました。 これが私が聞きたかった例です。以下は、エンティティを構成する2つの代替方法です。スクリプトを使用する方法と外部JSONファイルを使用する方法です。私の質問は、なぜ多くの人がスクリプトの外でエンティティを構成することを好むのかということでした。 基本エンティティクラス: class Entity: def __init__(self, name): pass def addComponent(self, comp): pass スクリプトのアプローチ: orc = Entity('Orc') orc.addComponent(PositionComponent(3.4, 7.9)) JSONアプローチ: { "name" : "Orc", "components": { "PositionComponent": { "x" : 3.4, "y" : 7.9 } } } このアプローチを使用する理由は既に述べましたが、これは技術的で組織的なものです。なぜこれほど多くの他の人(私が見たものから)がこれを使用するのか知りたいと思いました。

4
シングルプレイヤーエンジンは無効なデータをどの程度強制的に拒否する必要がありますか?
シングルプレイヤーゲームで、外部スクリプトで指定されたコンポーネントからエンティティを構築しようとする場合、コンポーネントの1つが不正な形式である場合に何が望ましいと思いますか。 エンジンはそのコンポーネントをスキップして、適切に記述されたコンポーネントのみを使用してエンティティをゲームの世界に住まわせる必要がありますか? または、コンポーネントの1つが不正な形式である場合、エンティティを世界に追加しないでください。 エラーをログに記録することについては話していないことに注意してください。これは言うまでもなく、エンティティに何が起こるかについてだけです。

4
Minecraftの改造をどのように作成しますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 6年前に閉鎖されました。 私はMinecraft Modを作るのが初めてで、始めるために何をする必要があるのか​​と思っています。

1
Linuxゲームでのアセットファイルの検索
開発中およびリリース中に3Dモデル、テクスチャ、サウンド、スクリプト(Luaファイルなど)を保存する通常の方法は何ですか?私は主にC ++で友達とゲームを開発しています。プロトタイピングフェーズでは、GIMPでCヘッダーとして保存された単一のテクスチャーしかありませんでしたが、もちろん、このアプローチは適切にスケーリングされず、コンパイル時間が大幅に増加します。 Windowsでは、通常%PROGRAMFILES%、ゲームの実行可能ファイルが存在するサブディレクトリにそれらをダンプし、おそらく適切なツリー構造に配置します。ただし、Linuxでは、状況ははるかに複雑に見えます。実行可能ファイルは通常に常駐しますが/usr/bin、アプリケーションは他のファイルをに格納します。/usr/share非実行可能ファイルをに配置するのは非常に悪い習慣だと思います/usr/bin。ただし、開発中のディレクトリ構造はまったく異なります。 私は2つの異なる可能な解決策を思いつくことができました: 実行可能ファイルにそれ自体に関連するアセットファイルを見つけさせ、ゲームをにインストールし/optます。次に、へのシンボリックリンクを配置し/usr/binます。開発中、アセットのバイナリへの相対パスは、デプロイメント時と同じです。 プリプロセッサシンボルとして定義されている絶対パスでファイルにアクセスします。ビルドプロセス(この場合はraw Makefile)が適切に定義できるようにします。 どちらの方法も、ある面では私にはやや無関心に思えます。これについてゲーム開発業界で一般的な慣習はありますか? 私は見つけることができる唯一の関連質問がされたディスクのゲームアセットにインストール/の位置を決定し、資源や資産のディレクトリ・パスが、それらは、「ソースツリーから」実行中の問題に対応していませんでした。

1
四元数とワールド軸を中心とした回転
免責事項:私はプロのゲームプログラマーであり、ほとんどの場合、四元数を使用しますが、黒魔術に近いです。私は数学に比較的慣れていますが、虚数はいつも私を混乱させました。私はクアットを有用なものとして扱い、乗算を2回以上逆転させる傾向があります。限られた成功を収めているマトリックスと同じように、それらについて推理しようとします。 とにかく...。 私を困惑させるのは次のとおりです。ローカル軸を中心にオブジェクトを回転させたい場合、適用したい回転を表すクォータニオンをその回転に掛けます。したがって、ローカル空間での回転です。 ワールドスペースの軸を中心に回転させたい場合、私の推論は次のとおりです。ワールドスペースでの回転をクォータニオンとして考えます。オブジェクトの回転の逆数をこの四元数で乗算します。これにより、ローカルスペースでの世界ローテーションが実現します。この新しいクォータニオンで回転を乗算します。すなわち:newRot = oldRot *(oldRot * worldRotの逆) しかし、私がする必要があるのは、newRot = oldRot *(inverse oldRot * worldRot)* oldRotです。 なぜ逆クアットと乗算した後、それを適用する前に自分のクアットと乗算する必要があるのですか?完全に正当な理由があるに違いないが、私はそれから抜け出す方法を推論することはできず、それは私にとって一体でイライラしている。私はさまざまなFAQを試しましたが、ほとんどは数学の奥深くに行き、わかりにくくしました。 5歳のように説明してくれる人はいますか?
11 quaternion 

4
オブジェクトの速度が上がるにつれて速度が低下する方法
Flashでゲームを開発していますが、少し手助けが必要です。それは数学の問題と考えることができます。 オブジェクトが高速Xで飛んでいるため、オブジェクトが石と衝突する可能性があります。石にぶつかったときは、石を割って続行するための速度が遅いオブジェクトが必要です。ハードコードして次のように書くのは簡単ですmyVelocity -= 10;が、私の主な問題は、初期速度が高いほど速度を落とさないようにすることです。 たとえば、速度が300の場合は10を失い、200の場合は20を失います。 これはある種の式で行うことができますか?

3
複雑なオブジェクトに弾痕を付けることができるデカールの代わりはありますか?
「銃弾の穴」を作成する方法を理解しようとしていますが、実際にはシェーダーレベルでテクスチャを適用しますか?「平らな」面を持たないモデルを扱っている場合、モデル全体に​​「デカール」をラップできるようにしたいと思います。誰もがこれに似たようなチュートリアルを教えてくれます。
11 shaders 

5
ダイナミックオーディオスコア/音楽[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 2年前に閉店。 ゲームのアクションのムードやシナリオによってバックグラウンドミュージックが変化するゲームの開発に興味があります。もちろん、多くの既存のゲームがこれを行います(たとえば、ハロー)。しかし、私はこのようなシステムを開発するための手法について話しているリソース/論文/記事に興味がありました。 私はいくつかのアイデアを持っていますが、このモデルに合った音楽を思いついたり取得したりすることになるため、コードレベルで実装するのも同じように難しいことを理解しています。リンクや、アイデアを含む回答は、彼に感謝されます。 編集:これは私が探している種類の情報です:) http://halo.bungie.org/misc/gdc.2002.music/
11 audio 

9
jquery / javascriptゲームエンジンにはどのようなものがありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 6年前に閉鎖されました。 そこで、私はjavascript / html5ゲーム開発(これまでXNA / Unityで動作していた)を少し試すことにしました。誰か提案があれば疑問に思います。現在、インパクト、gameQuery、Jawsを調べています。 (また、XNAのように強力なゲームを作成することができないことを少し緊張しています...ただし、2Dを実行するだけです)
11 javascript  html5 

1
架空の4Dメッシュを画面にダウンプロジェクションする
精神的な練習として、私は任意の4Dメッシュをスクリーン(2D)に投影することを想像しています。 単一の4D三角形はまだ3つのポイントのみで構成されていると思いますが、これらの3つのポイントはそれぞれ4次元の列によって定義されます。 最初に4D空間を3D空間にマップする投影行列を定義してから、OpenGLにそのデータから2D空間への独自の投影を行わせるほうが理にかなっていますか? または、4から2に直接投影することを計画するのが最善でしょうか? どうもありがとう。

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