ゲーム開発

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

2
屈折ガラスシェーダー
テッセレーションシェーダーペアのポイントグリッドをテッセレーションすることで生成される無限の六角形の床があります。 これはフラットワイヤーフレームであることに注意してください。「シャドウ」は照明のトリックです。 これを厚く屈折したガラスのように見せたいのですが、どうすればよいかわかりません。 最初に頭に浮かんだのは ブロックの要求された「厚さ」を含むユニフォームを設定します ライティングを計算するときは、スネルの法則を使用して、「厚み」のユニフォームが言うほど実際に厚い場合、光線が六角形ブロックを通過する光路長を計算し、その長さのアルファを合計します。それは透明性を与えますが、内部反射/ TIRなどのようなものを扱いません。 私はまだそれを試していませんので、視覚的な結果がどうなるかわかりません。 最終的に、この特定のレベルでは、ディスクバトル中にTron:Legacyで使用されているそのガラスの六角形の床の外観を取得しようとしています。(例については、この画像を参照してください。) 提案?
10 shaders  glsl 

3
マルチテクスチャリングは本当に「複数のテクスチャを使用する」だけなのでしょうか?
これは馬鹿げているように見えるかもしれませんが、それは私を悩ませます。私が理解していることから、マルチテクスチャリングは、シェーダーごとに複数のテクスチャを使用しているだけです(通常、何らかの方法でそれらをブレンドするため)。したがって、1つのテクスチャを作成する代わりに、2つ以上を作成します。 なぜ特別な用語があるのですか?「複数のテクスチャを使用する」だけではありませんか?何か不足していますか?

2
libgdxで手続き的に生成されたタイルを実装するにはどうすればよいですか?
私はlibgdxでシンプルなトップダウンのゼルダ風ゲームを作成しています。これと同様に、手続き的に生成されるタイルベースのダンジョンを実装したいと思います。 LibgdxにはTiledMapと呼ばれるクラスがありますが、これは私のニーズに合うようですが、公式ドキュメント以外のドキュメントでは、TiledMapsは.tmxファイル、つまり事前に設計されたマップと組み合わせてのみ使用できることを示唆しています。私はかなりの量のグーグルを実行して無駄に終わったので、動的に生成されたタイルマップにlibgdxを使用した経験がある人がいることを願って、最後の手段としてここに尋ねます。 編集:上記にリンクしたチュートリアルと組み合わせてStaticTiledMapTilesを使用して目標を達成できますか? ありがとう!

1
ローグライクで視野の対称性を確保するにはどうすればよいですか?
私はローグライクに取り組んでいます。そのために、黒丸のすべての点にブレゼンハム線をプロットすることで構成されるレイトレーシング/キャスティング視野(FoV)アルゴリズムを作成しました。アーティファクトはありません(そして、かなり効率的です)が、私の重要な要件である対称性が欠けています(対称性を確認できる場合は、モンスターも確認できる必要があります)。 これが私のコードの非対称的な動作の例です。左の画像では、角に立っています(赤い「X」ブロック=壁)。右上のタイルを見ることができます。ただし、これらのタイルの1つ(右の画像)に移動すると、元のタイルが表示されなくなります。 私はある種のPermissive Field of Viewを求めているのではないかと思いますが、それはローグベイスンの記事が対称性を考慮に入れていることを示唆したからです。対称性を得るための代替手段はありますか?

4
OOPなしでゲームを作るには?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、1つの問題のみに焦点を当てますこの投稿を編集するます。 6年前休業。 現在、ゲーム開発の勉強とゲーム制作の練習をしています。 私はゲームで多くのOOPを使用しています。たとえば、発射される各ミサイルはMissileオブジェクトのインスタンスであり、オブジェクトのリストに追加されMissileます。ゲームの各戦車はTankオブジェクトです。等。 プログラム全体の設計はこれに基づいています。たとえば、Missileオブジェクトのあると、すべてのフレームでミサイルを移動したり、それらを描画したりできます。またTank、すべての戦車にオブジェクトのインスタンスがあると、何かと衝突したかどうかなど、各戦車をチェックできます。 ゲーム(パックマンよりも複雑)が非OO言語でプログラムされる方法を想像するのは難しいです。(もちろん、非OOプログラマを軽視しません)。所要時間だけでなく、ほとんどの場合、この方法でゲームを設計する方法についてもです。 オブジェクト指向プログラミングを使用せずにゲームを設計することは想像できません。ゲームプログラムの設計方法に関する私の完全な理解はOOPに基づいているためです。 質問したいのですが、今日、OOPを使用してプログラミングされていないゲームはありますか?開発プロセスの主要な要素としてOOPを使用しない「プロフェッショナル」ゲームはありますか? もしそうなら、たとえば、OOPなしで、タンクとN個のミサイルの間の衝突検出をどのように実装できるかについて教えてください。

3
2Dゲームの解像度を独立させるにはどうすればよいですか?
私は単純な2Dゲームに取り組んでいます。携帯版を完成させました。 ただし、上司は自分のRTでゲームを動作させたいと考えています。「変換」を実行していますが、次のように画面サイズをハードコード化しているため、ボタンが間違った場所にあります。 texture = game.Content.Load<Texture2D>("StartScreen"); mainFrame = new Rectangle(0, 0, game.GraphicsDevice.Viewport.Width, game.GraphicsDevice.Viewport.Height); // button definitions startbrect = new Rectangle(300, 258, 88, 88); startbtext = game.Content.Load<Texture2D>("bplay"); この例でmainframeは問題startbrectありませんが、Windows Phoneの画面に合わせてサイズを定義したので問題ありません。すべてのWindows 8電話の画面が異なる場合、レスポンシブデザインをどのように処理できますか?適切なサイズになるたびに計算する数式またはマクロはありますか?
10 c#  2d  resolution 

3
AからBにジャンプできますか?
横スクロール用の基本的なAIを作成しています。ジャンプを実行するだけで、AIユニットがポイントAからポイントBに到達できるかどうかを知る必要があります。 私の文字の飛行軌道はとても古典とは異なり、彼らは(例えばジャズJackrabbitの2のように)空中に力を加えることができるように、ビットunusalで発射の弾道についてです... 投射または発射された発射体が推進力なしに進む経路(...) ...私の問題は、推進力を備えた発射体(ロケットなど)に関するものだと思います。 これを説明するために、ジャンプして「左ボタン」を押し続けると、これは私のキャラクターの飛行曲線のようになります(左端では異なります。空中でマニューバを作成していた場所です)。 飛行中に加えられる力は常にX軸に平行であるため、「左」を押し続けるとF =(-f、0)、「右」を押し続けるとF =(f、0)になります。 彼はスキージャンパーのように非常に動くことができます: したがって、それは単に放物線である古典的な軌道とは大きく異なります(出典:ウィキペディア)。 さらに難しくするために、単純な空気抵抗をシミュレートしているので、キャラクターはある最大速度値までしか加速できません。 これは、反対の移動方向に小さな力を加えることによって行われます。 b2Vec2 vel = body->GetLinearVelocity(); float speed = vel.Normalize(); //normalizes vector and returns length body->ApplyForce( AIR_RESISTANCE_MULT * speed * speed * -vel, body->GetWorldCenter() ); AIR_RESISTANCE_MULTは定数で、私の場合は0.1です。 私の性格は無限に小さいと仮定しましょう。 そして、私は障害物を考慮に入れていないので、私の質問は次のようになります... 初期速度V、ジャンプ時にキャラクターに適用する衝撃J =(0、-j)、重力G =(0、g)、力F =(+ -f)を指定して(少なくとも確実に推測する)を決定する方法、0)飛行中に継続的に適用され、空気抵抗を考慮することにした場合はAIR_RESISTANCE_MULT (これはオプションです) 、ポイントが、キャラクターがたどるパスによって描かれた曲線の下にあるかどうか 文字通り、どこから計算を始めればよいのかまったくわかりません。実際、必ずしも正確な答えに興味があるわけではありません。AIが完全に動作する必要はないので、うまく機能するハック/近似は素晴らしいでしょう。 編集: Jasonが示唆するように、シミュレーションを使用してこれを解決することにしましたが、そのような場合の対処方法は? CからDへのセグメントを描画し、目的のポイントがこのセグメントの下にあるかどうかを確認する必要がありますか? または、CとDの間のタイムステップをバイナリ検索して、目的のポイントに対して水平距離が十分に近いポイントを探し、その後、垂直方向の差を確認する必要がありますか?(私には少しやり過ぎに思えます)

2
地形をテクスチャマップする方法は何ですか?
私は3DゲームでXNAを使用していますが、適切で快適な環境を作ろうとしています。ハイトマップから地形を作成するためのチュートリアルを実際に実行しました。テクスチャを付けるには、草のテクスチャを適用し、何度もタイルを張ります。 しかし、私がやりたいのは、本当にリアルなテクスチャリングを作成することですが、それを自動的に生成することもできます(たとえば、Perlinノイズを使用してテレインを生成してからテクスチャーを作成する場合)。 マルチテクスチャリングについて学び、さまざまなテクスチャのさまざまな色でマップファイルをロードしましたが、これは本当に効率的ではないと思います。たとえば、崖や非常に急な領域の場合、テクスチャがタイル状に表示されるため、上。(また、どのようにして道路やダートパスを描画するかわかりません。) 手続き的に生成された地形を現実的にテクスチャマッピングする効率的なソリューションを探しています。

2
3Dボクセルベースの部屋が効率的に密閉されているかどうかを判断する方法
ボクセルベースの3Dルームで大きな部屋が密閉されているかどうかを効率的に判断する際に、いくつか問題がありました。私は助けを求めずに問題を解決するために全力を尽くしましたが、あきらめるのに十分なほど試みなかったので、助けを求めています。 明確にするために、部屋に穴が開いていないことを密封しています。部屋が密閉されているかどうかを確認する酸素シーラーと、酸素入力レベルに応じて密閉する酸素シーラーがあります。 今、これが私がやっている方法です: シーラータイルの上のブロックから始まり(ベントはシーラーの上面にあります)、6つの隣接する方向すべてに再帰的にループします 隣接するタイルが完全な非真空タイルである場合は、ループを続行します 隣接するタイルがいっぱいではない場合、またはバキュームタイルである場合、隣接するブロックが再帰的に満たされているかどうかを確認します。 タイルがチェックされるたびに、カウンターをデクリメントします カウントが0に達した場合、最後のブロックがバキュームタイルに隣接している場合は、領域がシールされていないことを返します カウントがゼロになり、最後のブロックがバキュームタイルではない場合、またはカウンターがゼロになる前に再帰ループが終了する(バキュームタイルが残っていない)場合、領域はシールされます。 エリアがシールされていない場合は、いくつかの変更を加えてループを再度実行します。 真空タイルの代わりに「通気性のある」タイルの隣接ブロックをチェックする 減少するカウンターを使用する代わりに、隣接する「通気性のある」タイルが見つからなくなるまで続けます。 ループが終了したら、チェックされた各ブロックをバキュームタイルに設定します。 これが私が使用しているコードです:http : //pastebin.com/NimyKncC 問題: 私は3秒ごとにこのチェックを実行しています。シーラーは数百のブロックをループする必要がある場合があり、酸素シーラーが多い大きな世界では、数秒ごとにこれらの複数の再帰ループがCPUで非常に困難になる場合があります。 最適化の経験が豊富な方が私に手を貸してくれないか、少なくとも私を正しい方向に向けられるかどうか疑問に思っていました。本当にありがとう。
10 java  voxels  recursion 

6
なぜタワーディフェンスゲームの各ステージに「波」があるのでしょうか。
たとえば、植物対ゾンビでは、ゾンビは波に乗っています。思い出すと、常に少なくとも2つの波があります。最初で簡単な波、そしてステージを90%通り抜けると、より短くて難しく、たくさんのゾンビが一度に来る「最終波」があります。 私の質問は、ある波から次の波に変わったときにゲームがアナウンスするのはなぜですか?彼らが望めば、彼らはこれなしで最初から最後までレベルを進めることができただろう。 これにより、何らかの理由でゲームがより楽しくなりますか?このテクニックの詳細はどこで確認できますか(例:名前は付いていますか)?

1
計算シェーダーとパイプラインシェーダーによるアルゴリズムの実装
DirectXとOpenGLの両方のコンピューティングシェーダーが利用可能になったことで、ラスタライズパイプラインを経由せずに多くのアルゴリズムを実装し、代わりにGPUで汎用コンピューティングを使用して問題を解決できるようになりました。 一部のアルゴリズムでは、これは本質的にラスター化ベースではないため、これは直感的な標準的な解決策になり、ラスター化ベースのシェーダーはGPUパワーを活用するための回避策のように見えました(簡単な例:ノイズテクスチャを作成します。ここでクワッドをラスター化する必要はありません) )。 両方の方法で実装できるアルゴリズムが与えられた場合、通常のルートを使用する場合と比較して、計算シェーダーを使用する場合に比べて一般的な(潜在的な)パフォーマンス上の利点はありますか?注意が必要な欠点はありますか(たとえば、実行時にシェーダーの計算を切り替えるために、ある種の異常なオーバーヘッドがあります)? 2つを選択するときに考慮すべき他の利点または欠点はおそらくありますか?

1
複数のライトによる高速照明
複数のライトで高速ライティングを実装するにはどうすればよいですか? プレイヤーを拘束したくありません。彼は無制限の数を配置でき、場合によっては重なっている(ポイント)ライトをレベルに配置できます。 問題は、ライティングの計算に必要な動的ループを含むシェーダーが非常に遅くなる傾向があることです。 コンパイル時にシェーダーをn回コンパイルすることが可能である場合、nはライトの数であるという考えがありました。コンパイル時に数値nがわかっている場合は、ループを自動的に展開できます。これは、異なる数のライトで同じシェーダーのnバージョンを生成することは可能ですか? 実行時に、レベルのどの部分にどのシェーダーを使用するかを決定できます。

1
RPGでの経験値のバランスをとる方法
私は現在、クラシックな経験値とレベルアップメカニックを備えたRPGゲームを開発しています。プレイヤーはモンスターを殺し、経験値を獲得し、十分に収集してレベルが上がるとレベルが上がります。 各レベルに到達するために必要なEXPポイントの量と、各レベルの各モンスターが獲得するExpの量のバランスをとるにはどうすればよいですか?

4
ゲームの効果音が「良い」とは何ですか?
小さなゲームを作っていて、使用したい無料の効果音をいくつか見つけました。 問題は、効果音がゲームに「属している」ように聞こえないことです。サウンドエフェクトを他のゲームスタイルに合わせるために何を探すべきかわかりません。 オーディオとグラフィックスのメッシュ化に何が影響するかについて、いくつかのアイデアがあります。たとえば、現在のSFXはグラフィックスタイルには「リアルすぎる」かもしれません。これはかなり漫画のようなものです。また、さまざまなSFXのボリュームの基準はありますか?(たとえば、足音や他の一般的な音はかろうじて聞こえる音量でなければならないのに対し、敵の死や「大したこと」である何かはもっと大きくあるべきだと私は考えています)。 グラフィックスに関する同様の質問を見つけました。サウンドエフェクトを使用した同様の応答を探しています。

3
2Dタイルゲームでエンティティの可能な動きを見つける
このための特定の検索用語を思い付くのに問題がありますが、2Dターンベースの戦略ゲーム(FF:Tactics、Fire Emblem、Advance Wars)で可能な動きを見つけるにはどうすればよいでしょうか。 現時点では、地形(または衝突)についてはあまり考えていません。Xエンティティが5つのタイルを移動し、それよりもさらに2つのタイルを攻撃できることを理解するためにどのようなアルゴリズムを使用できるのか疑問に思っています。 私は、ダイクストラのようなものを使用して2点間の距離を見つけることができることを知っています。可能な実装の1つは、プレーヤーの場所から開始し、ダイクストラによって返される距離が移動カウントよりも大きくなるまでそこから分岐します。 誰かが私を正しい方向に向けることができるかどうか疑問に思っています(つまり、アルゴリズムの名前、テクニック、記事など)。

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