Skip to content

DevelopVladimir/SpheresHunt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SpheresHunt

Реализация одного очень интересного тестового задания:

##ТЗ: Реализовать игру «Шарики» с использованием Unity3D (версия 4+).

###Уровень сложности 1: Целью игрока является набор очков за счет «хлопанья» шариков, двигающихся сверху вниз экрана. «Хлопанье» происходит простым нажатием на экран в зону круга, после чего он пропадает. Шарики двигаются без ускорения, с постоянной скоростью, которая зависит от его размера (чем он меньше, тем быстрее падает).

За «хлопанье» каждого шарика дается определенное кол­во очков, которое так же зависит от его размера (чем меньше он – тем больше очков). Таким образом, маленькие шарики игроку «хлопать» тяжелее, но очков за них дается больше. Скорость и размер шарика генерируется при его создании. Размер генерируется случайным образом в некотором промежутке. На основе размера уже формируется скорость и кол­ичество даваемых за очков «хлопанье» шарика.

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

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

Сами шарики, эффекты, возможные звуки/музыка для игры должны выкачиваться из сети в бандлах (Unity bundles) с использованием класса WWW. Допустимо выкачивание из папки в директории игры, т.к. сути это не меняет. Логического завершения игра не имеет, т.е. условия проигрыша и выигрыша не установлены. Скорость генерации, скорость падения, размеры и спектр цветов кругов остаются на ваше усмотрение.

###Уровень сложности 2: Суть задания остается той же. Разница состоит в том, что шарики должны содержать генерируемые в режиме реального времени текстуры. Генерации подлежат размер и цвет текстуры (необходимый минимум - заливка. Градиент или рисунок ­ по желанию, будет зачтен как плюс к заданию). Допустимые разрешения 32х32, 64х64, 128х128 и 256х256. Текстуры большего разрешения должны присваиваться кружкам большего размера и наоборот. Основная сложность заключается в том, что текстуры должны не только динамически создаваться, но и корректно отгружаться, освобождая память, когда становятся ненужными т.е. необходимо реализовать менеджер ресурсов, который будет последовательно генерировать текстуры, использовать в кружках определенные цвета и размеры, после чего удалять их и создавать новые сеты текстур взамен старых. Создавать текстуры стоит постепенно прямо во время игрового уровня, но в момент смены уровня сложности на следующий реализовывать подмену одного сета на другой, с отгрузкой предыдущего. Таким образом будут минимизированы возможные тормоза.

#Реализация: Проявил немного самодеятельности. Из тех бонусов, что не видны снаружи:

  • Всё объекты в игре (даже новый UI) сгенерированы и настроены процедурно, кроме 2 текстур, что я загружаю из ассетбандлов, согласно ТЗ. Я раньше, не работал с генерацией объектов из кода, так что решил, что это замечательный вариант, для устранения пробелов.
  • Реализован пул для шариков и хватает всего 16-ти. Попадая в очередь, шарики заново обновляют свои рандомные параметры: генерация текстур и координат по оси x и z в пределах квадрата. От z зависит скорость. А размер на экране уменьшается сам-собой за счёт перспективы, так что все они одного размера.
  • От rigitbody отказался за ненадобностью (что очевидно) и от всех лишних коллайдеров и коллизий тоже (кроме, конечно, рейкаста по шарам)
  • постарался все параметры вытянуть в главный скрипт, избавиться от лишних констант с помощью зависимостей
  • сильно заморочился на разработке архитектуры (на это ушли первые 6 часов с момента получения ТЗ), но результат мне нравится.
  • в генерации наборов текстур, также планирую добавить пул

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages