PC / Linuxでゲームメニュー/シェルオーバーレイを作成するためのアーキテクチャアプローチ?


8

私はカスタムデジタルテーブルトップインストール用のゲームのコレクションに取り組んでいます(Microsoft Surfaceテーブルと同様)。各ゲームは、フルスクリーンで実行される個別の実行可能ファイルになります。さらに、同時に実行するメニュー/シェルオーバーレイプログラムが必要です。メニュー/シェルを使用すると、ユーザーはゲームを一時停止したり、他のゲームに切り替えたり、ゲームの履歴を確認したりできます。

シェルのいくつかの重要な要件:

  • 現在実行中のゲームに渡す前に、まずすべてのユーザー入力(主にマルチタッチ)をインターセプトします(たとえば、「一時停止」コマンドでポップアップすることを認識できるようにします)。

  • 画面の任意の部分を表示でき、現在実行中の(おそらく一時停止されている)ゲームが下に表示されたまま、理想的には形状/サイズが動的で、ゲーム上でアニメーション化された入出力ドロワーエフェクトを作成できます。

現在、この問題に対するさまざまなアーキテクチャアプローチ(FrapsやDirectXオーバーレイなど)を調査していますが、これについて考えるいくつかの方法がないと思います。考慮すべき主なアプローチは何ですか?

(テーブルは現在Windows PCで実行されていますが、代わりにLinuxボックスである可能性があることに注意してください。これにより、OSに依存しないソリューションが必要になるわけではありません。Windows固有のソリューションで満足します。しかし、 Linuxでこれを実現する方がはるかに簡単な場合は、Linuxに切り替えてLinux固有のソリューションを使用することを検討します。)

回答:


3

本当に評価すべきことは多くないと思います。特にこの種のインストールでは、パフォーマンス/応答性が最初になります。DirectXまたはOpenGLのいずれかの遅延レンダリング/ Render-to-Texture(RTT)を使用できます。

そのためには、シェルアンダーレイをデフォルトのフレームバッファー(フロント/オンスクリーンバッファー)にレンダリングし、アクティブなゲームオーバーレイを画面サイズのクワッドにレンダリングし、このクワッドを現在の「ドロワー」のステータスに従ってワールドスペースの適切な位置にシフトします。 "トランジションを行ってから、それをデフォルトのフレームバッファーにレンダリングします。これで、アクティブなゲームをシェルの上に置くことができました。これは非常に高速な操作であるため、滑らかなトランジションに適しています(優れた補間計算を前提としています)。

インタラクションに関しては、RTTデータをフレームごとにCPU側に読み戻すと、アンダー/オーバーレイヒット検出をピクセルパーフェクトにすることもできます。その場合、少なくともオーバーレイバッファーを安価な1ビットマスクRTTとして返す必要があります。

編集別の方法は、フルスクリーンモードを実行できるため、完全にブラウザーベースにすることです。ゲームを個別の「プログラム」ではなく、モジュールとしてロードすることができます。ブラウザーの問題は、同じパフォーマンスが得られないことです。レイヤー化と高速グラフィックスのために(使用するブラウザーを制御できるため)WebGLを使用することもできますが、ゲームはシンプルである必要があります。パフォーマンスは別として、この方法で開発するのはかなり簡単かもしれませんが、それでもOSに依存しません。


ご不明な点がありましたらお知らせください;)
エンジニア、

ありがとう!そして確認するために、このアプローチはシェルと個別のプログラムとして実行されている個々のゲームで機能しますか?
Ghopper21 2012年

いいえ。何らかの方法で、1つだけのプロセスがGPUデバイスコンテキストにアクセスできるようになります。それ以外の場合は、3Dアクセラレーションを無視することが唯一の方法です。もう1つはこれです。WinとLinのどちらを使用するのかまだわからない場合は、このアプローチで問題ありません。一方、OS固有のアプローチを選択して、後で他のOSに変更すると、最初のアプローチが古くなり、新しく選択したOSで複製できなくなる可能性があります。さらなる答え/アイデアを待つことをお勧めします。
エンジニア

@ Ghopper21別のタックについては、私の編集を参照してください。
エンジニア

ブラウザソリューションを提供してくれたNickに感謝します。パフォーマンスなどの問題で避けたいと思います。しかし、あなたのメモから、私はWindowsとLinuxの部分がはっきりしていなかったことがわかります。質問の編集で明確にします。
Ghopper21
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.