ゲーム開発

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

3
.Xを編集するためのツール
これはおそらく私がこれで助けを求めようとする膨大な数の場所ですので、ローカル検索エンジンで何かを見逃した場合はご遠慮ください-短い答えが必要です:短い提案です。私は.Xファイルを使用しようとしています(おっと..ええと?笑)。しかし、.Xファイルをインポートして編集し、エクスポートするための適切なソフトウェアが見つかりませんでした。これはすべてアニメーション付きで、すべてテキスト形式(オプションですが、 1つの.Xファイルに複数のメッシュが含まれているため、これらすべてが素晴らしいでしょう。仕事の半分を行うための優れたソフトウェアを見つけましたが、1つのステップでそれを行う方法はありますか?(つまり、他のプログラマーは何を使っているのでしょうか?ネット上で良いものを見つけられませんでした。自分で実装するのでしょうか?) したがって、適切な提案があれば、ガベージなしですばらしいでしょう。テキストの.Xファイルと、インポートして編集してからエクスポートする複数のメッシュを含むアニメーション。 ありがとう:Péter 編集:私はすでにBlenderを試しました。2.49bは、テキストでインポートDirectXをサポートする最後のバージョンでした。これらのバージョンの後で、blenderは.xさえインポートせず、エクスポートのみを行います。2.49bはアニメーション.xをエクスポートできますが、アニメーションはインポートできません。2.49bは複数のメッシュをエクスポートできますが、インポートされるのは同じメッシュから1つのメッシュのみです(変更されていません)。提案に感謝しますが、動作するスクリプトも提案できない限り、blenderはこれに対する解決策ではありませんか? 解決策:上記の問題に対して、いくつかの解決策がありました。ここで私はものを要約しようとします: ブレンダーは部分的に機能するソリューションです。上記の編集を参照してください。 Milkshapeはdirectxファイルで動作するように見えましたが、私のテストでは、プレビューのみが適切に機能し、メイン画面ではテクスチャが不良であり、アニメーションがインポートされなかったことがわかりました。チェックされたバージョンは次のとおりです:1.7.0および1.8.4またはそのようなもの、私は覚えていません。 TrueSpaceはどの.Xファイルでも機能しないようです。なぜだかわかりません。DirectX SDKが提供するtiny.xで試してみましたが、違います。*-良い解決策はクイックコンバーターを使用することです-良い答えとしてマークされた以下のポストを参照してください。それが私の目標に最も近いので、これで問題ありません。 より多くのメッシュと複数のアニメーションを備えた.Xを適切にロードするプログラム(UU3D -Ultimate Unwrap 3D)が見つかり、テクスチャも問題ありません。それは無料ではないので、テキストで保存することもできれば、試すことができませんでした(保存はデモでは無効になっています)。そんな余裕がある人たちには、有望そうなのでお勧めしました。
7 directx 

1
XNA Quadtree with LOD
私はかなり大きな環境を作成したいと考えています。そのため、四分木を実装してLODを使用したいと考えています。数多くの例を調べてみましたが、四分木の基本的な考え方がわかりました。マップ全体をカバーする4つの頂点を持つルートノードから開始し、いくつかの基準(三角形の最大数)を満たすまで4つの子ノードに分割します 四分木の描画に関する非常に基本的なアルゴリズムまたは説明を探しています。イテレーションごとにどの頂点を保存する必要がありますか?描画する頂点はいつ決定するのですか?いつインデックスと頂点を更新するのですか?境界錐台を統合したいですか?親と子の頂点を含めますか? 私は何をすべきかについての非常に簡単な指示を探しています。私は何日もインターネットを探していましたが、誰もが説明なしで余分なコードと別のスピンを追加します。 クワッドツリーは理解できますが、3Dレンダリングとロッドについては理解できません。外部ソースへのリンクはおそらくすでに自分で読んでいるので、助けにはならないでしょう。 よろしく、バイロン。

4
コンポーネントの動作をオーバーライドする
コンポーネントベースのエンティティシステムで動作のオーバーライドを実装する方法を考えていました。具体的な例として、エンティティには、ダメージ、回復、殺されるなどのヒースコンポーネントがあります。エンティティには、キャラクターが受けるダメージの量を制限する鎧コンポーネントもあります。 これまでにコンポーネントベースのシステムでこのような動作を実装したことはありますか? どうやってやったの? 誰もこれまでにこれをしたことがないのなら、なぜそうだと思いますか? コンポーネントの動作をオーバーライドすることに特に問題があることはありますか? 以下は私がそれがうまくいくと想像する方法の大まかなスケッチです。エンティティのコンポーネントは順序付けられています。最前線のユーザーは、最初にインターフェースのサービスを受ける機会を得ます。それがどのように行われるかについては詳しく説明しません。悪意のあるdynamic_castsを使用すると仮定します(実際は使用しませんが、RTTIがなくても最終的な効果は同じです)。 class IHealth { public: float get_health( void ) const = 0; void do_damage( float amount ) = 0; }; class Health : public Component, public IHealth { public: void do_damage( float amount ) { m_damage -= amount; } private: float m_health; }; class Armor …

2
OpenGL 2以降と3以降:2Dグラフィックの主な違いは何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 OpenGL 3.0の前後のOpenGLコンテキストはかなり異なります。これまでのところ、私はどちらにしても実際にはどちらか一方のバッファでのみ作業してきましたが、最も顕著な違いはイミディエイトモードがないことです。 イミディエイトモードの考慮事項をまとめて捨てる場合、特に2Dグラフィックエンジンで低レベルの2次元操作をコーディングする場合に注意すべき重要な違いは何ですか?

3
XNAコンポーネントのZ-indexを行うクールな方法は?
ゲームの一部の要素をレンダリングしようとしています。まず、テクスチャ(テキストボックス自体のテクスチャなど)をレンダリングします。次に、プリミティブ(コントロールの周囲の境界線など)をレンダリングします。次に、テキストをレンダリングします。 ただし、そうすることで、以下のスクリーンショットに示すように、(テキストフィールドにカーソルを合わせることによって)ツールチップを表示すると、ユーザーインターフェイスに奇妙な結果が生じます。 描画の順序が原因で、ウィンドウの周囲の境界線はテクスチャの後に描画されます。これにより(マウスがテキストフィールド上にあるときに表示されるツールチップの場合)、奇妙に見えます。
7 xna  xna-4.0 

1
MySQL-キャラクターインベントリの保存
キャラクターの在庫を保存する最良の方法は何ですか(タイプと数量の値を持つ各アイテムで構成されます)。私が考えることができる唯一の方法は、「テキスト」タイプのフィールドを使用して、インベントリが読み込まれるたびにその値を解析することです。より良い方法やデータ構造はありますか?

3
シンプレックスノイズで島の地形を生成する(C#/ XNA)
少し質問があります。シンプレックスノイズの動作を示すコードまたはサンプルはありますか?私はそれについて何も見つけることができません...アルゴリズムがどのように機能するかを知らずに、どのようにそれを実装するべきですか?... もう1つの質問は、シンプレックスノイズはアイランド生成に適したアルゴリズムですか?レイヤーが大きく(砂、グラ、石)、エッジがソフトではっきりと見える大きな島(本当に巨大)が必要です。これにより、凹凸のある表面を飛び越えずに水に出入りできます。

3
フレームレートはゲームエンジンの速度に影響しますか?
私は楽しみのために2Dゲームエンジンを書いています。エンジンを使用してアニメーションを実行できます。ただし、フレームレート(1秒あたりのフレーム数)を変更すると、アニメーションの速度が変わります。 ゲームエンジンを使用したことがありません。他のゲームエンジンがこの問題を処理しているかどうかを知りたいです。そうでない場合、2Dゲームの理想的なフレームレートはどのくらいですか?

2
一部のコンピューターでOpenGLがない、または遅い原因は何ですか?それを修正する方法は?
JavaとJOGLを使用して、OpenGL拡張2Dグラフィックスを作成しています。私が使用するグラフィックス操作は特別なものではなく、ほとんどすべての最近のグラフィックスカードでサポートされているはずです。たとえば、私のゲームはネットブック上でうまく動作します。 ほとんどのコンピューターでゲームが実行されることを期待していました。自分のコンピュータでは問題なく動作します。ただし、一部のコンピューターではパフォーマンスが非常に遅いことがわかりました(明らかにソフトウェアフォールバックで、1秒あたり約2フレームです)。そのようなコンピューターの1つでLWJGLアプリを実行しました。それはまったく実行されません(org.lwjgl.LWJGLExceptionのようなものを報告します:ピクセル形式は加速されていません。これについて不平を言っているさまざまなフォーラムスレッドが見つかることがありますが、ドライバーの問題であるという提案以外は明らかな解決策はありません)。他のOpenGLソフトウェアも機能していないようです。まったく同じグラフィック効果を備えた私のFlashバージョンのゲームは、同じコンピューターでフルスクリーンでかなりうまく機能することもわかりました。問題のコンピューターには最近のATIカードがありますが、残念ながらドライバーマネージャーにアクセスできません。 問題はかなり広まっているようです。OpenGLがほとんどのコンピューターにあるグラフィック機能へのアクセスを常に提供するとは限らないのは非常に残念です。これは、私がどんなコンピューターでも走ることを期待しているカジュアルな2Dゲームにとって魅力的ではありません。 あなたはこの問題に遭遇し、なんとかそれを修正できましたか?私の知る限り、NVidiaとATIの両方が標準のドライバーセットの一部としてOpenGLを提供していますが、いくつかの例外があるのではないでしょうか?この問題はOpenGLをサポートしていないサードパーティのドライバーが原因で発生しますか?より良いドライバーをインストールすることで問題を解決できますか?OpenGLドライバーがない他のグラフィックカードはいくつありますか? 編集:最後に、OpenGLはWindowsマシンで十分にサポートされていないと結論づけることができます。Microsoftは、たとえば一部のWindowsドライバーバンドルでOpenGLドライバーを意図的に除外するなどして、プラットフォームから離脱するために最善を尽くしているようです。ベンダードライバーを入手すれば、OpenGLを入手できます。Windowsがダウンロードする標準ドライバーを入手しますが、入手しません。これは他の人たちにもトラブルの終わりを引き起こしていません。たとえば、WebGLを実装するために、Webブラウザーは、DirectX用のOpenGL ESエミュレーターであるAngleを使用します。したがって、本当に必要なのは、完全なOpenGLの場合のみ、Angleのようなものです。
7 opengl  lwjgl  jogl 

4
C ++のWavefront * .objローダー
OpenGL(SDL経由)とC ++(Visual Studios 2010 Professional経由)を使用してゲームを作成しています。ゲーム中は3Dキャラクターアニメーションを使用します。すべての3Dモデル(地形を除く)にwavefront * .objファイルを使用したいと思います。キャラクターは、250〜500フレーム(歩行、ランニング、全力疾走、ジャンプ、しゃがみ、這うなど)で、滑らかな動き(リアル)を持っている必要があります。md2またはmd3を使用したいのですが、使用する3Dモデリング/アニメーションツール(Blender 3D 2.57)はどちらもサポートしていません。ゲームはWindowsでのみ実行されます。 私が必要としているのは、アニメーションをサポートする小さくてパワフルな* .objローダーとパーサーです。C ++で記述され、SDLで使用できる必要があります。 ありがとう Blenderがエクスポートできるすべてのファイル形式を確認した後...デフォルトのキューブをエクスポートすると、最小のファイル形式が生成されるため、3DSを使用することにしました。3DSを推奨してくれて@Danielに感謝!
7 c++  opengl  animation  sdl 

2
Irrlichtでマルチサンプリングを有効にしますか?
Irrlichtを使用する小さなゲームに取り組んでいます。私はIrrlichtにかなり慣れていないので、どうすればマルチサンプリングを有効にできるのかと思っていました。デバイスドライバーは次のようにEDT_OPENGL開始されます。 IrrlichtDevice *device = createDevice(video::EDT_OPENGL, core::dimension2d<u32>(800, 700), 16, NO); マルチサンプリングを有効にするにはどうすればよいですか?

1
OpenGLの透視投影行列を理解する
Open GL(OpenGL ES 2.0を含む)での透視投影行列の設定には、次の一般的な形式があります。 glm::mat4 perspective(float fovy, float aspect, float zNear, float zFar); 最後の2つのパラメータに注意してください。1つ目は、カメラに近い平面であるzNear平面を指定します。2つ目は、カメラから遠いzFar平面を指定します。 OpenGLでは、さらに遠い、つまり「画面の奥深く」にあるものは、負のZ軸を持っていることはよく知られています。(OpenGL SuperBibleやsimmilar などの信頼できるソースから取得した)設定された透視投影行列のすべてのOpenGLの例が、透視投影関数の上記の2つのパラメーター(zNear、zFar)が交換されているように見えるのはなぜですか? この例は、GLM(OpenGL Math)webisteからの抜粋です。 glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.f); zNearパラメータはzFarパラメータよりも実際にはカメラから遠いことがわかります。これは、カメラ/ビューアに100ポイント近い距離です。 あなたは提供することができます説明が理解しやすい、してください?私はこれが1つだけではなく、zFarをzNearよりも高い正の値として渡すすべての例です。ありがとう。 私の例: 私のコードでは、設定すると: glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 1000.0f, -500.0f); 私の錐台はz正方向に1000ポイント、z負方向に500ポイントと想定しています。 このように設定すると、少なくとも一部のオブジェクトが表示されますが、完璧ではありません。何らかの理由で、負のz座標に配置されたオブジェクトのみが表示されます。 これは、透視投影関数についての私の誤った理解に関連している可能性があります。


2
3Dグラフィックスでの描画および更新の順序
私が見てきたすべてのコードサンプルでは、​​ゲームループは次のようになります。 while(true) { InputAndUpdate(); Draw(); SwapBuffers(); } しかし、これはCPUとGPU間の並列性を破壊しませんか?スワップバッファが呼び出された後、CPUが入力を処理して更新している間、GPUは空の状態で待機します。次に、CPUが描画コマンドの発行を完了すると、GPUのレンダリングが完了するまで待機します。なぜこうならないのですか?: while(true) { Draw(); //First issue the draw commands InputAndUpdate(); //Update while the GPU is busy rendering SwapBuffers(); //Now block and wait for the GPU to finish }

3
コンポーネントベースのエンティティシステムAPIの命名の問題
私のエンジンはコンポーネントベースのエンティティシステムを内部で使用しており、スクリプト用にLuaにバインドしたいと考えています。 今、私はそれをタイピングするためのスクリプトを書く人々を救いたいと思います。C ++では、エンティティの位置を設定するには、次のようにします。 pEntity->GetComponent< CPoint >()->SetPos( Vector( X, Y ) ); つまり、Lua 1:1にバインドする場合は、次のことも行う必要があります。 ent:GetComponent( CP_POINT ):SetPos( 123, 456 ) しかし、正直に言って、エンティティの位置を設定するためだけに多くの文字を入力しますか? 私はそうは思わない、それが私がLuaからコンポーネントシステムを「隠した」理由です。 今、あなたがしていることは ent:SetPos( 123, 456 ) コンポーネントのものは内部的に処理されます。ent:AddComponentやent:RemoveComponentなどを使用して、Luaのコンポーネントを手動で追加および削除することもできます。 今、これも完璧ではないようです: エンティティメタテーブルは、すべてのコンポーネントのすべての機能を実行する必要があるため、乱雑になります ネーミングの問題:ent:SetJointMotorEnabled()やはりちょっと悪いようです スクリプトの快適性を危険にさらすことなく、コンポーネント関数のより良い命名体系をどのように見つけることができるかについてのアイデアはありますか?

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