ゲーム開発

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

2
非同期操作/コルーチンを待つ方法は?
Unity 5でコルーチンと非同期操作が完了するのを待つ一般的で再利用可能な方法を探しています。C#5のawaitキーワードと同様です。 私が考えることができる最も簡単な方法は次のようなものです: public class SomeUtility { public bool IsDoingSomething { get; private set; } public IEnumerator DoSomethingAsync() { IsDoingSomething = true; yield return new WaitForSeconds(2); IsDoingSomething = false; } } そして別のコルーチンで: while(!someUtilityInstance.IsDoingSomething) yield return null; ただし、whileステートメントでコードが乱雑になり、再利用できず(単純なユーティリティ関数でもインスタンスと専用クラスが必要です!)、必要のない場所にシングルトンまたは静的なものがたくさんあるため、これはあまり良くありません。 私が見つけた最も近いものはUnityを使用していAsyncOperationます。これは非常にうまく機能します: public static IEnumerator Await(this AsyncOperation operation) { while(!operation.isDone) yield return operation; } …

5
私のコンテキストでこの乱数生成を改善するにはどうすればよいですか?
私のゲームでは、画面の上部に単語があり、文字が上から降りてきており、ユーザーは文字をタッチして単語を完成させる必要があります。 現在、ランダムに文字を生成しています(実際にはランダムな数字と数字が文字の配列のインデックスです。例:0 = a、1 = b)。問題は、必要なすべての文字を取得するのに時間がかかりすぎることです。語。 私が欲しいのは、プレイヤーが1つの単語を完了するために1日中費やす必要がないように、生成する乱数によって必要な文字がより頻繁に生成されることです。 私は以下の方法を試しました: 単語のすべての文字を検出し(単語は常に6文字長)、長さ6のインデックスの配列を生成します。配列の各インデックスを文字2から文字+2までの乱数に割り当て、最後にランダムに1つのインデックスを選択します表示する配列から。 値が[0..2]の範囲にあるセレクター変数をランダムに生成します。セレクター== 0の場合、単語を構成する文字を検出し、ランダムに1文字を選択します。それ以外の場合は、azから任意のアルファベットをランダムに取得します。 これらの方法はどちらも私に何の助けも提供していません。あなたが私を助けることができれば私はとても幸せです。 お読みいただきありがとうございます。ご理解いただき、ご回答をお待ちしております。
11 random 


4
3Dワールドのナビゲーショングリッドをどのように生成しますか?
この問題の解決策を見つけようとしています。3Dスペースの正方形の形をしたx、yのフロア座標にロックされた頂点のグリッドの形式でナビゲーションメッシュを構築しようとしています。しかし、私はそれを回避する方法を理解しようとして問題を抱えています。 リキャストライブラリを調べてみました。これはかなり堅牢な方法ですが、大きなマップとオープンスペースでは明らかに速度が低下します。また、高さマップを使用してワールドスペースの頂点とエッジを生成する方法もわかりません。 次に考えたのは、Unreal Engine 3が以前行っていた方法を実行することでした。 https://udn.epicgames.com/Three/NavigationMeshReference.html レイキャストを使用してメッシュを生成することでした。レイキャストを停止する方法がわかりませんでした。 だから...私の次のオプションはボックスで、おそらくボックスキャストでした。2の累乗のサイズで細分割されたボリュームを作成します。ボックスをグリッドに合わせ、直角プリズムを下向きに光線として発射します。地面の一部であるジオメトリに着地し、長方形が交差していない場合は、正方形をそのままにします。そして、ボリュームの境界に達するまで下に進みます。エッジをリンクする必要があるかどうかを確認するには、頂点の2つのペアの間の勾配がウォーク可能な勾配内にあるかどうかを確認し、これがtrueの場合はそれらをマージします。 私の主な問題は...これは非常に最適ではないようです。それを考えずに、推定では、プロセスは多層レベルのO(N ^ 3)です。かなり厄介なことができます。 そして最後のビットは、これらの正方形の長方形のグループを自動的に作成するためのものです。これを行う方法は完全にはわかりません。Unrealの実装は、それらをスロープで分離します。ただし、グリッド形式を維持しようとしています。したがって、それは完全に必要なわけではありません。大きな長方形のタイルを作成してパス検索プロセスをタイルごとに分割することに問題は残っています。タイルは大きすぎても小さすぎてもいけません。 だから質問は... このガードされたnavmeshを生成する効率的な方法は何でしょうか?そして、タイルを作成する良い方法は何でしょうか?
11 c++  tiles  navmesh 

2
UnityでBillboardRendererを使用するには?
バージョン5(?)以降、Unityには新しいコンポーネントタイプがありBillboardRendererます。残念ながら、ドキュメントはかなり貧弱です。 「コンポーネントの追加->その他->ビルボードレンダラー」をクリックすることでインスペクターに追加できますが、Billboard Asset何もする必要がないようです。Unityインターフェースから作成する方法はないようです。 同様に不十分な BillboardAssetのドキュメントからの数少ない文章の1つは次のとおりです。 imageCount ビルボードをさまざまな角度から見たときに切り替えることができるプリベーク画像の数。 私の最新のプロジェクトにはスプライト/ポリゴンミックスグラフィックスがあるので、ビューアングルに応じて異なるスプライトでビルボードをレンダリングするコンポーネントは、私が実際に利用できるものです。しかし、そのような画像を追加する方法はないようです。 したがって、このコンポーネントの使用例を投稿できるかどうか疑問に思いました。
11 unity 

2
2Dの「ねばねばした」/「粘着性のある」分離効果を作成するにはどうすればよいですか?
このアニメーションに似たエフェクトを作成したいのですが、2つのシェイプは時間の経過とともに分離しますが、(しばらくの間)伸びて、最終的には壊れるねばねばした何かによって接続されています。同様にピザチーズが、特に 2Dインチ 私はSwiftとSpriteKitを使用しています。これにはおそらくキーフレームのベジェパスアニメーションが関係していると思いますが、よくわかりません。どうすればこの効果を達成できますか?
11 animation 

2
SDLでデルタ時間を計算する方法は?
SDL_GetPerformanceCounterとSDL_GetPerformanceFrequencyと呼ばれる2つの関数でデルタ時間を計算できると聞きました。完全にどのように機能するかはわかりませんが、SDL_GetTicks()を使用するのと少し似ていると聞きました Uint64 NOW, LAST; double deltaTime = 0; while (somebool) { LAST = SDL_GetPerformanceCounter(); NOW = SDL_GetPerformanceCounter(); LAST = NOW; deltaTime = (NOW - LAST) / (double)SDL_GetPerformanceFrequency(); /**Rendering**/ } 私はこのコードを持っていますが、deltaTimeを出力するか、それを使用しようとすると、常にいくつかの本当にランダムで非常識な数値に等しくなります。これは正しいです?
11 c++  algorithm  sdl 

2
PBRとSSRの違いは何ですか?
私はゲーム開発に非常に慣れていないため、スクリーンスペースリフレクションと物理ベースレンダリングの違いを理解しようとしています。 私はPBRについて読みましたが、私が理解していることから、それは実際の光がどのように反射するかを模倣しようとします。 SSRに関しては、私が間違っている場合はplsで修正されます。これは、表面での反射の見え方です。 SSRの私の理解が正しい場合、それらは同じ方法ではないでしょうか?つまり、表面の粗さなどに依存する表面での反射の見え方ではありません。これは、鏡面反射する光の量と乱反射する量に影響します。繰り返しますが、間違っているところはどこでも修正してください。

4
長方形の周りをどのように補間しますか?
点が長方形の周りを移動するような豪華なアニメーションを作りたいのですが。一度にポイントの位置を見つけたいt。 長方形は次式で与えられX、Y、WidthおよびHeight。 これのアルゴリズムはありますか? sin/ cosをサークルに使用しました。長方形の同等のアプローチは何ですか?

2
動的な障害物やプレーヤーが作った障害物のためのA *パスファインディング?
こんにちは、Unity 5でTDを作成しています。Pathfindingで助けが必要です。 私は、AIにArons A *パスファインディングを使用して、動的オブジェクトを使用し、実行時にパスを更新できるようにします。ただし、私のゲームでは、プレイヤーが特別なタレットで手先をブロックできるようにして、目的地に行く代わりに手下に「ブロックタワー」を強制的に攻撃させます。 どうすればこのようなことを達成できますか? より明確にするための画像:
11 unity  c#  2d  ai  path-finding 

2
レイキャストカーホイールが横にスライドしないようにするにはどうすればよいですか?
この記事を参考にして、非現実的な自動車物理エンジンを学習課題として書いてきました。 私は、地形に正しく衝突し、各車輪に正しいサスペンションフォースを適用する車を持っています。私の次の問題は、車輪の横方向の動きを防ぐことです。たとえば、斜面に車を落とすと、横に滑るようになり、横に滑るのを止めることはありません(いかなる摩擦もないため)。 リンクされた記事では、「サイドフォース」を適用し、フォワードフォースと組み合わせる必要があると記載されていますが、そのサイドフォースの計算方法については説明されていません。 各ホイールの衝突情報(交差法線など)と車の剛体に関する情報を考慮して、横向きの動きを防ぐために剛体に適用する適切なサイドフォースを計算するにはどうすればよいですか?

1
マルチレイヤーの2Dタイルマップにライトとシャドウを実装するにはどうすればよいですか?
私は最初からアイソメトリックゲームを作成している最中です。ライトとシャドウを追加する方法や方法を知りたいのですが。 ここまでのコードはここにありますが、今のところ、マップはtrue / false値の単純な3D配列であることを知っていれば十分でしょう。これは環境のショットです: それが単一レイヤーのタイルマップである場合、それは簡単です。必要な2dの簡単なレイキャスティングを理解できます。 ただし、私のマップには複数のレベルの高さと洞窟のような領域があるため、そのために説得力のある影を作成する方法がわかりません。おそらく、ブロックごとのソリューションが唯一の現実的な方法ですか?

3
なぜアドベンチャーゲームパズルはしばしば単一の手掛かり/解決策を持っているのですか?
最近アドベンチャーゲーム(Dreamfall Chapters)をプレイしていると、私がプレイしたほとんどのアドベンチャーゲームでは、解決する必要のある「パズル」に対するソリューションが1つしかなかったことがわかりました。これは、プレーヤーが「取得」する必要がある単一の手がかりを意味することがよくあります。そうしないと、ゲームの世界で見つけることができるすべてのものをくまなく調べる「ブルートフォース」の長いセッションに参加する可能性があります。(これは、Sam&Max Hit the Roadなどのクラシックで何度か起こったことを覚えています。) それとは対照的に、卓上ロールプレイングゲームでプレーヤーに手がかりを求めたいゲームマスターへのよく引用されるアドバイスは、ルール3であり、基本的には、プレーヤーが見る(少なくとも)3つの手がかりによってすべての結論をサポートする必要があると述べています。 。結果として、すべての「チョークポイント」問題には、それを解決するための3つの方法が必要です。 ビデオゲームに同様のルールが不要である理由は、ゲームデザインの理由ですか?それとも、単一解のパズルは単に怠惰なデザインなのでしょうか?

4
SmoothVideo Projectで使用されているようなフレーム補間は、パフォーマンスに大きな影響を与えずにゲームのフレームレートを上げるオプションになるでしょうか?
SmoothVideoプロジェクトはフレーム補間を使用してビデオのfpsを24から60に増やします。結果はかなり印象的です。これが適用できるのか、ビデオゲームで見栄えが良いのかと思っていました。 すべてのフレームをレンダリングするよりもはるかに少ないリソースを使用するため、ローエンドのリグは、ある程度の妥協点ではるかに優れたリグの品質でレンダリングできます。私はそれが正確ではないことを知っており、補間されたフレームを生成および挿入できるように最新のフレームを保持する必要があるため、入力レイテンシがわずかに増加します。ただし、フレーム全体ほど悪くはありません。私の推論では、ラグだけが補間時間に元のfpsリフレッシュ時間の半分を加えたものになります。したがって、30 fpsの場合、33ms / 2 +補間時間になります。 このラグは、過去のファーストパーソンのゲームには適さないかもしれませんが、ペースの遅いゲームではそれが妨げになるとは思いません。 開始レートが高くなるとラグは低くなるので、60 fpsから100 + fpsにすると、システムに非常に負担がかかる一方で、エクスペリエンスはわずかながら向上しますが、確かに価値があると思います。

3
UPSとFPS-何を制限する必要がありますか。その理由は何ですか。
現在C ++とSDL2を使用してゲームを作成していますが、疑問に思っていることが1つあります。毎秒のフレーム数(FPS)や毎秒の更新数(UPS)を制限することは理にかなっていますか? UPSを制限すると、基本的にゲームの速度を制御できると思います。プレーヤーが1更新あたり1ピクセル移動し、常に毎秒30回更新する場合、30ピクセル/秒の速度で移動します。 1秒あたりの計算量が減るため、おそらくCPUも解放されます。FPSを制限すると、1秒あたりのドローコールの量が減少するため、GPUが軽減されます。そのすべてを正しく理解できていれば幸いです。そうでない場合でも、自由に修正してください。 私の質問は-私のゲームで何を制限すべきですか?FPS?UPS?どちらも?どちらでもない?これに対する別のより良いアプローチはありますか?これはほとんどのゲームでどのように行われ、その理由は何ですか? 回答は大歓迎です!
11 game-loop  logic  sdl2 

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