ゲーム開発

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

5
オーディオプログラミングリソース[終了]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 オーディオプログラミングに参加することについて、過去数か月に非常に興味を持っていました(私は音楽的な出身です)。私は2年間.NET開発者として働いており、最近ではiPhoneアプリの目的cも行っています。私はおそらくC ++チョップで作業する必要があり、FMOD EXで遊んだり、業界について多くの研究を行ったりしていることに気づきました。 オーディオプログラミングのための優れたリソース(ウェブサイト、ポッドキャスト、書籍、ビデオ、オンラインコースなど)を誰かが提案できるかどうか疑問に思っていました。フーリエ解析、低レベルコーディング、オーディオエンジンの作成からオーディオAPIまで、あらゆるもの。出来るだけ学びたい! 前もって感謝します。
8 c++  audio  sound 

5
ホーミングミサイルの単純な比例航法の実装
私はプロポーショナルナビゲーションの可能な限り単純な形式を実装しようとしています。つまり、ミサイルはターゲットからターゲットへの方向が変化する方向に向きを変え、ターゲットからターゲットへの方向が変化しなくなったら、迎撃コースにいます。 それで、私は2Dミサイルが直面している方向に一定の速度で移動していて、一定の速度で回転することができ、間隔ごとに次のようなものでミサイルを更新します: Position += VectorProduct (Direction * Speed * TimePassed) PreviousTargetBearing = TargetBearing TargetBearing = AngleBetween(TargetPosition, Position) TargetBearingDelta = TargetBearing - PreviousTargetBearing If TargetBearingDelta > 0: MissileDirection += TurnRate * TimePassed If TargetBearingDelta < 0: MissileDirection -= TurnRate * TimePassed 問題は、ミサイルが常に発射方向を中心に振動することです。これは、ミサイルが最初に回転するとすぐに、TargetBearingDeltaの符号が反転し、反対方向に回転するためです。 この問題を解決する最も簡単な方法は何ですか?私は簡単なものを見逃していると確信しています。 関連するStackOverflowの質問:ゲームの「インターセプトミサイル」を作成する方法は? 繰り返しになりますが、私は特に、一般的なホーミングアルゴリズムではなく、比例ナビゲーションアルゴリズムの実装に関心があります。 更新:明確な答えは、方位をチェックして毎ターン方向を調整するのではなく、2つを交互に行うことだと思います。やってみます。
8 ai 

1
ゲームの経過時間がXNAの合計ゲーム時間と異なるのはなぜですか?
私が使用しての3つの異なる方法をしようとしていたElapsedGameTimeし、TotalGameTimeそれに応じて描かれた/、私は完全に一致したいので、そのすべてが更新されます。 私が試したので、私は非常に最初の更新ということを学んだ、ElapsedGameTimeとTotalGameTimeの両方0です。 2番目の更新ElapsedGameTimeは0.0166667で、これは正しい(毎秒60回の更新)です。しかしTotalGameTime、0です。理由はわかりません。 したがって、3回目の更新(time += gameTime.ElapsedTime)から追加を開始した場合、ElapsedGameTimeはに等しくなりますTotalGameTime。それ以外の場合は、常に0.0166667の差があります。 誰かが私にそれを説明できますか? 更新:コード using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; using System.Diagnostics; namespace TestTime { class TimeTest2 { TimeSpan totalTimeElapsed; TimeSpan frequency = TimeSpan.FromSeconds(5.5f); int times = 0; int timesCheckpoint …
8 c#  xna 

1
車両の微分プログラミング
私の車の中で、内側のタイヤが外側のタイヤよりも速く動いているので、高速で曲がるときに、車が奇妙に振る舞うところです。だから私は差動でプログラムする方法を理解する必要がありますが、私はそれを正しく機能させることができないようですので、私は誰かがこれについての経験があるかどうかを確認するためにここにいます。 オンラインで物理を確認しましたが、ゲームで提供できる情報よりも多くの情報が考慮されているようです(車両への実際の重力の影響など)。現在、私は次のロジックを使用して、差動ホイール速度を決定しています。わかりやすく説明するように心がけますので、わかりにくい場合やわかりにくい場合は、お詫びいたします。 これが私がすることです: 私は現在のターンの度合いを最大ターン量で割ってパーセンテージを取得し、そのパーセンテージを取り、それをモディファイアパーセンテージに適用しますエンジンの速度?速度?)次に、私のディファレンシャルで、車両が左または右に曲がっているかどうかを確認し、片側の速度をx%減らし、反対側の速度を同じx%増やします 私の最大の問題は、私がターンの割合を減らすために補っている数であると確信していますが、そこに何を置くべきかわかりません。ターン%をディファレンシャル(40%など)に直接渡すと、片側が40減少し、もう一方が40増加することを知っています。これは明らかに正しくありません。 エンジン速度、トランスミッション、各車輪の車軸速度、トルク、車両速度などにアクセスできますが、この式を実行するときにこれらのどれを考慮に入れるべきかわかりません。 多分それを複雑にしすぎているのかもしれませんし、多分それを単純化しすぎているのかもしれません。これを理解するための助けがあればすばらしいでしょう!

3
精度と距離の式
シューティングゲームとターゲットを考えてみましょう。私の質問は、シューターがターゲットに命中する確率を計算する現実的な近似があるかどうかです。 武器と射手のスキルを無視すると、一次近似は、ヒットする確率が1 / r ^ 2に比例するはずだと思います。ここで、rはターゲットまでの距離です。 この関係への動機は、シューティングゲームを中心とする球の領域がr ^ 2として減衰するという考えを使用することに由来します。したがって、ターゲットにヒットする確率は、最悪の場合、1 / r ^ 2に減衰するはずです。 私はどんな武器についてもいくつかの関係をグーグルで試しましたが、何も見つかりませんでした... このトピックに関する詳細情報を知っている人はいますか?この近似は有効ですか? 編集: 質問の詳細:私は戦術ゲームを考えています。特に、2つのユニット間の射撃をモデル化したいと思います(したがって、FPSゲームではなく、プレイヤーは狙いを定めず、注文を出します)。そのために、ユニットにはある程度の経験があり、武器にはある程度の精度があり、環境(霧、植生など)は全体的な精度に影響を与えると考えています。いくつかの難しいモデルを使用する前に、テストする最も簡単なモデルは、すべての要因を一定にして、精度は距離にのみ依存することです。 問題は、この精度が距離にどのように依存するかです。私の最初の推測は、1 / r ^ 2の崩壊でしょう。しかし、コメントでよく言及していますが、これは非常に急速な減衰のように見えます。

3
PyGame QIXクローン、塗りつぶし領域
私はPyGameで遊んでいます。 今私はQIXクローンを実装しようとしています。 ゲームループがあり、画面上でプレーヤー(カーソル)を移動できます。 QIXでは、プレーヤーの動きによって画面に痕跡(尾)が残り、ポリラインが作成されます。 画面境界を持つポリラインがポリゴンを作成する場合、領域は塗りつぶされます。 どうすればこの動作を実現できますか? 尾をどのようにメモリに保存しますか? 塗りつぶす必要のある閉じた形状を構築するときにそれを検出する方法は? 私は正確な実用的なソリューションを必要としません、いくつかのポインター、アルゴ名はクールでしょう。 開始時、灰色の境界線のみがあり、プレーヤーがカーソルを移動できます。 最初のシナリオ: ユーザーは、カーソルをポイントAからポイントBに移動し、赤いマルチラインをポイントCまで描画します。この時点で、境界を越えているため、ポイントAは自動的にポイントCに接続され、塗りつぶされるべきポリゴンが作成されます(私の図面上のそのオレンジ色のもの)。ポリゴンの塗りつぶしはPyGameでは非常に簡単です。私がポイントのシーケンスを提供し、残りはPyGameが処理するためです。 2番目のシナリオ: ユーザーはボーダーをポイントDに移動し、そこからラインEに線を引きます。前のポリゴンのラインと交差しているため、ラインとボーダーで別のポリゴンを作成できるので、それも塗りつぶす必要があります。(緑色のもの)。 3番目のシナリオ: プレイヤーはポリゴン上をさらに移動し(既存のポリゴンライン上を移動できます)、ポイントGからポイントFにラインを描画します。ここでも、境界線と既存のラインのため、別のポリゴン(青色のポリゴン)を塗りつぶす必要があります。

2
歪みのないビルボードレンダリング?
私はUnity内のビルボードに標準的なアプローチを使用していますが、これは問題ありませんが、理想的ではありません。 transform.LookAt(camera) 問題は、特に視野角が大きくなると、ビューポートのエッジに向かって歪みが発生することです。これは、例えば、あなたが見る完璧なビルボードとは異なります。スクリーンスペースのどこにいるかに関係なく、任意の角度から敵を見ると破滅します。 明らかに、画像をビューポートに直接ブリットして単一の頂点を中心に配置する方法がありますが、シェーダーは苦手です。 誰かがこのアプローチのサンプル(可能な場合はGLSL)を持っているか、それが通常この方法で行われない理由(前述の四角形変換メソッドと比較して)に関する提案はありますか? 編集:私は混乱しました、頭を上げてくれたネイサンに感謝します。もちろん、クワッドにカメラを向けさせても、クワッドがビュープレーンに平行になることはありません-これが必要です。
8 unity  shaders  glsl 

3
武器の有効性と入手の難しさの適切な難易度はどれくらいですか?
私はボクセルベースのアドベンチャーゲームの設計ドキュメントを書いています。これはminecraftに似ていますが、根本的に壊れたゲームのメカニズムをたくさん修正するか、少なくともそれらのメカニズムをアドベンチャーゲームにより適するように更新しています。 1から10の武器が最も強力で、1から10の武器が最も強力である1〜10の武器スケールの作成を検討しています。レベル1の武器で最も一般的な武器、最も強力な武器で10倍一般的ではない武器にするための材料を作ることを検討していましたが、Minecraftを見ると、ダイヤモンドは0.1%のブロックでのみ発生し、それでもまだあまりに一般的であると感じます、もちろん死ぬ傾向がない限り。 アドベンチャーの焦点に合わせて、武器の上位Tierをモンスタードロップからのみ、またはレアモンスタードロップと地雷除去アイテムの組み合わせからのみ取得する方がよいでしょうか、または私が使用できる他の一般的なゲームメカニズムはありますか?入手も難しいが、入手する価値がある超強力な武器? 別の言い方をすれば、時間への投資として、10倍の強力な武器を入手するのに10倍、または20倍以上かかるか。プレイヤーがアイテムを磨く時間の「楽しみ」と、機器を入手するための適切な時間投資スケールとの間に相関関係を示す研究はありますか?


1
C#/ XNAゲームでIronPythonコンポーネントと通信するにはどうすればよいですか?
私のXNAゲームはコンポーネント指向であり、位置、物理表現、レンダリングなどのさまざまなコンポーネントがあり、すべて基本Componentクラスを拡張しています。プレーヤーと敵にも、現在C#で定義されているコントローラーがあります。それらをIronPython(Pythonの.NET実装)を介してPythonスクリプトに変換したいと思います。私の問題は、これらのスクリプトの操作方法がわからないことです。 C#アプリケーションへのIronPythonの埋め込みの例は、Pythonスクリプトをコンパイルし、Pythonを介してコントローラーのUpdateメソッドを呼び出すスクリプトコンポーネントのようなものを作成する必要があることを示唆しています。 。 研究で何かが足りないように感じます。そこなければならないスクリプトをロードするための方法であること、(いずれかのC#のPythonスクリプト内または中)Pythonオブジェクトをインスタンス化して、その後、持っている直接私のC#コードでそのPythonオブジェクトへの参照を。 IronPythonオブジェクトを直接操作する方法はありますか、またはラッパーが必要ですか?

3
地形のような立方体を表すBullet Physics CollisionObjectを実装するにはどうすればよいですか?
Bullet Physicsライブラリをエンティティ/コンポーネントシステムに正常に統合しました。エンティティは互いに衝突する可能性があります。次に、有限で立方体のような地形と衝突できるようにする必要があります(InfiniMinerまたはそれのクローンMinecraftと考えてください)。昨日、Bullet Physicsライブラリを使い始めたばかりなので、何か明らかなことが足りないのかもしれません。 これまでのところRigidBody、checkCollisionWith(CollisionObject co)関数をオーバーライドするようにクラスを拡張しました。現時点では、他の形状を使用せずに、単なる原点のチェックです。後で繰り返します。現時点では、次のようになっています。 @Override public boolean checkCollideWith(CollisionObject co) { Transform t = new Transform(); co.getWorldTransform(t); if(COLONY.SolidAtPoint(t.origin.x, t.origin.y,t.origin.z)){ return true; } return false; } これは、衝突がいつ発生したかを検出する限り、うまく機能します。ただし、これは衝突応答を処理しません。デフォルトの衝突応答は、衝突しているオブジェクトを他のシェイプ(おそらくAABB)の外側に移動するようです。 現時点では、地形の形状は世界と同じ大きさの箱にすぎません。つまり、地形と衝突するエンティティは、そのワールドサイズのボックスの外側に向かって発射されます。そのため、衝突応答を変更する必要があるか、地形の形状に直接適合する形状を作成する必要があることは明らかです。では、どのオプションが最適で、どのように実装するのですか?おそらく、私が考えていないオプションがあるのでしょうか? 地形は動的で、プレイヤーによって頻繁に変更されることに注意してください。

2
妥当な4XゲームAIを行う
私はかなり「単純な」4Xゲームをコーディングしています(4Xゲームが単純な場合)。それはインディーズの範囲内であり、何ヶ月もかけてコーディングをせずに、まずまずのAIを思い付くことができるかどうか疑問に思っています。 ゲームには3つの主要な意思決定部分があります。生産ポイントの消費、移動ポイントの消費、技術ポイントの消費(基本的に3つの異なる「通貨」があり、ターン終了時に未使用の通貨は保存されません) 生産ポイントを使う 惑星をアップグレードする(技術と生産を増やす) 造船(3種類) 惑星から惑星への船の移動(移動ポイントを計算) 攻撃する 要塞に移動 Research Tech(Master of Orionのように、技術を部分的に研究できます) 私の現在の計画は、力ずくのアプローチです。プレーヤーには基本的に4つの幅広いオプションがあります- 惑星をその生産と技術出力にアップグレードする できるだけ多くの惑星を征服する できるだけ多くの惑星を確保する できるだけ早く特定の技術にアクセスする 決定ごとに、可能なオプションを繰り返し、スコアを出します。AIは最も高いスコアの決定を選択します。現在、私はどのように「決定を混合する」か分かりません。つまり、たとえば、AIは惑星のアップグレードと征服を同時に望んでいます。これらの4つの決定の組み合わせでブルートフォース最適化を実行する別のロジックを使用できると思います。 少なくとも、これ以上何も考えられない場合の私の計画です。合格できるAIを作成するより速い方法はありますか?ディープブルーなどに対抗するために、知性の幻想を持っているものだけは必要ありません。 初めてこの規模でAIを実行するので、あまりにも壮大なことはしないでください。これまでのところ、FSM、DFS、BFS、A *の経験があります。
8 ai  4x 

3
このA *検索パスファインディングアルゴリズムを調整して、さまざまな地形の動きの値を処理するにはどうすればよいですか?
Diablo IIと同様のインタラクションデザインを備えた2Dマップベースのアクションゲームを作成しています。つまり、プレーヤーはマップをクリックしてプレーヤーを移動します。プレイヤーの動きを終えて、パスファインディングに移ります。 ゲームでは、敵はプレイヤーのキャラクターを充電する必要があります。異なる移動ボーナスを与える5つの異なる地形タイプもあります。AIがこれらの地形のボーナスを利用して、プレイヤーに到達しようとします。 A *検索アルゴリズム(http://en.wikipedia.org/wiki/A*_search_algorithm)をチェックアウトするように言われました。私は、HTML5とJavaScriptでこのゲームをやって、そしてJavaScriptでバージョンを見つけたんだ:http://www.briangrinstead.com/blog/astar-search-algorithm-in-javascript私はそれを微調整する方法を把握しようとしていますでも。 以下は、私が変更する必要があるものについての私の考えです。他に何を心配する必要がありますか? グラフを作成するときは、渡した2D配列を、さまざまな地形タイプに対応するマップのトラバーサルで初期化する必要があります。 graph.js:「GraphNodeType」の定義を変更して、5つの地形タイプを処理する必要があります。壁はありません。 astar.js:gとhのスコアリングを変更する必要があります。どうすればよいですか? astar.js:isWall()はおそらく削除する必要があります。私のゲームには壁がありません。 astar.js:これが何であるかわかりません。処理が有効でないノードを示していると思います。しかし、これはいつ起こりますか? 高いレベルで、このアルゴリズムを「ああ、そこに壁はありますか?」からどのように変更しますか?「この地形は、周囲の地形よりも速くプレイヤーに到達しますか?」 時間の関係で、私は敵にブレゼンハムのアルゴリズムを再利用することについても議論しています。残念ながら、さまざまな地形の動きのボーナスはAIによって使用されないため、ゲームは夢中になります。:/私はこれをプロトタイプに取り入れたいのですが、私は貿易開発者ではなく、コンピュータ科学者でもありません。:D 私が探していることを実行するコードを知っている場合は、共有してください! このための健全性チェックのヒントも高く評価されています。
8 javascript  ai  html5 

3
D3D9およびOpenGL頂点データ管理のためのより良い抽象化レイヤーとは何ですか?
私のレンダリングコードは常にOpenGLでした。OpenGLがないプラットフォームをサポートする必要があるため、OpenGLとDirect3D 9をラップする抽象化レイヤーを追加する必要があります。Direct3D11は後でサポートします。 TL; DR: OpenGLとDirect3Dの違いにより、プログラマーに冗長性が生じ、データレイアウトが不安定に感じられます。 今のところ、私のAPIは少しこのように動作します。これがシェーダーの作成方法です。 Shader *shader = Shader::Create( " ... GLSL vertex shader ... ", " ... GLSL pixel shader ... ", " ... HLSL vertex shader ... ", " ... HLSL pixel shader ... "); ShaderAttrib a1 = shader->GetAttribLocation("Point", VertexUsage::Position, 0); ShaderAttrib a2 = shader->GetAttribLocation("TexCoord", VertexUsage::TexCoord, 0); …

2
1つの非常に長い作品を精神的にどのように処理しますか[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 8年前に閉鎖。 これは私のゲーム業界での最初の仕事であり、私の仕事は1つの主要なゲームコンポーネントを取り出して、新しいものに組み込むことです。 これまでのところ5週間が経過していますが、私はまだエラーを見つめています。コンパイルできるようになるまでに数か月かかると思います。本当に落ち込んでいる。私は物事を変えているだけで、自分で何かを書いているわけではありません。それは無限です。私は千のエラーを修正し、九千がそれらの代わりになります。 これは当たり前のことだと思いますので、どうすればこれに対処できるのでしょうか?私はそれを少しのチャンクに分解することはまったくできないようです。

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