Design Notes: Изменение летной модели в Star Citizen Альфа 2.0

Star Citizen Альфа 2.0: Изменение летной модели.


StarCitizenDev-2015-10-16-14-17-57-96.jpg


Будущее полетов


Со времен первоначального релиза Арена Командера мы увеличили максимальную скорость, урезали возможности по ускорению и снизили мощность маневровых двигателей. И хотя эти изменения имели определенный эффект, они все же не вносили фундаментальных изменений в то как функционирует игра, и не могли наглядно продемонстрировать, какое влияние на всю систему может оказывать статистический баланс! Тем не менее, за кулисами кипела работа над белее серьезными изменениями полетной модели, и совсем скоро мы продемонстрируем игрокам некоторые из них.


Полетные режимы (IFCS 2.0)


Наиболее крутой фичей является добавление новых режимов полета: Точность, Боевого маневрирования в космосе (SCM) и режим Круиза. Все эти полетные режимы кардинально изменяют поведение корабля в зависимости то того, какая цель стоит перед игроком: исключительная точность маневрирования рядом с близкими объектами, ведение боевых действий или полеты на длинные дистанции. Соответственно в одно и тоже время вы можете использовать только один режим полета, но при этом у вас еще остается возможность выбора режима синхрона/разсинхрона с двигателями, а также различных наборов полетных помощников для индивидуальной настройки управления кораблем.


Режим точности


Когда вы взлетаете – вы стартуете в режиме Точности. В режиме Точность, максимальная скорость значительно сокращена, а также изменена чувствительность работы дросселя и акселератора с тем чтобы обеспечить лучшую управляемость при маневрировании вблизи близкорасположенных объектов. Это делает взлет и посадку более легкими, а также обеспечивает лучшую управляемость при маневрировании рядом с другими объектами, например, такими как астероиды и заброшенные корабли. В этом режиме осуществляется стыковка с обитаемыми кораблями, в том числе для проведения дозаправки топливом прямо в полете.


Боевой режим (SCM)


Как только вы отлетите от любых близлежащих объектов и решите ускориться – включится режим Боевого маневрирования. Этот режим является наиболее серьезным изменением системы управления полетом, хотя если не вдаваться в детали, то он очень близко имитирует те полетные механики, которые вы возможно уже сейчас используете в Арена Командер. Реальная сила Боевого режима проявляется в том, что теперь максимальная скорость динамически рассчитывается как производная от силы и массы: максимальная скорость SCM = F/m * T — это означает, что любые изменения, которые могут повлиять на ускорение корабля (например, изменение модулей корабля, добавление груза и т.п.) будет оказывать влияние на максимальную скорость в Боевом режиме. Таким же образом производятся расчеты ваших возможностей тормозить в Боевом режиме до 0 в направлении любой из осей (X или Z), которые также имеют ограничения по аналогии с максимальной скоростью вашего корабля. Это в свою очередь означает, что модернизация маневровых двигателей, как правило, ведет к увеличению максимальной скорости полетных режимов. Кроме того, эта скорость определяется доминирующей осью поворота судна, что в свою очередь означает что лучший контроль заносов будет обеспечиваться если придерживаться доминирующих осей, нежели вторичных. Каждый корабль имеет свой набор доминирующих и вторичных поворотных осей, поэтому пилотам необходимо изучить их, и использовать их для получения преимуществ в полете.


Форсаж


Еще одна замечательная вещь Боевого режима – это форсажная камера (дожигатель). В то время как текущая механика впрыска топлива дает вам лучшее ускорение и контроль заносов, то дожигатель, в свою очередь, увеличивает вашу максимальную скорость, сохраняя при этом тот же уровень контроля. Как это работает: в Боевом режиме максимальная скорость определяется исходя из вашей возможности ускорится до заданной скорости за определенное время. С момента, когда впрыск топлива начинает расти, ваше ускорение и ваша максимальная скорость также начинают увеличиваться. Впрыск в текущей полетной модели работает схожим образом, но теперь игрокам придется делать выбор как использовать ограниченные объемы форсажного топлива: на максимальную скорость для быстрого изменения дистанции или на более эффективное торможение для улучшения управляемости.


Круизный режим


Теперь пилоты могут использовать режим Круизного полета для более длинных путешествий в пределах той же локальной зоны. Если в Боевом режиме максимальная скорость принесена в жертву управляемости, то в режиме Круиза пилот получает высокую скорость полета за счет снижения контроля над кораблем. До тех пор, пока скорость будет максимальной, ускорение не будет меняться. Это означает, что для достижения максимальной круизной скорости может потребоваться 15-20 и более секунд, при этом возможности маневрирования не будут расти пропорционально скорости, а на остановку может потребоваться еще больше времени, так как для этого задействуются обычные ретро-двигатели корабля.


В то время как в Круизном режиме скорости могут превышать в 5 и более раз максимальные скорости, установленные для Боевых режимов, летная модель ограничивает возможности маневрирования с тем, чтобы пилоты не ушли в неконтролируемое скольжение. Это означает, что нос корабля фиксируется по вектору скорости, и маневрирование в режиме Круиза осуществляется в основном для поддержания курса, нежели для совершения поворотов. Само собой разумеется, что Круизный режим не предназначен для использования в бою, в астероидных полях и на маршрутах с плотным космотрафиком.


Конечно, вы можете использовать режим разсинхрона с двигателями, для того чтобы свободно вращаться в режиме круизного полета. Опытные пилоты быстро освоят технику использования режима разсинхрона, с тем чтобы разворачивать корабль и использовать для более быстрого торможения основные двигатели. Если же, кто-либо из пилотов предпримет попытку использовать режим разсинхрона для изменения курса на 90 градусов в режиме Круиза, то он быстро сообразит, что это один из лучших способов уйти в отключку, так как перегрузки при таких маневрах будут запредельными.


Квантовый прыжок


Кроме указанных полетных режимов будет еще и Квантовое перемещение в определенное место, с одинаковой для всех кораблей скоростью в 0,2 от световой. Как только Квантовый двигатель будет активирован, корабль быстро достигнет предела скорости в 0,2 от световой. Хотя при этом корабль и испытывает относительно небольшое ускорение – не следуют использовать этот режим для перемещения на короткие расстояния. На таких скоростях мельчайшие изменения углов приводят к значительным разбросам траекторий полетов, так что Квантовый прыжок, это хорошая возможность для более медленных кораблей скрыться от преследования более быстрыми. Конечно же, путешествие на таких скоростях является более опасным, поэтому бортовой компьютер автоматически выведет вас из режима квантового прыжка, в случае если обнаружит угрозу столкновения или в случае повреждения щитов вашего корабля.


Модули управления полетом и апгрейды


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


Управление движением


Самым большим изменением IFCS является переход к 3-х ступенчатой системе управления движением.


До настоящего времени, IFCS использовала систему контроля обратной связи для контроля движений корабля. Профиль движения для данной системы контроля обратной связи (PI-контроллер) соответствовал экспоненциально затухающему синусоиду. На рис.1 показан график изменения скорости и ускорения по мере роста скорости от 0 до 100 м/с.


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


В действительности же, в самой в игре, профайл движений еще больше урезан из-за более сложных условий, так как IFCS ограничена также еще и текущей мощностью, которую обеспечивают ускорители корабля. На 2 графике для справки отображен этот урезанный профиль на фоне предыдущего графика.График на рисунке 2 является достаточно точным отображением текущего состояния дел с контролем скоростей для кораблей в Star Citizen, при этом это касается как контроля вращений, так и линейных перемещений. Не смотря на множество преимуществ этого профайла движений, у него также есть определенные недостатки, а именно: а) сложности в определении положения корабля в будущем, который перемещается под управлением данного профайла, и б) ассиметричный ответ управления с увеличенным временем реакции. Как следствие, игроки постоянно жалуются, что увеличение времени реакции приводит к «тормознутости» кораблей в Star Citizen.


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


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


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


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


Для справки приведен рис. 4 на котором отображен график типичного 2-х ступенчатого движения (постоянное ускорение и линейная скорость), используемого во многих играх.

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


БалансированиеБалансировка полета корабля является одной из наиболее сложных и деликатных задач, с которыми мы сталкивались на нашем проекте. Переход на 3-х ступенчатую систему движения в купе с режимом динамического ограничения скорости, потребовал фактически полного пересмотра характеристик управления кораблями. Это означает, что каждый корабль, которым вы привыкли управлять в Арена Командер, теперь будет ощущаться по-новому. Мы предприняли особые усилия, чтобы каждый корабль сохранил свои уникальные характеристики по отношению к другим кораблям во вселенной. Мы осознаем, что что любые изменения в этой области станут благоприятной почвой для страстных дискуссий а-ля «старое против нового», но мы твердо уверены, что эти изменения позволят нам сделать ощущения от управления кораблем более реальными, и позволят им приобрести более индивидуальные черты, чем это было возможно прежде, а также позволит иметь более четкое управление.

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


Как только Рывок станет доступным в качестве параметра, станет доступным и новое поведение – «Стабильный полет». По существу, это означает, что установив низкое значение Рывка, двигатели могут быть настроены на выдачу большей тяговой мощности под нагрузкой по отношению к их размерам. Что в свою очередь, позволяет нам создавать корабли вроде Халла (Hull) или Авроры (Aurora) способные тянуть много груза и при этом не превращаться в самые быстрые корабли во вселенной, когда они летят порожняком. И хотя все корабли будут летать быстрее без груза нежели при полной загрузке, мы сможем установить для разных кораблей разные уровни потери производительности, когда они летят под нагрузкой.


Наш первый шаг, который мы сделаем с релизом постоянной вселенной будет достаточно скромным: это всего лишь первый шаг. С нашим первым шагом мы хотим задать направления по которым будут совершенствоваться каждый из кораблей, и пока это еще не будет финальной точкой нашего движения. Как обычно мы продолжим игровое тестирование и настройку, и будем отслеживать ваше мнение, чтобы видеть где требуется сгладить грубые края или устранить нежелательные последствия.

Еще есть некоторые моменты, которые требуется допилить, но сейчас, давайте лучше поговорим о реактивном маневрировании.


Маневры доброй воли


Реактивный маневр – это процесс в ходе которого тяга создается в главном двигателе и затем переправляется по системе трубопроводов к различным соплам (прозванным в народе «Mavs’ами») где эта тяга будет использована по назначению. Это означает, что главные двигатели приобретут большее значение, чем мы это видели до сих пор в Арена Командер, и если рассуждать далее, то это будет означать, что мы сможем иметь полноценные двигательные отсеки для наших капитальных кораблей. Вместо того, чтобы иметь облепленный различными двигателями корабль, сейчас мы имеем поворотные сопла. Соответственно, если главный двигатель будет поврежден, то вместе с ним перестанут работать и маневровые ускорители. Когда это происходит, корабль может задействовать внутренние гироскопы на случай экстренных ситуаций или для ультра-слабых энергетических маневров, но они будут маломощными и очень медленными. Фантастическая вещь заключается в том, какие новые возможности открываются в полетном поведении кораблей с нарушенной функциональностью.


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


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


Сбой двигателя и турбулентность


Существует множество ситуаций, когда текущее состояние корабля будет не соответствовать тому идеальному состоянию, которое требуется для IFCS.


До этого момента мы позволяли системе управления иметь идеальный контроль в идеальных условиях, из-за этого механика движений выглядела чрезмерно «мертвой». С новым релизом, этого больше не будет происходить. На систему управления полетом всегда будут накладываться определенный уровень системных ошибок и отказов двигателей. Это будет проявляться как незначительная турбулентность в движении при оптимальных условиях эксплуатации, вплоть до экстремальных ее значений в случаях повреждения двигателей, перегрева и других различных факторов.


График на рис. 5 показывает пример идеального 3-х ступенчатого профиля скорости. IFCS запрашивает тягу у двигательной системы для достижения необходимого движения.


В реальности же движение корабля может отличаться от идеальной модели из-за сбоев двигателя, которые могут происходить по разным причинам: некорректного вектора или уровня тяги, нестабильного вектора или уровня тяги и т.п. На следующем графике представлен экстремальный пример того как случайные сбои двигателей оказывают влияние на набор скорости от 0 до 100 м/с и как она отклоняется от идеальной модели. В реальности из-за ошибок в срабатываниях импульсных ускорений на протяжении определенного периода времени (по факту любые движения корабля осуществляется через серию ускорений, будь то набор скорости, движение по прямой или корректировка курса), фактически набранная скорость может значительно отличаться от предполагаемой. IFCS запрашивал скорость указанную в верхнем графике, но по итогу получил ту, которая отражена на рис. 6.


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


На рис. 7 показан пример срабатывания ошибок при наборе скорости вместе с коррекциями, осуществляемыми системой обратной связи. Однако более заметное влияние на управление будет ощущаться на реальных примерах в самой игре. IFCS имеет систему управления реакциями (RCS), которая поддерживает установленное пилотом положение корабля. Из-за отказов двигателя, а также других внешних факторов, реальное положение корабля может отличаться от идеального. RCS использует систему обратной связи для генерации тяги и поддержания положения корабля в соответствии с заданными значениями. В реальности, неравномерность потока тяги, вызванная неидеальной работой двигателей, вызывает небольшое дерганье носа корабля, особенно при работе двигателей на полной мощности, а также при начале движения корабля. Однако учтите, что RCS работает для текущей стабилизации, и она не сможет помочь в условиях экстремальных повреждений корабля. Ее работа касается больше «эстетики полета» нежели поведения корабля в полете.

К бою готовВ конечном счете подлинная сущность Star Citizen это комбинация всех его систем. Поэтому для того чтобы реально объяснить механику полетов, необходимо поговорить о боях.


Целью сражения в Star Citizen является предоставление игрокам неистового и зубодробильного экшина, который при вдумчивой тактике и планировании принесет свои плоды. Это подразумевает разные вещи в зависимости от масштабов кораблей – от яростных схваток одноместных истребителей в стиле «псовых боев» Второй мировой, открытого противостояния мультиэкипажных кораблей задействовавших весь арсенал вооружений и до позиционного противоборства на больших расстояниях до полного истощения для капитальных кораблей – каждый из них придает игре свой неповторимый колорит. Тем не менее философия для каждого из них в целом одна и та же: сражение доставляет больше удовольствия, когда приходится балансировать между различными уровнями риска, вознаграждения и обязательств.


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


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


С увеличением количества полученного урона, увеличиваются требования к контролю и управлению такими показателями как: топливо, тепловой баланс, перегрузки и т.п. Чем больше вы получаете аварийных сообщений, тем сильнее будете чувствовать себя загнанными в угол. Капитанам придется выбирать между долгосрочными рисками и краткосрочными выгодами, с тем чтобы выходить из ситуации победителями.


Баланс


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


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


Так как корабли становятся все больше и больше, геймплей начинает предъявлять повышенные требования к ведению боя как с точки зрения тактического планирования, так и рационального использования ресурсов корабля. Ключевая цель подобных сражений – сделать так, чтобы достижение успеха или провала не казалось слишком очевидным, чтобы исход битвы зависел от череды мельчайших ошибок. На фундаментальном уровне, Star Citizen это игра кораблей лицом к лицу, которое должно оставаться веселым и честным, даже в случае если торговый корабль попал в засаду пиратов, крупные корабли атакованы истребителями, а потеря собственности и жизней обходится большой ценой. Вы не всегда будете побеждать, и если случится проигрыш, мы хотим, чтобы при этом у вас оставалось чувство, что это было вопросом того, от куда растут руки. Мы хотим, чтобы игра основывалась на ваших навыках, но мы также хотим, чтобы у вас оставалось чувство постоянного прогресса в Постоянной вселенной. Объективно Хорнет F7C (Hornet F7C) должен быть лучше Мустанга Альфы (Mustang Alfa), но различия в мощи не должны быть настолько экстремальными, чтобы пилот Мустанга никогда бы не имел шансов на победу Хорнета – просто этот бой будет более серьезным вызовом.


Star Citizen это игра о выборе, так что каждый раз, когда вы будете вылетать из своего ангара, перед вами будет стоят выбор на каком корабле полететь, какое оборудование установить, кого взять в команду, какой маршрут выбрать и где и когда забрать свой груз. Каждый корабль имеет свою специфику, каждое оружие – свои компромиссы, а каждый маршрут таит свои опасности. Наша цель не сделать все для всех, а создать экосистему, в которой игроки смогут подобрать набор наиболее оптимальный для них. Кто-то любит узкую специализацию и сможет добиться совершенства в выбранной им сфере, другие же хотят быть самодостаточными, и они найдут массу возможностей чтобы справится с поджигающими их трудностями. Этот выбор влияет на все: начиная от уровня потребления мощи и заканчивая тепловым балансом, и безусловно на то, как быстро ваш корабль будет летать и маневрировать.


Не существует идеального корабля – есть только ваш идеальный корабль.

Комментариев 0