ゲーム開発

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

5
ハースストーンのようにアニメーションカードグラフィックスを作成するにはどうすればよいですか?
ゲームハースストーンには、アニメーション画像が描かれたカードがあります。いくつかの例: http://www.hearthhead.com/card=281/argent-commander http://www.hearthhead.com/card=469/blood-imp アニメーションは複数の効果で構成されているようです: パーティクルシステム。 スプライトのフェードイン/アウト/回転 シンプルなスクロールテクスチャ 例1のケープとヘアで非常に明らかな歪み効果。 渦巻く煙の効果、例1のライト、例2の緑/紫のグロー。 最初の3つの要素は取るに足らないものです。知りたいのは、最後の2つをどのように実行できるかです。これはゲームでリアルタイムで行うこともできますか、それとも事前にレンダリングされたアニメーションですか?
9 graphics 


4
ゲームアーティストになり、キャラクター/クリーチャーアニメーションに取り組みませんか?
ゲーム用に生きているキャラクター(動物、人間、ロボットなど)を開発してアニメーション化したくないが、オブジェクト(テレビ、電話、車など)またはレベルを開発/アニメーション化したい場合...業界のアーティストとしてのキャリアを持つことは可能ですか?
9 art  career 

3
複数の行列を頂点シェーダーに送信するにはどうすればよいですか?
ボーン/スキニングを使ったアニメーションを練習しています。頂点ごとに1つのマトリックスをシェーダーに送信しようとしています。私はこれら2つのアプローチを考えることができます。 方法1 このように各骨マトリックスに1つの均一なハンドルがあります u_Bone0 = GLES20.glGetUniformLocation(mProgram, "u_Bone[0]"); u_Bone1 = GLES20.glGetUniformLocation(mProgram, "u_Bone[1]"); そして、onDraw私はそれらのそれぞれをシェーダーに送ります: GLES20.glUniformMatrix4fv(u_Bone0, 1, false, matrix0, 0); マトリックスが多数ある場合、これは明らかに良い方法ではありません。リファクタリングするコードがたくさんあるのでまだ試していない私の2番目のアイデア 方法2 を使用しglUniformMatrix4fvてそれらを一度にすべて送信することです(20個の行列があると仮定します) GLES20.glUniformMatrix4fv(u_Bones, 20, false, matrices, 0); はどこmatricesですかfloat[16 * 20]。ただし、各ボーンのマトリックスを変更するのは少し面倒になります。たとえば、3番目の行列を取得する場合、次の行に沿って何かが必要です。 float[] _3rd = Arrays.copy(matrices, 3*16, 4*16); 値を保存すると、さらに煩わしくなります。 私は現在方法1を使用していますが、あまりスマートに見えません... 複数のマトリックスをOpenGL ES 2シェーダーに送信する最良の方法は何ですか? LE:私はAndroidを使用しているので、Javaソリューションを探しています。

3
アセットを保存するときにバージョンの変更をどのように処理できますか?
私はしばらくRPGに取り組んでおり、2つの異なるシリアル化手法を使用しています。 敵、武器、アイテムはXMLとして保存されます。 マップとイベントは「制御されたバイナリ」として保存されます(すべてのクラスが保存/ロードメソッドを取得し、保存/ロードするものを決定します)。 しかし、私はマップとイベントの選択に疑問を持ち始めました。私の懸念: 私はマップエディタを作成しましたが、ファイルを開くだけでは小さなことを変更できません。 混乱が大幅に変化します。変数をクラスに追加したいとします。すべてのマップを再度ロード/保存しないと、後で壊れます。 最初の懸念は、私のテクニックを変更せずに回避することは困難です。JSONへの変更を考えましたが、大変な作業です。また、[DataContract]属性と[DataMember]属性がいたるところにあると、見苦しく見えます。 それは私の第二の懸念を私に残し、私はそれをどのように処理できるのでしょうか?すべてのマップをループし、新しい変数でそれらを再保存する小さなプログラムを作成しますか?私は今、いくつかのマップを取得し始めており、それでも手動で取得しています。多くの追加作業が発生するため、変更を加えたいときは毎回2度考えさせられます。

3
AIを動かすときに重力を考慮する方法
2Dゲームを作っています。現在、プレイヤーが操縦するヘリコプターが飛び回っています。矢印キーを使用して制御されます:上、左、右。 Y軸に沿った速度はdy、X軸に沿った速度はdxです。 物理は次のとおりです。 たびUPが押されていない、dy、一定の加速度で加速し、無期限にダウンに向けました。(重力)。dx現在の値のままです。 場合UPが押され、dyそれが現在、あるものは何でもから一定の加速度で加速4まで(それは速度4に達するまで、上向きに)。dx現在の値のままです。 場合LEFTが押され、dxそれが現在、ある何から、一定の加速度で加速-4まで。 場合RIGHTが押され、それが現在、ある何から、一定の加速度で加速DX、4まで。 (私が言ったように、左または右が押され、同時に上が押されていない場合:dy重力がヘリコプターに影響しているため、ますます小さくなります) これにより、ヘリコプターは直線ではなく、空中のアーチに追従することがよくあります。 これにより、非常に現実的な物理が作成されます。 私の質問は: AIである敵のヘリコプターも同じ物理システムを使用して移動する必要があります。 AIが現在の場所からポイントBに移動したいとします。 ゲームに重力も緩やかな加速もなければ、それは簡単でしょう。AIの位置からポイントBまでのベクトルを描き、AIにそれを追跡させるだけです。 以来、しかし、そこにある重力と徐々に加速、AIは直線的に移動することはできません(ほとんど)。可能な限り時間効率的にAIをポイントBに移動させる最良の方法は何でしょうか? AIを特定の目的地に向けて移動するときに、重力をどのように考慮することができますか? (説明しやすい場合は、B点がAIと対角線ではなく、AIと同じy軸上のレベルにあると考えてください。) ありがとう
9 2d  physics  ai 

2
ソースエンジンのソースコードは利用できますか?
Source Engineの完全なC ++ソースコードは利用できますか? SDKがソースベースのゲームの購入で利用可能であることはわかっていますが、私の目的は、学習目的のための完全な実装の詳細を含むオープンソースのゲームエンジンを見つけることです。

3
ゲームが進行するにつれて、攻撃ウェーブの敵の数とチャレンジをどのようにスケーリングできますか?
私は現在、敵がスポーンしてプレイヤーの軍隊を攻撃する防御ゲームを作っています。レベルが1つしかないことを除けば、タワーディフェンスゲームに似ています。敵は、最終的にユーザーが死ぬか、すぐに発生する敵を一掃するのに十分なほど大きな軍隊を集めるまで、発生し続けます(できれば、これが起こらないように十分に挑戦します)。 私が現在苦労しているのは、このゲームをどんどん難しくして、敵が出現する確率が基本的に100%に達するようにする方法です。 これまでのところ、私は次のようなものを持っています if(Math.random() < 1 - (1/elapsed_time) && spawnTimer <= 0 ){ spawnEnemy() spawnTimer = rand(); // random number between 1 and 3 } しかし、そもそも均一すぎるようです。現時点では、1種類の敵のみをスポーンしています。時間の経過とともに、よりタフな敵もスポーンするという考えです。 またspawnTimer、少しランダム化して、時間が経過するにつれて速くなるようにする必要があると思いますが、このセクション全体でロジックが実際にどのように見えるべきかを理解するのが難しいです。この種の式の大まかなアイデアを手伝ってくれる人はいますか? 私は現在、JavaScriptを使用してゲームを作成していますが、それは明らかにコンセプトに関するものです。

1
複数のポリゴンで軸定理を分離していますか?
C#で分離軸の定理を実装しようとしています。2つのポリゴン間の最小並進ベクトルを計算できる関数があります。ただし、1つのポリゴンと他の複数のポリゴンの間の最小並進ベクトルを計算する関数を作成できないようです。正直なところ、私は何ヶ月もこれに取り組んできましたが、解決策に近づいておらず、オンラインで解決策を見つけることができませんでした。常に正しい結果を返さないエッジケースがいくつかあり、私のゲームで優先度の高いバグが発生します。 以下は、正常に機能しない一般的なエッジケースです。 この問題のよく知られた解決策はありますか?私が見つけることができるのは、「各ポリゴンでSATを実行するだけ」と言っている人たちだけですが、これが最小の並進ベクトルを生成することはめったにありません。 任意の助けをいただければ幸いです。


3
OpenGLが実際に画面を更新するのにどのくらい時間がかかりますか?
キー入力に応じてさまざまなものを描画する単純なOpenGLテストアプリをCで作成しています。(Mesa 8.0.4、Mesa-EGLおよびGLFW、NVIDIA GTX650を搭載したPC上のUbuntu 12.04LTSで試した)。ドローは非常にシンプル/高速です(回転三角形タイプのもの)。私のテストコードは、フレームレートを意図的に制限するものではなく、次のようになっています。 while (true) { draw(); swap_buffers(); } 私はこれを非常に注意深く計時しており、1つのeglSwapBuffers()(またはglfwSwapBuffers、同じもの)呼び出しから次の呼び出しまでの時間は〜16.6ミリ秒であることがわかりました。eglSwapBuffers()描画されたものは非常に単純ですが、呼び出し後から次の呼び出しの直前までの時間は、それより少しだけ短くなります。スワップバッファの呼び出しにかかる時間は1ミリ秒未満です。 ただし、アプリがキーの押下に応じて描画内容を変更してから実際に画面に表示されるまでの時間は、> 150ms(約8〜9フレーム)です。これは、画面とキーボードを60 fpsでカメラで記録して測定されます。 したがって、質問: スワップバッファーの呼び出しと実際に画面に表示される呼び出しの間の描画はどこにバッファーされますか?なぜ遅れるの?アプリが常に画面の前に多くのフレームを描画しているようです。 OpenGLアプリケーションは、画面にすぐに描画するために何ができますか?(つまり、バッファリングなし、描画が完了するまでブロックするだけです。高スループットは必要ありません。低遅延が必要です) 上記の即時抽選をできるだけ早く行うためにアプリケーションは何ができますか? アプリケーションは現在、実際に画面上にあるものをどのようにして知ることができますか?(または、現在のバッファリング遅延はどのくらいの長さ/何フレームですか?)

1
Skyrimのテーブルにオブジェクトを「固定」し、それらのオブジェクトをプレーヤーが操作できるようにするにはどうすればよいですか?
Havokシミュレーションで、非静的ポット(RuinsPot01)をテーブル(RuinsAltar)に配置しようとしています。 ポットをテーブルの少し上に置き、Havokをオンにします。ポットは落ちますが、テーブルの上に少し浮いています。 Havokをオンにして押すFと、テーブルに正しく位置合わせされますが、Havokシミュレーションをオンにすると、以前と同じようにわずかに上がり、浮きます。 これに対する修正はありますか?ポットを静的にすることはオプションではなく、移動可能でなければなりません。

1
正接および正接ベクトルを計算する方法
Three.jsにテクスチャを読み込んでから、シェーダーに渡しました。頂点シェーダーで法線を計算し、UVベクトルを変数に保存します。 <script id="vertexShader" type="x-shader/x-vertex"> varying vec3 N,P; varying vec2 UV; void main() { gl_Position= projectionMatrix * modelViewMatrix * vec4(position,1.0); P= position; N= normalMatrix * vec3(normal); UV= uv; } </script> <script id="fragmentShader" type="x-shader/x-fragment"> varying vec3 N,P; varying vec2 UV; uniform sampler2D texture; void main() { gl_FragColor= texture2D(texture,UV); } </script> TおよびBベクトルをどのように計算しますか?

2
あなたのゲームに改造者を引き付ける方法は?
私はゲームを開発していますが、一人で作業しているため、作成できるコンテンツの量は非常に限られています。そのため、ゲームを改造したいので、この目的のために、luaスクリプト用に公開される完全な改造APIを作成することを計画しています。また、人々が始めるためのチュートリアルも作成します。また、「オリジナル」のゲームも「MOD」になります(Warcraft IIIマップと同様)。 私の質問は、開発者がゲームの改造を奨励するために何ができるかです。 PS:私のゲームはサンドボックスのようなマルチプレイヤーサバイバルです(ほとんどのものは手続き型です)。

2
一連のコルーチン
次々と実行される一連のコルーチン呼び出しを積み重ねるにはどうすればよいですか? コルーチンで一連のカラーlerpsをループする点滅するカラーエフェクトを取得しようとしましたが、機能しません。
9 unity 

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