ゲーム開発

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

2
ビデオゲームで使用するためのペンと紙のRPGルールシステムの採用[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 3年前休業。 ブラウザベースのRPGを作りたい。最初から独自のルールシステムを開発するのではなく、既存のペンと紙のルールシステム(FATEやGURPSなど)を使用することを検討しています。 ペン&ペーパーシステムをビデオゲームで使用するように変更する場合、注意すべき落とし穴は何ですか?

1
Update()で新しいオブジェクトを作成するのは間違っていますか?
Unityを使用していますが、時々、などnewでth キーワードを使用しています...Updatenew Vector3() これはメモリリークの原因ですか?つまり、すべてのフレームで新しいVector3が作成されます。これが動作方法である場合、メモリ内に作成された何千ものベクターがあることを意味します。それは本当ですか、それとも私は間違っていると思いますか?
8 unity 

2
Monogame(XNA)で大量のタイルを効率的に描画する
明確な答えが見つからないため、この質問をします。 まず最初に、ゲームといくつかのことについていくつか述べておきます。ゲームは、シンプレックスノイズを使用して手続き的に生成された世界に設定されたRTSになる予定です。世界は64 x 64のスプライトで作られた16 x 16のサイズのチャンクで構成されています。チャンクを動的にロードおよびアンロードできましたが、これは問題なく動作します。世界はRimworldのように見えるので、さまざまなレイヤーのスプライト(最初に地形、トランジションスプライト、木、デカールなど)を上から下に見ていきます。新しく生成された世界には、環境に影響を与える可能性のあるエンティティ(たとえば、町になった村)が含まれている場合があり、それによってチャンクが含まれる場合があります。これはある種の関数を使用して計算できると確信していますが、注意する必要があります。 主な問題私は持っているが、私はズームアウト時に、より多くのタイルがひどく、性能に影響を与える描かれています。スプライトが約30000の場合、描画セクションにかかる時間は8 msで、60 FPSで実行するのに必要な時間の半分です。そして、それは単なる地形です。テクスチャアトラスを使用して描画カウントを制限しています(6カウントで描画される30000スプライト)。 目標は、国全体を見ることができることに、町/村/都市レベルからすべての方法をズームアウトすることができることです。これは動的に行う必要があります(たとえば、ミニマップアイコンをクリックするのではなく、Supreme Commanderのようにスクロールバックするだけです)。 私はこの問題に関する多くの記事を読みましたが、それが機能する場所の明確な例を見つけたり、見たりしていません。これが私が見つけたテクニックのリストであり、うまくいくはずです: ここで説明するように汚れた長方形。ここでは新しいものだけを描画し、残りはバックバッファに保持します。これは非常に理にかなっていますが、Monogameでこれを実装する方法については無知です。 ここで説明するように、私が優先する選択は、RenderTargetを幅広く使用することです。ここでは、RenderTargetに描画し、それをテクスチャとして保存します。私の場合、64 x 64で構成される16 x 16チャンクは、1024 x 1024テクスチャを作成します。これがパフォーマンスの点で機能するかどうかは本当に疑わしいですが、結果は非常に詳細なテクスチャで構成され、ほとんどが静的(地形/木など)であり、それほど変化しないという事実を考えると使用に最適です。ただし、これは、チャンクに変更が加えられるたびに、SetDataを使用してTexture2Dを変更する必要があることも意味します。これは、私が経験したことから、CPUにかなりの負荷がかかります。ただし、テクスチャが16 x 16の場合、実際に機能する可能性があり、それ自体のメモリとディスク使用量も削減されます。 SpriteBatchでSourceRectangleを指定してテクスチャをティルします。巨大な草原/海では、1つのスプライトしか描画されないため、これはプラスです。ただし、さまざまな色とさまざまなスプライトが混在する詳細な地形(バイオームとバイオームの遷移)の場合、大きな違いは生じないと思います。 詳細を損なう私の独自のソリューションは、標準の白い64 x 64タイルを使用して、周囲の4つのタイルの色を指定し、次に、前の4つのタイルを覆うように拡大縮小することでした。ここでの違い(無地のタイルを除く)は、風景が目に見えて変化したことです。また、森林は完全に正方形ではないため、個別に描く必要があることにも触れておきます。 誰かがこの問題に取り組む方法についてアイデアを持っている場合、たとえそれが特定のことを妥協することを意味するとしても(ディテール、または16 x 16スプライトの使用など)、それを聞いてみたいと思います。

4
スプラッシュスクリーンの期間を設定するにはどうすればよいですか?
Unity Proを使用しているため、すべてのスプラッシュスクリーンツールを使用できます。スプラッシュスクリーンとして使用したいフルスクリーンイメージがあります。スプラッシュスクリーンをn秒間画面に表示したままにします。スプラッシュスクリーンがデバイスの画面サイズに完全に適合しない場合は、クロップしてください。 次の設定で目的の結果が得られますが、スプラッシュスクリーンが一時的に表示されるだけで、期間を選択できません。 これらの設定で期間を設定できますが、スプラッシュスクリーンは真ん中のアイコンにすぎず、上記の設定のように「拡大縮小(トリミング)」されません。 空白の画像をロゴとして使用して背景画像を追加できますが、すべてぼやけてしまいます。(オーバーレイの不透明度を変更すると、暗さがなくなります)。 私は設定で他のバリエーションを試しましたが、上記の3つの試みは私が来た最も近いものです。スプラッシュスクリーンを削除して、フルサイズのトリミングされた画像のみで空のシーンを起動時に作成しようとしましたが、これにより、アプリの起動に遅延が発生し、白いちらつきが悪くなります。空白の開始シーンに加えて静的なスプラッシュスクリーン設定を使用してみましたが、これにより画面が一瞬真っ暗になります。 フルスクリーンでトリミングされたスプラッシュスクリーンを設定された期間使用するにはどうすればよいですか?

1
手続き的に生成されたレベルで見つかったバグを報告する方法は?
手続き型生成がどのように機能するかについては多くのトピックがありますが、テストする方法や、さらに重要なこととして、手続き型生成レベルで発生する可能性のあるバグを報告する方法に関する情報は見つかりませんでした。新しいゲームをプレイするたびに異なって見えるマップ上で、たとえばレベルデザインに関連するバグを説明する最良の方法は何ですか?バグレポートにどのような情報を含めれば、レベルデザイナー、レベルアーティストなどが簡単に再現できるようになり、その後、回帰プロセス中にも再現できますか? 編集:私がテストする準備をしているゲームは、開発のごく初期の段階にあり、レベルの生成を担当するシステムとともに常に変化していることは、言及する価値があります。この調査の目的は、バグの記述方法(レポートに含める情報)を学習することです。そのため、変化する環境での回帰は、可能な限り時間がかからず、可能な限り効果的です。

3
ノイズの多いエッジ、フラグメントシェーダーによる面間のエッジの平滑化
以下のスクリーンショットのように、六角形のジオメトリで生成された地形があります。 次にバイオームを生成しますが、ご覧のとおり、それらの境界は本当に醜く、まっすぐです。その六角形の原点を隠すには、バイオーム間の境界を滑らかにする必要があります。これは、実際の波状面を含むワイヤーフレームでの外観です。 私が目指しているのは次のようなものです: 各頂点にはバイオームタイプを保持する属性があります。2つのバイオーム間のエッジの頂点に特別な属性を追加することもできますが、これをシェーダーコードで明らかにする方法がわからないようです。明らかにノイズです。ここに含まれていますが、複数のバイオームの複数の顔と境界全体で連続させるにはどうすればよいですか? THREE.jsを使用してWebGLでレンダリングしています

2
「AAAゲーム」という言葉の由来は何ですか?
トッププロダクションバリューゲームやビッグリリースについて語るとき、「AAA」という言葉が飛び交うのをよく耳にしますが、この言葉はどこから来たのですか?それはどのようにして造られ、普及したのですか?

8
子供向けゲームエンジンの紹介[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 3年前休業。 私の友人の10歳の子供は、プログラミングとビデオゲーム開発に非常に興味があります。その小さな男はすでにCodinGameを完成させたので、その間私が知っている他の学習ゲームに彼を導きました。しかし、ゲームエンジンの種類のものが見つかりませんでした 私は、CodinGameと同じ精神で、子供向けのゲームエンジンの概要を探しています。Unity 3DやUnreal Engineなど、さまざまな種類のものが考えられます 私は以前からコンピュータサイエンスを教えることに興味がありました。そのようなものを資料として使用できるようになりたいです

1
法線マッピング中にMikktspaceはどのように接線空間を計算しますか?
3D業界では、あるアプリケーションから別のアプリケーションへの接線空間の正確で一貫した計算に依存する法線マッピングやその他の効果の接線空間を計算するために、Mikktspaceの標準がますます採用されています。Blender、xNormal、Unity、Substance Painter、Unreal Engineは、現在Mikttspaceを使用していると考えることができるほんの一部です。私は個人的に、この標準を採用するために自分のプロジェクトを再コーディングすることも試みています。 しかし、Mikktspaceは比較的新しいものであるため、その動作に関するリソースはほとんどありません。どんな小さなリソースでも、通常は詳細が少なく、非常に技術的であり、ユーザーフレンドリーではありません。または、コーダーが特定のレベルの知識を持っていると想定しています。 1つの言語だけに限定されない方法で数学とコードがどのように機能するかについての簡単な説明とともに、Mikktspaceの仕組みとその実装方法についての明確な説明を探しています。 例として、プログラマが頂点のインデックスを持つメッシュオブジェクトを持っているとします。頂点にはそれぞれ、位置、法線とUV座標、そのインデックスを参照する三角形のリストが含まれます。 例えば: Vertex:{XYZ NX NY NZ ST} VertexIndex: のリスト Vertex Triangle:{V1 V2 V3} (法線方向の正しい巻き順) TriangleList: のリスト Triangle 簡単に言えば、各頂点のMikktspaceに準拠した方法で、頂点ごとに正接ベクトル(TX TY TZ)と正接ベクトル(BX BY BZ)を計算するにはどうすればよいでしょうか。

1
定常に近い物理オブジェクト間のジッターを防ぐにはどうすればよいですか?
私はカスタムの物理エンジンを実装しており、思い通りに機能するようになっています。重力、衝突、衝突応答があります。残念ながら、ほとんど静止しているオブジェクトの間にジッターがあるようですが、ほとんどの場合、変更できない低物理ティックが原因です。 私はオンラインで調べて、自分の試みのいくつかを含め、見つけた実装のいくつかを試しました。これが私が試した解決策です: 速度/運動量/ポテンシャルエネルギーがしきい値を下回るときの動きの減衰。 速度/運動量/ポテンシャルエネルギーがしきい値を超えている場合にのみ重力を適用します。 スリープ機能の実装。これは、最後の60フレームのオブジェクトの位置をチェックし、しきい値の境界ボックスの外に移動していない場合はスリープします。 衝突テストと解決を適用するときに、オブジェクトを上から下に反復します。 これが私のコードです: for each (auto ball in m_Balls) { ball->Update(t); ball->Accelerate(m_Gravity); } // This disgusting hack sorts the balls by height. In a more complete physics // implementation, I guess I could change the sorting based on the direction of // gravitational force. This hack …

1
ゲーム内でシェイプをスナップする
プレイヤーがキャンバス上を動き回る可能性がある形を一緒にスナップする方法を考え出そうとしています。 正方形が他のオブジェクトに近づくと、その形状を(特定の近接性がある場合)引き込み、そのオブジェクトの端に沿って完全にスナップさせます。 ルール: エッジが互いに平行な場合のみ 子の正方形(ドラッグ中)が親の正方形(接近中)の半分のサイズの場合、親の正方形のエッジの中点で、子が左/右/上/下のどちらにスナップするかを決定できます。 誰かがこのようなことをしましたか?私はc#とUnityを使用しています。乾杯。
8 unity  c#  mathematics 

4
なぜほとんどのレーシングゲームにクローズドループのトラックがあるのですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 3年前休業。 ほとんどのレーシングゲーム(マリオカート、セガラリー、Fゼロなど)では、通常、レーサーはクローズドサーキットでいくつかの周回を行います。頭に浮かぶ最も注目すべき例外は、すべてのアーケードゲーム、またはおそらくレーシングゲーム(Trackmania、OutRun、Cruis'nシリーズ)でもありません。 なぜ設計者はトラックをクローズドループとして構築する必要があるのでしょうか。

3
スターマップを生成するにはどうすればよいですか?
スターマップを生成しようとしています。 私の試みは: マップの幅と高さがあります。 幅と高さの領域全体にランダムにポイント(星)を配置します。 単純なアプローチですが、ランダムに星を互いに非常に近くに配置するという問題があります。 この問題を解決するための1つの方法は、最小距離を設定することです。星を生成するときに、新しい星から生成されたすべての星までの距離を比較し、最小距離を下回る場合は新しい星を生成しますが、それは効率的です。任意のヒント?

5
自分の冒険を選択-選択肢スタック
私は現在、独自のアドベンチャーゲームを選択して構築しています。これで、すべての選択に対して1つの結果が得られ、線形フローを作成するのは簡単ですが、以前のすべての選択が次の結果に影響を与えるための優れたアルゴリズムはありますか?私は明らかに以前のすべての選択を保存し、決定する大きな 'IF'ステートメントを持つことができましたが、もっと良い方法があるかどうか疑問に思いましたか? 私の一部は、すべての選択肢に「スコア」が必要かどうかを疑問に思っており、これを使用して(おそらくしきい値を使用して)次のアクションを決定し、各アクションをスコアに追加します。 私は主にこれをswift / SpriteKitで行っていますが、この時点でのコードよりもコンセプトのほうが重要だと思います。 以下のジョシュのコメントに応じて: 現時点ではまだ概念段階にあると思いますが、各「ページ」はカスタムオブジェクトまたはjsonファイルのいずれかになります。私はあなたの答え(現在は削除されています)について考えていましたが、各ENUMオプションを少し持っているかもしれません。次に、各ページに「スコア」を付けることができます。次に、選択した前のオプションを使用して、どのビットが設定され、どのページを決定するかを決定します。私が「ストーリー」をどのようにフォーマットするかを決定するのをほとんど手助けし始める前に、この問題に対する既存の解​​決策があったのかと思っただけだと思います 形式の大まかな推測: { "text":"You arrive in the dungeon and there are 2 doors", "options":[ 1: "Go left", 2: "Go Right" ], "score" : 0 // first page } {"text" "You went left and meet a dragon", "options":[ 0: "Game over, you were eaten" …

2
マルチプレイヤーレースゲームでのプレイヤー間の衝突
私は、p2.js、フェイザー、node.jsを使用して、シンプルなレーシングゲーム(宇宙船、無重力)を作成しています。 私がしたこと:クライアントはサーバーから世界の状態を受け取ります: サーバーからの最新の速度/位置に基づいて他のプレイヤーを推定する クライアント側の予測が正しいかどうかを確認します-サーバーからの適用位置がなく、サーバーが認識していなかった入力を処理します。 固定物理ステップ サーバ: クライアントから入力を受け取り、適用する 固定物理ステップ 各クライアントに世界の状態を送信します 現在、プレイヤー同士の衝突に苦労しています。衝突しているプレイヤーは、衝突中に常にジャンプしています。クライアント側の予測がサーバーと同様の結果を計算していないためだと思います。 サーバーはプレーヤーからのすべての入力を認識していません(ラグ)。 プレーヤーとサーバーが衝突しているプレーヤーの位置が異なります(ラグ)。 この2つを組み合わせると、クライアントはサーバーとは異なる衝突を解決し、世界の状態が到着したときにプレーヤーは大きな修正を行う必要があります。

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