/Osmos

2D physics game

Primary LanguageC#MIT LicenseMIT

Osmos

2D physics game


На сцене расположено множество свободно перемещающихся шаровидных объектов. При соприкосновении больший объект поглощает меньший и увеличивается на площадь поглощенного объекта. Игрок управляет одним из объектов и его задача - поглотить столько “конкурентов”, чтобы площадь оставшихся была меньше его собственной (т.е., не было возможности проиграть). Относитесь к тестовому как к большому проект который вы планируете разрабатывать и развивать несколько лет. Отнеситесь серьезно к построению как структуры кода так и стуркуры проекта


  1. Шар перемещается в сторону по вектору от клика до центра объекта (Можно включить гизмо в редакторе, и будет видно вектора движения и прицела)
  2. Скорость (приложенная сила) перемещения зависит от протяженности клика. Объект движется по инерции с учетом силы сопротивления пространства.
  3. Цвет “конкурентов” зависит от отношения его размера к размеру пользовательского объекта.
  4. Цвет пользовательского объекта, а также границы цвета “конкурентов” задаются внешним подгружаемым конфигом вида (Лежит в StreamingAssets)
  5. При столкновениях объектов с границами сцены - объекты отталкиваются
  6. Количество генерируемых “конкурентов” должно быть параметризировано внешним конфигом. При генерации объекты не должны пересекаться (Тоже в StreamingAssets)
  7. При победе или поражении должна выводиться соответствующая надпись.
  8. Должна быть возможность начать игру сначала не закрывая приложение

Прочие условия:

  • Чем мягче будут проделаны трансформации объектов, тем лучше, можно использовать iTween. (Использовал LeanTween как более быстрое решение)
  • Мир помещается в 1 экран, границы мира это границы экрана, можно использовать ортогональную камеру. (Граница мира подстраиваеться под вьюпорт, но только при старте)
  • Можно подключить звуковые эффекты.
  • Игра должна работать под любым разрешением.
  • Игра должна работать на мобильном устройстве, если такого под рукой нет, то хотябы пишите код, ориентируясь на несколько платформ. (Под рукой нет андроида, но уверен, что работает)
  • Внимательно следите за фпс, сделать максимально оптимально.
  • Вообще, следите за тем, чтобы на выходе было что-то, в чем можно разглядеть работу программиста игр.

Screenshot1
Screenshot2
Screenshot3