Обновление учебного игрового движка и новая игра "Защита крепости" на нём же

+121
в блоге Gamedev is Friendship!
Картинка для привлечения внимания (скрин игры)



Я доработал учебный игровой движок, внеся существенные поправки и новые функции.
А поскольку лучший способ тестирования инструмента разработки — это личная разработка на нём, то в процессе, была создана завершенная понная игра в жанре «Защита замка». Простенькая, но затягивает, по моему скромному мнению.

Предыдущий пост с основной информацией об учебном движке и его назначении:
tabun.everypony.ru/blog/gamedev/190959.html

Внесенные дополнения в движок:

  • Загрузка анимаций, как из последовательности файлов, так и кадры из файла.
  • Работа с файлами — загрузка и сохранение данных в файловую систему
  • Получение игрового времени и FPS
  • Проверка коллизий (столкновений) спрайтов двумя моделями и проверка вхождения точки внутрь спрайта (с учетом всех параметров отображения спрайта)
  • Установка фонового цвета
  • Получение геометрии загруженных спрайтов
  • Расширенное управление звуками — остановка и циклическое вопроизведение
  • Система установки и чтения пользовательских данных (тэгов) для спрайтов



Движок доступен в виде zip-архива (руководства разработчика игры включены в подкаталог manuals)
tereshenkov.ru/pubprogs/gamestudy.zip

Руководства разработчика отдельными файлами:
В формате MarkDown:
tereshenkov.ru/pubdocs/gamestudy_manuals/usermanual.md
В формате PDF:
tereshenkov.ru/pubdocs/gamestudy_manuals/usermanual.pdf
В формате HTML:
tereshenkov.ru/pubdocs/gamestudy_manuals/usermanual.html

Исходники самого движка можно скачать по ссылке (на github будет уже завершенная версия со всеми плюшками, включая сетевые операции и конфигурацию для запуска без отладочного интерфейса)
tereshenkov.ru/pubprogs/gamestudy_source.zip
(архив включает проект на Qt5 и библиотеку SFML-2.5.1)

Как и сам проект, исходники доступны под лицензией CC0 — упрощенно, это означает, что вы можете делать с исходниками и проектом всё, что угодно. Это общественное достояние.

Теперь об игре:

Цель игры — протестировать движок защитить крепость пони от набигающих толп монстров путем призыва пони из шестерки за золото. Каждая пони либо атакует врагов, либо обеспечивает какие-то эффекты. Игра заканчивается либо уничтожением всех нападающих, либо разрушением крепости. Наведя курсор на справку, получаем подсказки, наведя на иконки и монстров — получаем информацию и характеристики. Сложность игры выставлена так, чтобы пройти можно было со второй-третьей попытки игроком средней силы. Управление — только клавишами.
Игра использует анимацию и звуковое сопровождение (анимации взяты из Яндекс.Картинок, звуки — в основном с wav-library.net после редактирования)

Скриншоты игры
Атака легкой кавалерии
Авиаудар
Поражение
Победа

Скачать zip-архив с игрой, после распаковки запускать файл GameStudy.exe
tereshenkov.ru/pubprogs/PonyDefendCastle.zip

Игра и её исходники, как и движок, доступны под лицензией CC0.

22 комментария

В первую очередь, интересует, использовал ли кто данный движок для своих проектов.
Ну и отзывы по игре как такой не помешают, мне нравится данный жанр, хочу попробовать ещё что-то сделать со временем.
Эх, я всё хотел свою пони-тоху как-нибудь накодить на этом движке (даже начал спелл-карты придумывать, ага), но что-то времени нет от слова совсем =(
Еще будет возможность, скоро выпущу завершенную версию движка.
Ну, возможность-то будет (СС0 же), а вот время…
По игре:
Очень не сбалансировано. Полезная пони — Эпплджек, Пинки вроде тоже, хотя тоже лажа. Рейнбоу абсолютный аутсайдер — своих денег не стоит. Почти самая дорогая, при этом только один пролёт, который НЕ уничтожает всех врагов на экране, а даёт рандомный урон по некоторым противникам.
Балансить и баланесить.
Пинки вроде тоже, хотя тоже лажа.

Увеличение урона на 50% это таки хороший бонус.

Рейнбоу абсолютный аутсайдер

Я делал её как оружие последнего этапа — когда наступают по 20 врагов на экране и нужны ковровые бомбардировки.

В целом, согласен, баланс сыроват.
Увеличение урона на 50% это таки хороший бонус.

Она не удобная — чуть раньше вызовешь и Джеки не успела добежать, чуть опоздал — и Джеки уже вынесли.
Я делал её как оружие последнего этапа

Вот только она не атакует врагов у замка, начинает метать камни с середины. Плюс это не атака по всем, а по кому придётся.
Плюс это не атака по всем, а по кому придётся.

Под конец игры там промахнуться невозможно — «два ствола и всё небо в попугаях»©
А захардкоженный путь P:\\video\\ в 88 строке qsfmlcanvas.cpp это от отладки осталось и не юзается, или бага?
Это отладочное, вызываться в нормальных условиях не должно и я поленился вычистить :-(
Пытался сделать запись скринов игры опцией, но понял, что без специальных библиотек сжатия это будет мрак и кошмар.
Именно скринов, а не видео? Для скринов возьми TGA формат — простейший как валенки. Несколько байт заголовка, и дальше тупо байты RGBRGBRGB… напрямую.
Я именно размышлял насчет видео.
Видео это да… это боль… Нет чего-то такого простого как OpenGL, OpenAL…
В итоге, я пришел к выводу, что проще внешние системы записи видео использовать. Встроенное в движок — было бы офигенно, но не сейчас.
Игра норм, неплохая. Музыки ей очень не хватает.
Про RD согласен — лучше комбо ПинкиТвай использовать.

Про движок ничего сказать не смогу, так как сам уже пользую другой. :)
лучше комбо ПинкиТвай использовать

Может и так, но я без вызова двух ударов RD под конец победить не мог.

Музыки ей очень не хватает

Музыка будет в финальной версии движка, в SFML её не очень удобно сделали, оставил на конец.
Может и так, но я без вызова двух ударов RD под конец победить не мог.

И да, я прошёл вообще не используя пегасов, ибо сосают, и у меня ещё косарь голды остался в заначке, да здавствует математическая магия. Вывод:

Баланс гомно, автор пегасорасист!
Баланс гомно

И даже не спорю.

автор пегасорасист

Просто не умею их готовить.
Просто не умею их готовить.
Мне в последнее время нравится мазать Хойсин на всех птичек, очень ничего.
Мне вот просто интересно, а Флаттершай там хоть для чего-то нужна или она просто бесполезный высасыватель денег? В смысле, реализация скилла конечно классная, но отсрочить смерть на 10-15 секунд за 250 голды, по-моему любой другой вариант будет полезней.
Флаттершай там хоть для чего-то нужна

Я её использовал под конец, чтобы немного собрать вражин плотнее, для раскатывания авиацией.
Мини-ап теме: я практически завершил движок до того уровня, когда уже не стыдно показать людям и гитхабу.
Если у кого-то есть пожелания — еще можно попросить и получить функции.
Из добавлений — сделал setTimeout/setInterval (аналогично как в JavaScript), масштабирование раздельное x/y и отладочную печать переменных, а также сборку без окна отладки, для выпуска игр.
Также проверены сборки на Linux и MacOS, работает нормально, хотя с дистрибутивом под MacOS пока что испытываю некоторые страдания.

Пример игры на движке — из новых, только демка квеста.
tabun.everypony.ru/blog/gamedev/196737.html
но суть передаёт нормально. Пригодно даже для специалистов, в качестве инструмента быстрой разработки/прототирования и не требует установки компиляторов/IDE.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.