問題タブ [game-loop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
12 に答える
4268 参照

winapi - デュアル コアで Windows ゲーム ループ 50% の CPU

ゲーム ループだけで CPU 使用率の 50% を使用しています。レンダリング作業はまだ行っていません。私はここで何をしているのですか?

0 投票する
11 に答える
12742 参照

game-loop - ゲームの開発に「メイン」ゲームループが必要なのはなぜですか?

ほとんどのゲーム開発にはメイン ゲーム ループが必要ですが、なぜそれが必要なのかわかりません。イベントリスナーを実装して、すべてのユーザーアクションに応答できないでしょうか? イベントが発生したときにアニメーション (など) を再生できます。

メイン ゲーム ループの目的は何ですか?

0 投票する
1 に答える
4333 参照

c# - ゲームループとタイムトラッキング

私はただの馬鹿かもしれませんが、一日中ゲームループを実装しようとしていて、クリックしていません。私は文字通り、Google で見つけたすべての記事を読みましたが、問題は、それらがすべて異なるタイミング メカニズムを使用しているため、特定の状況に適用するのが難しいことです (ミリ秒を使用するものもあれば、ティックを使用するものもあります)。

基本的にClock、ゲーム ループが実行されるたびに更新されるオブジェクトがあります。

そのほとんどは XNA に基づいていGameClockますが、大幅に単純化されています。次に、メソッドとメソッドが知る必要がTimeあるさまざまな時間を保持するクラスがあります。UpdateDraw

私のメイン クラスは の 1 つのインスタンスを保持しTime、ゲーム ループ中に常に更新する必要があります。これまでのところ、私はこれを持っています:

時間クラスのリアルタイム プロパティは非常に優れています。ここで、状態がフレームごとに可変回数更新されるように、適切な更新/描画ループが機能するようにしたいと思いますが、タイムステップは固定です。同時に、それに応じてTime.TotalVirtualTimeTime.ElapsedVirtualTimeを更新する必要があります。さらに、ゲームループの設計に違いが生じた場合に備えて、将来的にマルチプレイヤーをサポートする予定です。

これを実装する方法に関するヒントや例はありますか (記事へのリンクは別として)?

0 投票する
4 に答える
901 参照

performance - ゲームループのパフォーマンスとコンポーネントのアプローチ

ゲームループを編成するアイデアがあります。性能に疑問があります。物事を行うためのより良い方法があるかもしれません。

ゲーム コンポーネントの配列があるとします。それらはすべて、ゲームループの反復ごとに何らかの処理を行うために呼び出されます。例えば:

利点:

  1. 優れたコンポーネントベースのアプリケーション、依存関係なし、優れたモジュール性
  2. コンポーネントを動的にアクティブ化/非アクティブ化、登録/登録解除できます
  3. 一部のコンポーネントは透過的に削除または置換でき、システムは何も起こらなかったため引き続き動作します (2 次元から 3 次元への変更) (チームワーク: すべてのプログラマーが独自のコンポーネントを作成し、コードをコンパイルするために他のコンポーネントを必要としません)

疑問:

  1. Component::run() への仮想呼び出しを含むゲーム ループの内部ループ
  2. Component::run() が bool 値を返し、この値を確認したいと思います。false が返された場合、コンポーネントを無効にする必要があります。したがって、内側のループはより高価になります。

さて、この解決策はどれほど良いでしょうか? 実際のプロジェクトで使用したことがありますか?

0 投票する
9 に答える
12175 参照

c++ - Lua、ゲーム ステート、ゲーム ループ

  1. 各ゲーム ループの繰り返しで main.lua スクリプトを呼び出す - 良い設計か悪い設計か? パフォーマンスに(相対的に)どのように影響しますか?

  2. からゲームの状態を維持ます。C++ ホスト プログラムまたはb。Lua スクリプトまたはcから。両方から同期しますか?

(トピックに関する前の質問: Lua と C++: 職務の分離)

(すべての回答に投票します。最良の回答が受け入れられます。)

0 投票する
3 に答える
2227 参照

directx - DirectX:ゲームループの順序、最初に描画してから入力を処理しますか?

DirectXのドキュメントを読んでいて、IDirect3DDevice9 :: BeginSceneのページで何か面白いものに遭遇しました:

CPUとグラフィックアクセラレータ間の最大の並列処理を有効にするには、 presentを呼び出す前にIDirect3DDevice9::EndSceneを呼び出すことが有利です。

私は、入力などを処理してから描画するゲームループを作成することに慣れています。私はそれを逆に持っていますか?たぶん、ゲームループはもっと次のようになるはずです:(半擬似コード、明らかに)

ドキュメントのその文によると、このループは「最大の並列処理を可能にする」でしょう。

これは一般的に行われますか?このようなゲームループを注文することの欠点はありますか?最初の反復の後、実際の問題は見られません...そして、このようなものの実際の速度の増加を知る最良の方法は、実際にベンチマークすることですが、他の誰かがすでにこれを試したことがあり、実際の速度を証明できますか?スピードアップ?

0 投票する
7 に答える
6443 参照

game-engine - ゲーム開発にお役立てください。ループをレンダリングしますか?

私は単純なゲームに取り組んでいます。これは私の最初のゲーム プロジェクトです。

私が見つけたほとんどのサンプルには、すべてのゲーム ロジックも作成されているレンダー ループがあり、私はこれが好きではありません。X=0 のボールと X=10 の壁があり、遅いマシンでは、最初のループで X=7 にボールを配置し、2 番目のループで X=14 にボールを配置するとします。ゲームがクラッシュするだけです!

この「レンダー ループ」はゲームを作成する正しい方法ですか? すべてのフレームでこのようなことをチェックするコードを書く必要がありますか? 例、新しいフレーム X=14、最後のフレームは X=7 なので、X=7 から X=14 までの何かがあるかどうかを確認する必要があります??

ゲーム ロジック用に別のスレッドを作成し、レンダリング ループで、現在のゲーム ロジックの「スナップショットを取得」して表示する必要があると考えていました。

経験豊富なゲーム開発者の皆さん、これをどのように回避していますか?

ありがとう!

0 投票する
3 に答える
7042 参照

c++ - Win32 API のゲーム ループ

win32 GDI のようなゲームマリオを作成しています。game の新しいループを実装しました:

しかし、私のゲームは Ctrl + Alt + Del を押すまで実行されています (マウスカーソルが回転しています)。

0 投票する
3 に答える
14550 参照

java - UIスレッドをフリーズせずにゲームループを実装するための最良の方法

Javaで簡単な2Dゲームを作ろうとしています。

これまでのところJFrame、メニューバーを備えた、と、そのメソッドを拡張JPanelおよびオーバーライドするクラスがありますpaint。次に、画像の位置などを更新するゲームループを実行する必要があります。しかし、私はこれを達成するための最善の方法に固執しています。確かに、メインスレッドに無限ループを設定すると、UI(したがってメニューバー)がフリーズするため、マルチスレッドを使用する必要がありますか?

これまでの私のコードは次のとおりです。

ポインタやヒントはありますか?ループはどこに置くべきですか?私のメインクラスですか、それともGameCanvasクラスですか?

0 投票する
4 に答える
16136 参照

c++ - C++ ゲームループの例

Escを押すまでループし続ける「ゲームループ」だけを持つプログラムのソースを誰かが書いてもらえますか?プログラムは基本的なイメージを表示します。Heres は私が今持っているソースですがSDL_Delay(2000);、プログラムがフリーズしている間、プログラムを 2 秒間維持するために使用する必要があります。

Escを押すまでプログラムを開いたままにしておきたいだけです。ループがどのように機能するかは知っていますが、main()関数の内側に実装するか、外側に実装するかはわかりません。どちらも試しましたが、どちらも失敗しました。あなたが私を助けることができれば、それは素晴らしいことです:P