2012-06-04 12 views
6

趣味として、私は古いビデオゲームを作り直してきました。可能であれば、ホイールの再発明を避けたいと思います。ゲームはGUIベースですが、GUIはルック・アンド・フィールでカスタマイズする必要があります。また、いくつかのゲーム画面では3D OpenGLレンダリングで作業する必要があります。あなたのアイデアを与えることを2D/3Dゲーム開発用のQtライブラリ

は、ここでは初期のプロトタイプからのスクリーンショットです:

enter image description here

使用されるアニメーションがたくさんありますし、3Dはまた、しかし、GUIウィジェットは標準でとほとんど同じように動作しますデスクトップアプリケーション。

これまでのところ、私は(それが強固なまたは完全ではない、と私はいくつかの問題に実行してきた)私自身のGUIライブラリを使用してきました。

私はそれが評判と印象的な機能だ、とQtのウェブサイトで素敵なスクリーンショットをいくつか与えられたのQtへの移行を検討してきました。しかし、以前はQtを使ったことはありませんでした。だから私はそれができることや、それを学ぶためにどのような時間を投資する必要があるのか​​、考えているわけではありません。 (私はFLTKを使用したことに注意してください)。

私の質問は:このような状況ではQtを使用する実用的な/可能でしょうか?

UPDATE:Qtでゲーム画面をモックアップした後、私はそれを使用しないことに決めました。 (特にスタイルシートを使って)必要な機能の多くはサポートしていますが、カスタムビットマップベースのプリレンダリングフォントをサポートする必要があります(変換/置換はできません)。私はQFontをサブクラス化することも、将来のQtリリースでそれを破ることなく再実装することもできません。つまり、私はQt(使いやすさとドキュメントの良さの両方)に非常に感銘を受けました。私は自分のエンジンのためにいくつかの機能を借りています。入力を提供したすべての人にありがとう。はい、それは可能です、あなたはおそらくあまりにも多くのQtと戦うために必要はありません。

+1

簡単な答えは「はい」です。この状況でQtを使用することは可能です。より効果的な答えを得るには、より詳細な質問をするか、Qtについて疑問を持っているかもしれません。 – Brady

+1

'QGraphicsView' /' QGraphicsScene'アーキテクチャを見てください。それはあなたの後ろのものに近いはずです。 – cmannett85

+0

ありがとうございました。 Qtを使ったことは一度もありませんでした。私の主な関心事は、私が必要とすることができないことを見つけるために多くの時間を費やしています。 QGraphicsViewクラスは、私が必要とするいくつかの機能をサポートしているようです。私が必要とする別の例は、非長方形のボタンである。 (私の既存のコードは画像マスクを使ってマウスイベントを受け入れ/拒否します)。 Qtは簡単にそのような功績を認めますか? – QuasarDonkey

答えて

4

あなたのゲームがスクリーンショットに基づいて行う必要があることはすべてわかりません。しかし、私はここで他のポスターの感情をエコーし​​、見るべき道をいくつか提供します。

一つは、あなたがGraphicsViewフレームワーク上でQtQuickを検討する必要がありますということですが、これは本当にあなたが何をする必要があるかに依存します。私は代わりにそれを捨てて、あなたがそれを見逃さないようにしたい。このtutorialはQtQuickを使って本当に滑らかな見た目をつくり、4つのスタイルのゲームをつなぎます。これは、あなたが行きたいと思っているものよりも単純なものかもしれませんが、もう一度、おそらくそうではないかもしれません。

第二には、あなたのすべてのボタンにカスタムペイントイベントを書き込む前に、私はQt Style Sheetsを使用して検討すると、構文などのCSSであなたのウィジェットのスタイル。これにより、GUIのルック・アンド・フィールを非常に柔軟な方法で素早く変更することができます。あなたのスクリーンショットに基づいて、私はと思ってを使って、スタイルシートから望むものをサブクラス化して独自の設定をロールバックするよりもずっと速く得ることができます。しかし、もう一度、スクリーンショットに基づいて知ることは難しいです。Hereは、Qtスタイルシートだけを使用して実装された濃いオレンジ色のGUIの例です。 border-radiusプロパティのQPushButtonのスタイルシートは、丸いボタン(ref)を表示します。

+0

はい、私は既にスタイルシートを見つけました。 'border-image'プロパティは、主にすべてのプレレンダリングされたイメージを使用しているため、必要なテーマ機能のほとんどを提供しているようです(アニメーションもできますか?)。このゲームは複数のプレイ可能な帝国をサポートしているので、特に便利です。それぞれが異なるルックスを持っています。丸いボタンに関しては、画像はすでに丸みを帯びているので、マウスのクリックをその領域に制限したいだけです。 QWidget :: setMask()はそれを行います。私はQtQuickをチェックアウトします。 – QuasarDonkey

+0

はい、スタイルシートを使用すると、ボタンの画像が必要ないように思えますが、そうですか?あなたはスタイルを書き上げることができますし、UIの変更/修正(少なくともボタンの点で)ははるかに簡単です。それでは、私はあなたのワークフローを知らないので、どんなものでもベストを尽くします。 アニメーションのプロパティ(CSS)を使用するのに不思議に思っている人は、Qtスタイルシートを使ってアニメーションのプロパティを取得するつもりはないと思います。私の知る限りでは、良いアニメーションを得るためにGraphics View FrameworkまたはAnimation Framework(および/または両方の組み合わせ)を使用する必要があります。がんばろう! –

1

単純な答えは、いくつかのより多くの考えを投げするのではなく、上に与えられてきました。ほとんどの場合、それほどカスタマイズされていないウィジェットに行くための推奨アドバイスはサブクラスであり、自分でペイントイベントを実装します。

基本的な描画プリミティブの負荷を使用して、要素の基本図形を取得し、そこから展開することができます。そこには、実際にそれを行う方法についての本当に良いリソースとここにいくつかの質問があります。

+0

うん、私はそれを考えていた。私がAPIで見たことから、ウィジェットをサブクラス化することで、私が望む正確なルック・アンド・フィールを得ることができます。 QButton :: drawButton()などをオーバーライドします。 – QuasarDonkey