ゲーム開発

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

1
Device Centralが停止したので、Flash Liteアプリケーションをテストするにはどうすればよいですか?
私は、Nokia 5530しか持っていない彼女のシンプルなゲームを作るためにFlash Liteを使用しようとしていますが、CS6でAdobeがDevice Centralを殺したことに気付いたので、デバイスなしでそれをテストする方法はありません(そしてそれは驚きになるはずです)。 それをテストする他の方法はありますか?ムービーをエクスポートしてFlash Playerを使用できることはわかっていますが、Device Centralを使用すると、たとえばドラッグアンドドロップやメモリ/プロセッサの使用をテストできます... tl; dr、古いデバイスでFlash LiteをテストするためのDevice Centralの代替はありますか?
10 flash 

3
コンポーネントベースのゲームでエンティティの状態とアニメーションを更新するにはどうすればよいですか?
学習目的で(後で一部のゲームで使用するため)コンポーネントベースのエンティティシステムを設計しようとしていますが、エンティティの状態の更新に関して問題が発生しています。 コンポーネント間の依存関係を防ぐために、コンポーネント内にupdate()メソッドを含めたくありません。 私が現在考えているのは、コンポーネントがデータを保持し、システムがコンポーネントを更新することです。 したがって、Transform、Movement、State、Animation、Renderingの各コンポーネントを持ついくつかのエンティティ(たとえば、player、enemy1、enemy2)を含む単純な2Dゲームがある場合、次のようにする必要があります。 すべてのMovementコンポーネントを移動し、Stateコンポーネントを更新するMovementSystem また、アニメーションコンポーネントを更新するRenderSystem(アニメーションコンポーネントは、状態ごとに1つのアニメーション(つまり、フレーム/テクスチャのセット)を持つ必要があり、それを更新することは、現在の状態に対応するアニメーション(jumping、moving_leftなど)を選択することを意味します。フレームインデックスの更新)。次に、RenderSystemは、Renderコンポーネントを各エンティティのアニメーションの現在のフレームに対応するテクスチャで更新し、すべてを画面にレンダリングします。 Artemisフレームワークのようないくつかの実装を見てきましたが、この状況を解決する方法がわかりません。 私のゲームに次のエンティティがあるとします。各エンティティには、一連の状態と、状態ごとに1つのアニメーションがあります。 プレーヤー:「アイドル」、「移動」、「ジャンプ」 enemy1:「moving_up」、「moving_down」 enemy2: "moving_left"、 "moving_right" 各エンティティの現在の状態を更新するために最も受け入れられているアプローチは何ですか?考えられる唯一のことは、エンティティのグループごとに個別のシステムを持ち、状態コンポーネントとアニメーションコンポーネントを個別に持つことです。そのため、PlayerState、PlayerAnimation、Enemy1State、Enemy1Animation ... PlayerMovementSystem、PlayerRenderingSystem ...がありますが、これは悪いことだと思いますソリューションとコンポーネントベースのシステムを持つ目的を壊します。 ご覧のように、私はここでかなり迷っていますので、どんな助けにも感謝します。 編集:私が意図したとおりにこの作業を行うための解決策はこれです: すべてのエンティティに使用できるように、statecomponentとanimationcomponentを十分に汎用的にします。それらに含まれるデータは、再生されるアニメーションや使用可能な状態などを変更するための修飾子になります。–バイト56 今、私はこれらの2つのコンポーネントを再利用できるように十分に汎用的に設計する方法を理解しようとしています。各状態(ウォーキング、ランニングなど)のUIDを持ち、この識別子でキー設定されたAnimationComponentにマップ内のアニメーションを格納することは良いソリューションでしょうか?

1
スキャンラインを使用したZバッファーの深度補間
私は独自のソフトウェア3dラスタライザを作成する必要があります。これまでのところ、三角形で作られた3dモデルを2d空間に投影できます。 ポイントを回転、移動、投影して、各三角形の2D空間表現を取得します。次に、3つの三角形のポイントを取り、スキャンラインアルゴリズムを実装して(線形補間を使用)、三角形のエッジ(左と右)に沿ってすべてのポイント[x] [y]を見つけて、三角形を水平にスキャンできるようにします。行ごとに、ピクセルで塗りつぶします。 これは機能します。ただし、zバッファリングも実装する必要があります。これは、三角形の3つの頂点の回転および変換されたz座標がわかっているため、スキャンラインアルゴリズムで見つけた他のすべての点のz座標を補間する必要があることを意味します。 概念は十分にはっきりしているように見えます。私はまずこれらの計算でZaとZbを見つけます。 var Z_Slope = (bottom_point_z - top_point_z) / (bottom_point_y - top_point_y); var Za = top_point_z + ((current_point_y - top_point_y) * Z_Slope); 次に、各Zpに対して水平方向に同じ補間を行います。 var Z_Slope = (right_z - left_z) / (right_x - left_x); var Zp = left_z + ((current_point_x - left_x) * Z_Slope); そして、現在のzがそのインデックスで以前のzよりもビューアに近い場合は、カラーをカラーバッファに書き込み、新しいzをzバッファに書き込みます。(私の座標系はx:左->右、y:上->下、z:あなたの顔->コンピュータ画面です;) 問題は、それが問題になることです。プロジェクトがここにあり、「Z-Buffered」ラジオボタンを選択すると、結果が表示されます(「Z-Buffered」モードでは、ペインターのアルゴリズム(ワイヤフレームを描画する場合のみ)を使用していることに注意してください)デバッグ用) PS:補間する前にzを逆数(つまり)に変換する必要があることをここで読みましたz = …

3
ゲーム理論とゲーム開発の間には何か関係がありますか?
私はJavaプログラマーであり、Javaでゲームを学ぶことに興味があります。最近、Wayne L.Winstonが書いたOperations Researchの本を見ました。ゲーム理論についてのトピックがあります。 それは本当に数学的です。私は単なるアプリ開発者ですが、その本はゲームのキャリアを始めるのに役立ちますか?
10 java  game-theory 

1
Bullet Physics-リジッドボディから直接光線を投射する(一人称カメラ)
Bulletを使用して一人称カメラを実装しました。これはカプセル形状の剛体です。Bulletを使用して数日しか経っていませんが、物理エンジンは初めてです。私はそれbtRigidBody::setLinearVelocity()を移動するために使用し、それは世界と完全に衝突します。唯一の問題は、Y値が自由に移動することです。これは、ボディを移動する前に、並進ベクトルのY値をゼロに設定することで一時的に解決しました。これは、高所から落下する場合を除いて、すべての場合に機能します。 体が背の高いオブジェクトから落ちた場合でも、移動ベクトルのY値がゼロに設定されているため、移動を停止して地面に落ちるまで速度は設定されます。これを解決するには、ボディからレイをダウンキャストしてワールドのY値を決定し、その値とカメラボディのY値の差を確認して、次の場合は動きを無効にするか、速度を遅くします違いは十分に大きいです。 光線を投射し、光線が当たった世界のY値を特定するだけで、少し行き詰まりました。私はこのコールバックを実装しました: struct AllRayResultCallback : public btCollisionWorld::RayResultCallback{ AllRayResultCallback(const btVector3& rayFromWorld, const btVector3& rayToWorld) : m_rayFromWorld(rayFromWorld), m_rayToWorld(rayToWorld), m_closestHitFraction(1.0){} btVector3 m_rayFromWorld; btVector3 m_rayToWorld; btVector3 m_hitNormalWorld; btVector3 m_hitPointWorld; float m_closestHitFraction; virtual btScalar addSingleResult(btCollisionWorld::LocalRayResult& rayResult, bool normalInWorldSpace) { if(rayResult.m_hitFraction < m_closestHitFraction) m_closestHitFraction = rayResult.m_hitFraction; m_collisionObject = rayResult.m_collisionObject; if(normalInWorldSpace){ m_hitNormalWorld = rayResult.m_hitNormalLocal; } else{ …

1
浮動小数点精度(fp:preciseとfp:fast)
CまたはC ++では、浮動小数点精度のコンパイラオプションは、実際の(スモール/インディーズ)ゲームに本当に違いをもたらしますか? 私の観察によると、fp:fastの設定はfp:preciseよりも何倍も速く、私がここで理解していることから(/programming/6889522/fpfast-vs-fpprecise-what-kind-of-errors-can -i-encounter)2つのコンパイラオプション間の精度の違いは、浮動小数点数の16桁目からのみ変更されます。 fp:fastを使用しているときに2Dまたは3Dゲームでひどく間違った例を見つけた人はいますか? 編集:明確にするために、私は浮動小数点値自体の精度については質問していません(つまり、浮動小数点と倍精度と10進数)。コンパイラオプションに関連する精度についてのみ。
10 c++  c  floating-point 

4
エンティティシステムとレンダリング
わかった、これまで私が知っていること。エンティティには、次のような情報を保持するコンポーネント(データストレージ)が含まれています。-テクスチャ/スプライト-シェーダー-など そして、これをすべて描画するレンダラーシステムがあります。しかし、私が理解していないのは、レンダラーの設計方法です。「ビジュアルタイプ」ごとに1つのコンポーネントが必要ですか。シェーダーなしのコンポーネント、シェーダー付きのコンポーネントなど これを行うための「正しい方法」についての入力が必要です。注意すべきヒントと落とし穴。

6
非対話型RPGバトルシステムにはどのような形態がありますか?
プレイヤーが戦闘に入る前にパーティーやキャラクターの戦闘計画やセットアップ戦略を立てられるシステムに興味があります。戦闘中、プレーヤーはコマンドを入力できないか、または入力しないことを選択できます。 ルールベース このシステムでは、プレーヤーは[条件->アクション]の形式でルールのリストを設定でき、優先度順に並べられます。 ファイナルファンタジーXIIのギャンビット ドラゴンエイジオリジン&IIの戦術
10 rpg  strategy 

4
無料のアプリでカスタム支払いが行われた場合、AppleとGoogleは共有を要求しますか?
マルチプラットフォームゲーム(web / iOS / Android)を作成しています。無料版でもコアゲームは完全にプレイできますが、支払いを選択した人はより多くのソーシャル機能を利用できます(もちろん広告はありません)。 私はすべてのプラットフォームに無料版と有料版を用意するのではなく、無料でアプリをリリースすることができ、ユーザーがそれ以上欲しい場合は、登録して1回限りの料金を支払う必要があると考えていました(支払いゲートウェイまたはPayPalを介して) )。追加のコンテンツは、アクセスできるすべてのクライアントで利用できます。理論的には、これはプレーヤーにとってより良い価値を意味し、私にとってメンテナンスと頭痛が減ります(明らかに私はすべての支払いトラブルを自分で処理する必要があります)。 Apple / Googleのビジネスモデルに適合しますか?それとも、彼らはまだ登録料のシェアを主張しますか?

2
3Dパーリンノイズで生成されたときにフローティングテレインを削除する方法
私は現在3Dパーリンノイズを使用して、マーチングキューブと組み合わせてランダ​​ムな地形を生成しています。 私の問題は、地形の適度な高さを得るためにノイズ関数をスケーリングすることにあるようです。1オクターブのみを使用する場合、ノイズに関連するすべてのポイントが明らかに補間され、その結果、かなり滑らかなデータになります。ただし、オーバーハング/キャビティ/ギザギザの地形を取得するには、さまざまな振幅を持つ複数のオクターブを使用するか、結果の値をマップに必要な「最大」の高さにスケーリングする必要があります。 何かが足りないかもしれませんが、3Dパーリンノイズのあるマーチングキューブを使用することで、定期的にテレインのフローティングビットを取得します。 これをどのように修正できるか、または説明しているような結果を得るために使用できる他のノイズ関数があるかどうかについてのアイデアはありますか?丘、谷、山、湖などが欲しいのですが。マップの他の部分から分離された浮動ビットは必要ありません。これは、Minecraftが生成時に時折空に浮かぶだけの地形がある場合と同じ問題であると思います。 助けてくれてありがとう、神話


4
マルチプレイヤーの不正行為を防止
小さなインディースタイルのマルチプレイヤーゲームの開発はほぼ完了です。私は人々がシングルプレイヤーでチートすることを許可するつもりですが、これは明らかにマルチプレイヤーでは受け入れられません。平均的なジョーがチートエンジンのようなものを使用してゲームの一部を変更するのを止めるのに役立つ方法を知っている人はいますか?私は現在、クライアントがゲームで使用する各設定ファイル(XMLとして保存)のMD5ハッシュを数秒ごとに検証のためにゲームサーバーにアップロードすることを計画していますが、メモリエディターなどを停止するためにできることはありますか? ?

2
定期的なXNAスタッター
ハードウェアのインスタンス化を実行しようとしていますが、奇妙なパフォーマンスの問題が発生しています。平均フレームレートは約45ですが、非常に不安定です。 窓付き SynchronizeWithVerticalRetrace = false IsFixedTimeStep = false PresentationInterval = PresentInterval.Immediate 下の画像は測定したタイミングを示しています(を使用Stopwatch)。一番上のグラフはDrawメソッドで費やされた時間で、一番下のグラフは終了からDraw開始までの時間ですUpdate スパイクはほぼ正確に1秒間隔であり、常に通常の時間の2、3、4、または5倍です。スパイクの直後のフレームにはまったく時間がかかりません。ガベージコレクタではないことを確認しました。 私は現在、100万のインスタンスを持つ12個の三角形と36個の頂点で構成されるメッシュを三角形リストとしてインスタンス化しています(最適ではないことを知っていますが、テスト用です)。インスタンス化の描画呼び出しを250インスタンスの小さな部分にバッチ処理すると、問題は軽減されますが、CPU使用率が大幅に増加します。上記の実行は、描画呼び出しごとに10000インスタンスです。これは、CPUではるかに簡単です。 全画面でゲームを実行すると、下部のグラフはほとんど存在しませんが、Drawメソッドで同じ問題が発生します。 これはPIX内での実行ですが、まったく意味がありません。一部のフレームではレンダリングが行われていないようです... 何か考え、これを引き起こしている可能性がありますか? 編集:要求に応じて、レンダーコードの関連部分 A CubeBufferが作成および初期化され、次にキューブで満たされます。キューブの量が特定の制限を超えると、新しいものCubeBufferが作成されます。各バッファは、1回の呼び出しですべてのインスタンスを描画します。 一度だけ必要な情報はstatic(頂点、インデックスバッファー、頂点宣言です。これまでのところ違いはありません)。テクスチャは512x512です ドロー() device.Clear(Color.DarkSlateGray); device.RasterizerState = new RasterizerState() { }; device.BlendState = new BlendState { }; device.DepthStencilState = new DepthStencilState() { DepthBufferEnable = true }; //samplerState=new SamplerState() { AddressU = TextureAddressMode.Mirror, …
10 xna  performance 

4
等角タイルのアニメーションドアを処理する方法
どうやって対処すればよいかわからないトリッキーな問題があります。ドアのアニメーションタイルがあります。閉じている場合は、1つの方法で並べ替える必要がありますが、オープンエンドの場合は、異なる(隣接タイル)に属するため、別の方法で並べ替える必要があります。 ドアが閉まっています。 そしてドアが開いた: そのようなタイルの並べ替えシステムをオーバーライドして、フレームに基づいて並べ替えを調整することは可能だと思いますが、少しハックに感じます。 誰かが同様のシナリオに遭遇しましたか?エレガントなソリューションはありますか?

3
最高のピアツーピアゲームアーキテクチャ
ゲームクライアントが次のような設定を検討します。 コンピューティングリソースが非常に小さい(モバイルデバイス、スマートフォン) すべてが共通のルーター(LAN、ホットスポットなど)に接続されている ユーザーは、外部サーバーなしでマルチプレイヤーゲームをプレイしたいと考えています。 1つの解決策は、1台の電話で信頼できるサーバーをホストすることです。この場合、このサーバーもクライアントになります。ポイント1を考慮すると、電話のコンピューティングリソースが十分でないため、このソリューションは受け入れられません。 そのため、ゲームのシミュレーション負荷をクライアント間で分散するピアツーピアアーキテクチャを設計したいと考えています。ポイント2のため、システムは最適化に関して複雑である必要はありません。レイテンシーは非常に低くなります。各クライアントは、自分自身と彼の直接の環境に関するデータの信頼できるソース(たとえば、弾丸)になることができます。 そのようなアーキテクチャを設計するための最良のアプローチは何でしょうか?そのようなLANレベルのピアツーピアプロトコルの既知の例はありますか? ノート: ここではいくつかの問題に対処していますが、そこにリストされている概念は、私には高レベルです。 安全保障 信頼できるサーバーが1つもないことはセキュリティの問題であることはわかっていますが、この場合はクライアントを信頼してもかまいません。 編集: 私は言及するのを忘れていました:かなりテンポの速いゲーム(シューティングゲーム)になります。 また、私はGaffer on Gamesでネットワーキングアーキテクチャについてすでに読みました。

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