8

Qt でゲームを作成することを検討していて、QML がデスクトップ上で本格的なツールとして使用できるレベルに到達したかどうか疑問に思っていました。最終的にほとんどのものをQMLに移行すると述べているQtからの投稿を見たことがあります。少なくともQtによれば、これが進むべき道のようです。

編集: グラフィックが重い 3D ゲームには、QML がおそらく最善の方法ではないことを認識しています。プラットフォーマー タイプのゲームのような主に 2D のものを探していました。

このhttp://labs.qt.nokia.com/2010/08/12/a-guide-to-writing-games-with-qml/を見ました。したがって、それは明らかにある程度可能です。また、Java スクリプトのみで作成された印象的なゲームもいくつか見てきました。Java スクリプトは QML のベースであると私は信じています。最近状況が変化しているため、現時点で Qt を使用する最善の方法は何かについて知りたいと思っていました...

4

3 に答える 3

11

ゲームをリリースするまでの「時間」によって異なります。

Trolls/Qt は現在、その「グラフィックス スタック」をやり直しています: 歴史的な「すべてのウィジェットをレンダリングする」(ゲームやリッチ モバイル アプリにとっては間違ったパラダイムです) のではなく、単一のグラフィックス スタックに再実装しています。 「ウィジェット」自体は、レンダリングにフィードする単なるデータセットです。要するに、目標は、ハイエンド ゲームが何十年にもわたって行ってきたのとまったく同じパフォーマンスを備えたデスクトップ/モバイル アプリケーションを作成することです (典型的なX/Xlib/Motif/Xvt/Win/MFC/Qtアプリケーションのグラフィック スタックとはまったく異なる独自のグラフィック スタックを使用)。さらに、Qt5 の計画 (現在計画/開発中で、来年中にリリースされると主張しています) は、このグラフィック スタックの実装を OpenGL に依存しています。

この作業の後、パイプラインは次のようになります Widgets==>QML==>(C++ Graphics Stack)==>Hardware。現在 (Qt 4 以前) は次のとおり QML==>Widgets==>(C++ Graphics Stack)==>Hardwareです。

これに関するさまざまな投稿/ディスカッションをグーグルで検索できます。または、これらの取り組みについて話している長いプレゼンテーションがあります。do-graphics-the-right-way/

インターフェイスコンポーネントは「独立したアクター」であるため(たとえば、レイアウトを通じて互いに結び付けられていないため)、QMLはゲームにとってより理にかなっています。これが、QML がモバイル (不動産が貴重な場合) や非常に派手なデスクトップ アプリ (ただし、まだ比較的歴史が浅く、証明されていない) にとって非常に理にかなっている理由でもあります。

QML にはすでに多くのレンダリング/アニメーション オプションがありますが、それらのほとんどは非常にリッチな 2D です (ただし、3D をかなりうまくシミュレートできます)。QML 3D は現在大幅な改訂が行われていますが、新しいものは非常によく見えます (そして OpenGL に基づいています)。したがって、重い 3D が必要な場合は、新しい Qt5 インターフェイスが表示され、ハードウェア アクセラレーションを利用できるようになるまで (必要な 3D の量によって異なります)、今のところ実験の時期かもしれません。

新しいグラフィックス スタック (プロトタイプ開発中) を備えた新しい Qt5 のパフォーマンス スペックは非常に印象的で、QML で遊ぶためだけに QML でいくつかのゲームを作成することを考えていました。これが今から 12 か月後 (または Qt5 のリリース後) であった場合、QML がゲームにとって最良/最も簡単な決定になると思います (コンポーネントは独立したアクターであるため、使用するのは非常に簡単で、私はすべてのゲーム固有の重いものを C++ にプッシュします。これは、QML を上に置くと非常に簡単です)。

于 2011-06-21T15:23:31.033 に答える
4

QML は UI をレイアウトするためだけに設計されていることに注意してください。基本的に、それは多くのユーティリティ関数を備えた QGraphicsView として機能します (QML のコードは、同等の Qt/C++ よりも少なくとも 3 倍短く、少なくとも私はそう感じました)。

アプリケーションのコアは、javascript ファイル (あまり複雑でない場合) または C++/Qt ファイル (Qt の可能性を最大限に活用したい場合) のいずれかによって処理されます。

Jeremy Salwen が言ったように、スマートフォン アプリ ゲームのように見えるゲーム (素晴らしいトランジションで動く大きなスプライトと、その背後にある単純なロジック) の場合、QML は十分すぎるほどです。

しかし、複雑なものが必要な場合は、以前に C++ で定義した QDeclarativeItem クラスのみを QML で使用することになります。それほど役に立ちません。

于 2011-06-21T09:47:59.200 に答える