Является ли QML способом разработки игры в Qt? - PullRequest
8 голосов
/ 21 июня 2011

Занимался созданием игры с Qt и задавался вопросом, дошел ли QML до такой степени, что его можно было бы использовать в качестве серьезного инструмента на рабочем столе. Видел какой-то пост из Qt, в котором говорится, что в конечном итоге большинство вещей будет переведено в QML, так что похоже, что это может быть путь, по крайней мере, согласно Qt.

Edit: я понимаю, что QML, вероятно, не будет лучшим выбором для 3D-игры с тяжелой графикой. Больше искал что-то, что делало в основном 2D-вещи, такие как игра типа платформер.

Видел это http://labs.qt.nokia.com/2010/08/12/a-guide-to-writing-games-with-qml/. Так что, очевидно, в некоторой степени это возможно. Я также видел несколько впечатляющих игр, созданных исключительно с использованием Java-скрипта, который я считаю основой QML. Мне было просто любопытно, что будет лучшим способом работы с Qt на данный момент, так как за последнее время все изменилось ...

Ответы [ 3 ]

11 голосов
/ 21 июня 2011

Это может зависеть от того, «как долго» вы хотите подождать, прежде чем выпускать свою игру.

Trolls / Qt сейчас заново выполняет свой «графический стек»: вместо исторического «каждого виджета»"Renders -self" (что является неправильной парадигмой для игр и многофункциональных мобильных приложений), они повторно внедряются в единый графический стек, который отображает интерфейс WHOLE, где сами "виджеты" являются простыми наборами данных, которые передаются в рендеринг.,Короче говоря, цель состоит в том, чтобы сделать настольные / мобильные приложения с той же производительностью, что и у высококлассных игр на протяжении десятилетий (с их собственным графическим стеком, который совсем не похож на типичный графический стек X/Xlib/Motif/Xvt/Win/MFC/Qt приложений).Кроме того, планы Qt5 (в планировании / разработке сейчас, они требуют релиз в следующем году) зависят от OpenGL для реализации этого графического стека.

После этой работы конвейер будет: Widgets==>QML==>(C++ Graphics Stack)==>Hardware.В настоящее время (Qt 4 и предыдущий) это: QML==>Widgets==>(C++ Graphics Stack)==>Hardware.

Вы можете зайти в Google для различных сообщений / обсуждений по этому вопросу, или вот длинная презентация, в которой говорится об этих усилиях: http://qt.nokia.com/developer/learning/online/talks/developerdays2010/tech-talks/performance-do-graphics-the-right-way/

ИМХО, QML имеет больше смысла для игр, поскольку компоненты интерфейса являются "независимыми действующими лицами" (например, не привязанными друг к другу с помощью макетов).Вот почему QML имеет гораздо больше смысла для мобильных устройств (где недвижимость стоит премиум-класса) и для очень ярких настольных приложений (хотя он все еще относительно молод и не проверен для этого).

В QML уже есть многопараметры рендеринга / анимации, но они в основном очень богатые 2D (но с помощью которых вы можете довольно хорошо имитировать 3D).Сейчас QML 3D претерпевает серьезные изменения, но новый материал выглядит действительно хорошо (и работает на OpenGL).Так что, если вам нужен тяжелый 3D, на данный момент это может быть время экспериментов, пока вы не увидите новые интерфейсы Qt5 и не сможете воспользоваться аппаратным ускорением (в зависимости от того, сколько 3D вам нужно).

ПроизводительностьСпецификации, которые я видел в новом Qt5 с новым графическим стеком (в разработке прототипов), довольно впечатляют, настолько, что я думал о том, чтобы написать некоторые игры на QML, чтобы просто поиграть с ним.Если бы это было через двенадцать месяцев (или около того, после выпуска Qt5), я бы поспорил, что QML будет лучшим / самым простым решением для игр (поскольку компоненты являются независимыми действующими лицами, его так просто использовать, иЯ вставил бы все специфические для игры тяжелые вещи в C ++, что действительно легко сделать с QML сверху).

6 голосов
/ 11 июня 2013

QML, безусловно, является приемлемым вариантом для разработки 2D-игр и может сэкономить вам много времени и строк кода. V-Play (v-play.net) - кроссплатформенный движок 2D-игр, основанный на Qt / QML, со многими полезными игровыми компонентами V-Play QML для обработки нескольких разрешений экрана и соотношений сторон, анимации, частиц физика, мультитач, жесты, поиск путей и многое другое ( Справочник по API ).

Если вам интересны игры, сделанные с помощью V-Play, вот их быстрый выбор:

4 голосов
/ 21 июня 2011

Помните, что QML предназначен только для размещения пользовательского интерфейса. По сути, он действует как QGraphicsView с множеством служебных функций (код в QML по крайней мере в три раза короче, чем эквивалент Qt / C ++, по крайней мере, я так чувствовал)

Ядро приложения по-прежнему обрабатывается либо файлами javascript (если все не слишком сложно), либо файлами C ++ / Qt (если вы хотите в полной мере использовать возможности Qt)

Как сказал Джереми Салвен, для игры, которая похожа на игру для смартфона (большие спрайты, которые перемещаются с красивыми переходами, с простой логикой позади), тогда QML более чем достаточно.

Но если вам нужно что-то сложное, вы в конечном итоге будете использовать в QML только классы QDeclarativeItem, которые вы ранее определили в C ++. Не очень полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...