n
10 августа 2018 г. 15:07

Qt C++ vs QML

QML, Qt

Добрый день. Имею опыт разработки  различных расчетных приложений на C++/QT. С QML дел не имел. Решил попробовать себя в Gamedev'е, используя QT. Хочу написать игру по типу Бомбомен для Windows и Android. И задумался над реализацией:

1. Стоит ли использовать QML для этого дела или можно обойтись c++ и opengl?
2. Если использовать QML, то я так понимаю на нем делается весь интерфейс (кнопки меню, джойстик управления для андроид, ...), а сама логика пишется на с++(передвижение персонажа, взрывы,...)?  И на сцене эти оба слоя объединяются?
3. Какой проект предпочтительнее? C++ с присобаченным QML или QML c присобаченным С++?







Виртуальный хостинг со скидкой 10 процентов
Виртуальный хостинг со скидкой 10 процентов
EVILEG предлагает надёжный хостинг со скидкой 10% на виртуальный хостинг и 5% на VPS
1

Добрый день.

Если Андроид предполагается, то конечно нужно использовать QML.
Я занимался разработкой арканоида на QML и ещё одной игры. Пытался реализовывать логику на QML, но это было довольно накладно и не очень удобно. В итоге логику реализовал на С++. Была игровая сцена, которая являлась классом, наследованным от QQuickItem и зарегистрированным через qmlRegisterType в приложении.
Также и все остальные игровые объекты были наследованы от QQuickItem в C++. Созданием объектов, инициализацию уровня делал по большей части в C++. В QML был интерфейс, кнопки там, джойстики, как Вы сказали, таблицы рейтингов, настройки и т.д.
Отрисовку всех игровых объектов делал, используя OpenGL, через метод updatePaintNode
Не знаю, какое значение вы вкладываете в эти две комбинации
C++ с присобаченным QML или QML c присобаченным С++

На мой взгляд это одно и тоже получится: создаёте некоторые классы в C++, регистрируете их в QML слое, используете.

В сухом остатке вывод такой:
  1. Интерфейс можно написать чисто на QML
  2. Игровую сцену реализовать в C++ через наследование от QQuickItem
  3. Игровые объекты, в том числе и их анимацию, также реализовывать в C++ через наследование от QQuickItem, для отрисовки переопределить метод updatePaintNode










0

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
МБ
14 июля 2019 г. 17:57
Максим Беликов

C++ - Тест 005. Структуры и Классы

  • Результат:100баллов,
  • Очки рейтинга10
МБ
14 июля 2019 г. 17:52
Максим Беликов

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:90баллов,
  • Очки рейтинга8
МБ
14 июля 2019 г. 17:45
Максим Беликов

C++ - Тест 003. Условия и циклы

  • Результат:71баллов,
  • Очки рейтинга1
Последние комментарии
16 июля 2019 г. 15:15
Евгений Легоцкой

Конечно )) На самом деле не все читали Шлее... я например не читал ))
16 июля 2019 г. 15:05
IscanderChe

Так пример с QLocalServer и QLocalSocket я целиком переписал с QTcpSocket и QTcpServer из книги Шлее. Принципиальное отличие - где коннект ставить. :)) Разве что на это упор сделать. Но я могу...
16 июля 2019 г. 14:47
Евгений Легоцкой

Лучше API ))) Кстати, по использованию QLocalServer и QLocalSocket на сайте нет статей, было бы очень полезно и хорошо пошло бы в раздел Qt.
16 июля 2019 г. 12:36
IscanderChe

Да, прямой доступ не предполагается. Впрочем, можно, конечно, и напрямую. Всё равно всё локально происходит. Проблема в том, как донести сведения об изменениях в базе, которые вносит клиент, д...
b
16 июля 2019 г. 8:38
bbb116

спасибо, до smart pointer еще не дошел )
Сейчас обсуждают на форуме
17 июля 2019 г. 11:49
Михаиллл

В настройкак указан индификатор проекта и ключ. Осталось понять как использовать ключ. Попробовал вставить в этот запрос 'https://[PROJECT_ID].firebaseio/users/jack/name.json?access_to...
b
17 июля 2019 г. 9:01
bbb116

Вообщем работает только если делать setSceneRect только в конструкторе главного окна, если потом менять rect например при вставке картинки то появляются сколлы все как надо только области не р...
17 июля 2019 г. 5:54
Алексей Внуков

хочу не стандартный набор символов, а все ненужное убрать чтоб не мешало. для начала решил посмотреть как работает клава на родном примере, а он на телефоне не взлетел вот и начал разби...
17 июля 2019 г. 5:06
Михаиллл

Добрый день.Возможно вы сталкивались с облаками.Нужно из Qt создавать на облаке папки, записывать в папки файлы, читать и удалять с компьютера файлы.Возможно знаете, что лучше и проще испол...
Ищу работу?
25,000.00 руб. - 30,000.00 руб.
Разработчик Qt/C++
Barnaul, Altai Krai, Russia

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы

EVILEG
О нас
Услуги
Присоединяйтесь к нам
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB