ゲーム開発

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

3
2Dレンダリングにフル解像度の深度バッファーを使用する
私は正投影を使用して2Dエンジンの前面から背面へのレンダラーに取り組んでいます。オーバードローを避けるために深度バッファーを使用したい。16ビットの深度バッファーがあり、Z = 100でZ = 0を見ているカメラ、zNearが1、zFarが1000です。レンダリングされた各スプライトは、Z座標を次第に離れた値に設定し、深度テストでレンダリングをスキップできるようにします下にあるものは何でも。 ただし、Z位置がZバッファ値で終わる方法が非線形であることは知っています。私は、16ビットの深度バッファのフル解像度を利用したいと考えています。つまり、65536の一意の値を許可しています。したがって、レンダリングされるすべてのスプライトについて、Z位置を次の位置にインクリメントして、次の一意の深度バッファー値に関連付けます。 言い換えると、描画されるスプライトのインクリメントインデックス(0、1、2、3 ...)を各スプライトの適切なZ位置に変更して、一意の深度バッファー値を設定します。この背後にある数学についてはわかりません。これを行うための計算は何ですか? 注:私はWebGL(基本的にはOpenGL ES 2)で作業しており、幅広いハードウェアをサポートする必要があるため、gl_FragDepthなどの拡張機能でこれが簡単になる場合もありますが、互換性の理由で使用できません。

1
16×16ピクセルのタイルがそれほど一般的であるのはなぜですか?
タイル(Minecraftなど)が16×16になる理由はありますか? 16はバイナリなので、バイナリと関係があるように感じますが、それは10000偶然かもしれません。 知りたいのは、地形生成を使ってゲームを作りたいからです。タイルの大きさ、またはそれが本当に重要かどうかを知りたいのです。

6
Android構成の実行中に.ttfファイルを読み取れないのはなぜですか?
Androidデバイスでゲームを実行またはデバッグすると、logcatに次のエラーが表示されます。 com.badlogic.gdx.utils.GdxRuntimeException:ファイルの読み取りエラー:data / fonts / myFont.ttf(内部) これは次のコード行によって作成されます。 FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile); どこfontFileのように定義されています。 FileHandle fontFile = Gdx.files.internal("data/fonts/myFont.ttf"); デスクトップ構成を実行しても、これは起こりません。 デスクトップ構成の場合、プロジェクトの作業ディレクトリを定義する必要があることはわかっていますが、Android構成にはそのようなオプションが表示されず、それも意味がないため、「作業ディレクトリ」に関連する問題ではないと思います。 明らかに、ファイルは正しいパスにあります。 また、私の以前のプロジェクトではすべてが正常に機能したことにも注意してください。libgdx-setupを使用して新しい空のprjを作成し、古いプロジェクトからすべてのクラスとパッケージをコピーして、この新しいプロジェクトを作成しました。おそらくそれはいくつかのGradleファイルに関連した問題ですか?
9 libgdx  loading  fonts  file  ttf 

3
MMOでユーザーの行動データを収集するにはどうすればよいですか?
MMOでは、最大のユーザー満足度を達成するためにゲームルールを微調整する目的で、ユーザーの行動に関するデータを収集しようとしています。 明らかに、それを行う1つの方法Console.WriteLine()は、変数の内容を表示したり、StopWatch()クラスが実行にかかる時間を確認したりするのに使用するのと同じように、アプリケーションに特定のものをハンドロールすることです。ただし、StopWatchの代わりにプロファイラーを使用でき、WriteLineの代わりにデバッガーを使用できます。 データはどのように収集すればよいですか?ユーザーの行動を観察するためにアプリケーションを計測するための一般化された手法、または何らかの形式のコード計測手法はありますか? また、私は収集手法にのみ興味があります。上記のデータを送信、保存、分析する方法はすでに知っていると思います。
9 mmo 

3
トップセラーのモバイルゲームにローカリゼーションがないのはなぜですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 たとえば、植物とゾンビ2、Angry Birds、Bad Piggies、Candy Crush Saga、Temple Run 2などです。これらのゲームは英語でのみご利用いただけます。これらの企業には膨大なリソースがあります。彼らはなぜ彼らのゲームをローカライズしないのですか?

1
トーンマッピングと目の順応-淡い色と暗い画像
私は目の順応とHDRとともにトーンマッピングを実装しようとしています。実際に実装しましたが、結果に満足できず、何か間違ったことをしたと思います。 私の最終的な画像(後処理前)は、フロートテクスチャの半分に保存しています。2つのヘルパーテクスチャもあります。最初のログは、最後のミップマップにログの輝度とその平均、最小、最大の色を保存します。2つ目は、次のように計算される適応値を格納します。 prevLum + (avgLum - prevLum) * (1.0 - exp2(-adaptionRate)) ここで、prevLumは以前の適応値です(このテクスチャのサイズは1x1です)。対数輝度テクスチャはR8B8G8形式で、2番目はR8です。チュートリアルでは、フロートテクスチャの半分が使用されていることを確認しましたが、私の場合、画像が明るすぎます(ほぼ白)。 最後のポストプロセスシェーダーでは、このコードを使用してアイアダプテーションとトーンマッピングを取得するためにすべての値を使用しています。 float autokey(in float lum) { return 1.03 - 2.0 / (2.0 + log10(lum + 1.0)); } float hejl(in float color) { float x = max(0.0, color - 0.004); return (x * (A * x + B)) / …

2
誰かが二重輪郭を説明できますか?
私はボクセルレンダリングを理解しようとし、デュアルコンターリング(DC)を検討してきました。 これまでのところ私はこれを理解しています: グリッドポイントのセットに対して密度関数を実行します(つまり、ノイズ関数) グリッドのどのエッジにエンドポイント間の変更が含まれているかを見つける これらのエッジから交差点(つまり、ベクトル)を作成します これが私が行き詰まっているところで、次は法線を生成することですが、どうやって?このトピックを見ると、この画像は通常トリミングされます。 研究を行うと、法線は等値面から生成されることが示されます。ノイズから等値面、法線に行くと思うのは正しいですか?もしそうなら、各ステップをどのように達成しますか? 私の理解では、次のステップはDCペーパーの次のとおりです。 符号の変化を示す各エッジについて、エッジを含む4つの立方体の最小化する頂点を接続する四角形を生成します。 この見積もりは上の画像で表されていますか? 最後に、次のステップは、交点と法線を使用してQEFを実行することです。これにより、頂点データが生成されます。これは正しいです?


1
ゲート内のクロノトリガーからの移行を再現するグラフィックプログラミング
最近このゲームを始めましたが、これは私の興味のピークになりました 12:08から動きの遷移を見ることができます そこでは興味深い数学がいくつか行われているようです。2つの異なるビューが組み合わされているように見えます。青い波紋が最初に背景にレンダリングされ、次に紫色の振動波が何らかの疑似3D投影でレンダリングされているように見えます。 彼らがこの結果にどのように正確に到達したかは私を超えており、好奇心は私を良くしています。 これがどのように行われるかを多くの人が知っているとは思いませんが、だれかが大規模なグラフィックプログラミングを行った場合、おそらく彼らは私を啓発するでしょう。

4
LibGDXはカメラをTiledMapの境界内に保ちます
私はうまくレンダリングできるシンプルなTiledMapを持っています。プレイヤーが(Box2Dで)ホッピングしていて、カメラがプレイヤーを追いかけています。 cam.position.set( player.position().x * Game.PPM + Game.V_WIDTH / 4, player.position().y * Game.PPM, 0 ); cam.update(); ただし、カメラはTiledMapから外れます。カメラをTiledMapに保持するにはどうすればよいですか。マップの端に近づくと、カメラはスクロールを停止し、プレーヤーはカメラの端に向かって移動しますか?

2
GLFWのキーボード入力を別のオブジェクトに転送するにはどうすればよいですか?
GLFW3を使用して別のクラスでキーボードイベントを実行しようとすると問題が発生します。私が抱えている問題は、GLFW3が次のように入力に静的関数を使用することです。 static UI u; ... ... static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) { u.controls(window, key, action); } uまた、静的であり、コントロールはWSADキーの入力を保持します(キーイベントを取得できる唯一の方法)。ここから、キーを押すと、コンソールウィンドウでどのキーが押されたかが表示されます。私が抱えている問題は、押されたキーを使用して別のクラスの変数を操作しようとすることです。 この関数を持つMainMenuという別のクラスupdate().があります。この関数内でUIクラスを使用する方法はありますか?
9 opengl  c++  keyboard  glfw 

5
ボードゲームのアイデアをブラウザベースの遅いペースのゲームプレイに変える
グローバルな変更可能な状態をすべてのプレーヤーで共有する戦略ゲームを作成したいとします(ゲームボードを考えてみてください)。しかし、ボードゲームとは異なり、リアルタイムアクションやターンベースにしたくありません。代わりに、プレーヤーは1日のいつでもログインでき、希望どおりに1日あたり一定数のアクションポイントを費やすことができます。数時間ではなく、ゲームセッションは数週間にわたって実行されます。 これは、プレイに費やされた時間(代わりに、ハードコアプレイヤーが常に複数のゲームを並行してプレイできる)ではなく、切断や同期などのライブプレイに関連するあらゆる種類の問題に報いることを目的としています。ゲームは習慣性を維持する必要がありますが、カジュアルプレイヤーにとっては投資時間は短いはずです。 これまでのところ良いですが、これはまだいつの問題か未解決のままですアクションをいつ解決するアクションを表示するです。私は、毎日のポイントリセットの数分前にすべての動きをして他のプレイヤーを驚かせたり、F5をスパムして非リアルタイムのポイント全体を打ち負かすような適切なタイミングでアクションを実行したりするような「忍者の遊び」を避けたいです。タイムゲーム。 私はそれにいくつかのアプローチを考えました: 1日に1回実行される単一のスケジュールされたプロセスですべてのイベントを解決します。これは基本的に、プレーヤーがアクションを実行しても結果がすぐには表示されない「ブラインド」ゲームプレイを意味します。問題は、私が数年前に同様のブラウザゲームをプレイしていて、その期間中に本当に何が起こったのかを説明するdeus ex machinaが見つかるまで、接続が切れて無力だと感じるのが嫌だったということです。あなたは、世界が一日の大きな増分で進化するのを見ます。 ゲームや他のプレーヤーに大きな影響を与えるアクション(攻撃、大きな成果)の場合は、すぐに全員に見えるようにしますが、効果を24時間程度遅らせます。このようなイベントが発生すると、反対のプレーヤーに通知され、それに反応できるようになります。 これを解決する方法を他に考えていますか?同様の既存のゲームに既知のアプローチはありますか?

2
ナビゲーションメッシュ全体の「見通し線」の経路
ナビゲーションメッシュの視線を計算したい。 下の画像を見てください。黄色の線はA *のみの結果であり、赤い線は黄色の線を入力として使用する見通し線アルゴリズムの結果です。これで、ユニットは「ジグザグ」することなく直接移動できます。 その「視線」を計算するアルゴリズムは何ですか?

1
3Dカメラの回転
許してください、しかし私は助けを必要としています、そして私は今数週間これに行き詰まっています、私は進歩を遂げておらず、どこへ行っても私は別の答えを見ます、私が試みるすべてがうまくいきません。私は十分なヒントとアドバイスを持っています。今、私はこれを理解することができないので、誰かが私に後戻りするための答えをくれる人を本当に必要としています。 この主題を最も混乱させたのは、誰もが異なる規則または規則のセットを使用する方法であり、それらの答えは、何であるかを定義せずに独自の規則に基づいています。 だからここに私が最も一般的で論理的であると思われるものに基づいて形成した一連の規則があります: 軸の右手の法則。 正のYは上向き、正のZは視聴者向き、正のXは右向きです。 シェーダーに送信されるときに転置される行メジャー行列。 ピッチ:X軸を中心とした回転 ヨー:Y軸を中心とした回転 ロール:z軸を中心とした回転 ローテーション順:ロール、ピッチ、ヨー(これは正しいですか?誰かがこれを確認できますか?) 正の回転値は、軸の正の端から見下ろすと、時計回りに回転します。 すべての軸にわたる0回転のデフォルトの方向は、負のYを指すベクトルです。 ..それらの慣例を考えると(間違っている場合は必ず私を訂正してください!) LookAt関数を記述しますか?(lookAt(ベクター位置、ベクターアイフォーカス、ベクターアップ)) 回転行列を計算します。(回転(x、y、z)) 私はこれらの2つの質問に少なくとも過去3週間以上答えてみました。LookAt&Rotation Matrix関数を少なくとも30回書き直しました。何百ものウェブサイトと多くの解答された質問を読み、他の人々のコードをコピーしました、そして私がこれまでに作った何もうまくいきませんでした、すべてが間違った結果を生み出しました。それらのいくつかは、正しい回転にさえ近くないいくつかの陽気に奇妙な出力を生成しました。 私は昨夜を除いて毎晩これに取り組んできました。繰り返し失敗することにとてもイライラしていて、私は立ち止まって休憩しなければならなかったからです。 正しい方法を教えてください。それから逆に作業して、それがどのように機能するかを理解できます。正しい答えが得られず、これが私を少し狂わせています! 私はJavaで書いていますが、任意の言語で書かれたコードを使用します。私の3Dレンダリングコードのほとんどは実際には非常に見事に機能しています。それは理解できない数学にすぎません。 更新:解決済み ご協力ありがとうございました!私は実際に私が実際に理解しているルックアット関数を手に入れました、そして私は幸せにすることができませんでした(誰かがぜひともそれを見たいと思っているなら)。 ピッチ/ヨー/ロール変数に基づいて回転行列を作成することを再試行しましたが、再び失敗したようですが、フリールックカメラのオイラー角を使用しようとしてダンプすることにしました。代わりに、クォータニオンクラスを作成し、そのパスを下る方が幸運かもしれません。それ以外の場合は、球座標としてピッチ/ヨーを使用し、回転には新しい機能のLookAt関数を使用します。 他の誰かが同様の問題に直面していて質問をしたい場合は、遠慮なくお問い合わせください。 助けてくれてありがとう!

3
AIエージェントはどのようにして環境に関する情報にアクセスしますか?
これはちょっとささいな質問かもしれませんが、私はこれを理解するのに苦労しています。よろしくお願いします。 オブジェクト指向設計を使用したゲーム開発で、AIエージェントがアクションを実行するためにゲームの世界から必要な情報にアクセスする方法を理解したいと思います。 誰もが知っているように、ゲームではAIエージェントが「環境を認識」し、周囲で何が起こっているかに応じて行動する必要があることがよくあります。たとえば、エージェントは、プレイヤーが十分に近づいたらプレーヤーを追跡する、移動中に障害物を回避する(障害物回避のステアリング動作を使用する)などのようにプログラムされている場合があります。 私の問題は、それを行う方法がわからないことです。AIエージェントは、ゲームの世界について必要な情報にどのようにアクセスできますか? 可能なアプローチの1つは、エージェントが必要な情報をゲームの世界から直接要求することです。 GameWorldというクラスがあります。重要なゲームロジック(ゲームループ、衝突検出など)を処理し、ゲーム内のすべてのエンティティへの参照も保持します。 このクラスをシングルトンにすることができます。エージェントがゲームワールドからの情報を必要とするとき、それは単にGameWorldインスタンスから直接それを取得します。 たとえば、エージェントSeekはプレーヤーが近くにいるときにプレーヤーにプログラムされます。これを行うには、エージェントはプレーヤーの位置を取得する必要があります。そのため、直接要求することができますGameWorld.instance().getPlayerPosition()。 エージェントは、ゲーム内のすべてのエンティティのリストを取得し、それをニーズに合わせて分析することもできます(どのエンティティが近くにあるか、またはその他の何かを把握するため): GameWorld.instance().getEntityList() これは最も簡単な方法です。エージェントはGameWorldクラスに直接連絡して、必要な情報を取得します。しかし、これが私が知っている唯一のアプローチです。良いものはありますか? 経験豊富なゲーム開発者はこれをどのように設計しますか?「すべてのエンティティのリストを取得し、必要なものを探す」アプローチは単純ですか?AIエージェントがアクションを実行するために必要な情報にアクセスできるようにするには、どのようなアプローチとメカニズムがありますか?
9 architecture  ai  oop 

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