Техническое задание - Porosenok-Petr/THE-SHAKE-GAME GitHub Wiki

1. ВВЕДЕНИЕ

Все прекрасно знают классическую игру змейку на кнопочном телефоне, в которую мы все играли в детстве. Её сутью было кормить змею яблоками и гонять по полю, пока она растет в размерах с каждым съеденным яблоком. Задача была в том, чтобы не врезаться в стенки или в тело змеи, пока она росла в размерах. Но что, если выпустить на неё ремастер в пиксельной графике? Оригинальная игра выглядит крайне просто, а другие перевыпуски скучными и слишком детскими. Наша команда разработчиков «Ядовитый синтаксис» решила создать новую игру на основе всем известной концепции, чтобы каждый мог поиграть в эту замечательную игру с обновленной графикой на основе движка Unity 2019.

2. ОСНОВАНИЕ ДЛЯ РАЗРАБОТКИ

Программа разрабатывается на основе учебного плана «Компьютерные системы и Программирование» и в соответствии с указанием лабораторной работы

3. НАЗНАЧЕНИЕ

Основным назначением программного продукта является демонстрация навыков разработки 2D-игр на движке Unity, создание законченного игрового приложения с интуитивно понятным интерфейсом и реализация классической механики «Змейки» с элементами прогрессии сложности. Программа предназначена для широкого круга пользователей ПК под управлением ОС Windows, желающих провести досуг.

4. ТРЕБОВАНИЯ К ПРОГРАММЕ ИЛИ ПРОГРАММНОМУ ПРОДУКТУ

4.1. Требования к функциональным характеристикам:

Игровой процесс (Геймплей):

  • Игровое поле представляет собой сетку (например, 20x20 клеток).
  • Игрок управляет змеёй, состоящей из сегментов (голова и тело).
  • Цель игры — управлять змеёй, собирая еду (яблоки), появляющуюся на поле в случайном месте.
  1. При поедании еды:
  •   Длина змеи увеличивается на один сегмент
    
  • Игроку начисляются очки.
  • Скорость движения змеи может увеличиваться (опционально, для усложнения).
  • Генерируется новая цель.
  1. Условия окончания игры (Game Over):
  •   Столкновение головы змеи с границей игрового поля.
    
  •   Столкновение головы змеи с собственным телом.
    
  1. Управление:
  • Управление змеёй осуществляется клавишами-стрелками (вверх, вниз, влево, вправо).
  • Реализовать защиту от "самоубийства" (нельзя мгновенно развернуть змею в обратную сторону, например, при движении вправо, нажатие влево должно игнорироваться).
  1. Интерфейс и Меню:

4.1. Главное меню:

  • Кнопка «Новая игра» (запуск игрового процесса).
  • Кнопка «Настройки» (переход к меню настроек).
  • Кнопка «Выход» (закрытие приложения).

4.2. Меню «Настройки»:

  • Ползунок регулировки громкости звука (SFX и фоновая музыка, если есть).
  • Опционально: переключатель «Вкл/Выкл» для звука.

4.3. Игровой экран (HUD):

  • Отображение текущего счета (Score).
  • Отображение лучшего результата (High Score), сохраненного на устройстве.
  1. Пауза:
  • Возможность поставить игру на паузу (клавиша Esc).
  • Во время паузы отображается меню с кнопками «Продолжить» и «Выйти в главное меню».
  1. Экран «Game Over»:
  • Отображение набранных очков.
  • Отображение рекорда (если он был побит, поздравление).
  • Кнопки: «Играть снова» и «Главное меню».

4.2. В ходе анализа предметной области были выделены следующие не функциональные требования приложения:

  • Визуальный стиль: Игра выполняется в стиле «пиксель-арт» (ретро-стилистика). Графика должна быть стилистически единообразной (спрайты еды, фона, змейки должны сочетаться).
  • UI/UX (Удобство интерфейса): Интерфейс должен быть минималистичным, все элементы управления (кнопки) должны быть подписаны и легко читаться. Игрок не должен гадать, как начать игру.
  • Производительность: Игра должна работать с частотой не менее 60 кадров в секунду (FPS) на конфигурациях, соответствующих минимальным требованиям. Отсутствие «фризов» (замираний) во время игры.
  • Стабильность: Программа не должна аварийно завершаться (вылетать) при любых корректных действиях пользователя.

4.3. Исходные данные:

  • Код: Весь код должен быть написан на языке C# с использованием объектно-ориентированного подхода.
  • Графика: Спрайты для игры создаются самостоятельно с помощью таких графических ресурсов как Adobe Photoshop, Figma.

4.4. Минимальная конфигурация:

  • Процессор: с частотой 1.5 ГГц.
  • ОЗУ: 1024 Мб (1 Гб).
  • Видеокарта: поддержка DirectX 10.
  • Место на диске: 150 Мб.

4.5. Требование к надежности

  • Сохранение данных: Лучший результат (High Score) должен сохраняться между сессиями игры в локальном файле
  • Обработка ошибок: Некорректный ввод (зажатие нескольких клавиш) не должен приводить к сбоям в логике движения змеи

4.6. Требования к составу и параметрам технических средств
Система должна работать на IBM совместимых персональных компьютерах. Минимальная конфигурация:

  • тип процессора............................................................... не важен; 
    
  • объем оперативного запоминающего устройств ........32 Мб и более.

4.7. Требования к информационной и программной совместимости Система должна работать под управлением семейства операционных систем Win 32 (Windows 7, Windows 8, Windows 10, и т. п.).

5. ТРЕБОВАНИЯ К ПРОГРАММНОЙ ДОКУМЕНТАЦИИ

5.1. Код: Тексты программ должны быть структурированы, классы и методы должны иметь названия, отражающие их суть. Код должен содержать комментарии к сложным алгоритмическим блокам (например, логика роста змеи или обработка столкновений). 5.2. Справочная информация: Программа должна содержать краткий раздел «Как играть» (Help/Помощь), вызываемый из главного меню, с описанием правил и управления.

5.3. Состав документации (самое главное для сдачи):

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

5.3.В состав сопровождающей документации должны входить:

  • Пояснительная записка, содержащая описание разработки.
  • Руководство пользователя.
  • Диаграмма взаимодействия пользователя со средой