Skip to content

Latest commit

 

History

History
97 lines (61 loc) · 9.51 KB

File metadata and controls

97 lines (61 loc) · 9.51 KB

Требования по направлению Babylon.JS/AFrame разработка

Задание

Необходимо создать трехмерную игру при помощи одного из инструментов - Babylon.js или A-Frame.

Жанр игры - Tower Defense.

Игра должна запускаться в браузере, и выдавать приемлемый FPS для игрового процесса.

A-Frame или Babylon.js?

A-Frame позиционируется как решение для создания VR решений в браузере, и он правда в этом хорош, но кроме этого он позволяет создавать приложения без VR, выступая качественным игровым движком.

Babylon.js выступает больше как разнопрофильный игровой движок, но в тоже время он предоставляет доступ к VR в браузере.

Обе платформы позволят вам создать проект, описанный в задании, и только вы принимаете решение на какой конкретно платформе вы будете работать.

Общие критерии

TypeScript

При написании желательно использовать язык TypeScript, за счет того, что он в большей части представлен в лаборатории, нежели чистый JavaScript. Это не обязательное условие, и в целом можно использовать любой язык программирования, доступный для перечисленных библиотек, вплоть до использования WASM.

Структура проекта

Желательно оформить проект как Package при помощи npm или yarn, и использовать инструмент по типу webpack. Конечно же можно и составить исключительно из файлов по типу index.html, logic.js и подобных, используя различные CDN.

Геймдизайн

В первую очередь при проверке будет оцениваться качество игры с точки зрения игрока, а не техническая составляющая и непосредственно реализация проекта. Представляемая игра должна быть готова к тому, чтобы любой человек с клавиатурой и мышкой мог провести полноценную игровую сессию. При этом длительность сессии не так важна. Минутная сбалансированная игра будет оценена как лучшая при сравнению с часовым кликером по одной кнопке (если это не успешно внедренная механика).

Модели

В качестве 3D моделей для игры желательно использовать полноценные модели, которые можно найти в открытом доступе, или создать самостоятельно. Если нет возможности применить готовые 3D модели по какой-то причине - допустимо создавать игру из графических примитивов, помня про пункт геймдизайн.

Уровень 1

Требуется создать одну карту, по которой могут перемещаться вражеские юниты по предопределенному маршруту. У игрока должна быть возможность создавать оборонительные сооружения (башни, юнитов, что угодно) за определенную стоимость. Необходимо продумать источник ресурсов на постройку.

В игре должен присутствовать интерфейс, позволяющий начать игру, и после завершения сессии начать заново.

Кратко:

  • Одна карта
  • Жестко заданный маршрут вражеских юнитов
  • Интерфейс для запуска/перезапуска игры
  • Один тип оборонительных сооружений
  • Система стоимости обороны, источника ресурсов

Уровень 2

Как минимум три разного типа оборонительных сооружений, накладывающих разнообразные эффекты на вражеских юнитов (заморозка, горение...).

Возможность прокачки обороны, как минимум 2 уровня прокачки у двух типов башен.

Как минимум четыре типа различных вражеских юнитов. Необходимо обратить внимание на визуальное различие юнитов, обеспечить понимание со стороны игрока, какие юниты что из себя представляют.

Понятие волны, постепенная выдача разных противников с нарастающей сложностью.

Кратко:

  • Как минимум три типа оборонительных юнитов
  • Возможность прокачки оборонительных юнитов
  • Как минимум четыре типа вражеских юнитов
  • Понятие нарастающей сложности и волн

Уровень 3

Необходимо выйти за рамки одного боя и реализации механики Tower Defense, и создать полноценную игру с различными уровнями и картами. Так, например изначально у пользователя может быть доступен только один тип башен, и при прохождении уровней он будет получать новые башни в арсенал, открывая новые уровни/карты/врагов. Можно применять механику открытия по прохождению, можно ввести собственную валюту, на которую можно приобретать новые типы вооружения, конкретных ограничений нет.

Состояние игрока должно сохраняться между игровыми сессиями/открытием браузера. Предлагается использовать для этого использовать localStorage.

При разработке игр с множеством уровней, карт и разными наборами вражеских юнитов на каждом из них появляется необходимость оперативно менять конфигурации появления противников. Необходимо реализовать инструмент геймдизайнера, который позволит настраивать тайминги волн, типы/количество врагов, их параметры и прочее. Можно сделать его при помощи JSON файла определенного формата, либо составить полноценный редактор.

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

Кратко:

  • Система уровней, с различными картами/наборами врагов
  • Процесс получения доступа к новым оборонительным сооружениям
  • Хранение прогресса пользователя, как минимум на уровне браузера
  • Инструмент конфигурирования волн на уровне
  • Инструмент настройки параметров оборонительных сооружений

Полезные материалы:

Babylon.JS

A-Frame

Игровые модели