ゲーム開発

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

4
ゲーム開発で度数よりもラジアンが好まれるのはなぜですか?
私はラジアンの定義を調べてきましたが、数学者はそれらが度のように完全にarbitrary意的である代わりにpiから派生するため、ラジアンを好むことがわかりました。 しかし、おそらく関連する数学的理解が完全に欠如しているため、ゲーム開発でそれらを使用する説得力のある理由を見つけていません。ほとんどのsin / cos / tan関数は言語のラジアンですが、だれかが度数でライブラリ関数を作成することもできます(piを使用する場合の固有の丸め誤差を回避できます)。 私はこれを世論化された世論調査にしたくありません。ゲーム開発(および関連する数学研究)を行った人々から聞いてみたいと思います。私たち(そしておそらく他の人たち)が彼らが何のために良いのかを理解するのを助けるためだけに。


7
ホットスワップ可能なC ++モジュールを実装するにはどうすればよいですか?
速い反復時間はゲームを開発するための鍵であり、私の意見では、多くの機能を備えた派手なグラフィックスやエンジンよりもはるかに重要です。多くの小規模な開発者がスクリプト言語を選択するのも当然です。 ゲームを一時停止し、アセットとコードを変更し、続行して変更をすぐに有効にすることができるUnity 3Dの方法は、このために絶対に素晴らしいです。私の質問は、C ++ゲームエンジンに同様のシステムを実装している人はいますか? いくつかの非常にハイエンドのエンジンが行うことを聞いたことがありますが、私は自家製のエンジンやゲームでそれを行う方法があるかどうかを調べることにもっと興味があります。 明らかにトレードオフがあり、ゲームが一時停止している間にコードを再コンパイルし、すべての状況またはすべてのプラットフォームでリロードして動作させることは想像できません。 しかし、おそらくAIプログラミングと単純なレベルのロジックモジュールが可能です。短期(または長期)のプロジェクトでそれをやりたいというわけではありませんが、興味がありました。
39 c++  hot-reload 


13
バックトラックを面白くするにはどうすればよいですか?
プレーヤーが初めてスペースをナビゲートするとき、それは非常に興味深いものです。コンテンツは新しく、危険は不明であり、パスを見つける必要があります。ただし、さまざまな状況では、プレーヤーはバックトラックするか、同じスペースを複数回ナビゲートする必要があります。おそらく、レベル設計者は経済的であるか、スペースに精通しようとしています。おそらく、ゲーム自体はオープンエンドであるか、サンドボックスのようであり、同じスペースをナビゲートすることはゲーム自体の一部です。これらにより、同じスペースが退屈でまばらに見える場合があります。 バックトラッキング(または同じスペースを複数回ナビゲート)が避けられない場合、それを面白くする効果的で経済的な方法は何ですか?留意してください: 効果のために、またはコストを節約するために、レベルを意図的に再利用しています。したがって、認識を超えたレベルの変更は、私たちの意図に反するでしょう。 また、ゲームプレイをあまり変更することはできません。レベルを再利用してコストを節約しようとした場合、ゲームプレイを追加することでコストが増加すると逆効果になります。 私が念頭に置いていた簡単な解決策の1つは、プレーヤーに何らかのパワーアップまたは乗り物を与えて、より早くバックトラックできるようにすることでした。より良い方法と、それらが使用されたゲームの例があると確信しています。

18
アクションがリアルタイムで発生するターンベースの戦略ゲーム?[閉まっている]
さて、このアイデアは会話で3回目になり、長年私を悩ませてきました。このアイデアは、ゲームが一時停止状態にある間にすべてのプレイヤーがユニットに決定/命令を出し、すべてのアクションがリアルタイムで一度に実行されるゲームです。これは、TRPG(Final Fantasy Tactics)から小規模の小競り合い(Worms)、基地と多数のユニットを含むゲーム(Advance Wars)、リスクタイプのゲーム(Riskタイプのゲーム) )。 これの主な欠点は、プレイヤーがアクションの結果をすぐに見ることができないことです。従来のターンベースまたはリアルタイムの戦略ゲームでは、ユーザーは「バカな攻撃」をクリックするとすぐに爆発が起こります。奇妙な状況もあるかもしれません(たとえば、反対方向に走っているユニットと混戦するようにユニットを送ります)が、それは低レベルの詳細です。優れたゲームデザイナーはこれらの問題を回避できるはずです。最後に、ターンベースのゲームには一般的に不足がありますが、リアルタイム戦略ゲームでは不可能なレベルの戦術的深さを提供し、常に市場があります(毎年多数の新しいTBSが表示されます)。 このパラダイムを使用するゲームはありますか? なぜもっとないのですか? この作業を行うには何が必要ですか? どのような潜在的な問題を予見できますか? 明確にするために、私は純粋な戦略を意味します。コマンドは事前に入力され、解像度はリアルタイムですが、プレーヤーによるリアルタイムの「単収縮」入力は必要ありません。 編集: Iainの答えは、基本的に2番目と4番目の質問に答えたLaser Squad Nemesisを指し示しました;-P-これがうまくいかない理由を知りたい場合は、デモ(9MB)をダウンロードし、最初のチュートリアルをクリックしてください。痛い!もちろん、Laser Squad NemesisのUIは役に立たない(ボタンを再生して一時停止するのか、それとも私がやろうとしているのであれば、毎ターン「注文を発行」をクリックする必要があるのか​​?) よりシンプルなもの(2、3の回答で言及されたボードゲーム、またはIainが作成したZwok)の場合、このパラダイムは非常に有効です!コマンドの入力とコマンドの実行との間の遅れが明らかであるため、より伝統的な戦術/戦略ゲームでは問題が発生するようです。実際にZwok -とボードゲームのいくつかは言及-仕事を理由は、この遅れオフではなく、それにもかかわらず。対戦相手が次に何をするかを推測し、「先に考える」ことをお勧めします。しかし、より伝統的な小規模な戦術戦略ゲームでは、フラストレーション要因は価値がありません。 上で、このようなゲームを見ても面白いかもしれません、本当に大規模な。たとえば、リーとナポレオンはリアルタイムで軍隊を注文しませんでしたが、むしろ何時間も前の情報に基づいて決定を下しました。今日でも、将軍はリアルタイムのトップダウンマップを持っていません。しかし、その「フラストレーション要因」を取り除くには、真剣に巧妙なゲームデザインが必要になります。

6
高速移動オブジェクトの六角形衝突検出?
オブジェクトには位置と速度ベクトルがあります。通常、2つのオブジェクトが衝突するかどうかを確認するために位置のみが使用されます。これは、最初の衝突チェックで最初のオブジェクトの前にあり、その後ろで2番目の衝突チェック。 また、ラインベースの衝突チェックもあります。このチェックでは、各オブジェクトの移動ベクトルが他のオブジェクトの境界ボックスと交差するかどうかのみをチェックします。これは、ポイントの拡張として見ることができます。ただし、高速で移動するオブジェクトが本当に小さい場合にのみ機能します。 だから、私のアイデアは、ポイントを拡大するのではなく、なぜ長方形を拡大しないのですか?これにより、六角形になります。 今、これまでのところとても良い。しかし、この種の2つの六角形が交差するかどうかを実際に確認するにはどうすればよいですか?これらは非常に特殊な六角形であることに注意してください。 ボーナス質問:衝突が発生した場所を正確に(または、ある程度の時間後に)計算することは可能ですか?これは、実際に何がどこで、どのくらいのパワーで発生したかを検出し、衝突からフレームの終わりまでの時間での動きをシミュレートするのに非常に便利です。

3
複数のクラスが同じデータにアクセスする必要がある場合、データはどこで宣言する必要がありますか?
C ++で基本的な2Dタワーディフェンスゲームを持っています。 各マップは、GameStateを継承する個別のクラスです。マップは、ゲーム内の各オブジェクトにロジックと描画コードを委任し、マップパスなどのデータを設定します。擬似コードでは、ロジックセクションは次のようになります。 update(): for each creep in creeps: creep.update() for each tower in towers: tower.update() for each missile in missiles: missile.update() オブジェクト(クリープ、タワー、ミサイル)は、ポインターのベクトルに格納されます。タワーは、新しいミサイルを作成してターゲットを特定するために、クリープのベクトルとミサイルのベクトルにアクセスできる必要があります。 質問は次のとおりです。ベクトルをどこで宣言しますか?それらはMapクラスのメンバーであり、引数としてtower.update()関数に渡されるべきですか?またはグローバルに宣言されましたか?または、私が完全に欠けている他のソリューションはありますか? 複数のクラスが同じデータにアクセスする必要がある場合、データはどこで宣言する必要がありますか?

1
このビート検出コードがいくつかのビートを適切に登録できないのはなぜですか?
私はこのSoundAnalyzerクラスを作成して、曲のビートを検出しました。 class SoundAnalyzer { public SoundBuffer soundData; public Sound sound; public List<double> beatMarkers = new List<double>(); public SoundAnalyzer(string path) { soundData = new SoundBuffer(path); sound = new Sound(soundData); } // C = threshold, N = size of history buffer / 1024 B = bands public void PlaceBeatMarkers(float C, int N, …
38 c#  audio 


2
ゲーム物理学でピタゴラスの定理を使用するのはなぜですか?
私は最近、ピタゴラスの定理を物理計算で多く使用していることを学びましたが、私は本当に意味が分からないのではないかと心配しています。 これは、オブジェクトが水平面内の定数よりも速く移動しないようにするための本の例MAXIMUM_VELOCITYです。 MAXIMUM_VELOCITY = <any number>; SQUARED_MAXIMUM_VELOCITY = MAXIMUM_VELOCITY * MAXIMUM_VELOCITY; function animate(){ var squared_horizontal_velocity = (x_velocity * x_velocity) + (z_velocity * z_velocity); if( squared_horizontal_velocity <= SQUARED_MAXIMUM_VELOCITY ){ scalar = squared_horizontal_velocity / SQUARED_MAXIMUM_VELOCITY; x_velocity = x_velocity / scalar; z_velocity = x_velocity / scalar; } } これをいくつかの数字で試してみましょう。 オブジェクトがxで5ユニット、zで5ユニットを移動しようとしています。合計で5ユニットしか移動できないはずです! MAXIMUM_VELOCITY = 5; …

1
プレイヤーと敵に反応するパーティクルを作成するにはどうすればよいですか?
現在、C ++で記述した独自のゲームエンジンを使用してゲームを作成しており、最新のdirectx SDKを使用しています。 このゲームはトップダウンのスペースシューティングゲームであり(かなり興味深いひねりを加えたものです)、プレイヤーが飛び回るような星雲効果を探しています。プレイヤーが船に飛び込んでくると、何百もの粒子が邪魔にならないように、触り心地の良い触感を試してみたいと思います。XBLAのGeomtry Warsで、パーティクルがプレイヤーの邪魔にならないようにする方法がやや気に入っています。 私はC ++に関しては経験豊富なプログラマーです。ただし、この効果の実装を開始する方法はわかりません。誰かが私が検討したいかもしれないクールなアイデアやデザインの選択肢を持っていますか?どんな深さでもお好きなところにお気軽にお答えください。
38 c++  directx  particles 

2
XNAのSpriteBatchはどのように機能しますか?
もっと正確に言えば、別のAPI(OpenGLなど)でこの機能をゼロから再作成する必要がある場合、何ができる必要がありますか? 正射投影行列を作成し、描画呼び出しごとにクワッドを作成する方法など、いくつかのステップの一般的なアイデアがあります。 ただし、バッチ処理自体についてはあまり詳しくありません。すべてのクワッドは同じ頂点バッファーに格納されていますか?インデックスバッファが必要ですか?異なるテクスチャはどのように処理されますか? 可能であれば、少なくともデフォルトのDeferredモードを使用している場合は、SpriteBatch.Begin()が呼び出されてからSpriteBatch.End()までのプロセスを案内していただければ幸いです。
38 xna  spritebatch 

6
報酬と統計に関して、なぜ乱数を使用するのですか?
多くのゲームは、攻撃によるダメージ、金の戦利品、モンスターの種類などの生成に乱数を使用します。乱数を使用すると、コンテンツを生成してゲームをより再生しやすくすることができますが、特定のことについて話します。たとえば、DOTAでは、モンスターを殺すと、xとyの間でxとyが変わらないランダムな量の金が得られます。何かを攻撃すると、52-60などの範囲内でダメージを与える可能性があります。ゴールドドロップを静的にすると、ゲームはどのように変わりますか? 乱数はゲームプレイを強化するように感じますが、その理由を理解するのに苦労しています。ダメージや戦利品などと組み合わせて使用​​すると、乱数がゲームプレイを改善できる理由を誰もが知っていますか?幸運が良いことだとは思わない答えを望んでいます。

1
FPSでのマウスの照準
一人称シューティングゲームを作成し、カメラをマウスで動かしたいと思います。問題は、カーソルが画面の制限に達すると、カメラが回転しなくなることです。とにかくマウスを中央に保ち、その動きを検出するにはどうすればよいですか?

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