10000 GitHub - Fenfiriy/BugWars
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Fenfiriy/BugWars

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ВОЙНЫ ЖУКОВ

Buggle Royale всегда в моде. На поле периодически появляются жуки. Все они пытаются съесть друг друга. Когда два жука сближаются достаточно близко, молодой (с большим ID) ест старого. Каждый кадр жук выбирает себе жертву: ближайшего жука, которого он может съесть.

Танк едет на сафари по заранее сформированному маршруту и стреляет по жукам.

Симуляция заканчивается после 5000 кадров. Esc - выход из игры на любом этапе.

Сборка:

Всё должно собраться через стандартный Build Solution. Можно использовать Debug и Release, но только x64! Запуск либо по F5 из студии, либо сам .exe НО с рабочей директорией установленной в каталог, где лежит BugWars.vcxproj. Иначе игра не найдёт данные.

Задание:

Код игры состоит из следующих частей:

  • Фреймворк. Статическая библиотека. Проект GameBase
  • Игровой код. Статическая библиотека. Проект BugWars
  • Исполняемый код. Исполняемый файл. Проект BugWarsGame << Запускать по умолчанию
  • Тесты. Юнит тесты. Проект BugWarsTest

Редактируйте только игровой код! Во фреймворке намеренно оставлен баг, но вы можете его исправить в игровом коде.

В коде игры есть множество проблем. Все их нужно будет исправить, но сделать это нужно в определённом порядке: make it work, make it right, make it fast.

Make it work:

  • Игра крашит в режиме отладки (Debug)
  • Присутствуют утечки памяти. Количество выделенной памяти логируется на выходе. Без утечек оно должно быть равно 0.

Make it right:

  • Жуки и пули ведут себя странно. Вы поймёте, о чём я.
  • Танк стреляет всё время в одном направлении. Сделайте так, чтобы он попадал в жуков, стреляя с линейной поправкой на скорость цели. Это не гарантирует 100% точность, но это не страшно.
  • Для автоматической проверки функции стрельбы танка, в проекте есть юнит тесты. Поначалу они не будут проходить, но это не помешает вам запустить игру.

Make it fast:

  • Оптимизируйте игру. Чем быстрее она будет работать, тем лучше. Для удобства тестирования, игру можно запускать с параметром -lock60fps.

Код написан без инкапсулирования - хорошие техники ООП не являются предметом данного упражнения.
В нём намеренно допущены ошибки и неточности - исправляйте по мере обнаружения.
Кое-где есть пара комментариев на английском - это скорее декорация. Считайте документацией сам код.
Следовать стилю не обязательно, но приветствуется.
К проекту подключён PIX, и в паре мест расставлены маркеры для примера. Можете использовать PIX для профилирования.
Обратите внимание на функции логирования: вы можете их использовать. Печать идёт в консоль и в Debug Output студии. Класс Point умеет печатать себя в логе. Кликните дважды на сообщение, чтобы перейти к строке в коде. Но помните, что объёмное логгирование замедлит игру. Игровые объекты знают свой тип - пример его проверки есть в коде. Скорости указаны в пикселях/с.
Время обычно считается кадрами.
Для анимации в кадрах используется фиксированное время равное dt=~16 миллисекундам. Оно не зависит от того, сколько времени прошло между кадрами на самом деле. При запуске с -lock60fps, должна получиться плавная анимация (при условии, что игра не тормозит). Бенчмарк будет проводиться без этого параметра.
Не удаляйте жуков, находящихся вне кадра. Внимание: могут присутствовать ошибки, которых я не планировал. Если возникают сомнения - пишите в ЛС на Дискорде. Но не в групповой чат, чтобы не спойлерить другим студентам.

Good luck, have fun.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 91.8%
  • C++ 6.7%
  • Other 1.5%
0