ゲーム開発

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

1
真のバイノーラル位置3Dオーディオが可能なゲームエンジンはありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 6年前休業。 私は決してゲームデザイナーではないので、適切な専門用語を使用できなかった場合は、事前に謝罪します。私の間違いを自由に修正してください。 私の理解では、現時点では、すべての一人称シューティングゲーム(L4D2やBioshockなど)ではないとしても、「3Dオーディオ」は、ゲーム内でのプレーヤーの位置と変位を考慮して生成されますが、主にオン バランス(サウンドのソースへの方向を示すため)、 振幅(プレーヤーと音源との間の距離を示すため)。 ただし、心理学実験では、頭部関連伝達関数(HRTF)を使用した真の両耳位置3Dオーディオを使用して、カスタムの一人称シューティングゲームを被験者に再生させたいと思います。私が何を話しているのかわからない場合は、このURLでバイノーラル録音を聞いてください。 私は真のバイノーラル位置3Dオーディオを使用するゲームを1つだけ知っています:Papa Sangreですが、それはFPSではありません。 私の質問(すべて関連)は: 現在利用可能なゲームエンジン(バルブのソース?)を使用して、このようなFPSゲームを設計できますか? 1.の答えが「はい」の場合、役立つリンクはありますか? 1.の答えが「いいえ」の場合、そのような驚異的な能力を備えたゲームエンジンはまだ発表されていますか? 真のバイノーラルポジショナル3Dオーディオが将来のFPSゲームで間もなく登場する兆候はありますか?(私は確かにそう願っています!)

2
発射体の発射角度を見つけるにはどうすればよいですか?
ユニットがお互いに矢を発射する2Dゲームを作成しています。私は射手と標的の位置と発射体の初速度を知っています。投射物がターゲットに着地するために必要な角度を知りたいです。ターゲットは射手とは異なる高さにある可能性があります。 要約すると、v0、R、gがわかっているので、角度(または高さ)を見つける必要があります。 http://en.wikipedia.org/wiki/Projectile_motionを読みましたが、必要なものに関連するものが見つかりません。

2
ドローンターゲティング
「ドローン」と2D平面上のターゲットポイントを想像してください。8つのパラメーターがあります。 P = my position Q = target position V = my velocity I = my moment of inertia w = my angular velocity s = my angular position T = max thrust U = max torque (ターゲットは静止しているとだけ言います) ドローンの仕事は、最大トルクと最大推力に従って、できるだけ早く目標に到達することです。これは2D平面のみであるため、トルクを適用する方法は2つしかありません。推力は、機体の向きに対して一方向にのみ進むように制限されており、ドローンを回転させずに狙うことはできません。抵抗を無視して、2Dの宇宙空間に漂っているように見せかけることができます。ドローンが時間間隔t(おそらく0.01秒ごとなど)で方程式をチェックし、パラメータを接続して、それに応じてトルクと推力を調整するとします。推力とトルクの方程式はどうあるべきですか?

3
ターンベースのゲームでエンティティコンポーネントのゲーム状態を進行させる方法は?
これまでのところ、私が使用したエンティティコンポーネントシステムは、ほとんどがJavaのアルテミスのように機能しています。 コンポーネント内のすべてのデータ ステートレスな独立したシステム(少なくとも初期化時に入力を必要としない程度)は、特定のシステムが関心のあるコンポーネントのみを含む各エンティティを反復します。 すべてのシステムはエンティティを1ティック処理し、その後すべてをやり直します。 今、私はこれをターンベースのゲームに初めて適用しようとしています。ゲームを進める前に、相互に設定された順序で発生しなければならない大量のイベントと応答があります。例: プレイヤーAは剣からダメージを受けます。これに応じて、Aの鎧はキックインし、受けるダメージを減らします。Aが弱まる結果、Aの移動速度も低下します。 受けたダメージは相互作用全体を開始するものです ダメージがプレイヤーに適用される前に、鎧を計算して、受けたダメージに適用する必要があります 移動速度低下は、最終的なダメージ量に依存するため、実際にダメージが与えられるまでは適用できません。 イベントは他のイベントをトリガーすることもできます。鎧を使用して刀のダメージを軽減すると、刀が粉砕され(これはダメージの軽減が完了する前に行う必要があります)、次に、それに応じて追加のイベントが発生し、本質的にはイベントの再帰的な評価が発生します。 全体として、これはいくつかの問題につながるようです: 多くの無駄な処理サイクル:ほとんどのシステム(レンダリングのように常に実行されるもののために保存)は、「自分の番」が機能しない場合に実行する価値のあることは何もなく、ほとんどの時間はゲームの開始を待機しています。有効な作業状態。これにより、そのようなすべてのシステムに、ゲームに追加される状態が増えるにつれてサイズが大きくなり続けるチェックが散らばっています。 システムがゲームに存在するエンティティを処理できるかどうかを確認するには、他の無関係なエンティティ/システムの状態を監視する何らかの方法が必要です(ダメージの処理を担当するシステムは、鎧が適用されているかどうかを知る必要があります)。これは、複数の責任でシステムを混乱させるか、または各処理サイクルの後にエンティティコレクションをスキャンし、何かをする準備ができていることを通知することによって一連のリスナーと通信する以外に目的のない追加のシステムの必要性を生み出します。 上記の2つのポイントは、システムが同じエンティティセットで動作し、コンポーネントのフラグを使用して状態が変化することを前提としています。 それを解決する別の方法は、単一のシステムがゲームの状態を進行させるために動作する結果として、コンポーネントを追加/削除する(または完全に新しいエンティティを作成する)ことです。これは、システムが実際に一致するエンティティを持っている場合はいつでも、処理が許可されていることを認識していることを意味します。 ただし、これにより、システムは後続のシステムのトリガーを担当し、単一のシステムの相互作用の結果としてバグが表示されないため、プログラムの動作を推論することが難しくなります。新しいシステムを追加することは、他のシステムにどのように影響するかを正確に把握しないと実装できないため(そして以前のシステムを変更して、新しいシステムが関心のある状態をトリガーする必要がある場合があるため)、さらに難しくなります。単一のタスクで。 これは私と一緒に暮らす必要があるでしょうか?私が見たすべてのECSの例はすべてリアルタイムであり、そのような場合にこのゲームごとの1回の繰り返しがどのように機能するかを確認するのは非常に簡単です。そして、私はまだレンダリングにそれを必要とします、何かが起こるたびにそれ自身のほとんどの側面を一時停止するシステムには本当に不適当に思えます。 これに適したゲームの状態を進めるためのデザインパターンはありますか?それとも、すべてのロジックをループの外に移動し、代わりに必要なときにのみトリガーする必要がありますか?

1
グラフィカルリソースを非同期に読み込むにはどうすればよいですか?
プラットフォームにとらわれずに考えてみましょう。ゲームの残りの部分を実行している間に、グラフィックリソースをロードしたいと思います。 原則として、実際のファイルを別のスレッドにロードするか、非同期I / Oを使用できます。しかし、グラフィカルオブジェクトでは、それらをGPUにアップロードする必要があります。これは(通常)メインスレッドでのみ実行できます。 ゲームループを次のように変更できます。 while true do update() for each pending resource do load resource to gpu end draw() end 別のスレッドでディスクからRAMにリソースを読み込みます。 ただし、ロードする大きなリソースが多いと、フレームの期限が切れて、最終的にフレームがドロップされる可能性があります。だから私はこれにループを変更することができます: while true do update() if there are pending resources then load one resource to gpu remove that resource from the pending list end draw() end フレームごとに1つのリソースのみを効果的にロードします。ただし、ロードする小さなリソースが多数ある場合、それらすべてのロードには多くのフレームがかかり、多くの無駄な時間がかかります。 最適には、次の方法でロードの時間を計りたいと思います。 …

5
再起動せずにオプション画面からディスプレイ設定を更新するにはどうすればよいですか?
私は現在、Allegro 5とboostを使用してC ++ 11で2D RPGを作成しています。 私の目標は、オプションメニューでオプションが変更されたときにゲームの設定を更新することです。ユーザーに強制的にゲームを再開させたくありません。他のゲームでは、解像度を変更したり、フルスクリーンからウィンドウ表示にしたりするときに再起動を必要としないため、私のゲームもそうではありません。以下のシステムの簡略図をご覧ください。 OptionsScreenからゲームオブジェクトを直接呼び出す必要がないことに注意してください。破線は、私が達成しようとしている効果を示すためのものです。システムの別の部分でオプションが変更されたときに、どういうわけかゲームを更新します。 詳細説明 ScreenManagerには、GameScreen現在存在するすべてのオブジェクトのリストが含まれています。これらは、ポップアップを含むゲーム内のさまざまな画面になります。この設計は、多かれ少なかれC#/ XNAのゲーム状態管理サンプルに準拠しています。 にScreenManagerは、私のGameオブジェクトへの参照が含まれています。Gameオブジェクトは、ゲームの設定を初期化し、変更します。解像度を変更したい場合は、フルスクリーンにするか、Gameクラスで行うボリュームをミュートにします。 ただし、現在、OptionsScreenはGameクラスにアクセスできません。以下の図を参照してください。 GameScreenはonFinished、onTransitionStartおよびの3つのイベントを通知できonTransitionEndます。onOptionsChanged1つの画面だけがそれを行うため、ありません。ScreenManagerはすべての画面をGameScreens として処理するため、そのためのイベント処理を設定できません。 私の質問は、OptionsMenuの変更が再起動を必要とせずにすぐに変更されるように、どのようにデザインを変更できるかです。Game適用ボタンがクリックされたら、オブジェクトの更新をリクエストするのが望ましいでしょう。

2
Editlineをゲーム内コンソールに使用するにはどうすればよいですか?
作成中のC ++ゲームにゲーム内コンソールを追加したいのですが。コンソールをレンダリングして、問題のないコマンドを解析しますが、テキスト入力と編集の側面(たとえば、左/右キー、バックスペースなどの処理)は、もっと興味深いことに費やすよりも多くの努力のようです。 私はなんとかして、履歴と自動補完を備えたコンソールスタイルのテキスト入力の核心を処理するEditline と呼ばれるライブラリを見つけることができました。私が見つけたのは、標準の入力および出力ハンドルを使用し、readline()それ自体がブロッキング呼び出しです。自分の入力を提供し、コンソールを自分の出力にレンダリングできるようにする必要があります。また、ゲームループが継続して実行されることを確認する必要もあります。 これを行うにはどうすればよいですか?
9 c++  text-based 

1
高品質で高速なポータル効果を作成するには?
編集:それで、パフォーマンスに影響を与えずにポータルの視覚効果が機能するようになり、リジッドボディがポータルをシームレスに移動するオブジェクトと、キャラクターコントローラがシームレスに移動するオブジェクトの物理的な設定を取得しました。私が今理解しようとしている唯一のことは、適切な一人称遷移効果を得るために2つのカメラビューをブレンドすることです。これら2つをどのようにブレンドするかについてのアイデアはありますか?深度のみのシェーダー、または正規化されたビューポートの四角形を使用して何かを考えています。私の主な問題は、それをリアルタイムで、角度で計算することです。 だから私はUnity3Dでポータル効果の作成に取り組んでいます。明らかに、私はこれのプログラミングに大きな影響を与えたとして、Valve's Portalを取り上げました。現在、私は単にカメラのrendertextureを使用してグラフィック効果を取得し、それから残りのコードを実行しています。問題は2048x2048で、Portalと同じように高品質に見えますが、FPSの損失が大きくなります。これを解決するには、テクスチャの品質を下げるか、テクスチャを更新する回数を減らす必要があります。 Valveは、高フレームレートの損失を引き起こすことなく、高品質のポータル効果を実現しました。どうすれば同じことができますか?フレームロスを引き起こさずに高解像度テクスチャにレンダリングするための良いアイデアはありますか? Unityの組み込みシステムを使用するのではなく、テクスチャにレンダリングするための独自のコードを作成することを検討しています。それは実行可能ですが、間違いなく面倒です。ですから、考え、アイデア、提案は高く評価されます。
9 unity  valve  portals 

3
スプライトの概要
現在2Dゲームに取り組んでおり、現在の仕事は選択したオブジェクトの輪郭を描くことです。 基本的にぼかしシェーダーを使用して完全に実行します。最初に垂直ガウスぼかしシェーダーを使用してスプライトを描画し、次に水平ガウスぼかしシェーダーを使用してスプライトを描画してから、通常どおりスプライトを描画します。 これが私のぼかしシェーダーです:sampler TextureSampler:register(s0); #define SAMPLE_COUNT 15 float2 SampleOffsets[SAMPLE_COUNT]; float SampleWeights[SAMPLE_COUNT]; float4 PixelShaderFunction(float2 texCoord : TEXCOORD0) : COLOR0 { float4 c = 0; // Combine a number of weighted image filter taps. for (int i = 0; i < SAMPLE_COUNT; i++) { c += tex2D(TextureSampler, texCoord + SampleOffsets[i]) * SampleWeights[i]; …


2
パスをスムーズにたどる
私は現在、敵が従う静的な所定のレーンを使用して2Dタワーディフェンスゲームを作成しています(つまり、タワーはパスをブロックできず、パス検索は解決しようとしている問題ではありません)。 私は、ユニットがこのレーンをスムーズに進む方法を正確に理解しようとしています。私はこれを行う方法について2つの大まかなアイデアを持っていますが、実装が容易である/より標準的なテクニックである可能性が高いいくつかの入力が好きです。またはもちろん、まったく考えていない方法がいくつかある場合は、それについても学びたいと思います。 ウェイポイント: 私の最初のアイデアは、パスを一連のハードコードされたウェイポイントとして定義することでした。次に、ユニットは基本的な「シーク」ステアリングアルゴリズム(このアルゴリズムなど)を使用して、パスに沿った各ウェイポイントに連続して移動します。しかし、ユニットが私が従うべきレーンから大きく逸脱しないようにするのは難しいのではないかと思いました。十分に鋭く曲がることができないと、希望のレーンから「滑空」する可能性があるのではないでしょうか。比較的強い操舵力をかけることでそれを防ぐことができるのではないでしょうか? ベジエ曲線: 私が検討した2番目のソリューションは、ベジエ曲線でパスを定義し、各タイムステップでユニットの現在の位置から(dt *速度)離れた曲線に沿ったポイントを計算することです。このテクニックを使用すると、ユニットがたどるパスを正確に定義することがはるかに容易になると思いますが、これを実装する方法を正確に知ることはできません。助言がありますか? また、これで誰かの答えが変わることはありませんが、ユニットはパスに沿って一定の速度で移動できなければなりません。さらに、私はpygletフレームワークを使用してこのゲームをpythonでプログラミングしています。 質問について不明な点がある場合はお知らせください。 編集:また、その価値にかかわらず、私は王国ラッシュでの敵の移動行動を再現しようとしています。

1
Unity3Dでライトを遮る方法は?
まず、私はUnity Proを所有しています。 パフォーマンスを改善するために、ライトがしばらく表示されていないときにライトを遮ることを検討してきました。私が遭遇した主なメソッドは、BecameVisible()を使用してカメラ錐台をテストすることでした。 私の主な問題は、プレーヤーがライトで照らされるエリアを表示している場合でも、ライトをオンにしたいということでした。 現在、照明領域がカメラの錐台にあるかどうかを確認する方法を使用していますが、問題は、プレーヤーが実際には見えない(例:それらとプレーヤーの間の壁)照明が錐台にあることです。私はそれらにレイキャスティングを試みましたが、実際の照明領域の詳細を十分に得ることはできません(レンダラー。バウンド.extentとrenderer.bounds.centerを使用して、ライトからの最大照明点を計算するのが最善でした)。 Unity Proでライトを遮る簡単な方法を知っている人はいますか?または、私が話していたカメラの支点方式を使用する良い方法を教えていただけませんか?

2
レベルエディターで視差レイヤーを視覚化するにはどうすればよいですか?
Unityで2Dゲームを作成していますが、これはどの2Dゲームエンジンにも当てはまります。 正射投影カメラで多平面視差を実装する場合、背景レイヤーのスプライトをレイアウトし、それらが他のレイヤーのスプライトとどこに並ぶかを知ることは困難です。 私の最初の本能は、各レイヤーに1つずつ複数のカメラを使用し、背景レイヤーのカメラの移動速度を縮小することでした。これにより、すべての背景スプライトをフレームごとに移動する必要がなくなります。問題は、半分の速度で移動するレイヤーが、エディターで表示したときにメインレイヤーの半分のスペースを占めることです。そのため、ゲームをレイアウトするときにスプライトをどこに配置するかを知ることは困難です。レイヤー数を増やすと、問題は指数関数的に悪化します。 どうすればこれを回避できますか?エディターで作業しながら、レイヤーを意図した移動速度で逆スケーリングしてみました。これにより、すべての背景スプライトがメインレイヤーに対して正しい位置に配置されますが、ひどく歪んでいます。 視差の背景をテストするために、それを吸い上げて、エディターと実行中のゲームを常に切り替える必要がありますか?

2
サーバーの作成時にログインとゲームのロジックを分割する方法は?
私はポーカーのようなゲームサーバーを構築しています。すべてのログインとゲームロジックを1つのサーバーで処理する予定でしたが、Webでの調査から、これはスケーリングされないことがわかり、分割することは理にかなっています。ログインおよびゲームサーバーへの作業。しかし、ログインサーバーで認証を処理し、クライアントにゲームサーバーへの新しい接続を確立させた後、どのクライアントがどれであるかをどのようにして知ることができませんか?再度ログインする必要がなく、ログイン用のサーバーを用意する目的を無効にする必要はありませんか?知らないプロセスやマシンに接続を渡す方法はありますか?ネットワーキングについての私の小さな知識を失礼します。

2
レイキャスティングを使用して2Dグリッドに見通し線を実装するより効率的な方法は?
タイルの2Dグリッドと、見通し線を表す、プレーヤーの中心にある座標の近似球を考えます。目標は、障害物(つまり、壁)を超えた視線を遮断することです。 視野内の個々のセルが表示されているかどうかを判断するのは比較的簡単です。ブレゼンハムを使用して、プレーヤーからターゲットセルに光線をキャストします。プレーヤーとターゲットの間で重なっているセルの1つが障害物である場合、ターゲットセル見えません。 さて、私の最初の考えは、見通し内のすべてのグリッドセルを反復処理することでしたが、これは私には非効率的です。たとえば、プレーヤーが壁の隣に立っていて、壁の向こう側のセルが表示されていないと判断した場合、それ以降はレイのすべてのセルが非表示になると判断できます。 また、視野範囲の周囲に沿って各セルにレイをキャストし、各レイに沿って各セルを反復することも検討しましたが、一部のセルを複数回処理することになります。 これを行うより効率的な方法はありますか? 1ターンあたり50セルまで反復することは比較的軽量な計算ですが、私はスピードを求めています。目標は、自動再生で毎秒数ターンを循環できるようにすることです。だから、私がこれをもっと効率的にできるほど、より良いです。

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