ゲーム開発

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

1
AndroidでGPUスキニングを確実に実装するにはどうすればよいですか?
Androidでキャラクタースキニングを機能させようとしています。 アイデアはかなりバニラです:私にはスキニングマトリックスがあり、各頂点と共に、最大4つのマトリックスインデックスと4つの対応する重みを送信します。それらを頂点シェーダーで合計し、各頂点に適用します。 これは、ゲームのiOSバージョンの頂点シェーダーで行っていることです(法線は問題ありません)。 attribute vec4 in_pos; attribute vec4 in_normal; attribute vec2 in_texture_coords; attribute vec4 in_bone_index; attribute vec4 in_bone_weight; varying vec2 fs_texture_coords; uniform mat4 world_view_projection; uniform mat4 bones[@bind_matrix_count]; void main() { // Skinning vec4 transformed_pos = ((in_pos * bones[int(in_bone_index.x)]) * in_bone_weight.x) + ((in_pos * bones[int(in_bone_index.y)]) * in_bone_weight.y) + ((in_pos * bones[int(in_bone_index.z)]) …

3
ゲームのキャラクターはどのようにアニメーション化されますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 5年前休業。 私は最終年度のプロジェクトで友達と協力します。私たちのゲームはFPSになるので、FPSビューや他の敵キャラクターをアニメーション化して、簡単にプログラミングして良いゲームを作る必要があります。 移動可能なゲームキャラクターの作り方を知りたいのですが?これらのキャラクターにはどのようなソフトウェアとエンジンが使用されていますか?

2
Unity内でスプライトをシェーディングすることを計画するとき、白は最初に最適なベースカラーですか?
Unityで、正方形のスプライト/タイルで構成されるゲームのプロトタイピングを検討しています。ゲーム内のタイルごとに異なる色で異なるタイプのオブジェクトを表すことができると思います。 多くの異なる色の正方形をインポートするのではなく、単一の正方形のスプライトをインポートしてUnityで適切にシェーディングできると思います。 Photoshopで色相と彩度を調整した私の経験では、白はしばしば白のままであるため、白を変更するのは簡単な色ではありません。Unityでの私のテストでは、スプライトの「色」を白以外に変更できることを示しています。Photoshopの経験から考えれば、スプライトは適切にシェーディングされているように見えます。 Unity内で変更されたときに白いオブジェクトは適切な色の陰影を帯びているように見えるので、私の腸は、これが最初に最適な基本色であると教えてくれます。およびオブジェクトの状態。 ホワイトスプライトは実際には最初から最適なカラースプライトであり、Photoshop内の色相と彩度を調整するのではなく、Unityでこのようなものが機能するのはなぜですか?
10 unity  sprites  color 

1
私と同じ名前のゲームを見つけました!私は何をすべきか?
先日、Google PlayでゲームEyerollerを公​​開しました。同じ名前のゲームがGoogle Playにないことを確認しました。しかし、今日、私はGoogleで「eyeroller」を検索し(はい、私はずっと前にそれを行っていたはずです)、AppStoreにeyeRollerという名前のゲームがあることに気付きました。ご覧のとおり、これらはまったく別のゲームです。 これの法的意味は何ですか?商標や著作権などの問題はありますか?ゲームの名前を変更する必要がありますか?

1
分割画面ゲームでサウンドをどのように処理すればよいですか?
分割画面のマルチプレーヤーゲームでは、サウンドイベントが複数のプレーヤーに聞こえる場合があり、プレーヤーごとに異なるサウンドになる場合があります。 たとえば、プレーヤー1は、ローパスフィルター処理された車の音を聞く場合があります。プレーヤー2は、プレーヤー1が速度を超えてドライブするときに、ドップラーシフトされたエンジン音を聞く場合があります。プレーヤー3、離れたところから観察すると、フィルターされていないエンジンの音が小音量で聞こえる場合があります。 そのようなゲームでは、「明白な」アプローチは、一度にすべてのサウンドを再生することです。これを改善し、各プレーヤーの没入感を最大化しながら、サウンドの過負荷/「不協和音」を防ぐためにどのような方法を使用できますか?

2
外挿は衝突検出を中断します
スプライトの動きに外挿を適用する前は、衝突は完全に機能していました。ただし、(物事を滑らかにするために)スプライトの動きに外挿を適用すると、衝突が機能しなくなります。 これが、外挿前の動作です。 しかし、外挿を実装した後、衝突ルーチンが壊れます。これは、(レンダーコールにある)外挿ルーチンによって生成された新しい座標に作用しているためと考えています。 外挿を適用した後 この動作を修正するには? 外挿の直後に追加の衝突チェックを試みました-これは多くの問題を解決するようですが、レンダリングにロジックを入れることは問題外なので、これを除外しました。 私はまた、spritesXの位置のコピーを作成し、それを外挿して、オリジナルではなくそれを使用して描画してみたので、元のロジックをそのままにして、ロジックがピックアップできるようにしました。壁にぶつかったとき。これもこれに対処する正しい方法ではないと確信しています。 ここで似たような質問をいくつか見つけましたが、答えは役に立ちませんでした。 これは私の外挿コードです: public void onDrawFrame(GL10 gl) { //Set/Re-set loop back to 0 to start counting again loops=0; while(System.currentTimeMillis() > nextGameTick && loops < maxFrameskip){ SceneManager.getInstance().getCurrentScene().updateLogic(); nextGameTick+=skipTicks; timeCorrection += (1000d/ticksPerSecond) % 1; nextGameTick+=timeCorrection; timeCorrection %=1; loops++; tics++; } extrapolation = (float)(System.currentTimeMillis() + skipTicks - …

7
MUDで永久的な死をプレイヤーに受け入れられ、公平に見せるためにはどうすればよいですか?
私は何年もMUDの作成を検討してきましたが、友達が本当にかっこいいと思うアイデアがたくさんあります(そして、それが私がどこにでも行きたいと思っている方法です-口コミ)。 ことは、私が常に望んでいたことが1つあります。私の友人や見知らぬ人が嫌っていたのは、永久的な死です。さて、私がこれに感じる感情的な反応は、いつも内臓の嫌悪感です。私がこれを望んでいるのは私だけだと確信しています。そうでなければ、私はごく少数です。 私は選手たちの行動がしたいので、今、私はそれをしたい理由がある問題では。静的な都道府県や社会制度などのセットを備えた他の多くのMUDとは異なり、プレイヤーが何かをしたとしても、実際に状況を変えるためにプレイヤーが行うことを望んでいます。そしてそれは人々を殺すことを含みます。 あなたが誰かを殺した場合、あなたは彼らをタイムアウトに送らなかった、あなたは彼らを殺した。人を殺すとどうなる?彼らは去ります。彼らはあなたにもう少し話をするために30分で戻ってきません。彼らは行ってしまいました。永遠。 死を非永続的にすることで、死は問題ではなくなります。キャラクターの弧のクライマックスがスピード違反の切符を手に入れている場合も同様です。安くなります。非永久的な死は死を安くします。 どうすればよいですか:1)これが実際に良いアイデアであることをプレーヤー(およびランダムな人々!)に説得します。 2)キャラクターの削除ではなく、実際の生活と同じように死と暴力を問題にする他の方法を見つけます(もちろん、ゲーム内を除く)。そこにはどんな選択肢がありますか?
10 multiplayer  mmo  mud 

2
ヘビの尻尾を頭に追従させるにはどうすればよいですか?
割り当てに従って、小さなSnakeクローンを作成することでlibGDXを使い始めたところ、おそらくしばらくの間恥ずかしい問題に遭遇しました。 現在、ヘビの頭(この段階では単純な長方形)がゲームのキャンバスの周りを移動しています。ヘビの残りの部分を構築する最も簡単な方法は、頭に、プレーヤーの動作に応じてサイズが増減するSnakeElementsのJavaコレクションLinkedListを所有させることでした。 SnakeElementsのこのリストを頭につけることは簡単ではありません。 これを行う現在の関数は次のとおりで、ヘッドがその位置を更新するたびに呼び出されます。 private void moveTail (float x, float y, int direction) { float tmpx, tmpy; int tmpdirection; int offset_x, offset_y; for (SnakeSegment snse : tail) { offset_x = 0; offset_y = 0; tmpx = snse.getX(); tmpy = snse.getY(); tmpdirection = snse.getDirection(); switch(direction) { case 0: offset_x = 0; …
10 java  libgdx 

1
大きな地形メッシュを効率的にレンダリングする方法は?
最近、ゲームに地形を生成する最良の方法について考えている問題に悩まされています。別のプロジェクトでは、通常はハイトマップを使用したため、すべてのコアワークは使用されたエンジンに基づいていましたが、地形には正確に描画する必要がある数百万の特定のポリゴンがあるため、これは実行できません。また、それらの多くはYベクトルから解析できません(ポリゴンが下に隠れているため)。つまり、ハイトマップはここでは役に立ちません。この場合、COLLADAオブジェクトを使用する必要がありました。 誰かがBlenderのようなソフトウェア内でモデルを手動で分割するように言ったが、残念なことに、これらの地形は別のソフトウェアのチャンクで作成され、ゲームに読み込まれるため、これも不可能である(それはアイデアだ)。したがって、これは毎回手動でスライスすることを余儀なくされる大きな仕事になるでしょう。 したがって、この問題を1週間解決して、このメッシュ、つまり地形をカメラのフラストラムに応じて手続き的にロードする方法について1週間研究してきました。これにより、可能な限りパフォーマンスを節約できます。手続き型メッシュの生成に関する多くのドキュメントに出くわしましたが、メッシュを八分木にマッピングすることで問題を解決できると思います。これは少なくとも私にとっては大きな仕事であり、それが私がここにいる理由です。なぜなら、私は経験豊富な人々から聞く前に間違った道をたどるリスクを冒したくないからです。 要するに、私には何百万もの頂点とインデックスがあり、それらが一緒になって地形を形成していますが、明らかな理由により、それらを同時に描画することはできません。何らかの手続きが必要です。大きなメッシュを地形として扱うために、それを行うための最良の方法は何ですか?それに関する具体的な本はありますか?それを実装する最良の方法はありますか? どんな間違いでもすみません、私はこの分野の初心者です。

2
UnityのUpdateとFixedUpdateの違いは何ですか?
Update()グラフィックスとFixedUpdate()物理学に使用するように言われましたが、を使用すると入力が登録されないことがありますFixedUpdate()。私Update()がすべてのために使用する場合でもそれはうまくいきます。 私は気にする必要がありますかFixedUpdate()、それとも何か間違っていますか?
10 unity  c#  game-loop 

2
ゲームをNESカートリッジに入れるにはどうすればよいですか?
NESカートリッジを作成するにはどうすればよいですか?チュートリアルはありますか?エミュレーターで実行するゲームをカートリッジに置く必要があります。どうやってするか?これは最初から可能ですか?または、少なくとも既存のカートリッジを使用して、そこにあるコンテンツを上書きできますか?
10 modding  roms 

1
AIが目標に到達するために回転する正しい速度を見つける
私は最高速度で移動し、毎秒度maxSpeedを変えることができる船を持っていrotationSpeedます。船は常に向いている方向に移動します。つまり、船が速く移動するほど、旋回半径が大きくなります。 私は自分の位置、回転、ターゲットの位置を知っています。 私が理解したいのは、ターゲットがこの速度で私の回転半径内にあるかどうか、またはより良い、私が移動できる最大速度は、ターゲットを回り続けることなくターゲットに方向転換するためです。 これを行うための効率的な方法がありますか? これが私がこれまでに考えていることです。1ステップあたりの移動距離と1ステップあたりの回転量がわかっているので、次の2つのフレームのどこにいるのかがわかります。私の現在の位置はp1で、次の位置はp2、次にp3です。(p1、p2)と(p2、p3)の垂直二等分線をとることができます。彼らの交点は私に円の中心を与えます。次に、ターゲットがその円の中にあるかどうかをテストできます。 これが3Dで機能するかどうかは不明です(入力で球を計算する方法がわかりません)。この解決策は、旅行に適した速度を見つけるのにもあまり役立ちません。妥当な速度を見つけるには、さまざまな速度で数回試す必要があります。 誰もがより良い解決策にいくつかの光を当てることができますか?

2
すべてのジオメトリを「カット」するシェーダー
どのようにすれば、Unityでクリアな背景のみをレンダリングし、すべてのジオメトリを「カット」するシェーダーを作成できますか?例: それは巨大な白い箱形の部屋のプリズムです。プリズムの表面は、シーンのスカイボックス(星空)をレンダリングしているだけです。私は複数のカメラを使用しましたが、これはかなり非効率的です...シェーダーだけの方法があるはずです。 これどうやってするの?

4
単純なゲームでは、ゲームループの別のスレッドが必須ですか?
ゲーム開発は初めてです。学ぶために、Androidプラットフォームでこのゲームを再現しています。上記のリンクでゲームプレイのビデオを見ることができます。シンプルなゲームです。 私はゲーム開発の開始に関する多くの記事を読みました。それらのほとんどすべてが、別のスレッドでゲームループを使用することを推奨しました。ただし、この特定のゲームでは、別のスレッドを開始する必要がありますか?

3
アセットにカスタムメモリ管理が必要なのはなぜですか?
ゲームプログラミングに関連するほとんどすべてのリソース、特に3Dオープンワールドゲームでは、ディスク、システムメモリ、ビデオメモリとの間でアセットを常にアンロードおよびリロードする必要がある方法について説明しています。コンソールには、オーバーフローの可能性に対処できない非常に単純なメモリ管理スキームがあるため、これを理解できます。 ただし、PCでは状況が大きく異なります。システムメモリ用にOSによって提供される仮想メモリがあり、グラフィックドライバがCPUからGPUへのスワッピングを処理します。それでは、一度にすべてをロードするだけでは不十分であり、プリフェッチのみを処理し、必要なアセットがスワップされている間はブロックされないようにする必要があるのはなぜですか? これは、すべてがのように単純に割り当てられていると言っているのではありませんmalloc。すべてが隣接し、キャッシュ一貫性が保たれます。とにかく手動でページを出し入れすることを心配する必要がない場合は、メモリアクセスを効率的にする方が間違いなく簡単です... 更新: 非同期バッファー転送に少し読み込んだ後、グラフィックスドライバーが自動的にメモリをページインおよびページアウトする方法が最適ではないことがわかりました。これはCPUリソースにも当てはまりますか。つまり、仮想メモリが存在する場合でも、特定のリソースをいつロードおよびアンロードするかを常に手動で管理する方が良いでしょうか。

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