Описание/Пошаговая инструкция выполнения домашнего задания:
Создайте игровой объект Player на сцене, определите слои Visual и Core.
Перенесите механики TakeDamage, HitPoints, Death из урока в ваш игровой объект
Реализуйте механики, которые можно вызывать в инспекторе:
-перемещения персонажа
-прыжок персонажа
-выстрел пули. (Обработку попадания пули в противника делать не обязательно. Оптимизацией можно пренебречь.)
Протестируйте работоспособность вашего персонажа
Выложите проект на gitlab/github в ветку homework_game_mechanics
Описание/Пошаговая инструкция выполнения домашнего задания:
1. Скачать Entities.unitypackage (будет в материалах) или написать свою систему
2. Взять персонажа с предыдущего домашнего задания
3. Обернуть все механики персонажа с помощью компонентного подхода
4. Написать инпут контроллеры для персонажа
- перемещения персонажа по нажатию стрелочек на клавиатуре
- прыжка персонажа по нажатию "пробела" на клавиатуре
- выстрела пули по нажатию ЛКМ
5. Собрать персонажа в Unity
6. Выложить проект на gitlab/github в ветку homework2_game_components
Цель: Научиться реализовывать системные компоненты игры
Описание/Пошаговая инструкция выполнения домашнего задания:
Реализуйте игровой контекст одним из вариантов:
а.) Напишите свой игровой контекст
б.) Используйте модуль GameElements
в.) Используйте Zenject
Реализуйте геймплей
Старт игры должен происходить через обратный отсчет 321
Перемещение персонажа по клавиатуре, если игра началась
Если персонаж упал в бездну, то игра завершилась
Проверить работоспособность системы
Выложить проект на gitlab/github
Цель: Научиться применять паттерн MVP-Presentation Model для реализации окон пользовательского интерфейса
Описание/Пошаговая инструкция выполнения домашнего задания:
Сделайте фундамент для интерфейса (Canvas, Camera, EventSystem)
Реализуйте систему для отображения попапов (PopupManager, AbstractPopup)
Реализуйте попап прокачки персонажа при помощи паттерна Presentation Model
Реализуте PresentationModel как заглушку системы прокачки персонажа
Протестируйте работоспособность вашего попапа
Выложите домашнее задание в ветку homework_presentation_model до 12 декабря
Цель: Реализовать систему загрузки/сохранения массива апгрейдов c помощью Mediating-Controller
Описание/Пошаговая инструкция выполнения домашнего задания:
Техническое задание: Необходимо сделать систему, которая будет загружать и сохранять апгрейды игрока Например, три апгрейда: здоровье, урон, скорость. Приложил скрин У каждого апгрейда необходимо сохранять его уровень и уникальный идентификатор.
Что требуется реализовать:
Две сцены: сцена игры и сцена загрузки
Репозиторий апгрейдов
Сервис, который хранит апгрейды в игре (можно сделать заглушку)
Медиатор, который загружает и сохраняет апгрейды
Сделать систему, которая будет делать загрузку приложения и вызывать сохранение при закрытии приложения. Тут можно просто написать ApplicationManager, а можно запариться и сделать как в проекте (см. доп материалы в презентации)
Домашнее задание № 6: Реализовать конвертер с двумя типами ресурсов на входе и одним ресурсом на выходе
Цель: Научиться реализовывать игровые механизмы
Описание/Пошаговая инструкция выполнения домашнего задания:
Придумайте конвертер ресурсов, например: На вход нужно положить 5 камня и 5 дерева, а на выходе должен получиться топор
Цель: Научиться реализовывать обертку и состояния для аниматора в Unity
Описание/Пошаговая инструкция выполнения домашнего задания:
В результате выполнения домашнего задания должен получится полноценный лучник, который умеет бегать и стрелять. Управляется через клавиатуру или мышь. I. Возьмите кубик, который умеет бегать, прыгать и стрелять, из предыдущих своих домашних заданий II. Добавьте ему State Machine с 3-мя состояниями
а.) Состояние “Стойка”
б.) Состояние “Бег”
в.) Состояние “Выстрел”
г.) State Machine Resolver
III. Сделайте анимации лучнику
1.) Создайте аниматор и добавьте к нему 3 состояния “Стойка”, “Бег”, “Выстрел”
2.) Напишите ресивер, который будет принимать события из анимаций
3.) Создайте обертку для аниматора с состояниями, и реализуйте их
IV. Подключите контроллеры перемещения и выстрела из пред. домашних заданий, не забудьте добавить гейм-контекст
Цель: Научиться реализовывать механики взаимодействия персонажа с миром
Описание/Пошаговая инструкция выполнения домашнего задания:
Создайте Персонажа с компонентом и механикой атаки
Создайте Пугало с компонентом и механикой получения урона
Реализуйте взаимодействие: когда Персонаж находится рядом с Пугало, он начинает его бить, когда отходит – перестает
Когда Персонаж бьет Пугало, пугало получает урон через компонент Take Damage Component.
Когда у Пугало здоровье равно нулю, персонаж завершает атаку
Реализация механики ближнего боя на ваше усмотрение
В проекте есть пример боя на операции (Combat)
Цель: Научиться реализовывать систему прокачки и апгрейды
Описание/Пошаговая инструкция выполнения домашнего задания:
Реализуйте три апгрейда для конвертера ресурсов:
Время работы
Объем зоны загрузки
Объем зоны выгрузки
Реализуйте систему апгрейдов для 3-х конвертеров ресурсов
Убедитесь в работоспособности апгрейдов
Цель: Научиться реализовывать интерфейс при помощи паттерна MVP-Passive
Описание/Пошаговая инструкция выполнения домашнего задания:
Сделайте верстку попапа апгрейдов
Возьмите систему апгрейдов и реализуйте паттерн MVP-Passive
Протестируйте взаимодействие UI с “прокачкой” и убедитесь в работоспособности
Цель: Научиться реализовывать мета-механики
Описание/Пошаговая инструкция выполнения домашнего задания:
Есть три сундучка (деревянный, стальной и золотой), которые можно открывать каждый раз через некий интервал времени. Когда таймер у сундука завершиться, то игрок может его открыть и получить случайную награду: софт-валюта, ресурсы или что-то другое (тип награды расширяемый). Размер награды зависит от типа сундучка. После открытия сундучка в системе в него генерится следующая награда и снова запускается таймер. Необходимо сделать систему сундучков, у которых таймер запускается автоматически при старте игры, и после получения награды из сундучка в него генерируется следующая награда
Цель: Научиться реализовывать синхронизацию игры по реальному времени
Описание/Пошаговая инструкция выполнения домашнего задания:
На основе предыдущего задания реализуйте систему синхронизации с реальным временем: Реализуйте логику синхронизации сундучков обратным подходом Используйте логику синхронизации времени из демо-проекта для того, чтобы таймеры сундучков работали корректно
Цель: Научиться реализовывать новый функционал на базе имеющегося, соблюдая принцип Open-Closed Principle
Описание/Пошаговая инструкция выполнения домашнего задания:
Реализуйте экипировку персонажа, чтобы ему можно было класть различные предметы из инвентаря: а.) каждую руку — меч/щит б.) в ноги — сапоги/ботинки в.) на голову — шлем г.) на корпус — жилет/доспехи Предметы, одетые на персонаже увеличивают свойства: например, урон, здоровье, скорость и т.д.
Возьмите инвентарь из урока / демо-проекта или реализуйте свой
Используйте персонажа из демо-проекта или сделайте заглушку
Соблюдайте приницы SOLID особенно Open-Closed
Проверьте работоспособность системы
Цель: Научиться реализовывать Unit тесты
Описание/Пошаговая инструкция выполнения домашнего задания:
Реализуйте систему экипировки для персонажа (по пред. домашнему заданию) Реализуйте тесты для этой системы Если вы не начали делать систему экипировки, то можете использовать TDD подход