ゲーム開発

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

1
シェーダーをコンパイルされた形式またはプレーンテキストで配布する必要がありますか?
GLSLで記述されたシェーダーを使用するアプリケーションがある場合、現実世界での配布とデスクトップおよびモバイルの最適な戦略は何ですか? 私はこれをバイナリ形式で、またはプレーンなシリアル化されたテキストとして配布することを目指しています。これについての良い提案をお願いします。

3
インディーズゲーム開発者として、設計/仕様/アイデアに関するフィードバックを求めるにはどのプロセスが最適ですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 6年前に閉鎖されました。 バックグラウンド 私は、プロセスが通常次のようになるプロフェッショナルな環境で働いてきました。 ブレインストームアイデア ゲームの仕組み/設計を固める デザイン/アイデアを繰り返して、より確かな体験を作成します 設計/アイデアの詳細を特定する 構築する ステップは、3.一般的にすべての関係の目標を達成する「合意」に到達するために、ゲームの利害関係者(開発者、設計者、投資家、出版社など)で行われます。多くの場合、相反するユニークな視点のシリーズを含むこのプロセスにより、創造的なソリューションは、議論/反復を通じて浮上できます。これは、変更/新しいアイデアを照合するプロセスと、議論のための構造化された時間によってバックアップされます。 (現在)インディー開発者として、私はすべての利害関係者(開発者、デザイナー、投資家、出版社など)の役割を果たさなければなりません。最良の結果になると、局所的な最大値になります(もちろん、最大値を探しています)。 アイデア/ゲームデザイン/ユニークなメカニズムは単なる実行の乗数であり、それらを秘密にするのは馬鹿げていると読んだ。自分の考えの範囲外で他の人とアイデアを共有する際に、他の利害関係者が持っている影響を再現したいと思っています。 私は、変更/新しいアイデアの照合、およびフィードバックを受け取るあらゆる種類の構造化された方法に苦労しています。 私の質問:インディーズゲームの開発者として、意味のある/建設的なフィードバックを受け取るために、アイデアやデザインをどのように、どこで共有できますか?フィードバックを設計の新しい反復にうまく照合するにはどうすればよいですか?専門のウェブサイトなどはありますか?

4
OpenGLのクリップスペースに4つの次元があるのはなぜですか?
これは一般的なリファレンスとして使用しますが、ブラウザのオンラインドキュメントや書籍が多ければ多いほど、これについてはあまり理解できません。 const float vertexPositions[] = { 0.75f, 0.75f, 0.0f, 1.0f, 0.75f, -0.75f, 0.0f, 1.0f, -0.75f, -0.75f, 0.0f, 1.0f, }; このオンラインブックには、三角形の作成に関するOpenGLの最初の古典的なこんにちは世界を描く方法の例があります。 三角形の頂点構造は、上記のコードで述べられているように宣言されます。 この本は、これに関する他のすべての情報源と同様に、クリップスペースは、ラスタライズされて画面にレンダリングされるものを基本的に決定するために使用される4D構造であるという点を強調します。 ここに私の質問があります: 私は4Dで何かを想像することはできません、私は人間がそれを行うことができるとは思わない、このクリップスペースの4Dは何ですか? 私が読んだ中で最も人間が読めるドキュメントはカメラについて語っていますが、これはクリッピングの概念を単に抽象化したものです。おなじみの3D構造?カメラのコンセプトに関する唯一の問題は、他の方法で見込み客を定義する必要があることです。したがって、基本的に、どのようなカメラを持ちたいかについて別のステートメントを追加する必要があります。 これをどのように読むの0.75f, 0.75f, 0.0f, 1.0fですか?私が得るすべては、それらがすべてfloat値であり、最初の3つの値の意味を得るということですが、最後の値はどういう意味ですか?

3
構成が重いOOP対純粋なエンティティコンポーネントシステム?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 私は認めます、私は相続財産を濫用し、さらには虐待の罪を犯しました。OOPコースを受講するときに作成した最初の(テキスト)ゲームプロジェクトは、「ドア」と「1つのドアがある部屋」、「2つのドアがある部屋」から「ロックされたドア」と「ロック解除されたドア」 「部屋」から。 私が最近取り組んだ(グラフィカルな)ゲームでは、自分のレッスンを学び、継承の使用に制限をかけたと思いました。しかし、問題がすぐに現れ始めたことに気付きました。私のルートクラスはどんどん肥大化し始め、リーフクラスは重複したコードでいっぱいになりました。 私はまだ間違ったことをしていると思っていたので、オンラインで調べたところ、この問題を抱えているのは自分だけではないことがわかりました。いくつかの徹底的な調査の後、エンティティシステムを発見することになりました(読む:googlefu) 読み始めたとき、コンポーネントを使用した従来のOOP階層で発生していた問題をどれだけ明確に解決できるかを知ることができました。ただし、これらは最初の測定値でした。もっとつまずいたとき… T-machineのような「ラジカルな」ESアプローチ。 私は彼らが使っていた方法に反対し始めました。純粋なコンポーネントシステムは過剰であるか、直感的ではなく、おそらくOOPの強さのように見えました。著者は、ESシステムはOOPの反対であると言っており、OOPに沿って使用できるかもしれませんが、実際には使用すべきではありません。私はそれが間違っていると言っているわけではありませんが、実装したい解決策のような気がしませんでした。 ですから、私にとって、そして私の直感に反することなく、投稿の冒頭で抱えていた問題を解決するには、まだ階層を使用することですが、以前に使用したようなモノリシックな階層ではなく、ポリリシックなもの(モノリシックの反対語が見つかりませんでした)は、いくつかの小さな木で構成されています。 次の例は、私が何を意味するかを示しています(これは、Game Engine Architectureの第14章で見つけた例から着想を得ています)。 車両用の小さなツリーがあります。ルート車両クラスには、レンダリングコンポーネント、衝突コンポーネント、位置コンポーネントなどが含まれます。 そして、車両のサブクラスであるタンクは、そこからこれらのコンポーネントを継承し、独自の「キャノン」コンポーネントが与えられます。 キャラクターについても同じことが言えます。キャラクターは独自のコンポーネントを持ち、プレイヤークラスはそれを継承し、入力コントローラーを与えられますが、他の敵クラスはキャラクタークラスを継承し、AIコントローラーを与えられます。 この設計には問題はありません。純粋なEntity Controller Systemを使用していないにもかかわらず、バブリングアップ効果と大きなルートクラスの問題はマルチツリー階層を使用することで解決され、葉が重複しないため、葉を複製する重いコードの問題はなくなりました開始するコードは、コンポーネントだけです。リーフレベルに変更を加える必要がある場合、コードをどこにでもコピーペーストするのではなく、単一のコンポーネントを変更するのと同じくらい簡単です。 もちろん、私と同じように経験が浅いので、最初に単一階層の継承の重いモデルを使用し始めたときに問題は見られなかったため、現在実装を考えているモデルに問題がある場合は、それを見ることができます。 あなたの意見は? PS:私はJavaを使用しているため、通常のコンポーネントを使用する代わりに、多重継承を使用してこれを実装することはできません。 PPS:コンポーネント間の通信は、依存コンポーネントを相互にリンクすることにより行われます。これは結合につながりますが、私はそれが良いトレードオフだと思います。

4
シェーダーコードのデバッグ?
ゲームエンジンを作成しています。パースビューカメラを使用すると、黒い画面が表示されます。共有するコードがたくさんあるため、これがなぜなのかを正確に尋ねるつもりはありません。 問題は、デバッグ方法がわからないことです。変化するのは投影行列だけです。投影行列が正常に見える場合、なぜ機能しないのかわかりません。理想的には、シェーダーが計算を行ったときにさまざまな値を出力しますが、GLSLにはprintf()関数がありません。 だから私の質問は次のとおりです。どうすれば問題をデバッグできますか?私が考えることができる唯一のことは、クライアント側でできる限り多くの値をチェックし、順列でプログラミングすることですが、私はそれを行ってどこにも行きませんでした。ビデオカードで何が起こっているかを確認する方法はありますか?私が使用できる完全に異なる技術はありますか? 私はGLSLバージョン420(およびそのバージョンに固有の機能)を使用しているため、2010年に最後に更新されたことを考えると、glslDevilはオプションではないと思います。 編集 まったく関係のないデバッグによって問題を解決できました。

3
リアルタイムマルチプレイヤー用のJavaScriptとPHP [閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新する Game Development Stack Exchangeで話題になるようにします。 2年前に閉店。 JavascriptクライアントサイドとPHP / mysqlサーバーサイドを組み合わせることは、HTML5リアルタイムマルチプレイヤー(小規模)ブラウザーゲームにとって良いアイデアだろうか? 私の技術的な知識は非常に限られており、将来node.jsを学習することを計画していても、学習曲線は今のところかなり大きいです。 私はすでにPHPに精通しているので、はるかに高速に機能すると思います。 私が考えている規模は、当時2〜8人のプレーヤーです。また、クライアントからサーバーへのメッセージ数を可能な限り少なくしようとしています。 格納/処理する値は次のとおりです。 プレイヤー名とID。 XおよびY位置。 健康。 装備アイテム(最大8スロット、おそらくそれ以下)。 アクション(歩行、攻撃、使用など。ただし、一度に1アクション/プレイヤーのみ)。 箇条書きのX、Y座標と軌跡。 ギルド/クラン名。 そして、いくつかの基本的なチャット/メール機能。 私の推測では最良の解決策ではありませんが、ロジックを小さく保つ限り、これは完全に実行可能です。私は正しいですか?

3
古いテレビビデオゲームはどのプラットフォームで開発されましたか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 2年前に閉店。 テレビのビデオゲーム(子供の頃にプレイしていたもの)がどのプラットフォームで開発されたかを知りたいと思います。 モバイルデバイス、Windows PC、およびMac用のゲームの開発方法は知っていますが、(当時)Contra、Duck Hunt、およびそれらすべてのゲームがどのように開発されたのかわかりません。高いグラフィックと多数のステージがあるため。それで、彼らはどのようにしてこのような小さなサイズの環境で、より低い構成プラットフォームでゲームを開発することに成功したのでしょうか?

2
乱数hlsl
HLSLで乱数を生成するにはどうすればよいですか? gpuレイトレーシングを試したいので、私は尋ねています。ピクセルシェーダーでランダムな方向を生成する必要があります。したがってrandFloat()、結果は-1〜+1の乱数になります。 また、hlsl ノイズ命令との取引は何ですか?ドキュメントには、HLSL 2.0以降から削除されたと書かれています。なんで? テクスチャをランダムな値で満たし、そのテクスチャへのインデックスを持つ各頂点にテクスチャ座標を設定するアプローチについて読みました。しかし、それは頂点ごとです。ピクセルシェーダーで呼び出すことができる命令が必要です。さらに、このアプローチでは、フレームごとに異なる値が必要な場合は、頂点ごとのtexcoordsを「再シード」する必要があり、各フレームで頂点バッファーを更新する必要があります(高価になる可能性があります!) 詳細を説明すると、GPUで乱数を安価に生成する方法を教えてください。
13 hlsl  random  gpu 

3
物理エンジンで同時衝突を処理する最良の方法は何ですか?
ビデオゲームの物理学についてさらに学ぶために、JavaScriptで2D物理エンジンを書いています。リジッドボディの衝突に対して正しく動作しますが、ボディが同時に2つ以上の他のボディと衝突する場合を除きます。 現在、衝突体の各ペア(A、B)について、衝突インパルスに基づいて速度と角速度を変更し、それらが互いに貫通しないように微調整します。ただし、Aを含む他の衝突の衝突検出とインパルス計算は間違っています。 互いに衝突する3つ以上のオブジェクトに対してエンジンを機能させるためにどのようなアプローチを検討できますか?

4
物理エンジンで小さなオブジェクトをどのように処理する必要がありますか?
サイコロを投げるための3D物理エンジンを作成しています。これまでのサイコロは1x1x1mで、重力は9.82 m / s ^ 2でした。もちろん、これは現実的ではありません。サイコロがすべてに少し反応するように反応するからです。 これを修正するために、サイコロが一辺に沿って約0.02mになるようにすべてのサイズを変更しようとしました。これにより、逆質量と逆慣性行列の値が非常に大きくなり、数値が不安定になります。 これを処理する最適なルートは何ですか?サイコロが1x1x1になるようにスケールを維持し、作用する力の質量またはサイズを変更することはできますか?または、他の何かを微調整する必要がありますか? 宇宙船などの非常に大きな肉体でゲームを作成した場合、同じ問題が発生する可能性があるため、以前に誰かが同様の何かに遭遇したことを願っています。

3
Unityにはタイムラインの既存のサポートがありますか?
私はUnity3Dでのゲームの開発を計画しており、エンジンが既に提供しているものと、自分でコーディングしなければならないものを一致させようとしています。 ゲーム自体はリズムゲームになります。つまり、オーディオイベントとグラフィックイベントを同期させて、予定どおりにプレイできるようにします。私が避けたいのは、オーディオまたはグラフィックの一方が他方よりも速く進行し始める潜在的な遅延のシナリオです。 大学でのゲームデザインクラスでこのタイプの調整システムについて議論したとき、教授はこのタイプのデザインを「タイムライン」クラスと呼びました。これらの1つまたは複数をインスタンス化して、異なる速度で進行させ、将来起こることをスケジュールし、定期的なイベントを同期させることができるという考えです。ただし、特定のAPIが「タイムライン」機能を備えているかどうかをグーグルで調べるのは無益な努力であったため、これを「タイムライン」クラスと呼ぶことは私の教授自身に限定されていたようです。 この種の機能にはもっと一般的な名前がありますか?Unityには、このようなイベントのスケジューリングを調整するための既存のメソッドがありますか、それともエンジンに組み込む必要があるのですか?そして、もしそうなら、私はいくつかのチュートリアルに向けられていることを感謝します!

4
3Dタイトルのレベルコンテンツのコンテンツ予算(ポリゴン数など)を設定する達成可能な方法は何ですか?
答えではswquinnためにこの質問を、答えは私が答えを聞いてみたいことをより適切な質問を提起しました。独自の戦略を投稿します(答えとして受け入れないことを約束します)が、他の人の意見を聞きたいです。 具体的には、コンテンツチームに適切な予算をどのように設定しますか。通常、開発で最初に尋ねられる質問の1つは、ポリゴンの予算はいくらですか?もちろん、最近では頂点/ポリゴン数だけが制限要因になることはめったになく、代わりにシェーダーの複雑さ、フィルレート、ライティングの複雑さがすべて影響します。 コンテンツチームが望んでいるのは、コンテンツが実際にエンジンに入った後もあまり重くないと合理的に期待できるようにするためのハードナンバー/制限です。「依存する」は特に有用な答えではないことを考えると、a)誤解を招いたり、b)間違ったりせずに実行可能な制限を与えることができる戦略を聞きたいと思います。


1
Bomberman AIにインテリジェントな爆弾配置を与える
BombermanのAIアルゴリズムを実装しようとしています。現在、私は実用的ですが、あまりスマートではない初歩的な実装をしています(現在のAIは爆弾を配置することに熱心です)。 これは、私が実装を試みた最初のAIであり、少し立ち往生しています。私が念頭に置いているより洗練されたアルゴリズム(より良い決定を下すことを期待しているアルゴリズム)は複雑すぎて、良いソリューションにはなりません。 Bomberman AIを実装するための一般的なヒントは何ですか?ボットをより防御的または攻撃的にするための根本的に異なるアプローチはありますか? 編集: 現在のアルゴリズム 私の現在のアルゴリズムは次のようなものです(擬似コード): 1)爆弾を配置してから、配置したばかりの爆弾を含むすべての爆弾から安全なセルを見つけます。そのセルを見つけるには、4つの方向で繰り返します。安全な分岐セルを見つけて時間内に到達できる場合(例:方向が上または下の場合、このパスの左または右にあるセルを探します)、爆弾を置いて移動しても安全ですその方向に。 2)発散した細胞を見つけられない場合は、爆弾を置かずにもう一度見てください。今回は、安全なセルを一方向にのみ探す必要があります(そこから分岐する必要はありません)。 3)それでも安全なセルが見つからない場合は、何もしないでください。 for $(direction) in (up, down, left, right): place bomb at current location if (can find and reach divergent safe cell in current $(direction)): bomb = true move = $(direction) return for $(direction) in (up, down, left, right): do not place …
13 algorithm  ai 


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