問題タブ [game-engine]
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.
mobile-phones - スマートデバイス(携帯電話)向けゲームエンジン
モバイル(iPhoneではなく)に適した3Dゲームエンジンを探しています。
そのような有名な 3D ゲーム エンジンはありますか?
積極的に未開発で、使いやすく、さまざまなデバイスをサポートする必要があります。
android - Android ベースおよび Windows Phone での SDL サポート
Windows Mobile OS または Android に関する情報はどこにありますか。SDL をサポートしているかどうかを知る必要があります。
すべての Android フォンが SDL をサポートしていますか?
game-engine - 3D ゲーム プログラミングのモデル?
私はゲーム開発とゲームプログラミングの初心者です。私はコンピューター グラフィックスの経験があります。主に OpenGL です。しかし、単純な 3D ゲームをプログラミングしようとすると、無料のテクスチャと 3D グラフィックスのモデルの適切なリソースを見つけることができませんでした (たとえば、2D ゲームの場合、スプライト シートなどの多くのリソースを見つけました)。
3D ゲームのテクスチャやモデルについて、よく知っているリソースはありますか?
c++ - DirectDraw: サーフェスがバックバッファより大きい場合、クリッピングが失敗する
モバイル デバイス用のゲーム エンジンを作成しており、複数の解像度をサポートしようとしています。ゲームの世界は画面よりもはるかに大きくなる可能性があるため、クリッパーを使用して世界にビューポートを作成しています。
私のデバイスの解像度は 240x320 です。ビューポートを 240x320 に設定し、ワールドを 240x320 に設定すると、すべて問題ありません。画面外の世界を問題なくスライドできます。ただし、ビューポートが 220x320 でワールドが 240x320 のDDERR_INVALIDPARAMS
場合、サーフェスが左側の画面の外に移動すると、ブリッティングが失敗します。
右側の画面の外にサーフェスを移動しても問題なく動作し、サーフェスは正しくクリップされます。
サーフェスがバックバッファよりも大きい場合、バックバッファでサーフェスをクリップするにはどうすればよいですか?
前もって感謝します
javascript - Javascriptでハックプルーフゲームを作る
HTML5/JavaScriptでオンラインゲームを作成したとします。すべてのコードがユーザーのブラウザにダウンロードされ、ユーザーはゲームを実行します。
誰かがゲームを自分のコンピューターにコピーしたり、機能やモジュールを挿入して不正行為をしたりするのをどのように阻止しますか?たとえば、最も近い敵のスプライトを自動照準する関数を作成できます。
ゲームコードを特定の方法で設計することにより、この種のことから人々を保護する基本的な方法はありますか?
game-engine - コード サンプルのオープン ソース エンジン、またはオープン ソースの 16 進タイル ゲーム、16 進タイル ベースのゲームを作成するためのリファレンスはありますか?
ここで他の質問を使用して、ゲームコーディングwikiへのリンクもあるHex Tilesのセクションを含むゲームに関するAmitのページを見つけました。
私は提案を探しています:
(a) 任意の言語のライブラリ、エンジン、またはコード サンプル。Python でPGU+pygameを見つけましたが、さらに探しています。
(b) オープンソースのヘクスタイル戦術または戦略ゲーム。
グーグルは私のために物事を見つけることができるので、私が望んでいるのはあなたが実際にそれを使ったことがあるということです. したがって、ググってから投稿した場合、これは let-me-google-that-for you に勝るものはありません。(i)使用したことがある場合、(ii)真剣に、C / C ++、python、java、flash / flexなど、どの言語でも問題ありません。
winapi - Windows 7 で Win32 gdi+ ゲームが使用できないほど遅いのはなぜですか?
[このエントリの下部にある重要な新しい情報]
私は、GDI+ を使用した非常に標準的なゲーム ループであると信じています。Vista と XP では、かなりうまく機能します (複雑なゲームでは約 25 fps、単純なゲームでは 40 fps)。Windows 7 (非常に高速な CPU とより多くのメモリを使用) で実行すると、速度が低下し、ゲームが使用できなくなります (0 fps から 4 fps の範囲になります)。コードの関連部分であると思われるものを以下に含めました。私が言うように、これは GDI+ を使用した最も単純な種類の (メモリ ビットマップ ベースの) ゲーム ループだと思います。速度を上げるために私が行った 2 つの試みを以下に示します。まず、WM_PAINT メッセージが送信されるよりもはるかに頻繁に InvalidateRect() が呼び出されている場合、システムはこれを、私のプログラムが悪い/遅いという手がかりと見なし、タイム スライスを保留しているのではないかと心配していました。だから私はペイントIsPendingフラグを追加して、そうしなかったことを確認しました. ペイントごとに 2 回以上無効にしないでください。これでは改善されませんでした。次に、以下のオプション セクションにコードを追加しました。おそらく、WM_PAINT メッセージが送信されるのを待つのではなく、自分でトリガーした方がよいのではないかと考えました。繰り返しますが、改善はありません。
このような単純な GDI+ ゲーム ループが Windows 7 で機能しなくなるなんて、私には気が狂いそうです。 -機能的。また、私は DirectX に切り替えることができることを知っており、そうするかもしれませんが、現在、以下の DrawGameStuff( graphics ) 呼び出しによって表されるコード ベースにかなりの金額が投資されており、可能であれば書き直したくありません。
助けてくれてありがとう。
あはは!クリス・ベッケの手がかりに基づいて、私は今、より多くの非常に関連性の高い情報を持っています. 確かに遅いのは BitBlt() であり、グラフィックス->Clear() ではないと思いましたが、見よ、グラフィックス->Clear() をコメントアウトすると、Windows 7 で突然 40 FPS になりました。 graphics->Clear() をに変更しました
そして見よ、それはまだ40 FPSで実行されていました。FillRectangle() 呼び出しが Clear() 呼び出しよりも速い理由はわかりません。
それで、ゲームの描画コードを追加し直したところ、すぐにそれを殺す別の呼び出しが見つかりました。
そして、それらの呼び出しも非常に遅いです。実験として、PNG ファイルから、screenDC と互換性のある 2 番目の memoryDC に事前に描画しました。次に、スプライトを描画するために、このセカンダリ メモリ DC からプライマリ メモリ DC に描画します。したがって、上記の DrawImage 呼び出しの代わりに、次のようにします。
そして、見よ、私がそうすると、ゲーム全体が Windows 7 で 40 FPS で実行されます。
ただし、そのセカンダリ メモリ DC へのプレレンダリングで PNG ファイルからの透明度情報が失われるため、これは実際の解決策ではありません。そのため、スプライトはすべて不透明で見苦しくなります。
したがって、私の問題は、memoryDC(screenDCと互換性があるように作成されたもの)とPNGソースファイルとの間の非互換性であるようです。この非互換性が Windows 7 でのみ存在する理由 (または少なくとも、なぜそんなに遅くなるのか) がわかりません。最初から画面と互換性があるように PNG ファイルを保存する方法はありますか? それとも、最初に内部的に再レンダリングして、画面と互換性のある新しい PNG ファイルを取得しますか? うーん....
さて、次のように 32bpp HBITMAP にレンダリングすることで、PNG ファイルを適切にレンダリングすることができました。
そしてそれを AlphaBlend() でレンダリングします:
これで、Windows 7 でゲームをすばやく実行できるようになりました。
しかし、なぜ Windows 7 でこれをすべて実行しなければならなかったのか、まだ理解できません。Windows 7 で DrawImage() を使用して PNG 画像からデフォルトで描画するのが遅いのはなぜですか?
c# - 動的プロパティを使用したゲーム エンジンの設計
現在、C# .net XNA ゲーム エンジンを開発しています。
エンジンの設計について質問がありました。まず第一に、エンジンに独自のスクリプト言語を組み込むことができるようにしたいと考えています。そのためには、ゲーム内のすべてのオブジェクトのすべてのプロパティ、または変更したいオブジェクトだけにアクセスできる必要があると考えていました。
私が最初にやり始めたのは、文字列でアクセスできるようにすることです。そのために、画面に描画できるすべての「エンティティ」に、すべてのプロパティのディクショナリを持たせました。プロパティの追加は、Entity クラスで手動で行われました。それ以来、多くの辞書があり、それらの辞書があまり多くない場合、GC が遅くなる可能性があることを読みました。それが私のゲームで今起こっていることだと私は信じています。fps を失い始める前に、色、位置、テクスチャなどの基本的なプロパティを持つエンティティを最大約 1000 個しか取得できません。
辞書よりもさらに遅いため、私が行っていることやリフレクションを使用する以外に、その場でオブジェクトのプロパティに動的にアクセスできる他の方法があるかどうか疑問に思っていました。それとも、デザイン全体を再考する必要がありますか?
c# - xna ゲームでの C# デリゲートのパフォーマンス
現在、C# .net xna ゲーム エンジンを開発しています。
更新マネージャー/スケジューラー/イベント システムを使用する方法を見つけようとしています。私は現在、デリゲートを使用して、動的にスケジュールされたタスクとイベントを作成する方法を提供しています。
私は最近、デリゲートが遅くなる可能性があることを読みました。私のゲームのデリゲートはフレームごとに呼び出されていますが、それによってパフォーマンスが低下する可能性があるのではないかと考えていました。
アップデート:
これも見つけましたhttp://blogs.msdn.com/b/shawnhar/archive/2007/07/09/delegates-events-and-garbage.aspx
これは私が心配していたことであり、それを回避する方法があると思います。他のすべての情報をありがとう。
actionscript-3 - 60 FPSを維持しながら、ゲームで数秒の計算
完了するまでに数秒以上かかるアルゴリズムがあります。私が作成している60fpsのフラッシュゲームにそれを実装しようとしています。フレームを更新して後で計算を続行するために、ActionScript3に計算を中断するためのプロビジョニングがあるかどうか疑問に思っています。おそらくないので、xミリ秒の計算を実行し、その後のフレームレートを測定し、フレームレートが次のフレームよりも小さい場合は、次のフレームで計算が実行される時間を調整するのが最善の方法だと思います。または60fps以上。これの欠点は、ゲームが安定した60fpsで実行されないことです...
フレームレートを維持しながらAS3で大規模な計算を(最適に)実行する方法に関する他のアイデアはありますか?
編集:好奇心旺盛な方のために(計算、おそらく私はアルゴリズムを言うべきでした):私はゲームAIオブジェクトのモーションプランニングライブラリを作成しています(モーションプランニングの1つの用途)。アルゴリズムは、何千回も繰り返されるRRT(ランダムツリーを迅速に探索する)の方針に沿っています。
デモリンク:http ://www.swfcabin.com/open/1279044355
クリックしてモーションプランを作成します。円は、任意の方向に一定の大きさで「突き刺す」ことができます。
また、線形速度減衰(つまり摩擦)はありません。