Ist QML der richtige Weg, um ein Spiel in Qt zu entwickeln?

8

Ich habe versucht, ein Spiel mit Qt zu machen und habe mich gefragt, ob QML den Punkt erreicht hat, an dem es als ernstzunehmendes Tool auf dem Desktop verwendet werden könnte. Ich habe einen Beitrag von Qt gesehen, in dem es heißt, dass sie die meisten Dinge zu QML überführen werden, also scheint dies der Weg zu sein, zumindest nach Qt.

Edit: Mir ist klar, dass QML wahrscheinlich nicht die beste Wahl für ein 3D-Spiel mit schwerer Grafik sein würde. War eher auf der Suche nach etwas, das hauptsächlich 2D-Sachen wie ein Platformer-Spiel hat.

Sie haben dies Ссылка gesehen. So ist es offensichtlich in gewissem Maße möglich. Ich habe auch einige beeindruckende Spiele gesehen, die ausschließlich mit Java Script erstellt wurden, was meiner Meinung nach die Basis von QML ist. Ich war nur neugierig, was der beste Weg wäre, mit Qt im Moment zu gehen, da sich die Dinge in letzter Zeit geändert haben ...

    
radix07 21.06.2011, 03:10
quelle

3 Antworten

11

Es hängt vielleicht davon ab, wie lange Sie warten wollen, bevor Sie Ihr Spiel veröffentlichen.

Die Trolle / Qt machen gerade ihren "Grafik-Stack" neu: Statt historischer "Every-widget-render-its" (das ist das falsche Paradigma für Spiele und reichhaltige mobile Apps), werden sie neu implementiert zu einem einzelnen Grafikstapel, der die WHOLE-Schnittstelle darstellt, wobei die "Widgets" selbst nur Daten sind, die in das Rendering einfließen. Kurz gesagt, das Ziel ist es, Desktop / Mobile-Anwendungen mit der gleichen Leistung zu machen, wie sie die High-End-Spiele seit Jahrzehnten machen (mit einem eigenen Grafik-Stack, der dem typischen X/Xlib/Motif/Xvt/Win/MFC/Qt -Anwendung-Grafik-Stack nicht ähnelt). Darüber hinaus sind die Qt5-Pläne (in Planung / Entwicklung jetzt, sie behaupten, eine Veröffentlichung irgendwann im nächsten Jahr) für diese Grafik-Stack-Implementierung auf OpenGL angewiesen.

Nach dieser Arbeit lautet die Pipeline: Widgets==>QML==>(C++ Graphics Stack)==>Hardware . Derzeit (Qt 4 und vorher) ist es: QML==>Widgets==>(C++ Graphics Stack)==>Hardware .

Sie können auf dieser Seite nach verschiedenen Beiträgen / Diskussionen googlen, oder hier ist eine lange Präsentation, die über diese Bemühungen spricht: Ссылка

IMHO, QML macht mehr Sinn für Spiele, da die Schnittstellenkomponenten "unabhängige Akteure" sind (z. B. nicht durch Layouts miteinander verbunden). Das ist auch der Grund, warum QML so viel sinnvoller für Mobilgeräte ist (wo Immobilien eine Prämie sind), und für sehr auffällige Desktop-Apps (obwohl es noch relativ jung und unbewiesen ist).

QML hat bereits viele Rendering / Animationsoptionen, aber sie sind meist ein sehr reiches 2D (mit dem Sie 3D aber ziemlich gut simulieren könnten). Die QML 3D wird gerade stark überarbeitet, aber die neuen Sachen sehen wirklich gut aus (und sitzen auf OpenGL). Wenn Sie also schweres 3D wollen, könnte es für den Moment Experimentierzeit sein, bis Sie die neuen Qt5-Schnittstellen sehen und die Hardwarebeschleunigung nutzen können (abhängig davon, wie viel 3D Sie benötigen).

Die Performance-Spezifikationen, die ich von den neuen Qt5-Sachen mit dem neuen Grafikstack (in der Prototypenentwicklung) gesehen habe, sind ziemlich beeindruckend, so dass ich darüber nachgedacht habe, einige Spiele in QML zu schreiben, nur um damit zu spielen. Wenn dies zwölf Monate von jetzt an (oder so, nach der Veröffentlichung von Qt5) wäre, würde ich wetten, dass QML die beste / einfachste Entscheidung für Spiele wäre (weil die Komponenten unabhängige Akteure sind, es so einfach zu benutzen ist und Ich würde alle spielspezifischen Heavy Stuff in C ++ pushen, was mit QML ganz einfach ist).

    
charley 21.06.2011, 15:23
quelle
6

QML ist definitiv eine praktikable Option zum Entwerfen von 2D-Spielen und kann Ihnen viel Zeit und Codezeilen sparen. V-Play (v-play.net) ist eine plattformübergreifende 2D-Spiel-Engine, die auf Qt / QML mit vielen nützlichen V-Play-QML basiert Spielkomponenten für die Verarbeitung mehrerer Bildschirmauflösungen & amp; Seitenverhältnisse, Animationen, Partikel, Physik, Multi-Touch, Gesten, Pfadsuche und mehr ( API-Referenz ) ).

Wenn Sie neugierig auf die Spiele von V-Play sind, hier eine kurze Auswahl:

Christian Feldbacher 11.06.2013 08:50
quelle
4

Denken Sie daran, dass QML nur dazu dient, die Benutzeroberfläche zu gestalten. Im Grunde handelt es sich um eine QGraphicsView mit vielen Utility-Funktionen (Code in QML ist mindestens dreimal kürzer als das Qt / C ++ - Äquivalent, zumindest habe ich es gefühlt)

Der Kern der Anwendung wird immer noch entweder von Javascript-Dateien (wenn die Dinge nicht zu komplex sind) oder C ++ / Qt-Dateien (wenn Sie das volle Ausmaß von Qt-Möglichkeiten wollen) behandelt.

Wie Jeremy Salwen sagte, ist QML für ein Spiel, das wie ein Smartphone-App-Spiel aussieht (große Sprites, die sich mit netten Übergängen bewegen, mit einfacher Logik dahinter), mehr als ausreichend.

Aber wenn Sie etwas Komplexes wollen, dann werden Sie in QML nur QDeclarativeItem-Klassen verwenden, die Sie zuvor in C ++ definiert haben. Nicht so nützlich.

    
Fezvez 21.06.2011 09:47
quelle

Tags und Links