Skip to content
/ tanks Public

2D game written in C++ & Qt for Windows, Linux and Android

License

Notifications You must be signed in to change notification settings

anevero/tanks

Repository files navigation

Tanks

Tanks - 2D-игра, написанная на C++ с использованием Qt framework (5.15.2+). Игра предназначена для ПК, но может работать и на Android-смартфонах.

Суть игры: на ограниченной карте со стенами, различными типами покрытия, препятствиями, бонусами и телепортами уничтожить всех ботов. Доступны четыре карты, три вида ботов (от почти бездействующих до ботов, осуществляющих поиск игрока), три танка игрока с разными характеристиками, а также различные виды снарядов. Более подробная информация об объектах игры расположена в секции "Информация" внутри программы.

Tanks Tanks

Игра является учебным проектом студентов 4 группы 1 курса факультета прикладной математики и информатики БГУ (2 семестр 2018-2019):

Основная стадия разработки завершена в мае 2019 года. После мая 2019 года несколько раз выпускались небольшие обновления, включающие в себя рефакторинг кода и обеспечение совместимости проекта с актуальными версиями Qt.

В программе используется музыка David Fesliyan и spinningmerkaba.

Установка игры

В секции releases можно найти установщики игры для 32- и 64-разрядной Windows, 64-разрядной Ubuntu, а также apk-файл для установки игры на Android-смартфон.

Установщики для Windows и Linux были созданы с использованием утилиты CQtDeployer. Для удаления программы после ее установки на этих операционных системах достаточно запустить файл TanksTool из папки, куда была установлена игра.

При установке игры на Android вы можете получить предупреждение о том, что автор приложения неизвестен. Это ожидаемое поведение, можете не обращать на это внимания.

Если вы хотите запустить игру на другой ОС, склонируйте репозиторий и скомпилируйте проект самостоятельно (инструкции можно найти ниже).

Continuous integration

GitHub Actions Status

После каждого нового коммита запускается автоматическая сборка и статический анализ кода проекта. Обычно это занимает до пяти минут. Ссылки на результат и логи процесса доступны на странице GitHub Actions, а также в статусе коммита в списке коммитов.

Замечания cppcheck (на стадии check) не влияют на статус CI (из-за большого количества ложноположительных срабатываний), но рекомендуется все же обращать на них внимание. Предупреждения cpplint на стадии check и ошибки при сборке на стадии build влияют на статус CI, и игнорировать их нельзя.

Сборка проекта с помощью QMake

Для того, чтобы собрать проект с помощью QMake в составе Qt Creator, достаточно склонировать репозиторий и запустить файл tanks.pro.

Сборку проекта под Linux рекомендуется осуществлять с помощью GCC64, под Windows - с помощью MinGW64.

Сборка проекта под Android - несколько более сложная процедура. Немного подробнее об этом можно почитать в документации. Обратите внимание на то, что в проекте используются не совсем стандартные манифест и скрипты Gradle. В последних можно найти информацию о том, какие версии некоторых компонентов необходимы для сборки проекта.

Для редактирования переводов приложения следует использовать входящие в состав Qt утилиты lupdate и lrelease, а также Qt Linguist.

Сборка проекта с помощью CMake

В некоторых случаях с проектом удобнее работать, например, в среде разработки CLion, которая не поддерживает QMake. В этом случае проект нужно собирать с помощью CMake. Соответствующий скрипт также доступен в репозитории.

Для корректной работы скрипта необходимо указать путь к соответствующим библиотекам Qt на своем компьютере (установить соответствующее значение переменной CMAKE_PREFIX_PATH). Сделать это можно как минимум двумя способами:

  1. В настройках CMake-конфигурации в CLion добавить флаг -DCMAKE_PREFIX_PATH=path.
  2. В CMake-скрипте добавить строку set(CMAKE_PREFIX_PATH path). В CMake-скрипте в репозитории такая строка уже есть, вам достаточно раскомментировать ее и указать путь к Qt на своем компьютере.

После этого на Linux проект можно импортировать в CLion для дальнейшей работы. Под Windows необходимы дополнительные действия. Нужно указать в Path путь к компилятору в составе Qt, а также путь к библиотекам Qt. Например:

C:\Qt\Tools\mingw810_64\bin

C:\Qt\5.15.2\mingw81_64\bin

Настоятельно рекомендуется переместить эти строки в Path как можно выше. Дело в том, что Qt относительно часто используется в стороннем ПО, ссылки на которое могут присутствовать в Path. При компиляции выбираются первые найденные по адресам в Path библиотеки. В случае, если выбраны принадлежащие сторонним программам библиотеки, корректно собрать и запустить проект может и не получиться из-за различий в их версиях.

После внесения изменений в Path необходимо перезагрузить Windows. Далее рекомендуется выбрать в CLion компилятор, входящий в состав Qt (указать путь к нему в Settings - Toolchains). После этого можно работать с проектом.

Ограничения CLion

Учитывайте, что при использовании CLion вам придется смириться со следующими ограничениями:

  • По умолчанию приложение нельзя будет скомпилировать, подписать и запустить под Android. Возможно, существуют решения этой проблемы.
  • Для редактирования и генерации файлов перевода все равно нужны утилиты Qt.

Известные проблемы при сборке проекта

При сборке проекта под Windows рекомендуется использовать актуальную версию Qt (как минимум 5.13.2). Если собирать его с помощью более старой версии Qt (в частности, 5.12.4 - 5.13.1), игра может работать некорректно. Это связано с багом в библиотеке Qt Multimedia, который был исправлен в Qt 5.13.2.

При сборке проекта под Android необходимо использовать самую актуальную версию Qt (как минимум 5.15.2). Если собирать его с помощью более старой версии Qt, то:

  • Проект может не скомпилироваться из-за изменения структуры манифеста в Qt 5.14-5.15.
  • Игра может работать некорректно из-за бага в реализации класса QToolTip в Qt 5.14-5.15, который был исправлен в Qt 5.15.2.