New Zombotron 3. Неделя #1
Не смотря на то, что новая игра в разработке уже почти целый месяц, еженедельные записи я начинаю писать только сейчас. ?так, запись первая!
Переход на новую технологию сулит большой тратой времени на поиск и налаживание нового рабочего процесса. Более того, язык C# хоть и похож на ActionScript3 своим внешним видом, но все еще чужд для меня и, судя по всему, я еще долго буду задавать Гуглу глупые вопросы про Unity и C#. Но все же лед тронулся! Я перешел от экспериментов и поделок с новыми инструментами непосредственно к разработке самого проекта.
С чего все начинается?
Как правило, любая игра начинается с прототипа — вначале разрабатывается какая-то примитивная механика, и только потом начинается разработка какой-либо графики. Но только не в моем случае. ?гровая механика у меня всегда неплохо складывается в голове и я не могу приступить к работе над кодом, пока не получу хоть какое-то графическое представление для игры. Наличие графики на ранних этапах позволяет многое предопределить в коде заранее, и в моем случае код и механика подстраиваются под визуальный ряд, а не наоборот. Сложно сказать: хорошо это или плохо. Но ведь у меня есть возможность построить процесс разработки именно таким образом и мне такой подход видится более удобным.
Но в связи с переходом на новые инструменты мой обычный подход пришлось немного изменить.
Знакомство со Spine
Я уже давно посматривал в сторону Spine и в случае ухода с Flash — это был первый новый инструмент, который я непременно должен был опробовать в работе. Почему Spine — надеюсь объяснять не нужно, трейлер этой программы легко ответит на этот вопрос.
В новой игре я хочу выйти на новый уровень качества анимаций — более плавные, более качественные. Размышлял и о реверсной кинематике, хотя это совершенно не обязательно для 2D платформера. Но в случае с Zombotron при наличии таковой, герой перестанет быть бревном с пушкой на шарнире и станет более живым. Правда от всего этого меня отгораживали переживания за то, смогу ли я сделать что-то подобное, хватит ли моих познаний, ведь на разработку подобной штуки может уйти не один месяц, а когда речь идет о разработке столь большого проекта в одиночку — это очень много времени, которого нет.
Я скачал триальную версию Spine и уже с первых минут его использования начал влюбляться в него. Он очень шустро и плавно работает, удобно настраивается модель, а потом еще более удобно вся эта модель анимируется. Конечно в триальной версии программы нельзя сохранять проект, поэтому экспериментировал я исключительно с примерами, шедшими в комплекте.
С программой я разобрался быстро и следующий этап заключался в том, чтобы разобраться с интеграцией анимаций непосредственно в Unity. В итоге этот процесс оказался таким же быстрым и удобным в освоении. ? буквально через пару дней знакомства с программой я понял: надо брать!
Но обычная лицензия программы не включает в себя возможность создавать реверсную кинематику и не позволяет выполнять анимацию мешами (сеткой) — это печалило, и когда я уже опробовал все эти вкусности в Unity, было очень грустно отказываться от этих возможностей ради экономии $200. В итоге пришлось решиться на PRO лицензию. Взяв PRO лицензию я все еще переживал: а не зря ли я потратился, ведь есть и бесплатные аналоги Spine. Но после того, как я приступил к разработке и анимации персонажа, и увидел первые плоды своей работы, я понял, что вложив не так много денег, буквально за неделю, большую часть которой я потратил на освоение инструмента — я получил результат, к которому бы шел своим путем не менее 1-2 месяцев! В общем, покупкой я остался очень доволен, а создание любых новых анимаций получается намного быстрее, чем во Flash!
Конечно, не обошлось и без ложечки дегтя в бочке меда: в Spine невозможно делать классическую рисованную анимацию, которую я тоже очень люблю. Но поскольку её в последнее время я использую не так много — это не критичный момент в моем случае и тут старый добрый Flash конечно же выручит!
Разработка персонажа
Когда инструмент для анимации был приобретен и опробован на старой модельке стало понятно, что следующим этапом в работе должна стать разработка персонажа.
Как видно на картинке выше, утрированная анатомия персонажей, которую я так любил использовать в своих играх (большая голова, большое тело и маленькие ножки) — не очень подходит для нового инструмента анимаций. Хотя, если образ призрака доработать, сгладить суставы в тех местах, где они рвутся, то в целом анимация выглядит достойно, но есть и другие проблемы, которые создавала неправильная анатомия.
Проблема #1: Сложность создания приседаний, которых порой так не хватало в оригинальной игре. Если мы сядем на попу и прижмем коленки к груди, то можно будет сделать вывод, что длина наших ног равна примерно 2/3 высоты, таким образом если присесть, то высота тела уменьшится на 1/3. А когда длина ног персонажа равняется его туловищу — то при приседании высота тела уменьшится на 1/4 в лучшем случае. То есть, с коротенькими ножками приседание не так эффективно!
Проблема #2: При разработке Zombotron: Time Machine, когда мне понадобилось добавить нового женского персонажа, я внезапно столкнулся с большой проблемой: как собственно изобразить этого женского персонажа? Конечно бедра должны быть по шире, талия по уже и грудь! Скетч получился вполне убедительным, но по факту с такими пропорциями Фина была почти в два раза выше основного героя, и мне пришлось её укорачивать. Результат так себе, если честно.
Проблема #3: Утрированные пропорции подводят к большей мультяшности и создают более детскую атмосферу, ограничивают в создании новых персонажей, и порой проблемы могут возникнуть там, где их не ждешь.
? все это, конечно, проблемы только для не столь опытных художников, типа меня. ? когда я сталкивался с новой проблемой изображения персонажей, я искал решения в референсах. Ну не я же один придумал коротконогих персонажей! ?х же рисуют опытные художники и все у них с этим замечательно. В итоге, после просмотра кучи референсов, я понял: даже если пропорции персонажей утрированные, то они должны быть правильными с точки зрения анатомии и тогда не будет всех этих глупых проблем. Более того Spine тоже работает с костями, и если настроить кости правильно для правильной анатомии, то и анимации получатся более приятными и естественными.
Пару дней я потратил на небольшой экскурс в анатомию и делал небольшие эскизы, чтобы найти наиболее оптимальные пропорции для себя. Получилась такая вот пачка набросков (на самом деле их больше, на картинке только самые интересные). ? уже глядя на наброски становится видно, что игра начинает взрослеть.
Конечно в набросках я не старался искать каких-то конкретных персонажей для игры, но считаю, что фигурки на набросках вполне сойдут за прототипы будущих героев или врагов. Я не мог сосредоточиться на поиске конкретных персонажей, так как очень торопился опробовать Spine в боевых условиях. Поэтому не откладывая, я приступил к прорисовке базового героя, чтобы уже получить какой-то реальный опыт с анимациями в Spine и приступить к написанию первых строк кода в Unity непосредственно по проекту.
Первый код
Прототип персонажа родился быстро, так же быстро были готовы и анимации к нему. Я быстро разобрался с реверсной кинематекой в Spine и тем, как управлять этой кинематикой в Unity.
Но проблема возникла откуда я не ждал! Все примеры Spine для Unity используют CharacterController, который работает для 3D пространства — это очень удобная штука, позволяющая достаточно легко создавать управление персонажем в Unity без лишних головняков. А вот для 2D пространства почему-то такой контроллер отсутствует! Вот уж не знаю, чем руководствовались разработчики Unity, но это явное упущение, так как это чуть ли не основная возможность каждой игры.
Конечно, в сети +100500 туториалов, как сделать платформер на Unity в два клика, но во всех этих туториалах не показывается ни строчки кода, а только что и куда перетащить, а так же где раздобыть эти «магические» скрипты, которые отвечают за управление. Раздобыть «магические» скрипты мне не удавалось либо из-за устаревших битых ссылок, либо из-за того, что ассеты, из которых эти скрипты выдергивались, уже потеряли свою актуальность и были недоступны. Тут вы наверное уже заметили, как меня обуяла лень писать код самому? Это только начало!
Я подумал, что если есть такой замечательный оригинальный компонент для управление персонажами в 3D, то вероятно какой-нибудь добрый самаритянин уже запилил аналог и для 2D. Я не ошибся и их оказалось даже несколько. ? тут меня ждала новая боль.
Взяв самый популярный (по мнению Google) аналог CharacterController2D от Prime31. Почему-то в примере этот скрипт работал хорошо, но как только я пытался его использовать в своем проекте — он работал не так или вообще не работал. Я потратил день, чтобы его переписать и чтобы увидеть его наконец в действии в своем проекте. Уже походу переписывания я начал осознавать, что он не взаимодействует с физикой, то есть используя этот скрипт невозможно будет толкать физические объекты, и когда он наконец заработал — это оказалось действительно так. Этот скрипт использует фэйковую физику и свои способы определения столкновений и определения типа движения, на основе чего корректирует скорость, таким образом любой физический объект (статический или динамический) является непроходимым всегда. Рука-лицо! Но в целом возьня с переписыванием скрипта была полезной — чуть ближе познакомился с C# и узнал новые примочки этого языка.
Далее, помучав Google еще чуть-чуть, я нашел еще пару контроллеров, более навороченных и сложных. Грустно посмотрел на них и понял, что я обленился. Ведь можно еще неделю потратить на поиски и адаптацию чего-то подобного, но так и не получить нужного результата.
На следующий день, засучив рукава, я погрузился в написание своего контроллера, по принципу того, как это было сделано в оригинальной игре, и уже к вечеру персонаж начал бегать и прыгать. Конечно не так идеально, как хотелось бы — но далее уже по мере необходимости будет тюнинг и доработка.
В итоге, я пришел к выводу, что не стоит искать каких-то простых сторонних решений для Unity, так как часто это работает не так, как хочется, либо имеет баги и кривую реализацию — проще и быстрее писать тривиальные вещи самому. К тому же, просмотрев кучу туториалов по Unity, я пришел к выводу, что к решениям приведенным в них нужно относиться очень осторожно, так как в погоне за простотой и понятностью, авторы туториалов предоставляют не самый оптимальный код.
?тоговый результат
К концу этой недели (месяца) я имею пока совсем небольшой прогресс непосредственно по проекту: несколько набросков, прототип дизайна персонажа, базовое управление персонажа и тестовый уровень, не блистающий графикой. Большую часть времени в этом месяце я потратил на базовое изучение, как самого Unity, так и доп.инструментов, типа Spine.
Предварительные планы на следующую неделю:
- Доработать управление, добавить недостающие анимации для героя.
- Добавить стрельбу из пушки.
- Нарисовать больше элементов окружения и добавить в игру.
PS: ?з-за праздников мой рабочий процесс немного сбился, поэтому запись немного запоздала.
Очин интиресна написанна четал неатрываяясь
Уже хочу демку альфы
Прекрасная статья! Очень приятно видеть результаты! ? очень приятно, что вы уже ощутили, насколько теперь вы становитесь могучим воплотителем своих самых смелых идей, благодаря переходу но новый движок!
До этого ни разу не писал у вас комменты, хотя читаю блог статью за статью уже несколько лет!)
Сам я раньше работал с Flash, но года 2 назад основательно перешел на юнити, но читать ваш блог не забросил) Очень радует, что вы наконец-таки решились перейти на юнити тоже) Сказать что я обрадовался, когда увидел в вашем блоге упоминание о юнити - это ничего не сказать :D
Очень интересно было бы познакомиться с вами лично, может рассказать пару каких-то интересных и не совсем очевидных вещей в юнити, которые пришлись бы очень кстати при разработке платформера)
Я, можно сказать, вырос на ваших статьях и был бы рад как-то отблагодарить за ведение блога
Порог вхождения преодолен. Поздравляю!
C# очень простой язык для изучения, сложностей быть не должно.
Мне теперь страшно какие потрясающие игры будут сделаны после Zombotron в Unity.
Если для вас 200$ за комфортную разработку нормальная цена, то похоже вы уже профессионал.
@игрок,
> только всё же не стоит делать пушек и персонажей как из блокбастера. револьвер, РПГ всё же желательно оставить как в наше время,а то чем то напоминает "Stfrship troopers".
К сожалению или к счастью, в новой игре нужно будет сделать очень много различных пушек с разными возможностями, поэтому, вероятно будут как пушки из нашего времени, так и какие-то совершенно нереальные вещи в плоть до инопланетянского оружия ;)
> ? хотел спросить , Вы правда хотите что бы игра длилась 5 часов?
Мне очень сложно отвечать на подобные вопросы. Если честно я не знаю насколько длинной получится игра, но игра должна быть большой :)
@samana, спасибо. Действительно от Unity пока только положительные эмоции. Добавляя в игру новые объекты, я внезапно обнаружил, что я для этого не написал ни строчки кода — это очень приятно когда добавление и настройка новых объектов не требует лишних трудозатрат. Во Flash с этим было намного сложнее и добавление каждого объекта требовало приличное количество кода.
Впрочем, это не значит, что можно насыпать в игру объектов совсем без кода и все будет работать как нужно. Добавление объектов в игру на базовом уровне определяет лишь их примитивное игровое существование, а для полного функционала конечно же придется писать для них код ;)
Но в итоге я очень доволен на Unity — он очень похож на Lego :D
@Александр, большое спасибо! Познакомится — это запросто ;)
@Pamel,
> Мне теперь страшно какие потрясающие игры будут сделаны после Zombotron в Unity.
А мне теперь страшно немного от того, что от меня теперь ждут больше чем я на самом деле могу :)
@Новичек,
> Если для вас 200$ за комфортную разработку нормальная цена, то похоже вы уже профессионал.
Ну речь тут не столько о комфортной разработки, сколько о вложении денег в инструмент в котором у меня была необходимость. Как я написал, покупка уже готового инструмента была наиболее оптимальна, чем разработка аналогичного инструмента в течении какого-то времени.
Быстро однако осваиваетесь) Успехов ;)
Привет, Антон, добавь BFG 9000 =)
Будет приятная пасхалочка.
Круто!
@Ant.Karlov, круто!) Мы как раз готовим к выпуску свою игру) было бы очень интересно послушать от вас какие-либо советы или замечания
Мой скайп: Smitg9
Привет!
Антон,мне не вериться,что ты так быстро разобрался в Spine! Думаю, что в Zombotron нужно отвести много времени именно персонажу, так как мне, если честно не хватало движений у персонажа. Добавление каких-нибудь финтов было бы очень круто! Типа уклонения,кувырка или прсто как-то поиграть с физикой,чтобы управлять персонажем было веселее. Ну это мое мнение... А вообще желаю успехов!
Хороший старт Антон, но не стоит на этом останавливаться. Двигайся дальше ;)
@SQUASH Слишком много требуешь от игры. Это шутер, а не паркур или Shadow Runner. Если здесь и будут "финты" или какие-либо действия то только "в спец. точках" отведённых для них. Нужно больше движений, прыжков и свободы? ?грай в Vector.
удачи!
@Storm Ты немного не так меня понял. Vector весь построен на паркуре и "финтах",а я имел ввиду просто некоторые элементы тех самых "финтов",но конечно не такие навороченные,как в Vector или в Shadow runner`ерах. ? я хорошо понимаю,что реализовать это не так просто... Это было просто мое мнение и идеи,которыми я хотел подулиться. А использовать чьи-то предлжения (идеи) в игре - решение Антона.
Здравствуйте Антон, хотел бы у вас спросить вы используйте rigidbody2d компонент для движения своего персонажа или у вас свой контроллер?
? если нет, то каким методом двигаете персонажа вниз, вверх и двигаете динамические объекты?
Так как сколько не пробовал нормальной резвости используя AddForce и Velocity трудно добиться...
А на какие платформы планируется выпуск? Если будут мобилки/планшеты, то советую как можно чаще тестировать производительность, иначе потом, когда будет сделана бОльшая часть проекта, оптимизировать станет сильно сложнее.
@SQUASH,
> Антон,мне не вериться,что ты так быстро разобрался в Spine!
Не смотря на то что первый отчет написан якобы за неделю, на самом деле этот отчет охватывает почти целый месяц. Со Spine я разбирался в течении недели примерно (не полное время). Там много аспектов которые нужно было охватить: разобраться с самой программой для анимаций, настройка скелетов, анимирование и т.п. Потом экспорт в Unity и уже работа с готовой анимацией в Unity.
В игре планируется большое количество врагов, персонажей и просто анимированных объектов, поэтому удобный инструмент для создания качественных анимаций — достаточно важный аспект разработки :)
@Storm @SQUASH, пока ничего не могу сказать по поводу дополнительных анимированных элементов для персонажа, так как пока сосредоточен на базовом функционале игры, а там посмотрим :)
Но, определенно, некоторые интересные действия уже есть в планах добавить в игру.
@Pavel FlashPro,
> хотел бы у вас спросить вы используйте rigidbody2d компонент для движения своего персонажа или у вас свой контроллер?
В данный момент реализовал старую систему управления героем: квадратное тело (полигон) + колесо, оба объекта имеют Rigidbody2D. Движение в стороны зависит от скорости и силы вращения колеса, стрэйф в воздухе задается через AddForce(). По мимо стандартной гравитации, к телу добавляю еще свою гравитацию чтобы персонаж выглядил тяжелее и быстрее падал. Но текущий результат мне пока не нравится. Управление не очень чувствительно и есть некоторые недостатки/баги.
К работе над управлением я еще планирую вернуться. Будет это после того как подготовлю какой-то базовый тестовый уровень чтобы осознавать масштабы игры и тогда буду заниматься доработкой контроллера и настройкой управления. По результатам проведенной работы постараюсь написать небольшой отчет в котором расскажу какие решения использовал.
@Начинающий нуб,
> А на какие платформы планируется выпуск?
На данный момент выход планируется только на ПК. Впрочем на ПК тоже следует следить за производительностью. Уже занимаюсь некоторыми оптимизациями :)
Спасибо за отличный пост. Антон, а какие материалы используешь для изучения Unity? Официальные туториалы или может быть нашел какие-то удачные книги?
Отличные новости и прекрасная статья! Блог вновь оживает и это не может не радовать!
Антон, как ты относишься к тому чтобы запустить стримы по разработке (арт/код) нового Зомботрона? Уверен, подобный формат был бы очень интересен и полезен!
Только калаш не убирай :)
Будет ли система прокачки персонажа не за счет там ачивок которые разбросаны по уровням как секреты, а своеобразная прокачка уровня как в РПГ, и будет ли такая же прокачка оружия? Например тот же автомат, чтоб можно было повесить какойнить лазерный прицел или удлиненный ствол для точности стрельбы? Просто в флеш играх я бегал с одним стволом хорошую половину игры и хотелось бы элементы улучшения оружия, было бы здорово на самом деле)
Хах! Теперь игра мне чем-то напоминает Червяка Джима. I LIKE IT!!!!!!
Все просто афигенно, толь ко вот я бы хотел что бы у героя был шлем как и в начале прошлых частей Зомботрона. Это на самом деле, для меня лично, небольшая печалька, так как мне этот шлем очень нравился.
Да и ещё хотел спросить у тебя, Антон, как думаешь из Spine анимацию в Unreal Engine 4 можно перенести или нет? ? в каком формате он их экспортирует?
@Marauder
Об анимации из Spine в UE. Конечно можно, кто-же запретит!? Другой вопрос как это делать. Пол года назад не было инструмента который позволил бы это сделать в один клик, навряд ли он есть и сейчас. Вы сами вольны решать как получить то, что съест ваш движок и как это для него подготовить. По вопросу гуглится отличная картинка отражающая суть: http://www.electroplus.co.uk/c/104-category_default/computer-leads.jpg
:)
успехов
в игре
Антон,Желаю успеха в разработке 3 Зомботрона. А Будет что то типо Бета-Тестирования. причем открытого. Мы попробуем игру,Распробуем немного сюжета.? кстати когда нам стоит ждать игру? Под конец этого года?
Is today will give more information?
Враги останутся те же или вместо них будут новые?
Сколько времени дали на разработку, надеюсь не мало, а то 15 часов сделать в одного мне кажется чем то очень долгим..
@mishell,
> Антон, а какие материалы используешь для изучения Unity?
Попробовал один простой туториал чтобы разобраться совсем с азами работы с Unity. А дальше только официальная документация ну и по каким-то специфичным вопросам уже гугл и форумы.
@Владимир,
> Антон, как ты относишься к тому чтобы запустить стримы по разработке (арт/код) нового Зомботрона?
Да, думал и думаю о стримах, но пока у меня некоторые сложности с интернет, а так же я нуб в разработке на Unity. Поэтому стримы про разработку на текущем этапе будут больше похожи на "слепой котенок пытается заходить игру". Так что в ближайшее время стримов и новых видео по зомботрону и его разработки ожидать не стоит. Только еженедельные записи/лог разработки буду вести :)
@Дред,
> Будет ли система прокачки персонажа не за счет там ачивок которые разбросаны по уровням как секреты, а своеобразная прокачка уровня как в РПГ, и будет ли такая же прокачка оружия?
Да, я размышляю о системе прокачки чтобы игра стала чуть интереснее. Так как бесконечное количество монстров на протяжении всей игры просто так не интересно убивать и игрока нужно мотивировать не только сюжетной линией, но и какими-то локальными достижениями в виде повышения уровня персонажа, увеличения мощности оружия и т.п.
Но как именно будет выглядеть система прокачки — я пока не могу сказать, так как еще не успел детально продумать эту часть игры. На данный момент сосредоточен над новым внешним видом и базовым геймплеем игры. Как дело дойдет до прокачки, я обязательно об этом расскажу :)
@Marauder,
> Все просто афигенно, толь ко вот я бы хотел что бы у героя был шлем как и в начале прошлых частей Зомботрона.
В новой игре я планирую сделать возможность использования разный вещей. То есть персонаж сможет надевать на себя различные шмотки которые будут давать какие-то бонусы и конечно же менять внешний вид персонажа. Как будет выглядеть именно ваш персонаж — будет зависеть только от вас. Ну, а шлемов как и других видов вещей будет предостаточно для любителей переодеваться ;)
По поводу Spine, вот здесь можно посмотреть список плагинов/библиотек для различных движков с которыми Spine совместим.
@Макс,
> А Будет что то типо Бета-Тестирования. причем открытого. Мы попробуем игру,Распробуем немного сюжета.
Да, будет. Но подробности об этом будут потом. Раньше времени вперед стараюсь не забегать.
> ? кстати когда нам стоит ждать игру?
?гру стоит ждать когда она будет готова. А когда это будет — я пока не могу сказать. Следите за ходом разработки ;)
@alonso_mafiac, new post about Zombotron will be available 18 or 19 March :)
@игрок,
> Враги останутся те же или вместо них будут новые?
Враги останутся, но все они будут перерисованы. То есть фактически все будут новыми. Ну и конечно же появятся совсем новые виды врагов с новыми возможностями.
@VT,
> Сколько времени дали на разработку
Времени нормально, как для большой игры. Надеюсь хватит. Пока правда время уходит больше на освоение новой технологии, а не на саму игру :( Но надеюсь, что потом процесс пойдет быстрее.
Думаю, всё будет к лучшему, желаю Антону успеха над игрой!
#Твой фанат зомботрона - Новаков.
Антон, приветствую.
Увидел у тебя на гифке, герой когда крутит оружием вверх-вниз, отбрасывается анимированая тень. Как ты получил такой эффект? Шейдерами? Насколько знаю, тени могут накладываться только на 3D объекты, вернее на те у которых есть компонент MeshRenderer. Сам потратил дня 3-4 так и придумал как это можно сделать для обычного спрайта.
@Kostazz,
> Увидел у тебя на гифке, герой когда крутит оружием вверх-вниз, отбрасывается анимированая тень. Как ты получил такой эффект? Шейдерами?
Это стандартная тень Unity — для спрайта объекта нужно установить галочку "кастовать тени" и для заднего плана нужно установить галочку "принимать тени". Но все это не будет работать для обычных спрайтов до тех пор пока для материала спрайта не будет установлен стандартный шейдер в режиме Cutout.
В итоге я отказался от стандартных теней по разным соображениям и сделал тени иначе.
Ок. Спасибо. Буду изучать дальше.
Антон, скажите, а графика теперь в чем рисуете? Во Flash(или Photoshop) и далее импортируется в Spine? ?ли сразу в Spine?
@Аноним,
> графика теперь в чем рисуете? Во Flash(или Photoshop) и далее импортируется в Spine?
Да, рисую как и раньше во Flash. Photoshop попробовал, но непривычно и получается совсем по другому — нужно руку набивать, поэтому решил как и раньше, рисовать во Flash.
В Spine рисовать нельзя, туда можно загружать только готовые изображения и работать с ними. Надеюсь, что в будущих версиях добавят возможность рисовать в Spine, но не факт что это сделают и что это будет действительно хорошо работать для этой программы :)
Отлично!
только всё же не стоит делать пушек и персонажей как из блокбастера. револьвер, РПГ всё же желательно оставить как в наше время,а то чем то напоминает "Stfrship troopers".
? хотел спросить , Вы правда хотите что бы игра длилась 5 часов?
9 Марта 2016
— 18:10
#