Настоящее техническое задание распространяется на разработку программы-переиздания культовой игры Pacman, предназначенной для общественного пользования.
В 1980 году компанией Namco была создана игра под названием Pacman. Поначалу она выпускалась только на игровых консолях Nintendo и на игровых автоматах. Она получила большую популярность и зарекомендовала себя как одна из самых лучших двухмерных игр тех времен.
В настоящее время существует только несколько качественных переизданий данной игры от других разработчиков. К примеру, веб-игра Pacman от компании Yandex может продемонстрировать и передать игровой опыт тех времен, хотя имеет и свой недостаток: данную игру можно запустить только в браузере при наличии Интернет-подключения.
Разработка desktop-версии данной игры позволит пользователю насладиться игровым опытом тех лет без Интернет-подключения и попробовать для себя что-то новое в игровой сфере, просто установив данную программу на личный компьютер.
Наименование программы -- «Pacman»
Программа «Pacman» предназначена для открытого свободного использования в развлекательных целях на компьютерах с операционной системой Windows, поддерживающая .NET и WPF (Windows Programming Framework), которая позволит после установки насладиться игровым опытом первых компьютерных игр без подключения к сети Интернет.
Программа разрабатывается в рамках изучения МДК 02.01 «Технология разработки программного обеспечения» по специальности 09.02.07 «Информационные системы и программирование», факультет СПО №12 СПб ГУАП
Основным назначением программы является развлечение пользователя и предоставление игрового опыта 80-х годов. В ней представлены несколько режимов на выбор, в которой пользователю дается возможность управлять игровым персонажем на уникальным картах для каждого режима. Главная задача игрока -- собрать все сферы (опыта и специальные), параллельно убегая от противников (для классического режима и режима редактора уровней), а также продержаться как можно дольше на игровом поле (для режима Бой насмерть).
Для пользователя программа предоставит возможность испытать игровой опыт в оригинальной игре «Pacman», а также в ее уникальных режимах, которые дополнили разработчики.
4.1.1 Программа должна обеспечивать возможность выполнения следующих функций:
- После запуска программы отображается окно с выбором игрового режима
- На окне с выбором игрового режима располагаются элементы для выбора:
- Классический режим
- Редактор уровней
- Бой насмерть
- Выход из игры
- В окне «Классический режим» должны быть реализованы следующие функции:
- Классическая игра «Pacman»
- Запуск игры
- Перезапуск игры
- Остановка игры
- Просмотр статистики локальных пользователей
- В окне режима «Редактор уровней» должны быть реализованы следующие функции:
- Панель редактируемой пустой игровой карты
- Панель выбора объекта для размещения на игровом поле
- Запуск игры
- Перезапуск игры
- Остановка игры
- Просмотр статистики локальных пользователей
- В окне режима «Бой насмерть» должны быть реализованы следующие функции:
- Игра «Бой насмерть»
- Запуск игры
- Перезапуск игры
- Остановка игры
- Просмотр статистики локальных пользователей
4.1.2 Исходные данные
Данные пользователей и их статистика хранятся в базе данных. СУБД обеспечивает ограничение прав доступа к ним обычному пользователю -- только на чтение при просмотре статистики. Ввод данных в базу осуществляется автоматически при регистрации, а их обновление производится при завершении игры в каждом режиме.
Вероятность безотказной работы системы должна составлять 99.99% при условии исправности связи с базой данных.
Программа запускается на любом компьютере. База данных находится на том же компьютере, где и была запущена программа. Окно программы должно быть открыто на весь экран. Возможность выйти из программы осуществляется через меню в правом верхнем углу.
4.3.1 Климатические условия
Специальные условия не требуются
Система должна работать на IBM совместимых персональных компьютерах
4.4.1 Минимальная конфигурация:
- процессор - 1 ГГц (2 ядра)
- ОЗУ -- 4 ГБ
- дисковое пространство - 2 ГБ
- Видеокарта -- интегрированная
- Операционная система -- Windows 10 / 11
4.4.2 Рекомендуемая конфигурация:
- процессор -- 2 ГГц (4 или более ядер)
- ОЗУ - 8-16 ГБ
- дисковое пространство -- 10 ГБ
- видеокарта -- дискретная
- Операционная система -- Windows 10 / 11
- Среда разработки (IDE) -- Rider / Visual Studio 2022
- Язык программирования -- C# 12.0 (.NET 9.0)
- База данных -- SQLite 3.0
- Фреймворк -- WPF (Windows Programming Framework)
- Операционная система -- Windows 10 / 11
- Исходный код программы, разработанный на языке C#, разместить в закрытом репозитории GitHub для дальнейшего сопровождения и поддержки разработчиками.
- Готовую (скомпилированную) версию продукта разместить в открытом репозитории GitHub для публичного скачивания и распространения.
- Техническое задание
- Разрабатываемые программные модули должны быть самодокументированы, т. е. тексты программ должны содержать все необходимые комментарии.
- Руководство пользователя (текстовое) с полным описанием функционала и навигатором по программе
Разрабатываемая программа «Pacman» предназначена для публичного использования другими пользователями, ищущие программы-переиздания игры «Pacman» от Namco. Функциональность программы соответствует оригинальной, предлагая несколько режимов на выбор, а также просмотр таблицы лидеров локальных пользователей.
При бесплатном распространении программа будет востребована пользователями компьютеров. Экономический эффект при этом может быть достигнут благодаря внедрению платного контента для программы, который будет докупаться и устанавливаться отдельно.
Этап 1.1 Создание визуального макета программы в программе Figma
Этап 1.2 Поиск готовых и создание нужных графических изображений, необходимых при разработке
Этап 1.3 Выбор модели архитектуры программы
Этап 1.4 Создание макета базы данных
Этап 1.5 Создание макетов уровней для каждого режима
Этап 2.1 Создание классического проекта на базе фреймворка WPF (Windows Programming Framework).
Этап 2.2 Создание модуля, отвечающего за переключение между окнами
Этап 2.3 Создание архитектуры базы данных
Этап 3.1 Разработка приветствующего экрана
Этап 3.2 Разработка главного экрана с выбором режимов
Этап 3.3 Разработка окон (на данном этапе пустых) для каждого из 3 режимов
Этап 4.1 Создание модуля, реализующий механику игрового процесса главного персонажа
Этап 4.2 Создание модуля, реализующий механику игрового процесса противников
Этап 4.3 Тестирование разработанных модулей на тестовых площадках
Этап 4.4 Разработка СУБД, а также внедрение его в проект. Тестирование запросов.
Этап 7.5.1 Разработка классического режима:
- Классическая игровая карта
- 1 игровой персонаж (по умолчанию находится в режиме блуждания)
- 4 противника (по умолчанию в режиме охоты)
- Режим блуждания главного игрового персонажа -- игровой персонаж движется с обычной скоростью по любой траектории, которую задает пользователь; не может убить противников.
- Режим охоты главного персонажа -- скорость игрового персонажа увеличивается в 2 раза; может убить противников
- Режим охоты противников -- скорость передвижения противников обычная; траектория движения направлена на игрового персонажа; стремятся его убить; не могут убить других противников
- Режим бегства противников -- скорость противников остается неизменной; стремятся убежать от игрового персонажа.
- Событие «убийство» наступает только при совпадении координат игрового персонажа и противника. В зависимости от их режимов погибает один из этих объектов. Умерший объект возрождается в середине поля.
- 3 жизни у игрового персонажа (отнимается 1 единица при убийстве игрового персонажа)
- Количество жизней у противников -- бесконечное
- По всей карте расставлены сферы опыта (после достижения позиции его расположения оно автоматически используется - прибавляет к общему игровому счету 10 очков)
- По разным углам карты расставлены 4 специальные сферы (после достижения позиции его расположения оно автоматически используется -- игровой персонаж переходит в режим охоты на 10 секунд, а противники -- в стадию бегства на 10 секунд, а также к общему счету прибавляется 50 очков)
- Время на игру -- 999 секунд (отсчитывается автоматически в фоновом режиме)
- Конец игры наступает либо после сбора всех сфер опыта и специальных сфер, либо после окончания таймера, либо после окончания всех жизней персонажа
- Методы, реализующие запуск, остановку и продолжение игры после остановки.
Этап 7.5.2 Разработка режима редактора уровней:
- Пустая редактируемая игровая карта
- Панель с выбором объекта для размещения на редактируемой карте (противники, препятствия, сферы)
- Редактируемый таймер
- Редактируемое количество жизней игрового персонажа
- Редактируемая скорость передвижения противников и персонажей
- Поведение противников, игрового персонажа и другие условия игры см. Этап разработки 4.1. Разработка классического режима.
Этап 7.5.3 Разработка режима Бой насмерть
- Уникальная игровая карта
- Время на игру не ограничено
- После прохождения 10 секунд на карте появляется 1 специальная сфера и 10 сфер опыта в разных местах, появляется 1 противник в случайном месте.
- Скорость противников составляет 0.1 от стандартной скорости. Каждые 10 сек она увеличивается на 0.2 единицы.
- Жизнь у игрового персонажа одна
- Конец игры наступает после первой смерти игрового персонажа.
Этап 6.1 Разработка модуля, отвечающий за получение статистики 10-ти лучших пользователей по запрошенному режиму
Этап 6.2 Разработка окон для каждого режима, реализующий графическое представление запроса к БД на получение статистики всех пользователей по данному режиму
Этап 7.1 Тестирование UI и взаимодействия с ним
Этап 7.2 Тестирование каждого игрового режима
Этап 7.3 Тестирование статистических сведений по каждому режиму.
Заказчик в лице Яниса Игоря Владимировича обязана обеспечить контроль над каждым этапом разработки. По завершению обеспечить процесс приемки проекта по следующим пунктам:
- Проверка на успешное скачивание и установку программы из открытого репозитория GitHub
- Проверка корректного запуска программы
- Проверка игровых режимов на работоспособность
- Проверка на корректность отображения статистических сведений
- Проверка связи с поддержкой
Результатом успешного проведения приемки будет являться составление акта приемки.