ゲーム開発

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

1
League of Legends Spectatorストリーム形式
イントロ 最終的にストリームからデータをスクレイピングし、分析用のデータセットを構築することを期待して、LoLの観客システムをいじっていました。非公式のAPIとテクニックが既にいくつかあることは理解していますが、本当に特定のゲームイベント(チャンピオンキル、タレットキル、アイテムの購入、ジャングルモブキル、特定のイベントのチャンピオンの調整など)を探しています。 これまでにわかったこと ゲームの観戦を開始すると(NAで)、クライアントは次のホストに接続します。 spectator.na.lol.riotgames.com:8088 このホストはAmazon AWSまたは同様のものによってサポートされていると思います。とにかく、次に起こることは、クライアントがバージョンリクエストをspectateサーバーに送信することです。 GET / observer-mode / rest / consumer / version これは、現在の観客サーバーのバージョンが何であっても返します。例:「1.80.54」 次に、クライアントはゲームメタデータのリクエストを送信します。 GET / observer-mode / rest / consumer / getGameMetaData / NA1 / [gameid] / [some random nonce] / token これは、ゲームに関するメタデータを返します。このデータの例:http : //pastebin.com/3N4qs0hx これで、クライアントは、観戦セッションを進めるためのパラメーターを認識します。次を呼び出して、最新のデータチャンクを見つけようとします。 GET / observer-mode / rest / consumer / getLastChunkInfo …

5
奥行き感を追加するには?
背景には複数の山のモデルが描かれています。実際のスクリーンショットはこちら: 一番後ろには灰色の山が見えます。それらはバックグラウンドに多くありますが、それでも「バックグラウンド」には見えません。 それらの山に深みを感じるにはどうすればいいですか?それらを遠くに見たいです。 DarenWのおかげで、これが現在の外観です
12 art 

3
ポータルの衝突検出を実装する方法は?
たとえば、このシナリオを考えてみてください(私の恐ろしい描画スキルを失礼します): これは、棒人間が青いポータル(赤いポータルにリンクされている)を通過する「ポータル」に基づいていますが、赤いポータルで彼を止める壁があります。したがって、彼はポータルを完全に通過できません。 だから私の質問はこれです:彼らと物理学/衝突検出を行うにはどうすればよいですか?プレーヤーをスライスしますか?それらをリンクする方法はありますか?これをサポートする物理エンジンはありますか?そうでない場合、どのように作成しますか?

3
「一定のゲーム速度最大FPS」ゲームループで非常に混乱
最近、ゲームループに関する次の記事を読みました:http : //www.koonsolo.com/news/dewitters-gameloop/ 推奨される最後の実装は、私を深く混乱させます。私はそれがどのように機能するか理解していません、そしてそれは完全な混乱のように見えます。 私は原則を理解しています:ゲームを一定の速度で更新し、残っているものはできるだけ多くゲームをレンダリングします。 私はあなたが使用できないと考えています: 25ティックの入力を取得 975ティックのゲームをレンダリングする あなたは2番目の最初の部分の入力を取得するだろうし、これは奇妙に感じるので、アプローチ?それとも、記事で何が起こっているのですか? 基本的に: while( GetTickCount() > next_game_tick && loops < MAX_FRAMESKIP) それはどのように有効ですか? 彼の価値を仮定しましょう。 MAX_FRAMESKIP = 5 メインゲームループが言う前に、初期化の直後に割り当てられたnext_game_tickを想定しましょう... 500。 最後に、ゲームにSDLとOpenGLを使用しており、OpenGLはレンダリングのみに使用されているためGetTickCount()、SDL_Initが呼び出されてからの時間が返されると仮定します。 SDL_GetTicks -- Get the number of milliseconds since the SDL library initialization. ソース:http : //www.libsdl.org/docs/html/sdlgetticks.html 著者もこれを想定しています: DWORD next_game_tick = GetTickCount(); // GetTickCount() returns the …

4
ターンベースのゲームでの戦略的AI?
戦略的なAIエンジンがどのように機能するかに興味があります。たとえば、ターンベースの戦略ゲームで軍隊を配置する場所を評価する方法などです。 目標ベースのAIがどのように機能するかはわかっていますが、それはCivilizationのようなゲームで何を構築または研究するかを決定するための良いアプローチだと思います。 しかし、部隊/部隊の戦術的/戦略的配置。これらのことを評価するためにどのアルゴリズム/戦略が使用されていますか?参考文献/記事はありますか?

2
大規模なネットワーク化された世界でエンティティのパス検索と移動を処理する方法
32x32ボックスに分割されたタイルを使用した上記の画像を考慮すると、近くにいる近くのプレイヤーに「aggro」とマークされたエンティティがあります。このモンスターに理想的にはプレイヤーを追いかけたい(そしてしばらくの間プレイヤーを追い続けたい)。現在、私の唯一の動きは、リモートエンティティの単純な補間器で行われます。これは、動きの更新間のギャップがかなり小さいために機能します。 モンスターがいる位置に移動したいことをクライアントに伝えることができません。それはエンティティが本来よりもはるかに速く移動するためです(これはおそらく補間coに数学を使用して解決できます) -効果的)しかし、もっと重要なのは、現実的に見えず、壁をクリップする可能性があることです!回避できる場合は、サーバー上の動き全体をシミュレートしたくありません...できると思いますが、それでもクリッピングの問題は解決しません。解決策には、定期的なノード更新をパス検索および送信し、それらに動きをシミュレートさせることが必要ですが、確信はありません。 ありがとう!

1
複数の2Dスポットライトを作成するにはどうすればよいですか?
複数のエンティティにスポットライトを使用できる2D「スポットライト」効果を作成したいと考えています。すなわち、いくつかのスプライトがトーチを保持しているかのように。単一のエンティティ(1つのスポットライト)の場合、グラデーションスプライトをオーバーレイし、中心点でそのエンティティを追跡する手法を使用します。この手法は、単一のスポットライトでうまく機能します。これが私が話していることを説明するスクリーンショットです。 シングルスポットライト-作品 私が遭遇する問題は、この手法が複数のエンティティに拡張されないことです。別のスポットライト画像をオーバーレイすると、いくつかの問題が発生します。シミュレートされたスクリーンショットは次のとおりです。 複数のスポットライト=問題 最も明らかな問題は、目に見える角です。これは、レベル全体をカバーするようにスポットライト画像を巨大にすることで解決できますが、それは適切ではありません。2番目の難解な問題は、このテクニックを使って暗闇を効果的に増やしていることです。したがって、追加された各スプライトは、他のすべての人を暗くする効果があります。明らかに、この問題に間違って近づいています。 何か案は? 継続的な取り組み コメントにはブレンドオプションに関する議論がいくつかあります。これが私の現在の考え方です。上記の単一のスポットライトの例では、次のような画像ファイルを使用しています:(わかりやすくするために、透明部分を緑色に置き換えました) 上記で説明したように、問題は、この画像を別の画像とアルファブレンドしても、望ましい効果が得られないことです。代わりに、これが生成されます: それはブレンドオプションの問題として私を襲いません。問題は、私には、その種の画像には、透明マスクと画像(黒い正方形)が組み込まれているため、それらを分離する必要があるということです。 そのため、カットアウト透明度が組み込まれた黒い画像の代わりに、実行時に黒い正方形に対して使用される透明度マスクを使用する必要があります。それを行うとき、私はまだ伝統的な白と黒の透明マスクを使用することができません、または同じ問題に遭遇します。次に例を示します。今回は白と黒が白と黒を表します。 解決策は、それ自体が透明度を利用する透明度マスクを適用することであると思われます。このようなもの:(緑=透明) これにより、複数の透明マスクをアルファブレンドし、黒い正方形に対する透明マスクとして使用できます。アルファブレンドされた2つの透明度マスクの例を次に示します。 とにかく、それが私が実装に取り​​組んでいるアプローチです。これが機能する場合、結果を投稿します。(現時点では)わからないのは、それ自体が透明性を持つ透明マスクを使用できるかどうかです。
12 2d  sprites  camera  lighting 

2
OpenGL:VBOを指定せずにVAOを使用できますか
VAO(頂点配列オブジェクト)に関するすべてのチュートリアルで、頂点属性を構成し、VBO(頂点バッファーオブジェクト)をバインドすることにより、VAOの使用方法を示しています。しかし、各バッファーが同じデータパターン(頂点、uv、色など)を使用する固定シェーダーと組み合わせて、VBOのセット用に構成されるVAOを作成します。したがって、1つのシェーダーを使用して描画される複数のVBOに対して1つのVAOを作成します。 これに関するデモが見つからなかったため、試してみることにしました。しかし、それは機能せず、glDrawArray呼び出し時にクラッシュします。VBOがバインドされていないようです。私が使用しているコードは次のとおりです。 レンダリング: /* Prepare vertex attributes */ glBindVertexArrayOES(vao); /* Upload the buffer to the GPU */ glBindBuffer(GL_ARRAY_BUFFER, pool->next()); glBufferSubData(GL_ARRAY_BUFFER, 0, parts * buffer.stride() * 6, buffer.getBuffer()); /* Draw the triangles */ glDrawArrays(GL_TRIANGLES, 0, parts * 6); glBindVertexArrayOES(0); VAO作成: glBindVertexArrayOES(vao); glEnableVertexAttribArray(ls.position); glVertexAttribPointer(ls.position, 2, GL_FLOAT, GL_FALSE, buffer.stride(), 0); glEnableVertexAttribArray(ls.color); glVertexAttribPointer(ls.color, 3, …
12 opengl  vbo  vao 

1
OpenGL-キューブ上の白いエッジ
私が作っているMinecraftのようなゲームでは、キューブに白い縁ができます。 暗いテクスチャではより顕著になります。テクスチャは次のように設定されています: glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 助けがありますか?

8
高校を卒業するか、自分で教える必要がありますか?[閉まっている]
この質問が将来の訪問者に役立つことはまずありません。それは、小さな地理的領域、特定の瞬間、またはインターネットの世界中の視聴者には一般に適用できない非常に狭い状況にのみ関連します。この質問の適用範囲を広げるには、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 私はゲーム開発者になりたいです。私は11年生のAの生徒で、高校での時間を無駄にしているように感じます。ホームスクーリングに切り替えることを考えているので、自宅で高校を卒業しながら、自分でゲーム開発の学習に専念する時間ができます。私がこれについて話した人の中には、学校に行って大学に行く方が良いと言う人もいれば、ホームスクーリングを通して卒業証書を得ることができると言う人もいます。そうすれば、私は自分がやりたいことを順調に始め、経験を積むことができます。私は何をすべきかわからず、どのルートを取るべきかについてアドバイスをくれる経験豊富なプログラマーがいるのだろうかと考えていましたか?

3
衝撃ジャンプ
私を困惑させていることが1つあります。それは、プラットフォーマーで「フェイクインパルス」ジャンプを実装する方法です。私が何を話しているのかわからない場合は、マリオ、カービー、Cave Storyからの引用のジャンプを考えてください。彼らの共通点は何がありますか?さて、ジャンプの高さは、ジャンプボタンを押し続けている時間によって決まります。 これらのキャラクターの「インパルス」は、実際の物理学のようにジャンプする前ではなく、空中で構築されていることを知っています-つまり、最大高さの途中で指を非常にうまく持ち上げることができ、それとフルストップの間の減速。ホップをタップして長押しするだけでいいのは、そのためです。彼らが軌道をアークとして保持していることに魅了されます。 私の現在の実装は次のように機能します: ジャンプボタンを押している間、重力はオフになり、アバターのY座標は重力の一定値だけ減少します。たとえば、物がティックごとにZ単位で落ちる場合、ティックごとにZ単位上昇します。 ボタンを放すか、制限に達すると、アバターは、速度が0に達するまでXユニットをカバーする量で減速します。一度、速度が重力に一致するまで加速します-例に固執すると、Xユニットをカバーしながら0からZユニット/ティックまで加速すると言えます。 ただし、この実装では、ジャンプが対角線になりすぎ、アバターの速度が重力よりも速くない限り、現在のプロジェクトでは速度が速すぎます(ティックごとに約4ピクセルで移動し、重力はティックごとに10ピクセルです) 40FPSのフレームレート)、水平よりも垂直になります。プラットフォーマーに精通している人は、ゲームの重力ほど速くなくても、キャラクターのアークジャンプはほとんど常に彼らがさらにジャンプすることを可能にし、それが正しくプレイされない場合、それ自体が証明されることに気付くでしょう非常に直感に反します。私の実装が非常に迷惑であることを証明できたので、私はこれを知っています。 誰かが同様のメカニズムを試したことはありますか?この種のプラットフォーマージャンプの背後にあるものを知りたいです。事前にこれを経験したことがなく、試してみたい場合は、説明された実装を修正または強化しようとしないでください、私が正しい方法でなかった場合-から解決策を作ってみてくださいスクラッチ。これらの擬似インパルスがどのように機能するかを示している限り、重力、物理学、その他を使用するかどうかは気にしません。 また、言語固有のコーディングを避けるためにそのプレゼンテーションが欲しいです。たとえば、C ++の例を共有したり、Delphiを使用したりします。プロジェクトにXNAフレームワークを使用していて、C#のことを気にしない限り、他のコードを読むのに忍耐はありません。他の言語の特定のゲーム開発者はここで達成することに興味があるので、擬似コードにこだわる必要はありません。 よろしくお願いします。

8
2D曲線をデータストレージのポイントに変換する
曲線、つまりパスを最小数のポイントに変換して、ファイルまたはデータベースに保存できるようにするアルゴリズムを作成しました。 この方法は簡単です。3つのポイントを等間隔で移動し、これらのポイントが形成するライン間の角度を測定します。角度が許容値よりも大きい場合、そのポイントまでの新しい3次曲線が作成されます。次に、ラインを前方に移動し、角度を再度測定します… Androidの知っている人のためにパス注こと-クラスdstPathは一方で、私は後でポイントを保存することができますので、配列にポイントを記録したカスタムクラス、あるsrcPathは地域労働組合の結果であり、したがって、私にとって何のキーポイントを持っていません保存する。 問題は、ソースパスが完全な円と長方形で構成されている下のコードで生成されたこの画像でわかるように、円が滑らかに見えないことです。許容角度とステップの長さを変更しようとしましたが、何も役に立ちません。このアルゴリズムの改善、または別のアプローチを提案できるかどうか疑問に思います。 編集:Android Javaを使用している人のためにコード全体を投稿したので、簡単に試してみることができます。 public class CurveSavePointsActivity extends Activity{ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new CurveView(this)); } class CurveView extends View{ Path srcPath, dstPath; Paint srcPaint = new Paint(Paint.ANTI_ALIAS_FLAG); Paint dstPaint = new Paint(Paint.ANTI_ALIAS_FLAG); public CurveView(Context context) { super(context); srcPaint.setColor(Color.BLACK); srcPaint.setStyle(Style.STROKE); srcPaint.setStrokeWidth(2); srcPaint.setTextSize(20); dstPaint.setColor(Color.BLUE); dstPaint.setStyle(Style.STROKE); dstPaint.setStrokeWidth(2); dstPaint.setTextSize(20); …

1
グラフィックスハードウェアについて学ぶための優れたリソース[非公開]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 閉じた2年前。 グラフィックハードウェア(および関連する低レベルソフトウェア)の優れた学習リソースを探しています。基本的に、実装方法の観点からopengl / direcx APIレイヤーの下で何が起こっているのかをもっと知りたいと思います。 レンダリングパイプラインのさまざまな段階(表示、投影、クリッピング、ラスタライズなど)で原理的に何が起こるかについてはよく知っています。 私の目標は、次の種類の問題に関してグラフィックス/シェーダープログラミングを行う際に、トレードオフと潜在的な最適化について、より多くの情報に基づいた意思決定を行えるようにすることです。 バッチング カリングを表示 オクルージョン 描画順序 状態変化の回避 三角形対ポイントスプライト テクスチャサンプリング 等 基本的に、グラフィックプログラマがより効果的になるために最新のグラフィックハードウェアについて知る必要があるもの。 特定の最適化手法を本当に探しているのではなく、より効率的なコードを自然に書くために、より一般的な知識が必要です。

2
累積マトリックス変換を使用してジンバルロック問題を解決する方法
ジェイソンL.マッケソンのオンライン「Learning Modern 3D Graphics Programming」本を読んでいます 今のところ、ジンバルロックの問題と、クォータニオンを使用してそれを解決する方法について説明しています。 ただし、ここ、クォータニオンページで。 問題の一部は、方向を一連の3つの累積軸回転として保存しようとしていることです。方向は回転ではなく方向です。そして、向きは確かに一連の回転ではありません。そのため、船の向きを特定の量としての向きとして扱う必要があります。 これは私が混乱し始める最初の場所だと思います。理由は、向きと回転の劇的な違いが見えないからです。また、方向が一連の回転で表現できない理由もわかりません... また: この目的に向けた最初の考えは、マトリックスとしての方向を維持することです。向きを変更するときが来たら、この行列に変換を適用し、結果を新しい現在の向きとして保存します。 これは、現在の方向に適用されるすべてのヨー、ピッチ、およびロールが、現在の方向に対して相対的であることを意味します。まさにそれが私たちに必要なものです。ユーザーが正のヨーを適用する場合、そのヨーは、ある固定座標系ではなく、現在のポインティングの位置を基準にして回転させます。 概念は理解していますが、行列変換の累積がこの問題の解決策である場合、前ページで示したコードがそれだけではないことを理解していません。 コードは次のとおりです。 void display() { glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClearDepth(1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glutil::MatrixStack currMatrix; currMatrix.Translate(glm::vec3(0.0f, 0.0f, -200.0f)); currMatrix.RotateX(g_angles.fAngleX); DrawGimbal(currMatrix, GIMBAL_X_AXIS, glm::vec4(0.4f, 0.4f, 1.0f, 1.0f)); currMatrix.RotateY(g_angles.fAngleY); DrawGimbal(currMatrix, GIMBAL_Y_AXIS, glm::vec4(0.0f, 1.0f, 0.0f, 1.0f)); currMatrix.RotateZ(g_angles.fAngleZ); DrawGimbal(currMatrix, GIMBAL_Z_AXIS, glm::vec4(1.0f, 0.3f, 0.3f, …

3
「Dont Starve」ではどのアニメーション手法が使用されていますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 6年前に閉鎖されました。 開発から離れた個人的な時間にいくつかのゲームをプレイしているときに、サバイバル2D / 3Dサバイバルゲームに出くわしました。ゲームは明らかにSDLとGLUT(Dont starve)で作成されましたが、本当に驚いたのはゲーム内のアニメーションでした。 アニメーションは非常に滑らかで流です。アニメーション中に歪みはありません。手作りのアニメーションで通常起こるのは、ピクセルが削除され、アニメーションがギザギザになり、単純に滑らかにならないことです。それで、どうしてこのような品質のアニメーションを達成できたのかを考えるようになりました。彼らは本当に手作りでしたか(もしそうなら、それは非常に才能のあるアーティストを撮影したに違いありません)、それは骨のアニメーションですか、それとも別のテクニックを使用していますか?
12 animation  sdl  glut 

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