ゲーム開発

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


2
リアルタイムFPSゲームでサーバーに送信するもの
ローカルプレイヤーの位置をサーバーに伝える正しい方法は何ですか?一部のドキュメントでは、入力が生成されるたびに送信する方が良いと述べています。また、いくつかの文書は、クライアントが一定の間隔で位置を送信すると述べています。 入力を送信するアプローチでは、プレーヤーが方向キーを押している場合はどうすればよいですか?つまり、すべてのフレームでサーバーにパッケージを送信する必要があります。多すぎませんか?また、マウス入力からのプレーヤーの回転もあります。以下に例を示します。 http://www.gabrielgambetta.com/fpm_live.html 固定間隔アプローチで位置を送信するのはどうですか。サーバーに送信するメッセージが少なすぎます。ただし、応答性も低下します。 それで、どちらの方が良いですか?

1
ブルームが適用されない場合、HDRレンダリングには利点がありますか?
現時点では、環境照明のためにゲームで画像ベースのライトを使用しています。空のキューブマップをサンプリングして、拡散反射光と鏡面反射光を取得します。現時点では、HDRレンダリングパイプラインを使用しています-スカイボックスは16ビットのストレージを使用しています。16ビットのレンダーターゲットに描画し、最後にトーンマッピング演算子を使用して値を0.0〜1.0の範囲にスケーリングし、バックバッファーに描画します。 最近、ブルームポストプロセッサを取り外すと、レンダリングパイプラインのほとんどが基本的に無意味になったことに気付きました。高いダイナミックレンジ値では実際には何も行われません。後処理の最終段階で、ダイナミックレンジ値が低くなるまで処理されます。 低ダイナミックレンジパイプラインを使用し、Photoshopでスカイボックスを手動でトーンマップするだけでもよいと言ってもいいでしょうか。これにより、パイプラインがはるかに簡単になります。HDRデータを取得したいのは、ブルーム以外の理由はありますか?
23 skybox  hdr 

3
ゲーム全体の変数を保存する最良の方法
難易度、解像度、フルスクリーンなどのオプション画面がありますが、実行時にこれらの変数を保存/取得する「最良の」方法を見つけるのに苦労しています。 現在、私Constantsはすべてを含むクラスを実装しましたGameOption列挙型が、これらのオプションすべてのデフォルトを選択するにはどうすればよいですか?また、現在選択されている列挙型を取得するにはどうすればよいですか? 解像度に関しては、具体的には、値を保存することにしましたが、デフォルト値または現在保存されている値を取得する方法がわかりません。どの方向も素晴らしいでしょう。ありがとう!:) namespace V1.test.RPG { public class GameOptions { public enum Difficulty { EASY, MEDIUM, HARD } public enum Sound { ON, QUIET, OFF } public enum Music { ON, QUIET, OFF } public enum ResolutionWidth { SMALL = 1280, MEDIUM = 1366, LARGE = 1920, WIDESCREEN = 2560 …
23 c#  2d 

7
車のゲームでのトランスミッションの実装
私は手動のギア変更でシンプルな車のゲームを作成しようとしています。しかし、ギアの変更を実装するのに少し苦労しています。 「車」の現在のコードは次のとおりです。 int gear = 1; // Current gear, initially the 1st int gearCount = 5; // Total no. of gears int speed = 0; // Speed (km/h), initially 0 int[] maxSpeedsPerGear = new int[] { 40, // First gear max. speed at max. RPM 70, // Second gear max. …
23 simulations  car 

11
リスポンを使用してゲームに満足のいく目標や勝利条件を追加するにはどうすればよいですか?
ゲームに目標を追加したいと考えています。 https://www.youtube.com/watch?v=O3uxaxy5_tc 上記のビデオは、私のゲームのゲームプレイで作成した最新のビデオです。あなたが見ることができるように、ゲームは持っています: 対戦する相手(ビデオNPCの対戦相手ですが、マルチプレイヤーの対戦相手は間もなく登場します) キャプチャする目的(タワー)。 変化。つまり、プレーヤーはさまざまなスキルを選択して、さまざまな設定を行うことができます。 大きくて多様なマップ(複数のマップは簡単に作成できますが、現時点ではそうではありません)。 プレイヤーが死んだ直後に復活するという事実のおかげで、絶え間ない行動。 表面上、これはうまく見えます。ゲームに必要なものはすべてあるようです。しかし、私は勝利条件と全体的な目標に問題があります。説明させてください: マップは正方形に分割されます。各タワーは正方形を制御します。タワーを引き継ぐためには、タワーを破壊する必要があります-「破壊」されると、タワーはチームを切り替え、すべてのヘルスを回復します。 問題は、チームが負け始めたときです。地図が次のようなものだとしましょう:( 写真の赤い線を無視してください) チームは自分が管理する領域でのみリスポーンするため、これは青いチームが赤いチームよりもはるかに小さなエリアでリスポーンすることを意味します。これは、青いチームは常に彼らが防衛している領域にいるが、赤いチームはほとんど遠くに出現していることを意味します。 Photoshopを使用して問題を視覚化する: 赤いチームのメンバーを表す黒い点と、青いチームのメンバーを表す白い点(この例では両方のチームに10人のメンバーがいます)で、青いチームが決して負けないことを明確に見ることができます。赤チームのメンバーは、単に団結し、圧倒され、戦いから遠く離れて復活します。はい、理論的には、この例では1つまたは2つの領土を使用できます。しかし、問題はさらに悪化します。青チームのテリトリーが1つだけの場合、この例を想像してください。 ちなみに、これは単なる理論的なものではありません。私は実際にサーバーとAI戦車を3時間以上戦い続けましたが、勝つことができませんでした。 したがって、問題を要約するには: チームが支配する領土が少ない場合、所有する領土ごとにそのチームのメンバーが多くなるため、相手チームが勝つことはできません。 それでは、私が試したが、却下した可能性のある解決策について話しましょう。 1つの解決策は、リスポーンを完全に削除することです。これは次のことを意味します。 新しく生まれた多くの敵を攻撃することはないので、領土を奪うことは問題になりません。 勝つことはそれほど難しくありません。 しかしながら、 これにより、World Of Tanksと同様に、ユーザーは非常に慎重にプレイするようになります。 ユーザーが死亡した場合、ユーザーの前で長い退屈な待機が発生するか、終了して新しい戦闘に参加する必要があります。 また、各タワーを奪取してチームにパワーを与えることもできます(たとえば、タワーの数が多いほどヘルスが向上します)。この: 技術的には問題を解決します。プレーヤーのチームは、他のチームを圧倒できます。 しかしながら: 戦いは速すぎます。1つのチームが1つまたは2つのタワーを獲得すると、「地滑り的な勝利」が非常に多くなります。チームが獲得した余分な力により、敵を打ち負かすことができます。 負けたチームにいることはあまり楽しくなく、勝者にはるかに少ないショットで死ぬことができ、ほとんど彼らを傷つけることはできません。 タワーを他のチームに引き継がせるのではなく、単に永久に破壊することもできます。ただし、これにより永続的に同等の一致が作成されます。 プレイヤーは、管理されたエリアから同じ距離を移動し、無人の土地で平等に戦い、お互いの塔に到達して破壊することはできません。これはまた、元の問題の犠牲になります。すべての塔を保護している小さなエリアに再出現したプレイヤーがたくさんいますが、敵プレイヤーはマップ全体を攻撃して攻撃しなければなりませんでした。これは問題を悪化させます。 リスポーンを制限したり、リスポーンタイマーを設定したりできます。しかし、明らかに、 プレーヤーは座ってほしくありません。 待機する必要があるアクションを中断します。 ゲームをそのままにしておくことができます!ショップの進行状況と購入スキルを追加できます。しかしながら、 私はインディー開発者です。マルチプレイヤーショップシステム、スキル、プレイヤーデータの保存は、すべて私にとって膨大な作業です。これは、本当に重要ではないもの、またはゲーム全体として満足のいくものに対する膨大な作業です。 要するに、私はこれについて多くの実験を行い、それについて多くのことを考えましたが、明確な答えはないようです。 そして、チームがすべてのタワーを奪って勝ったとしても、それでは!?マップがリセットされ、戦闘が再び始まりますか?これは反復的で退屈です。 要するに: 私のゲームには、1つのチームが勝つことができるが、その勝利を価値のないものにせず、両方のチームが長く楽しいバトルを行えるようにする、充実した客観的なシステムが必要です。 編集:自分の領土にいるプレイヤーがヘルスリジェネを取得することを忘れていました。つまり、自分の領土にいるディフェンダーはさらに有利になります。

1
惑星レンダリングに最適なLODメソッドはどれですか?
私は現在、私の論文に取り組んでいます。それは惑星サイズの地形をレンダリングするエンジンです。 私はまだ研究を終えており、この主題に関する多くの問題に遭遇しました。問題は、どの詳細レベル(LOD)メソッドを使用すべきかを決定できないことです。 ジオミマップ、ジオメトリクリップマップ(GPU)、UlrichのチャンクLODについて知っています。これらは大きな地形でうまく機能し、キューブの6つの面をレンダリングし、この方法でキューブを「球状化」することができます。 C ++ / OpenGL / GLSLを使用したGPUでのこれらのメソッド(ROAMなどのメソッドを使用するか、キューブを使用しない他のメソッドを使用することは、テクスチャリングが苦手なので私の手の届かないところにあります)。また、最近、ここでテッセレーションシェーダーを使用して地形をレンダリングするチュートリアルに参加しました だから、私はすべての方法を実装し、どれが惑星規模に最適でより適しているかを見る時間がないので、誰かがこの種の比較を行ったかどうかを確認し、どの方法を決定するのを助けたいと思います私は実装して使用する必要があります(私の家庭教師はちょっと変わっていて、20面体で何かをしたいと思っていますが、ROAMを使用しないとその方法を理解できません) とにかく、あなたが私を決定するのを手伝うことができるか、または他の提案または方法があるならば、私は本当に感謝します。1つの条件は、メソッドがCPUのボトルネックを防ぐためにGPU側(少なくともそのほとんど)を実装できることです。 別の要求は、地形で多くの詳細を取得するときにフロートの精度に関する数値的な問題があることを知っていることです。それを解決する方法がわかりません。実装すると、そのスレッドを追跡できなくなり、この精度の問題を解決する方法を知りたいと思います。 私は現在、フロートの精度、zファイティングの問題、動的z値での錐台カリング、チャンクのデータ表現を解決するためのいくつかのマトリックス変換について読んでいます(フロートとワールド座標での位置をダブルとして使用)精度の問題は簡単に解決できると思います。このプロジェクトに最適なLODメソッドを決定するために、LODメソッドとあなたの意見や提案を比較する必要があります。実装の難易度と視覚的品質とパフォーマンスを考慮に入れて、最高のものが欲しいです。 私が言及するのを忘れていたのは、世代がハイブリッドであるということです、つまり、GPU(その場で計算される高さ)を使用して、および/またはベースの高さマップ画像を使用して、地球を完全にレンダリングし、GPU(頂点シェーダー)。テクスチャリングは、私が後者を悩ます側面の部分になります。今は、高さに応じて色だけを使用するか、フラグメントシェーダーで生成された何らかのノイズテクスチャを使用することができます。

6
距離関数を最適化する方法は?
かなり単純なRTSのようなゲームを開発しているときに、距離の計算がパフォーマンスに影響を与えていることに気付きました。 常に、ユニットがターゲットの範囲内にあるかどうか、発射体がターゲットに到達したかどうか、プレイヤーがピックアップを乗り越えたか、一般的な衝突などがあるかを知るための距離チェックがあります。 2点間の距離が多く使用されます。 私の質問はまさにそれについてです。フレームごとに何千回も実行している場合、かなり時間がかかる通常のsqrt(x * x + y * y)アプローチ以外に、ゲーム開発者が距離をチェックするための代替手段を知りたいです。 マンハッタン距離と二乗距離の比較に気づいていることを指摘したい(sqrtボトルネックをスキップすることによって)。他に何か?

1
独自のシーングラフのローリング
こんにちは、Game Development SE! 私は、シンプルで非常に軽量なゲームエンジンを作成することを期待して、OpenGLを駆け巡っています。私はこのプロジェクトを、最終的には少しお金を稼ぐかもしれないが、どちらにしても楽しい学習体験だと思っています。 これまで、GLFWを使用して、基本的なI / O、ウィンドウ(非常に派手なF11フルスクリーンキー)、そしてもちろんOpenGLコンテキストを取得しました。また、GLEWを使用して、残りのOpenGL拡張機能を公開しました。これは、Windowsを使用しており、OpenGL 3.0+をすべて使用するためです。 これでシーングラフが表示されます。要するに、私は自分で転がしたいと思います。この決定は、OSGを見て、シーングラフの概念がどのようにねじれ、曲がり、壊れたのかに関するいくつかの記事を読んだ後に決定されました。そのような記事の 1 つでは、シーングラフがどのように開発されているかを説明しています... 次に、クリスマスツリーに飾りを吊るすなど、これらすべての余分なものを追加しました。ただし、飾りの一部はジューシーなステーキで、一部は生きた牛全体です。 類推に続いて、余分なコードの山や牛全体を縛る必要なしに、ステーキ、シーングラフがどうあるべきかの肉が欲しいです。 それで、それを念頭に置いて、私はシーングラフがどうあるべきか、単純なシーングラフをどのように実装すべきかを正確に疑問に思っていますか?ここに私が持っているものがあります... 1つの親、n子ツリーまたはDAG ... ゲームオブジェクトの変換(位置、回転、スケール)を追跡する必要があります 最適化のためにレンダリング状態を保持する必要があります ビュー錐台内にないオブジェクトを選別する手段を提供する必要があります 次のプロパティで... すべてのノードはレンダリング可能として扱われる必要があります(レンダリングしない場合でも)これは、... すべてにcull()、state()、draw()メソッドが必要です(非表示の場合は0を返します) cull()は、すべての子に対して再帰的にcull()を呼び出し、ノード全体およびすべての子に対して完全なカリングメッシュを生成します。もう1つのメソッドhasChanged()を使用すると、いわゆる静的メッシュでカリングジオメトリを各フレームで計算する必要がなくなります。これは、サブツリー内のノードが変更された場合、ルートまでのすべてのジオメトリが再構築されるように機能します。 レンダリング状態は単純な列挙で保持され、各ノードはこの列挙から必要なOpenGL状態セットを選択し、そのノードでdraw()が呼び出される前に状態がセットアップされます。これにより、バッチ処理が可能になり、指定された状態セットのすべてのノードが一緒にレンダリングされ、次の状態セットがセットアップなどになります。 ジオメトリ/シェーダー/テクスチャデータを直接保持するノードはありません。代わりに、ノードは共有オブジェクト(リソースマネージャーなどのシングルトンオブジェクトによって管理される可能性があります)を指す必要があります。 シーングラフのような状況可能にするために(多分プロキシノードを使用して)他のシーングラフを参照することができる必要があり、これをこのように複雑なマルチメッシュモデルを可能にする、/データのトンを追加することなく、シーングラフの周りにコピーするオブジェクト。 現在の設計について貴重なフィードバックを得たいと思っています。機能がありませんか?非常に優れた方法/デザインパターンはありますか?ややシンプルな3Dゲームのために、このデザインに含める必要のあるより大きなコンセプトがありませんか?等。 ありがとう、コーディ
23 opengl  3d  scene-graph 

2
通常、一度にいくつのテクスチャをバインドできますか?
私はゲームエンジンを開発していますが、最新の(Shaderモデル4+)ハードウェアでのみ動作します。私はそれを使い終えるまでに、それはそのような不合理な要件ではないだろうと考えています。 私の質問は、最新のグラフィックカードに一度にいくつのテクスチャをバインドできるかということです。16で十分でしょう。ほとんどの最新のグラフィックスカードがその数のテクスチャをサポートすると期待できますか? 私のGTX 460は32をサポートしているように見えますが、それが最新のビデオカードの代表かどうかはわかりません。

2
Blenderで2つのオブジェクトをマージする方法
私がやったこと Spehereをモデル化するために、Subdivision SurfaceモディファイヤでCubeオブジェクトを作成しました。 斜めの長いバトンのように見える直方体オブジェクトを作成しました。 私がやりたいこと これら2つのオブジェクトをマージしたいと思います。だから私はただ一つのオブジェクトを持ちたい-片側に突き出たバトンを持つ球体(のようなキューブロック)。底に喉が付いた頭のように見えるはずです。 やりたいこと サブディビジョンサーフェスモディファイヤを適用したくありません。後でオブジェクトを適切に編集できるようにしたいです。 バトンと球体の間にスペースを入れたくありません。一貫性があるはずです。 悪い技術なしで可能になるはずです。すべてがいいはずです。 私の質問 これら2つのオブジェクトをうまくマージするにはどうすればよいですか?ありがとう。-私が何を説明したいのかが明確であることを願っています。
23 3d  models  blender  3d-meshes 

5
libgdxで画面上のHUDを作成するにはどうすればよいですか?
私はlibgdxを初めて使いますが、最も単純なことに困惑していることに気付きました。特定の方法で物事をやりたいと思うようですが、ドキュメントではそれが何であるかを教えてくれません。 プレイヤーが宇宙船を操作する非常にシンプルな2Dゲームを作りたいです。マウスホイールはズームインおよびズームアウトし、画面に情報とコントロールが表示されます。 しかし、マウスホイールでUIをズームしないようにすることはできません。間に射影行列をいじってみました これが私の(現在の)コードです。 public class PlayStage extends Stage { ... public void draw() { // tell the camera to update its matrices. camera.update(); // tell the SpriteBatch to render in the // coordinate system specified by the camera. spriteBatch.setProjectionMatrix(camera.combined); spriteBatch.begin(); aButton.draw(spriteBatch, 1F); playerShip.draw(spriteBatch, 1F); spriteBatch.end(); } } camera.zoomはscrolled(int amount)によって設定されます。 …
23 libgdx 

5
ゲームフレームワークとゲームエンジンの違いは何ですか?
ゲームフレームワーク(たとえば、C#を使用したXNA、c ++のSDLなど)とゲームエンジンの違いは何ですか? ゲームフレームワークはエンジンを使用しますか?ゲームエンジンは、物理エンジン、パーティクルエンジンなどのサブエンジンをカプセル化しますか?それらは一緒に使用する必要がありますか、それとも相互に排他的ですか? 2Dと3Dの両方に別々のエンジンがありますか?

2
私のゲームはほぼ完成です!私は今何をしますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 HTML5 /キャンバスゲームがほぼ完成し、すぐに起動できます。これは、手順で生成された風景を探索して混乱させ、生き残るためのアイテムや構造を作成する2Dゲームです。「エンディング」を確定し、いくつかのバグを修正する必要がありますが、ゲームはプレーヤー向けに準備が整っています。 このゲームはウェブ上で無料でプレイでき、iOSとMac App Storeのバージョンの作業を開始する予定です。また、ゲームが起動した後でも、ゲームにコンテンツを追加し続けます。 ゲームを起動する前に私が覚えておくべきことを誰かが推奨できますか?ありがとう!

6
色を変更して背景よりも似ていないようにするアルゴリズム
単色で塗りつぶされた背景で、互いに跳ね返る20個のボールのデモを作成しています。各ボールの色はrandint(0, 255)、R、G、Bの各タプルコンポーネントに対してランダムに選択されます。 問題は、一部のボールが背景に非常に似た色になり、見づらくなることです。選択した色が類似している場合(特定のしきい値内)に別の色を回転させるか、背景色から遠ざけることで、それを回避したいと思います。 しきい値として使用する類似性インデックスを計算する方法は?または、色を変換して、たとえば青みを弱める方法はありますか? 明白な免責事項:私は色理論について何も知らないので、上記の概念が存在するかどうかも知りません! 私はPythonでコーディングしていますが、概念と戦略を探しているので、擬似コードは問題ありません(理論のみ)。 編集: いくつかのポイントを明確にするには: 各ボールには、独自のランダムな色があります。私はそれらを可能な限りランダムに保ち、色空間を可能な限り探索したい(RGBかHSVかにかかわらず、色pygameを定義するために両方の形式を受け入れます) それぞれの色が背景に「近すぎる」ことを避けたいだけです。問題は色相だけではありません:濃い青の背景に明るい青のボール(または「白っぽい」青に「フルブルー」)で完全に問題ありません 今のところ、ボールの色が他のボールと似ている(または同一である)かどうかは気にしません。それを避けることはボーナスですが、それは小さな問題です。 背景色は、一定の単一のRGB色です。今のところ、私は "basic" blueを使用(0, 0, 255)していますが、それで満足していません。したがって、背景は任意の色(任意の色相、明度、彩度など)であると考えてください。 EDIT2: TL、DRバージョン: Xランダムカラーを作成する方法を与えるだけで、任意の(ただし、単一で一定の)色の背景に対して「過度にフェードイン」しないようにする
23 algorithm  color 

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