A two-player game for Android. The goal is the destruction of your opponent's base by bombarding it with various missiles, and the protection of your own base by shielding it with constructions made of destructible blocks.
Отдельно для каждой части текстуры получить tower_%part_name%_.xml, затем создать экземпляры класса Body им соответствующие и скрепить их при помощи Joint'ов. Обернуть все данные в PhysicalTower - наследника Tower.
Добавить графические версии классов Tower, Castle и Ball, которые могут быть отрисованы на экране по их физическим версиям. Здесь как удобно, желательно использовать паттерны.
На данный момент нет окончательного решения по вопросу о том как будет выглядеть взаимодействие игроков с сервером и какие технологии будут задействованы, поэтому:
Выбрать способ, с помощью которого игроки будут подключаться к игровой сессии. Вкратце описать суть способа
Выбрать способ обмена игровых данных в игровой сессии (p2p/сервер и т.п.). Вкратце описать суть способа
Расписать какие технологии потребуются
Файл в котором будет вся необходимая информация залить в папку Description, в ветку docworks-server (создать), после согласования вся документация будет слита в master
Для текстуры базового снаряда получить basic_shot.xml, затем создать экземпляр класса Body ему соответствующий. Обернуть в PhysicalBasicShot - наследника BasicShot созданного на основе Shot.
Работа с интерфейсом приложения: добавить кнопку которая либо заблокирована (если сейчас не твой ход), либо может быть нажата с целью передачи хода другому игроку.
Нарисовать текстуру башни с орудием. Подвижные части должны быть нарисованы отдельно, анимация их движения будет обеспечена физическим движком. Должны быть части текстуры с изменяемым цветом (для первого игрока - красный, для второго - синий, как вариант, но лучше под цвет карты контрастное что-то).
Физический движок который мы будем использовать, туториал под C++, но аналогичные классы Java интуитивно находятся: https://www.iforce2d.net/b2dtut/ Ключевые моменты вынесены в качестве подзадач, изучайте только если планируете работать в проекте с физикой (2 человека максимум)
Что такое Testbed и как добавить туда свой тест
Основные классы и как они связаны: BodyDef, FixtureDef, Shape (предок PolygonShape, EdgeShape)
Типы тел и как в зависимости от них меняется поведение объекта
Collisions: как регистрировать столкновения и отвечать на это каким-то действием
Подзадача считается выполненной если можете работать с тем что в ней расписано, оценивайте сами
Физический движок который мы будем использовать, туториал под C++, но аналогичные классы Java интуитивно находятся: https://www.iforce2d.net/b2dtut/ Ключевые моменты вынесены в качестве подзадач, изучайте только если планируете работать в проекте с физикой (2 человека максимум)
Что такое Testbed и как добавить туда свой тест
Основные классы и как они связаны: BodyDef, FixtureDef, Shape (предок PolygonShape, EdgeShape)
Типы тел и как в зависимости от них меняется поведение объекта
Collisions: как регистрировать столкновения и отвечать на это каким-то действием
Подзадача считается выполненной если можете работать с тем что в ней расписано, оценивайте сами
Дополнить класс Shot (снаряд), с учетом генерации оным Damage'а при столкновении с Destructible объектом. Написать систему материалов для Destructible объектов.
Для проекта требуется единый способ работы с VCS Git: выбрать набор правил, желательно с ссылками на примеры использования оного и записать в Readme.md.
Нарисовать текстуру замка, должны быть части текстуры с изменяемым цветом (для первого игрока - красный, для второго - синий, как вариант), башенка-выступ (см. дополнительные моменты механики в Documentation) должна иметь отдельную текстуру.
В ближайшее время потребуются текстуры пассивных игровых объектов. Разработать текстуру одного блока (деревянного) и одного снаряда (самого стандартного).
Отдельно для каждой части текстуры (основа замка и башенка-выступ), получить castle_%part_name%_.xml, затем создать экземпляры класса Body им соответствующие и скрепить их (как вариант расположением в пространстве т.к. замок неподвижен). Обернуть все данные в PhysicalCastle - наследника Castle.
Разработать основную иерархию классов: игрок, снаряд, повреждаемый объект (блок, замок) и башня, и их взаимодействие между собой. Пользоваться представлениями об этих сущностях, указанными в документации.
Добавить в интерфейс игрока кнопку по которой будет открываться "рюкзак" с имеющимися в наличии снарядами каждого вида (пока что только базовый, но должны быть ячейки на будущее).
Написать серверное приложение в соответствии с установленной интерфейсной архитектурой, реализующее механизм передачи хода от одного игрока к другому по UDP протоколу.