Блог xyz school
Оптимизация: почему время важнее полигонов
Многие начинающие 3D-художники и разработчики игр знают, что существует «оптимизация» — нечто, что позволяет повысить частоту кадров. Но зачастую они не разбираются в том, как она работает — и это заставляет их принимать неверные решения.
В этом материале преподаватель курса OutBlock и левел-дизайнер VOID Interactive Денис Куандыков объясняет, как устроена оптимизация, и почему количество полигонов тут — не ключевой фактор.
В чём проблема
Работая с геометрией, новичок может потратить уйму времени впустую, пытаясь сократить количество полигонов. Даже если лимит по техническому заданию позволяет определённому LOD (уровню детализации) держать в себе 10-15 тысяч трисов (полигонов с тремя сторонами), моделер может решить, что если он всё уместит в 5 тысяч треугольников, то работа станет более «оптимизированной». Это не так.
Оценить абстрактную «стоимость» рендера одного кадра невозможно — нужно знать, под какие устройства создаётся игра, и что именно в ней отрисовывается.
Если 3D-артист со стороны попытается самостоятельно оценить сложность кадра, то может получиться недоразумение. Художник не знает, какое количество треугольников будет оптимальным, если нет чёткого технического задания.
Если оно есть, это решает проблему. Но иногда техническое задание бывает нечётким не по вине заказчика: например, если вы сами разрабатываете собственную игру, или же если в проекте всё стандартно и нет ничего специфичного.
Как устроена отрисовка кадра
Процесс отрисовки кадра — это та самая «магия под капотом движка». У отрисовки, как и у работы художника, есть стоимость, и рассчитывается она исходя из необходимого времени.
Для того, чтобы оценить время рендера, в редакторах и движках есть отдельные инструменты. Одного лишь значения кадров в секунду в любом случае недостаточно.
Во всех движках есть вывод статистики. Самое важное в нашем случае — это значение времени одного кадра.
«Время кадра» — это время в милисекундах, за которое может быть построен и отрисован один кадр. Чтобы получить 60 кадров в секунду, один кадр должен быть обсчитан за 16 милисекунд или еще быстрее.
Draw Call (вызов отрисовки) — это одна графическая команда, которая должна что то отрисовать.
Сложность кадра можно оценивать именно с помощью вызовов отрисовки. Чем их больше, тем дольше они обсчитываются, тем медленнее выполняется 1 кадр, тем меньше кадров в одной секунде и тем меньше итоговый FPS.
И наоборот — чем меньше вызовов отрисовки, тем быстрее считается кадр, и тем выше FPS.
Frame Debugger — встроенная утилита Unity, позволяющая прямо в редакторе разобрать один кадр на все составляющие. Этот кадр занял 96 отрисовок.
Примерный разброс лимитов на Draw Call можно описать так:
— Мобильные игры — примерно 100 на средне-высоких настройках, на топовых устройствах можно и больше.
— Игры для ПК и консолей — до 4000.
Например, Battelfield и третий «Ведьмак» в среднем работают на 1000-2000 вызовах отрисовки.
А у PUBG этот показатель скачет от адекватных цифр (до 5 тысяч) вплоть до безумных 50 тысяч Draw Call. Такой разброс — это плохо.
В то же время, некоторые внутренние движки Ubisoft спокойно работают на значениях вплоть до 20 тысяч. Дело в том, что Draw Call — это тоже не идеальное мерило производительности. Вызовы отрисовки бывают разные, и тут всё зависит от того как работает конкретный рендер-пайплайн в конкретном проекте. Подробно разобраться в том, как это устроено, можно здесь.
Рендер-пайплайн — это очень сложная система, и во многих крупных проектах она уникальна. Из-за этого оценить оптимизацию порой практически невозможно.
Однако вы можете самостоятельно проанализировать отрисовку кадра любой ПК игры, используя специальные инструменты:
— RenderDoc
— Nvidia Nsight
— Intel Graphics Perfomance Analisys
Подробнее обо всех этих инструментах можно узнать здесь.
Самое важное: нужно оценивать стоимость кадра. А первичное мерило стоимости — это время. Уже затем можно всё раскладывать на процессы, то есть, на те самые вызовы отрисовки.
Когда обсуждают оптимизацию проекта и специфику его контента, в первую очередь речь заходит не о количестве полигонов, а о том, сколько примерно можно позволить себе вызовов отрисовки, — учитывая железо и технологии.
Вызовы отрисовки
Теперь разберёмся, как именно можно подсчитать количество этих вызовов.
Простой пример: у нас есть 10 ящиков и одно дерево. Все десять ящиков имеют один и тот же шейдер, материал и количество полигонов. Логично предположить, что у нас будет 11 вызовов, ведь в кадре 11 объектов.
Всё почти так и есть. Программа рендерит так: «ящик, ящик, ящик, ящик, ящик... и потом дерево. Кадр построен».
Однако, судя по статистике, у нас всего три батча (вызова отрисовки):
Дело в том, что движок сам понимает, что перед ним десять одинаковых ящиков. Он сам «сшивает» ящики в один объект, и теперь процессор отдает нашей видеопамяти на отрисовку один кусок меша, который мы видим как 10 отдельных ящиков.
Этот процесс называется «батчинг». Он бывает динамическим и статическим.
Как устроен батчинг
Динамический батчинг работает, если он включен в движке. Движок сам анализирует геометрию и сшивает те объекты, которые подходят под лимиты.
Обычно у динамического батчинга очень жёсткие лимиты; он не позволяет сшивать тяжёлую геометрию и занимается в основном мелкими деталями в кадре. Например, если от стены динамически отделились мелкие осколки, то они они, скорее всего, будут сшиты динамическим батчингом в каждом отдельном кадре.
Как устроен батчинг
Динамический батчинг работает, если он включен в движке. Движок сам анализирует геометрию и сшивает те объекты, которые подходят под лимиты.
Обычно у динамического батчинга очень жёсткие лимиты; он не позволяет сшивать тяжёлую геометрию и занимается в основном мелкими деталями в кадре. Например, если от стены динамически отделились мелкие осколки, то они они, скорее всего, будут сшиты динамическим батчингом в каждом отдельном кадре.
Партикли (система частиц) умеют «сшиваться» сами по себе, поэтому их стоит использовать, если нужно нарисовать много одинаковых мелких объектов.
Например, тысячи рыб в кадре в Abzu — это на самом деле партикли, геометрия которых дополнительно анимирована шейдером с вертексной анимацией.
Статический же батчинг происходит «заранее». Для этого нужно указать что этот объект статичен, и никогда не будет изменен или сдвинут.
Отличие от динамического батчинга в том, что он позволяет перерабатывать огромное количество объектов. За один батч Unity может сшить объектов общим количеством до 64 000 треугольников.
Кроме того, динамический батчинг будет пытаться пересобрать геометрию почти в каждом новом кадре, — а значит будет постоянно увеличивать время расчёта.
Именно батчинг виноват в том, что в огромном количестве игр до сих пор нельзя разрушить любую стену или сдвинуть стул с места.
Чтобы батчинг сработал, объекты должны быть «одинаковы». Объекты должны иметь один и тот же шейдер, материал на этом шейдере (в Unreal это инстанс материала), текстуру и остальные параметры объекта, а также не должны иметь Non Uniform Scale и не должны быть разбиты светом.
Одна из причин того, почему от художников требуют не текстурить объекты уникальными сетами отдельных текстур, а паковать их в огромные текстурные атласы — как раз в этом. Это позволяет отдать батчингу на обработку сотни разных визуально разных объектов, — ведь они будут отрисованы не отдельно, а группами.
Пример очень простого атласа для тайловых поверхностей.
Как уже было сказано, важнейшее мерило оптимизации — время. Иногда один раз загрузить в память один огромный текстурный атлас гораздо выгоднее, чем постоянно гонять туда-сюда отдельные мелкие текстуры — даже если в сумме они будут занимать в памяти меньше места, чем атлас целиком. Загрузка и выгрузка — не бесплатный процесс.
Однако батчинг тоже не «бесплатен» — даже если он статический и обсчитан заранее. Сцены в играх нужно освещать, и даже в случае статичного освещения это будет влиять на батчинг.
💥 Курс «OutBlock» для тебя, если хочешь создавать игровые уровни, которые рассказывают историю
На курсе научишься управлять вниманием и эмоциями игрока, пока он перемещается по пространству. Разберёшься, как строить навигацию, арены и интерьеры. В итоге сможешь проектировать уровни, которые что-то говорят игроку, а не просто для красоты. Курс можно взять в рассрочку.
Так например, два одинаковых ящика, которые в обычной ситуации превратились бы в один батч, разделят на два батча, так как они привязаны к разным лайт-пробам (Light Probe).
Освещение в реальном времени тоже будет влиять на то, какие объекты сбатчатся, а какие — нет.
Световые зонды (Light Probes) нужны, чтобы запечь в себя шейдинг в статичном освещении. Они позволяют затенить динамический объект в сцене с Light Map.
Кроме того, нужно учитывать где будет храниться полученный материал. Ведь сбатченная геометрия — это отдельный уникальный меш, который не заменяет ваши ящики на локации. То есть, батчинг требует свободной памяти.
Поэтому иногда применяют «ручной» батчинг, он же просто «мердж» (merge). Берём геометрию, и в любой программе сшиваем так, как нужно под конкретную сцену.
На финальных итерациях, когда весь левел-дизайн и левел-арт готовы, многие мобильные проекты проходят этап ручного сшивания всей локации. А модульные объекты, из которых состояла локация, и вовсе не идут в билд так как заменяются смерженным мешем.
Иногда гораздо выгоднее скормить движку огромный меш в 64 тысячи треугольников, чтобы отрисовать всю локацию целиком. Так поступили, например, разработчики Guns Of Boom.
Дмитрий Гладилин - Проблемы и решения при создании графики для мобильного шутера Guns of Boom
Подобный подход практически полностью исключает использование Occlusion Culling. Эта техника позволяет не рисовать те объекты, которые не видны камере. То есть, когда ящик перекрыт другим более крупным ящиком — мы его не видим, а значит можем не рисовать. В случае со «склеенными» мешами такое разделение невозможно.
Уровни детализации
Level of Detail (LOD, или уровень детализации) — простая техника, которая позволяет уместить огромное количество объектов в кадре, не отнимая время на обработку лишней геометрии.
LOD может разбить объекты на разные батчи: и в этом нет ничего страшного, ведь зачастую несколько сотен лишних DrawCall будет быстрее обсчитаны на лодированых мешах чем рисовать их оригиналы — но сбатченные.
Сейчас есть неплохие инструменты автоматической генерации LOD-мешей, и это облегчает работу. При нужной настройке можно выдать результат не сильно хуже ручной ретопологии. Но даже используя автоматику, не стоит делать тысячи разных уровней детализации: все уровни LOD тоже нужно хранить в памяти, а её не стоит забивать просто так.
Обычно используют четыре уровня детализации. LOD-0 — это оригинальная модель, а LOD-3 — дальняя. LOD4 может быть просто 2D спрайтом который всегда смотрит на игрока.
Кроме LOD-0 порой нужно делать отдельную модель для кат-сцен. В ней может быть куда больше полигонов, чем у LOD-0, потому что она появляется лишь в срежиссированных сценах, и, как правило, находится очень близко к камере — поэтому для неё лучше использовать крайне высокую детализацию.
Это касается даже мелких объектов: например, у обычной кружки в одной из стартовых сцен Dead Space 2 было достаточно полигонов, чтобы она не казалась «квадратной», в то время как в остальной игре в LOD-0 у аналогичных объектов не было такого сглаживания.
LOD-ы позволяют не считать лишние сотни полигонов в вашей модели. В первую очередь важно понимать роль модели в сцене и прикидывать, насколько детально игрок сможет её разглядеть.
Если модель, например, можно разглядеть вблизи с максимальным приближением, то просто сделайте LOD-0 достаточно детализированным, — а в самой сцене основным рабочим уровнем будет LOD-1.
Подход, основанный на роли модели в кадре полностью защищает вас от критики сторонников «идеальной сетки», которые без понимания контекста — просто по скриншоту, — заявят, что вы сделали 10 лишних треугольников.
Зачем тратить время и доказывать кому либо в комментариях на ArtStation, что у вас не завышенный полигонаж? Время — куда более важный показатель оптимизации. И ваше время — в том числе.
Alpha overdraw
Рендер-пайплайн должен адекватно рассортировать и нарисовать сцену — обработать шейдеры, геометрию, текстуры и пост-процессы. К тому же он должен учитывать, что объекты могут быть прозрачными.
Чем больше площадь прозрачности в кадре, и чем больше прозрачные объекты наслаиваются друг на друга — тем дольше рендер-пайплайн будет рисовать итоговый пиксель, ведь ему придётся каждый раз его перерисовывать. Это называется Alpha overdraw.
Чем меньше альфы, тем быстрее будут обсчитаны пиксели. По сути, шейдер и сам рендер — это процесс/программа, которая рисует конкретный цвет конкретного пикселя на экране. И в этом случае пара десятков лишних треугольников, наоборот, ускорит рендер.
Cлева — обычный «плейн» с текстурой ветки. Справа — он же, но силуэт ветки обрезан по контуру, чтобы срезать лишнюю прозрачную площадь.
Z-Fight — артефакт, который образуется, если поставить несколько полигонов в одной плоскости. Рендеру не хватает точности глубины, чтобы отсортировать отрисовку этих полигонов в правильном порядке.
Но кроме визуального артефакта, который заметит игрок, это повлияет и на время рендера — ведь пиксели в этом месте будут постоянно «спорить» друг с другом об очереди отрисовки.
Два плейна на одной оси. Смешение цветов по центру и есть Z-Fight.
Итог
Итак, мы выяснили, что практически ничего «бесплатного» в случае с отрисовкой кадра не бывает: технологии, которые позволяют что-то оптимизировать, не работают по нажатию нужной галочки. Всегда нужно понимать, для чего мы используем тот или иной инструмент.
Нынешнее железо — даже мобильное, — может обрабатывать огромное количество треугольников. Объёмы памяти и скорость растут. Чипы на мобильных устройствах и их батареи, которые перегреваются при высоком FPS, тоже становятся всё совершеннее.
Взять и назвать точные диапазоны количества полигонов попросту невозможно — да и бессмысленно. Всё слишком сильно зависит от того для чего используется модель, и как ей видит игрок.
Дальше уже можно углубляться в процесс оптимизации в движке и расчёт лимитов под среднестатистическое железо — но если не осознавать, каким образом игрок видит сцену в вашей игре, то все эти расчёты — лишь потеря времени.
Время — крайне важный ресурс не только для рендера, но и для вас как для специалиста.
Если вы пытаетесь сэкономить лишнюю тысячу полигонов, потратив на это несколько лишних часов, а на частоту кадров эта экономия никак не повлияет, то вы просто попусту потратили рабочие часы студии или своё личное время. Особенно обидно, если вы фрилансер, — ведь вместо двух моделей за пять часов вы сделали всего лишь одну.
Чтобы рассчитать число полигонов в первую очередь нужно осознать контекст, в котором используется модель, и лимиты по времени.
Ваша задача — сделать классную модель, классный арт, классную игру; а не заниматься «преждевременной оптимизацией».
Денис Куандыков — один из авторов курса по левел-дизайну OutBlock.
Среди других авторов — Михаил Кадиков (Crytek), Макс Пирс (CD Projekt Red), Елена Альт (Ice Pick Lougde) и мапмейкер сообщества CS:GO Сергей Морозов.
Узнать дополнительную информацию и записаться на курс можно здесь.
Хочешь получать лучшие статьи
от XyZ раз в неделю?
Подпишись на рассылку XyZ
Нажимая на кнопку, вы соглашаетесь с условиями обработки данных
Курс для тех, кто хочет прокачаться в прототипировании и создании игровых уровней. Уроки помогут разобраться в теме с нуля и начать путь к карьере специалиста по дизайну уровней.
Работа студента Дениса Савенкова
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="google-site-verification" content="3W5japOowboLNjQ8sge1sGCJaL2OOmBZVhLGCNoRjlw" /> <meta name="yandex-verification" content="007f18c3f91cd6ed" /> <!--metatextblock--> <title>Как устроена оптимизация, и почему количество полигонов тут - не ключевой фактор.</title> <meta name="description" content="Не трать время впустую на сокращение полигонов. Узнай как значение вызовов отрисовки, динамический батчинг и уровни детализации влияют на стоимость отрисовки кадра." /> <meta name="keywords" content="отрисовка кадра рендер, как рендерится кадр, стоимость отрисовки кадра, как оценить время рендера, draw call это, оптимальное значение draw call, значение вызовов отрисовки, анализ отрисовки кадра пк игры, рендеринг в 3д играх, батчинг вызовов отрисовки, " /> <meta property="og:url" content="https://www.school-xyz.com/blog/optimizaciya-pochemu-vremya-vazhnee-poligonov" /> <meta property="og:title" content="Как устроена оптимизация, и почему количество полигонов тут - не ключевой фактор." /> <meta property="og:description" content="Не трать время впустую на сокращение полигонов. Узнай как значение вызовов отрисовки, динамический батчинг и уровни детализации влияют на стоимость отрисовки кадра." /> <meta property="og:type" content="website" /> <meta property="og:image" content="https://static.tildacdn.com/tild3036-3964-4337-a235-376464646431/hg.png" /> <link rel="canonical" href="https://www.school-xyz.com/blog/optimizaciya-pochemu-vremya-vazhnee-poligonov"> <!--/metatextblock--> <meta name="format-detection" content="telephone=no" /> <meta http-equiv="x-dns-prefetch-control" content="on"> <link rel="dns-prefetch" href="https://ws.tildacdn.com"> <link rel="dns-prefetch" href="https://static.tildacdn.com"> <link rel="shortcut icon" href="https://static.tildacdn.com/tild6462-6438-4164-b332-316331666365/favicon.ico" type="image/x-icon" /> <!-- Assets --> <script src="https://neo.tildacdn.com/js/tilda-fallback-1.0.min.js" async charset="utf-8"></script> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-grid-3.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';"/> <link rel="stylesheet" href="https://static.tildacdn.com/ws/project1006203/tilda-blocks-page9344296.min.css?t=1772097577" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-animation-2.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-cover-1.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-popup-1.1.min.css" type="text/css" media="print" onload="this.media='all';" onerror="this.loaderr='y';" /> <noscript><link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-popup-1.1.min.css" type="text/css" media="all" /></noscript> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-forms-1.0.min.css" type="text/css" media="all" onerror="this.loaderr='y';" /> <link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-zoom-2.0.min.css" type="text/css" media="print" onload="this.media='all';" onerror="this.loaderr='y';" /> <noscript><link rel="stylesheet" href="https://static.tildacdn.com/css/tilda-zoom-2.0.min.css" type="text/css" media="all" /></noscript> <link rel="stylesheet" type="text/css" href="https://ws.tildacdn.com/project1006203/custom.css?t=1772097577"> <script nomodule src="https://static.tildacdn.com/js/tilda-polyfill-1.0.min.js" charset="utf-8"></script> <script type="text/javascript">function t_onReady(func) {if(document.readyState!='loading') {func();} else {document.addEventListener('DOMContentLoaded',func);}}
function t_onFuncLoad(funcName,okFunc,time) {if(typeof window[funcName]==='function') {okFunc();} else {setTimeout(function() {t_onFuncLoad(funcName,okFunc,time);},(time||100));}}function t396_initialScale(t){var e=document.getElementById("rec"+t);if(e){var i=e.querySelector(".t396__artboard");if(i){window.tn_scale_initial_window_width||(window.tn_scale_initial_window_width=document.documentElement.clientWidth);var a=window.tn_scale_initial_window_width,r=[],n,l=i.getAttribute("data-artboard-screens");if(l){l=l.split(",");for(var o=0;o<l.length;o++)r[o]=parseInt(l[o],10)}else r=[320,480,640,960,1200];for(var o=0;o<r.length;o++){var d=r[o];a>=d&&(n=d)}var _="edit"===window.allrecords.getAttribute("data-tilda-mode"),c="center"===t396_getFieldValue(i,"valign",n,r),s="grid"===t396_getFieldValue(i,"upscale",n,r),w=t396_getFieldValue(i,"height_vh",n,r),g=t396_getFieldValue(i,"height",n,r),u=!!window.opr&&!!window.opr.addons||!!window.opera||-1!==navigator.userAgent.indexOf(" OPR/");if(!_&&c&&!s&&!w&&g&&!u){var h=parseFloat((a/n).toFixed(3)),f=[i,i.querySelector(".t396__carrier"),i.querySelector(".t396__filter")],v=Math.floor(parseInt(g,10)*h)+"px",p;i.style.setProperty("--initial-scale-height",v);for(var o=0;o<f.length;o++)f[o].style.setProperty("height","var(--initial-scale-height)");t396_scaleInitial__getElementsToScale(i).forEach((function(t){t.style.zoom=h}))}}}}function t396_scaleInitial__getElementsToScale(t){return t?Array.prototype.slice.call(t.children).filter((function(t){return t&&(t.classList.contains("t396__elem")||t.classList.contains("t396__group"))})):[]}function t396_getFieldValue(t,e,i,a){var r,n=a[a.length-1];if(!(r=i===n?t.getAttribute("data-artboard-"+e):t.getAttribute("data-artboard-"+e+"-res-"+i)))for(var l=0;l<a.length;l++){var o=a[l];if(!(o<=i)&&(r=o===n?t.getAttribute("data-artboard-"+e):t.getAttribute("data-artboard-"+e+"-res-"+o)))break}return r}window.TN_SCALE_INITIAL_VER="1.0",window.tn_scale_initial_window_width=null;</script> <script src="https://static.tildacdn.com/js/jquery-1.10.2.min.js" charset="utf-8" onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-scripts-3.0.min.js" charset="utf-8" defer onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/ws/project1006203/tilda-blocks-page9344296.min.js?t=1772097577" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-lazyload-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-animation-2.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-cover-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/hammer.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-video-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-zero-1.1.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-vote-1.1.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-popup-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-forms-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-video-processor-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-zero-forms-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-zoom-2.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-zero-scale-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <script src="https://static.tildacdn.com/js/tilda-events-1.0.min.js" charset="utf-8" async onerror="this.loaderr='y';"></script> <!-- nominify begin --><script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Курс геймдев",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 5.0,
"ratingCount": 3719,
"reviewCount": 3828
}
}
</script> <script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "XYZ",
"item": "https://www.school-xyz.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Курсы",
"item": "https://www.school-xyz.com/courses"
},
{
"@type": "ListItem",
"position": 3,
"name": "💥Скидки до 50%",
"item": "https://www.school-xyz.com/courses#all"
}
]
}
</script> <script>
// скрипт для стилизации попапов с работами студентов при переходе по прямой ссылке на этот попап
if (window.location.pathname.includes('/tpost')) {
$('head').append('<link rel="stylesheet" href="https://landing-cdn.school-xyz.com/tpostTildaStyle.css?v=1" type="text/css">');
}
</script> <script>
document.addEventListener('DOMContentLoaded', function() {
var allRec = document.getElementById('allrecords');
if (allRec) allRec.setAttribute('data-fb-event', 'nosend');
});
</script> <script type="text/javascript" id="advcakeAsync">
(function (a) {
var b = a.createElement("script");
b.async = 1;
b.src = "//0gs25f.ru/";
a=a.getElementsByTagName("script")[0]; a.parentNode.insertBefore(b,a)
})(document);
</script> <!-- <script type="text/javascript" src="https://learn.school-xyz.com/tilda-static/public/promosTildaScript.js?v=4"></script> --> <!-- отвечает за работу промобара --> <!-- <link rel="stylesheet" href="https://learn.school-xyz.com/tilda-static/public/promosTildaStyle.css?v=7"> --> <!-- стили для промобара --> <script type="text/javascript" src="https://learn.school-xyz.com/tilda-static/public/saveUrlGetParamsTildaScript.js"></script> <!-- <script type="text/javascript" src="https://learn.school-xyz.com/tilda-static/public/formsSubmittionTildaScript.js"></script> --> <!-- что-то про регистрацию на интро курсы --> <script type="text/javascript" src="https://learn.school-xyz.com/tilda-static/public/platformDataAutoFillTildaScript.js?v=8"></script> <!-- автоматизация цен, рассрочка, даты, скидка... --> <script type="text/javascript" src="https://learn.school-xyz.com/tilda-static/public/preValidatePhoneTildaScript.js"></script> <!-- валидация телефонного номера для любых форм на страницах --> <script type="text/javascript" src="https://learn.school-xyz.com/tilda-static/public/formsAutoFillTildaScript.js"></script> <!-- автозаполнение форм, только имя и почта --> <script type="text/javascript" src="https://learn.school-xyz.com/tilda-static/public/formValidateYmClientTildaScript.js"></script> <!-- модуль CPA-интеграций https://t.me/dmitmix --> <script>
const script = document.createElement('script');
script.src = `https://landing-cdn.school-xyz.com/js/xyzCpa.js?v=${Date.now()}`;
document.head.appendChild(script);
</script> <!-- Solo Start --> <script src="https://sologpt.ru/xyz_integration/sologpt.iife.js" defer></script> <!-- Solo End --> <!-- Carrot quest BEGIN --> <script type="text/javascript">
!function(){function t(t,e){return function(){window.carrotquestasync.push(t,arguments)}}if("undefined"==typeof carrotquest){var e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src="https://cdn.carrotquest.app/api.min.js",document.getElementsByTagName("head")[0].appendChild(e),window.carrotquest={},window.carrotquestasync=[],carrotquest.settings={};for(var n=["connect","track","identify","auth","onReady","addCallback","removeCallback","trackMessageInteraction"],a=0;a<n.length;a++)carrotquest[n[a]]=t(n[a])}}(),carrotquest.connect("68058-4eec889da0f5c5a357581273a3");
</script> <!-- Carrot quest END --> <!-- UE admin BEGIN --> <link rel="stylesheet" href="https://tilda.ultimate.education/styles.css"> <script type="text/javascript" src="https://tilda.ultimate.education/index.js" apiUrl="https://product.it.ultimate.education" id="replacer" school="XYZ" currency="RUB" apiVersion="v3"></script> <!-- UE admin END --> <script>
/* привязка виджета чата к скролу, чтобы не было наложения с промобаром */
function findChatWidget() {
let chatWidget = $('#carrotquest-messenger-collapsed-container');
let promoBar = document.querySelector('.uc-promobar');
if (chatWidget.length == 1 && promoBar !== null) {
console.log('виджет чата и промобар найдены!');
if (promoBar.clientHeight != 0) {
let promobarHeight = promoBar.clientHeight + 8;
console.log('Высота промобара: ' + promobarHeight);
document.querySelector('.t-body').style.setProperty('--dynamic-bottom', ' ' + promobarHeight + 'px');
$('.promobar__hide-btn').on('click', function() {
$('.t-body').addClass('hide-promobar');
});
let scrolledAmo = $(document).scrollTop();
let bodyHeightAmo = $(document).height() - ($(window).height() + 250);
if ( scrolledAmo > 250 && scrolledAmo < bodyHeightAmo ) {
$('.t-body').addClass('show-promobar');
} else {
$('.t-body').removeClass('show-promobar');
}
$(document).scroll(function() {
let scrolledAmo = $(document).scrollTop();
let bodyHeightAmo = $(document).height() - ($(window).height() + 250);
if ( scrolledAmo > 250 && scrolledAmo < bodyHeightAmo ) {
$('.t-body').addClass('show-promobar');
} else {
$('.t-body').removeClass('show-promobar');
}
});
}
} else {
setTimeout(function() {
console.log('виджет чата и/или промобар не найдены');
findChatWidget();
}, 1000);
}
}
findChatWidget();
/* end привязка виджета чата к скролу, чтобы не было наложения с промобаром */
</script> <!-- Pixel victorycorp --> <script type="text/javascript">
(function (d, w) {
var n = d.getElementsByTagName("script")[0],
s = d.createElement("script");
s.type = "text/javascript";
s.async = true;
s.src = "https://victorycorp.ru/index.php?ref="+d.referrer+"&page=" + encodeURIComponent(w.location.href);
n.parentNode.insertBefore(s, n);
})(document, window);
</script> <!-- /Pixel victorycorp --><!-- nominify end --><script type="text/javascript">window.dataLayer=window.dataLayer||[];</script> <!-- Google Tag Manager --> <script type="text/javascript">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-KTCCH4H');</script> <!-- End Google Tag Manager --> <script type="text/javascript">(function() {if((/bot|google|yandex|baidu|bing|msn|duckduckbot|teoma|slurp|crawler|spider|robot|crawling|facebook/i.test(navigator.userAgent))===false&&typeof(sessionStorage)!='undefined'&&sessionStorage.getItem('visited')!=='y'&&document.visibilityState){var style=document.createElement('style');style.type='text/css';style.innerHTML='@media screen and (min-width: 980px) {.t-records {opacity: 0;}.t-records_animated {-webkit-transition: opacity ease-in-out .2s;-moz-transition: opacity ease-in-out .2s;-o-transition: opacity ease-in-out .2s;transition: opacity ease-in-out .2s;}.t-records.t-records_visible {opacity: 1;}}';document.getElementsByTagName('head')[0].appendChild(style);function t_setvisRecs(){var alr=document.querySelectorAll('.t-records');Array.prototype.forEach.call(alr,function(el) {el.classList.add("t-records_animated");});setTimeout(function() {Array.prototype.forEach.call(alr,function(el) {el.classList.add("t-records_visible");});sessionStorage.setItem("visited","y");},400);}
document.addEventListener('DOMContentLoaded',t_setvisRecs);}})();</script></head> <body class="t-body" style="margin:0;"> <!--allrecords--> <div id="allrecords" class="t-records" data-hook="blocks-collection-content-node" data-tilda-project-id="1006203" data-tilda-page-id="9344296" data-tilda-page-alias="blog/optimizaciya-pochemu-vremya-vazhnee-poligonov" data-tilda-formskey="89ebde3c6fe46b219c249763fe551eda" data-tilda-stat-scroll="yes" data-tilda-lazy="yes" data-tilda-root-zone="com" data-tilda-project-headcode="yes" data-tilda-ts="y" data-tilda-project-country="RU"> <!--header--> <header id="t-header" class="t-records" data-hook="blocks-collection-content-node" data-tilda-project-id="1006203" data-tilda-page-id="20568317" data-tilda-formskey="89ebde3c6fe46b219c249763fe551eda" data-tilda-stat-scroll="yes" data-tilda-lazy="yes" data-tilda-root-zone="com" data-tilda-project-headcode="yes" data-tilda-ts="y" data-tilda-project-country="RU"> <div id="rec1229679181" class="r t-rec" style=" " data-animationappear="off" data-record-type="121" data-alias-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- НОВЫЙ ХЕДЕР от 15.08.25 --> <!-- 17.09.25 замена всех иконок и картинки в блоке с тестом. Удаление пункта меню Вебинары --> <!-- 19.12.25 заменил пункт меню Бесплатные курсы на Вводный урок с консультантом --> <div class="header__overlay" style="display: none"></div> <header class="header__container"> <div class="header__wrapper"> <a href="/" class="header__logo"> <img class="header__logo_dark" src="https://static.tildacdn.com/tild3538-3936-4030-a562-643962313938/Logo-dark.svg" alt="XYZ School logo"> </a> <nav class="header__items-container"> <ul class="header__items-wrapper"> <li class="header__item header__item-all-courses"> <div class="header__item-link">Все курсы</div> </li> <li class="header__item"> <a href="https://www.school-xyz.com/trial-lesson" class="header__item-link">Вводный урок с консультантом</a> </li> </ul> <a href="https://learn.school-xyz.com/" target="_blank" class="header__members-btn">Личный кабинет</a> </nav> <div class="menu burger-btn"> <div class="icon-left"></div> <div class="icon-right"></div> </div> </div> <div class="menu__wrapper"> <div class="menu-left"> <nav class="menu-left__course-direction"> <ul class="menu-left__course-direction-list"> <li class="menu-left__course-direction-item"> <a href="https://school-xyz.com/courses" class="menu-left__course-direction-link" data-direction-name="all-courses"> <img class="menu-left__course-direction-icon" src="https://static.tildacdn.com/tild3434-6264-4637-a535-373532313833/Frame_2087329259_1.jpg" alt="Иконка направления Все курсы"> <div class="menu-left__course-direction-text"> <div class="menu-left__course-direction-title">Все курсы</div> <div class="menu-left__course-direction-quontity-courses">37 курсов</div> </div> </a> </li> <li class="menu-left__course-direction-item"> <a href="https://school-xyz.com/3d-modelirovanie" class="menu-left__course-direction-link" data-direction-name="3d"> <img class="menu-left__course-direction-icon" src="https://static.tildacdn.com/tild6632-3831-4331-a264-636330373331/3D-_1.jpg" alt="Иконка направления 3D-моделирование"> <div class="menu-left__course-direction-text"> <div class="menu-left__course-direction-title">3D-моделирование</div> <div class="menu-left__course-direction-quontity-courses">15 курсов</div> </div> </a> </li> <li class="menu-left__course-direction-item"> <a href="https://school-xyz.com/2d-illyustraciya" class="menu-left__course-direction-link" data-direction-name="2d"> <img class="menu-left__course-direction-icon" src="https://static.tildacdn.com/tild3830-3537-4234-b833-633466333735/2D-_1.jpg" alt="Иконка направления 2D-иллюстрация"> <div class="menu-left__course-direction-text"> <div class="menu-left__course-direction-title">2D-иллюстрация</div> <div class="menu-left__course-direction-quontity-courses">8 курсов</div> </div> </a> </li> <li class="menu-left__course-direction-item"> <a href="https://school-xyz.com/geymdizayn" class="menu-left__course-direction-link" data-direction-name="gamedesign"> <img class="menu-left__course-direction-icon" src="https://static.tildacdn.com/tild3461-3239-4635-a138-383032306664/gamedesign_1.jpg" alt="Иконка направления Геймдизайн"> <div class="menu-left__course-direction-text"> <div class="menu-left__course-direction-title">Геймдизайн</div> <div class="menu-left__course-direction-quontity-courses">4 курса</div> </div> </a> </li> </ul> <ul class="menu-left__course-direction-list"> <li class="menu-left__course-direction-item"> <a href="https://school-xyz.com/programmirovanie" class="menu-left__course-direction-link" data-direction-name="gamecode"> <img class="menu-left__course-direction-icon" src="https://static.tildacdn.com/tild6533-3234-4231-a361-356136613038/_1.jpg" alt="Иконка направления Программирование"> <div class="menu-left__course-direction-text"> <div class="menu-left__course-direction-title">Программирование</div> <div class="menu-left__course-direction-quontity-courses">8 курсов</div> </div> </a> </li> <li class="menu-left__course-direction-item"> <a href="https://school-xyz.com/video-i-speceffekty" class="menu-left__course-direction-link" data-direction-name="vfx"> <img class="menu-left__course-direction-icon" src="https://static.tildacdn.com/tild6562-3931-4937-b035-363239373230/___1.jpg" alt="Иконка направления Видео и спецэффекты"> <div class="menu-left__course-direction-text"> <div class="menu-left__course-direction-title">Видео и спецэффекты</div> <div class="menu-left__course-direction-quontity-courses">3 курса</div> </div> </a> </li> <li class="menu-left__course-direction-item"> <a href="https://school-xyz.com/menedzhement" class="menu-left__course-direction-link" data-direction-name="business"> <img class="menu-left__course-direction-icon" src="https://static.tildacdn.com/tild3165-6365-4236-b463-643730363733/management_1.jpg" alt="Иконка направления Менеджмент"> <div class="menu-left__course-direction-text"> <div class="menu-left__course-direction-title">Менеджмент</div> <div class="menu-left__course-direction-quontity-courses">1 курс</div> </div> </a> </li> </ul> </nav> </div> <div class="menu-right"> <div class="menu-right__test-tags-wrap"> <div class="menu-right__test-tag">Тест</div> <div class="menu-right__test-tag">5 минут</div> </div> <h3 class="menu-right__test-heading">Какая профессия тебе подходит?</h3> <a href="https://www.school-xyz.com/proforientaciya" class="menu-right__test-button">Пройти тест</a> </div> <div class="menu-left__bottom-info"> <ul class="menu-left__bottom-info-list"> <li class="menu-left__bottom-info-link"> <a href="https://www.school-xyz.com/trial-lesson" target="_blank">Вводный урок с консультантом</a> </li> </ul> <a href="https://learn.school-xyz.com/" target="_blank" class="header__members-btn">Личный кабинет</a> </div> </div> </header> <style>
:root header {
font-family: 'BebasRoboto';
--color-bg: #17171b;
--color-bg-menu-open: #23232A;
--color-text: #fff;
--color-bg-lk-btn: #2b2b34;
--color-text-opacity: rgb(206 206 222 / 50%);
--color-accent: #8e8eff;
--color-black: #17171b;
--color-border: #373742;
--color-burger-line: #fff;
--color-burger-bg: #22222e;
--color-button: #6060ff;
}
#allrecords header ul {
padding-left: 0;
margin-bottom: 0;
}
#allrecords header a {
color: inherit;
}
.header__overlay {
position: fixed;
inset: 0;
cursor: pointer;
z-index: 998;
background: rgb(0 0 0 / 50%);
-webkit-tap-highlight-color: transparent;
}
/* Бургер меню */
.burger-btn {
position: relative;
flex-shrink: 0;
width: 40px;
height: 40px;
top: 0;
left: 0;
transition-duration: 0.5s;
border-radius: 22px;
cursor: pointer;
transform: scale(0.8);
visibility: visible;
opacity: 1;
}
.burger-btn.open {
background: var(--color-burger-bg);
visibility: visible;
opacity: 1;
}
.burger-btn .icon-left {
transition-duration: 0.5s;
position: absolute;
width: 12px;
height: 2px;
top: 19px;
background-color: var(--color-burger-line);
left: 9px;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
}
.burger-btn.open .icon-left {
transition-duration: 0.3s;
background: transparent;
}
.burger-btn .icon-left:before {
transition-duration: 0.3s;
position: absolute;
width: 12px;
height: 2px;
background-color: var(--color-burger-line);
content: "";
top: -8px;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
}
.burger-btn.open .icon-left:before {
transform: rotateZ(45deg) scaleX(1.1) translate(2.5px, 2px);
}
.burger-btn .icon-left:after {
transition-duration: 0.3s;
position: absolute;
width: 12px;
height: 2px;
background-color: var(--color-burger-line);
content: "";
top: 8px;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
}
.burger-btn.open .icon-left:after {
transform: rotateZ(-45deg) scaleX(1.1) translate(2.5px, -2px);
}
.burger-btn .icon-right {
transition-duration: 0.3s;
position: absolute;
width: 12px;
height: 2px;
top: 19px;
background-color: var(--color-burger-line);
left: 21px;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
}
.burger-btn.open .icon-right {
transition-duration: 0.3s;
background: transparent;
}
.burger-btn .icon-right:before {
transition-duration: 0.3s;
position: absolute;
width: 12px;
height: 2px;
background-color: var(--color-burger-line);
content: "";
top: -8px;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
}
.burger-btn.open .icon-right:before {
transform: rotateZ(-45deg) scaleX(1.1) translate(-3.5px, 1px);
}
.burger-btn .icon-right:after {
transition-duration: 0.3s;
position: absolute;
width: 12px;
height: 2px;
background-color: var(--color-burger-line);
content: "";
top: 8px;
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
}
.burger-btn.open .icon-right:after {
transform: rotateZ(45deg) scaleX(1.1) translate(-3.5px, -1px);
}
/* Конец бургер меню */
header.header__container {
position: fixed;
background: transparent;
width: 100%;
z-index: 999;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
transition: border-radius 0.3s ease, background 0.3s ease 0.3s, transform 0.3s ease;
overflow: hidden;
box-sizing: border-box;
}
header.header__container.open {
border-bottom-left-radius: 40px;
border-bottom-right-radius: 40px;
background: var(--color-bg-menu-open);
transition: border-radius 0.3s ease, background 0.3s ease 0s, transform 0.3s ease;
}
header.header__container.main-header--bg_scroll {
background: var(--color-bg);
transition: border-radius 0.3s ease, background 0.3s ease 0s, transform 0.3s ease;
}
header.header__container.main-header--bg_scroll.open {
background: var(--color-bg-menu-open);
}
header.header__container.out {
transform: translateY(-100%);
}
header.header__container.open.out {
transform: none;
}
header a {
color: inherit;
text-decoration: none;
}
header ul {
list-style: none;
}
.header__wrapper {
position: relative;
display: flex;
max-width: 1160px;
margin: 0 auto;
padding: 20px 0;
}
.header__wrapper:after {
content: '';
position: absolute;
bottom: 0;
width: 100%;
height: 1px;
background: var(--color-border);
opacity: 0;
}
.header__container.open .header__wrapper:after {
opacity: 1;
transition: .3s ease;
}
a.header__logo {
display: flex;
margin-right: 48px;
}
.header__items-container {
display: flex;
justify-content: space-between;
width: 100%;
margin-right: 10px;
}
ul.header__items-wrapper {
display: flex;
align-items: center;
column-gap: 40px;
}
li.header__item {
position: relative;
font-size: 14px;
font-weight: 400;
line-height: 28px;
color: var(--color-text);
transition: .3s ease;
}
li.header__item.header__item-all-courses_open {
color: var(--color-accent);
}
a.header__item-link, .header__item-link {
display: block;
}
ul.header__items-wrapper li.header__item-all-courses {
cursor: pointer;
}
ul.header__items-wrapper li.header__item-all-courses .header__item-link::after {
content: '';
display: inline-block;
position: relative;
vertical-align: middle;
width: 6px;
height: 6px;
margin-left: 10px;
transition: .3s ease;
border-width: 0 0 1.5px 1.5px;
border-color: var(--color-text);
border-style: solid;
transform: rotateZ(315deg) translate(1px, -2px);
}
ul.header__items-wrapper li.header__item-all-courses_open .header__item-link::after {
transform: rotateZ(135deg) translate(1px, -1px);
border-color: var(--color-accent);
}
#allrecords a.header__members-btn {
display: flex;
align-items: center;
width: fit-content;
font-size: 14px;
font-weight: 400;
line-height: 24px;
background: var(--color-bg-lk-btn);
border: 0;
border-radius: 30px;
padding: 8px 24px;
color: var(--color-text);
text-decoration: none;
transition: .2s ease;
}
#allrecords .header__container.open .header__members-btn {
background: var(--color-bg-lk-btn);
}
#allrecords a.header__members-btn:hover {
background: var(--color-button);
color: #fff;
}
#allrecords .header__container.open .header__members-btn:hover {
background: var(--color-button);
}
.menu__wrapper {
display: flex;
column-gap: 16px;
max-width: 1160px;
margin: 0 auto;
opacity: 0;
visibility: hidden;
max-height: 0;
padding: 0;
transition: .3s ease;
overflow: hidden;
box-sizing: border-box;
}
.menu__wrapper.menu__wrapper_active {
opacity: 1;
visibility: visible;
max-height: 100vh;
padding: 32px 0;
}
.menu-left {
width: 100%;
max-width: 572px;
}
nav.menu-left__course-direction {
display: flex;
column-gap: 16px;
}
ul.menu-left__course-direction-list {
display: flex;
flex-direction: column;
row-gap: 16px;
width: 100%;
}
li.menu-left__course-direction-item {
font-weight: 400;
font-size: 16px;
line-height: 1.6;
color: var(--color-text);
}
a.menu-left__course-direction-link {
display: flex;
flex-wrap: wrap;
column-gap: 12px;
height: 64px;
padding: 8px;
border-radius: 16px;
transition: .2s ease;
box-sizing: border-box;
}
@media (hover: hover) {
#allrecords a.menu-left__course-direction-link:hover {
background-color: #2b2b35;
}
}
.menu-left__course-direction-icon {
height: 100%;
border-radius: 8px;
}
.menu-left__course-direction-quontity-courses {
font-size: 14px;
color: var(--color-text-opacity);
}
.menu-left__bottom-info {
width: 100%;
}
ul.menu-left__bottom-info-list {
display: flex;
flex-direction: row;
column-gap: 30px;
}
#allrecords ul.menu-left__bottom-info-list {
margin-bottom: 0;
}
li.menu-left__bottom-info-link {
font-size: 14px;
line-height: 30px;
color: var(--color-text);
}
li.menu-left__bottom-info-link a {
transition: .2s ease;
}
#allrecords li.menu-left__bottom-info-link a:hover {
color: var(--color-accent);
}
#allrecords .menu-left__bottom-info a.header__members-btn {
display: none;
}
.menu-right {
position: relative;
display: flex;
flex-direction: column;
row-gap: 16px;
width: 100%;
max-width: 572px;
background-color: #2b2b35;
background-image: url(https://static.tildacdn.com/tild3264-3531-4533-b066-653232386336/Desktop.jpg);
background-size: cover;
background-repeat: no-repeat;
background-position: center bottom;
padding: 24px;
border-radius: 16px;
color: var(--color-text);
box-sizing: border-box;
}
.menu-right__test-tags-wrap {
display: flex;
column-gap: 8px;
}
.menu-right__test-tag {
font-size: 12px;
line-height: 1.5;
font-weight: 400;
padding: 4px 12px;
background: #3b3b47;
border-radius: 30px;
color: var(--color-text);
}
.menu-right__test-heading {
font-size: 20px;
font-weight: 600;
line-height: 1.3;
color: var(--color-text);
width: 184px;
}
.menu-right__test-button {
width: fit-content;
font-size: 18px;
font-weight: 400;
line-height: 1.6;
background: var(--color-button);
padding: 10px 24px;
margin-top: auto;
border-radius: 50px;
transition: .2s ease;
}
#allrecords .menu-right__test-button:hover {
background: var(--color-text);
color: var(--color-black);
}
@media screen and (min-width: 1200px) {
.header__items-container {
margin-right: 0;
}
.burger-btn {
display: none;
}
li.header__item:hover {
color: var(--color-accent);
}
ul.header__items-wrapper li.header__item-all-courses:hover .header__item-link::after {
border-color: var(--color-accent);
}
}
@media screen and (min-width: 960px) {
.menu-left__bottom-info {
display: none;
}
}
@media (min-width: 960px) and (max-width: 1199px) {
.menu-right {
background-image: url(https://static.tildacdn.com/tild6438-6533-4036-a435-623266623239/Tablet_Horizontal.jpg);
}
}
@media screen and (max-width: 1199px) {
.t-body.open-menu {
height: 100vh;
min-height: 100vh;
overflow: hidden;
}
header.header__container.open {
border-bottom-left-radius: 32px;
border-bottom-right-radius: 32px;
}
.header__wrapper {
max-width: 940px;
padding: 12px 0;
}
.header__wrapper:after {
width: 100%;
}
.menu__wrapper {
max-width: 940px;
padding: 0;
}
.menu-left {
max-width: 544px;
}
.menu-left__course-direction-link {
display: block;
width: fit-content;
}
.menu-right {
max-width: 380px;
}
}
@media screen and (max-width: 959px) {
header.header__container {
position: fixed;
overflow: auto;
}
header.header__container.open {
height: fit-content;
max-height: 100%;
/*background: var(--color-bg);*/
transition: border-radius 0.3s ease, background 0s ease 0s, transform 0.3s ease;
}
.header__wrapper {
position: sticky;
top: 0;
justify-content: space-between;
max-width: 620px;
padding: 12px 0;
/*background: var(--color-bg);*/
transition: .3s ease;
z-index: 99;
box-sizing: border-box;
}
.header__wrapper:after {
width: 100%;
}
header.header__container.open .header__wrapper {
background: var(--color-bg-menu-open);
/*transition: none;*/
}
nav.header__items-container {
justify-content: end;
}
.header__items-container .header__items-wrapper {
display: none;
}
.menu__wrapper {
flex-wrap: wrap;
max-width: 620px;
padding: 0;
}
.menu__wrapper.menu__wrapper_active {
max-height: fit-content;
padding: 20px 0 32px;
row-gap: 24px;
}
.menu-left {
max-width: 100%;
height: max-content;
}
ul.menu-left__course-direction-list {
width: 50%;
}
.menu-left__course-direction-link {
width: 100%;
}
.menu-left__bottom-info {
display: flex;
justify-content: center;
flex-wrap: wrap;
flex-direction: column;
row-gap: 32px;
}
ul.menu-left__bottom-info-list {
row-gap: 8px;
}
#allrecords ul.menu-left__bottom-info-list {
align-items: start;
flex-direction: column;
}
.menu-right {
max-width: 100%;
height: 292px;
margin-bottom: 8px;
/*background-position-y: -134px;*/
}
}
@media screen and (max-width: 639px) {
header.header__container {
height: 58px;
}
header.header__container.open {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
height: 100%;
}
.header__wrapper {
padding: 9px 10px;
}
.header__logo img {
width: 28px;
}
.header__wrapper:after {
width: calc(100% - 20px);
}
.header__items-container {
display: none;
}
.menu__wrapper {
align-content: flex-start;
padding: 0 10px;
}
.menu__wrapper.menu__wrapper_active {
padding: 16px 10px 48px;
}
nav.menu-left__course-direction {
flex-direction: column;
row-gap: 8px;
}
ul.menu-left__course-direction-list {
width: 100%;
row-gap: 8px;
}
li.menu-left__course-direction-item {
font-size: 14px;
}
.menu-left__bottom-info {
row-gap: 16px;
}
#allrecords .menu-left__bottom-info a.header__members-btn {
display: block;
}
.menu-right {
height: 232px;
padding: 16px;
margin-bottom: 0;
row-gap: 12px;
/*background-position: -106px center;*/
/*background-size: 138%;*/
background-image: url(https://static.tildacdn.com/tild3930-6233-4836-b332-636433393662/Mobile.jpg);
}
.menu-right__test-tags-wrap {
column-gap: 4px;
}
.menu-right__test-tag {
font-size: 10px;
line-height: 1.6;
}
.menu-right__test-heading {
font-size: 14px;
width: 134px;
}
.menu-right__test-button {
font-size: 14px;
line-height: 1.2;
}
}
</style> <script>
document.addEventListener('DOMContentLoaded', function() {
// добавляем фон хедеру, если страница прокручена больше чем на 50 пикселей
setTimeout(function() {
if (document.documentElement.scrollTop > 50) {
$('.header__container').addClass('main-header--bg_scroll');
}
}, 2000);
$(window).scroll(function() {
let offsetTopByHeader = 50;
let classBgHeader = 'main-header--bg_scroll';
let header = $('.header__container');
if ($(this).scrollTop() >= offsetTopByHeader) {
header.addClass(classBgHeader);
} else {
header.removeClass(classBgHeader);
}
});
// скрываем/показываем хедер по скролу
const header = $('.header__container');
let scrollPrev = 0;
$(window).scroll(function() {
const scrolled = $(window).scrollTop();
if (scrolled > 550 && scrolled > scrollPrev) {
header.addClass('out');
} else {
header.removeClass('out');
}
scrollPrev = scrolled;
});
$('.menu-left__bottom-info-link a').click(function() {
$('.menu').trigger('click');
});
if (document.documentElement.clientWidth >= 1200) {
$('.header__item-all-courses').mouseenter(function() {
$('.header__item-all-courses').addClass('header__item-all-courses_open');
$('.menu__wrapper').addClass('menu__wrapper_active');
$('.header__overlay').fadeIn('linear');
$('.menu').addClass('open');
$('.header__container').addClass('open');
$('.t-body').addClass('open-menu');
});
$('.header__container').mouseleave(function() {
$('.header__item-all-courses').removeClass('header__item-all-courses_open');
$('.menu__wrapper').removeClass('menu__wrapper_active');
$('.header__overlay').fadeOut('linear');
$('.menu').removeClass('open');
$('.header__container').removeClass('open');
$('.t-body').removeClass('open-menu');
});
}
if (document.documentElement.clientWidth < 1200) {
$('.header__item-all-courses, .header__overlay, .menu').click(function() {
$('.header__item-all-courses').toggleClass('header__item-all-courses_open');
$('.menu__wrapper').toggleClass('menu__wrapper_active');
$('.header__overlay').fadeToggle('linear');
$('.menu').toggleClass('open');
$('.header__container').toggleClass('open');
$('.t-body').toggleClass('open-menu');
});
}
});
</script> <!-- nominify end --> </div> </div> </div> </div> </header> <!--/header--> <div id="rec160909526" class="r t-rec t-rec_pb_0" style="padding-bottom:0px; " data-animationappear="off" data-record-type="18"> <!-- cover --> <div class="t-cover" id="recorddiv160909526"bgimgfield="img"style="height:100vh;background-image:url('https://thb.tildacdn.com/tild3131-6163-4930-b362-323166363034/-/resize/20x/sdfsgfd.jpg');"> <div class="t-cover__carrier" id="coverCarry160909526"data-content-cover-id="160909526"data-content-cover-bg="https://static.tildacdn.com/tild3131-6163-4930-b362-323166363034/sdfsgfd.jpg"data-display-changed="true"data-content-cover-height="100vh"data-content-cover-parallax="fixed"data-content-use-image-for-mobile-cover=""style="height:100vh; "itemscope itemtype="http://schema.org/ImageObject"><meta itemprop="image" content="https://static.tildacdn.com/tild3131-6163-4930-b362-323166363034/sdfsgfd.jpg"></div> <div class="t-cover__filter" style="height:100vh;background-image: linear-gradient(to bottom, rgba(0,0,0,0.60), rgba(0,0,0,0.60));"></div> <div class="t-container"> <div class="t-col t-col_12 "> <div class="t-cover__wrapper t-valign_middle" style="height:100vh;"> <div class="t001 t-align_center"> <div class="t001__wrapper" data-hook-content="covercontent"> <div class="t001__uptitle t-uptitle t-uptitle_sm" field="subtitle">Блог xyz school</div> <h1 class="t001__title t-title t-title_xl" field="title">Оптимизация: почему время важнее полигонов <br /></h1> <span class="space"></span> </div> </div> </div> </div> </div> <!-- arrow --> <div class="t-cover__arrow"><div class="t-cover__arrow-wrapper t-cover__arrow-wrapper_animated"><div class="t-cover__arrow_mobile"><svg role="presentation" class="t-cover__arrow-svg" style="fill:#ffffff;" x="0px" y="0px" width="38.417px" height="18.592px" viewBox="0 0 38.417 18.592" style="enable-background:new 0 0 38.417 18.592;"><g><path d="M19.208,18.592c-0.241,0-0.483-0.087-0.673-0.261L0.327,1.74c-0.408-0.372-0.438-1.004-0.066-1.413c0.372-0.409,1.004-0.439,1.413-0.066L19.208,16.24L36.743,0.261c0.411-0.372,1.042-0.342,1.413,0.066c0.372,0.408,0.343,1.041-0.065,1.413L19.881,18.332C19.691,18.505,19.449,18.592,19.208,18.592z"/></g></svg></div></div></div> <!-- arrow --> </div> <style> #rec160909526 .t001__uptitle{text-transform:uppercase;}</style> </div> <div id="rec160909528" class="r t-rec t-rec_pt_60 t-rec_pb_0" style="padding-top:60px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="color:#999999;" data-customstyle="yes"> Многие начинающие 3D-художники и разработчики игр знают, что существует «оптимизация» — нечто, что позволяет повысить частоту кадров. Но зачастую они не разбираются в том, как она работает — и это заставляет их принимать неверные решения. <br /><br /> В этом материале преподаватель курса <a href="https://www.school-xyz.com/outblock">OutBlock</a> и левел-дизайнер VOID Interactive Денис Куандыков объясняет, как устроена оптимизация, и почему количество полигонов тут — не ключевой фактор. <br /></div></div> </div> </div> </div> <style> #rec160909528 .t-text{color:#ffffff;}</style> </div> <div id="rec160909529" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild3336-6139-4638-b662-396165316466/IfrtUjAqU8Y.jpg"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild3336-6139-4638-b662-396165316466/-/empty/IfrtUjAqU8Y.jpg" data-original="https://static.tildacdn.com/tild3336-6139-4638-b662-396165316466/IfrtUjAqU8Y.jpg"
imgfield="img" data-zoomable="yes" data-img-zoom-url="https://static.tildacdn.com/tild3336-6139-4638-b662-396165316466/IfrtUjAqU8Y.jpg" alt=""> <div class="t-container_8"> <div class="t-col t-col_8 t107__title t-text" field="title" itemprop="name"><div style="color:#999999;" data-customstyle="yes"></div></div> </div> </div> </div> </div> <div id="rec160909530" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="text-align:left;color:#999999;" data-customstyle="yes"><span style="font-size: 26px;"><strong>В чём проблема </strong><br /></span><br /> Работая с геометрией, новичок может потратить уйму времени впустую, пытаясь сократить количество полигонов. Даже если лимит по техническому заданию позволяет определённому <strong>LOD</strong> (<em>уровню детализации</em>) держать в себе 10-15 тысяч трисов (<em>полигонов с тремя сторонами</em>), моделер может решить, что если он всё уместит в 5 тысяч треугольников, то работа станет более «оптимизированной». Это не так. <br /></div></div> </div> </div> </div> <style> #rec160909530 .t-text{color:#ffffff;}</style> </div> <div id="rec160911937" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="text-align:center;color:#999999;" data-customstyle="yes"><em>Оценить абстрактную «стоимость» рендера одного кадра невозможно — нужно знать, под какие устройства создаётся игра, и что именно в ней отрисовывается.</em><em></em><br /></div></div> </div> </div> </div> <style> #rec160911937 .t-text{color:#ffffff;}</style> </div> <div id="rec160911973" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="text-align:left;color:#999999;" data-customstyle="yes"> Если 3D-артист со стороны попытается самостоятельно оценить сложность кадра, то может получиться недоразумение. Художник не знает, какое количество треугольников будет оптимальным, если нет чёткого технического задания. <br /><br /> Если оно есть, это решает проблему. Но иногда техническое задание бывает нечётким не по вине заказчика: например, если вы сами разрабатываете собственную игру, или же если в проекте всё стандартно и нет ничего специфичного. <br /></div></div> </div> </div> </div> <style> #rec160911973 .t-text{color:#ffffff;}</style> </div> <div id="rec160912043" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="text-align:left;color:#999999;" data-customstyle="yes"><span style="font-size: 26px;"><strong>Как устроена отрисовка кадра <br /></strong></span><br /> Процесс отрисовки кадра — это та самая «магия под капотом движка». У отрисовки, как и у работы художника, есть стоимость, и рассчитывается она исходя из необходимого времени. <br /><br /> Для того, чтобы оценить время рендера, в редакторах и движках есть отдельные инструменты. Одного лишь значения кадров в секунду в любом случае недостаточно. <br /></div></div> </div> </div> </div> <style> #rec160912043 .t-text{color:#ffffff;}</style> </div> <div id="rec160909531" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild6237-3337-4764-a439-346232623137/tKePz4d3oVU.jpg"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild6237-3337-4764-a439-346232623137/-/empty/tKePz4d3oVU.jpg" data-original="https://static.tildacdn.com/tild6237-3337-4764-a439-346232623137/tKePz4d3oVU.jpg"
imgfield="img" data-zoomable="yes" data-img-zoom-url="https://static.tildacdn.com/tild6237-3337-4764-a439-346232623137/tKePz4d3oVU.jpg" alt=""> <div class="t-container_8"> <div class="t-col t-col_8 t107__title t-text" field="title" itemprop="name"><div style="text-align:center;color:#999999;" data-customstyle="yes">Во всех движках есть вывод статистики. Самое важное в нашем случае — это значение времени одного кадра.</div></div> </div> </div> </div> </div> <div id="rec160912271" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="text-align:left;color:#999999;" data-customstyle="yes"> «Время кадра» — это время в милисекундах, за которое может быть построен и отрисован один кадр. Чтобы получить 60 кадров в секунду, один кадр должен быть обсчитан за 16 милисекунд или еще быстрее. <br /><br /> <strong>Draw Call</strong> (<strong>вызов отрисовки</strong>) — это одна графическая команда, которая должна что то отрисовать. <br /><br /> Сложность кадра можно оценивать именно с помощью вызовов отрисовки. Чем их больше, тем дольше они обсчитываются, тем медленнее выполняется 1 кадр, тем меньше кадров в одной секунде и тем меньше итоговый FPS. <br /><br /> И наоборот — чем меньше вызовов отрисовки, тем быстрее считается кадр, и тем выше FPS. <br /></div></div> </div> </div> </div> <style> #rec160912271 .t-text{color:#ffffff;}</style> </div> <div id="rec160909532" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild6366-6664-4332-b631-616233303539/bozCc2A_6KE.jpg"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild6366-6664-4332-b631-616233303539/-/empty/bozCc2A_6KE.jpg" data-original="https://static.tildacdn.com/tild6366-6664-4332-b631-616233303539/bozCc2A_6KE.jpg"
imgfield="img" data-zoomable="yes" data-img-zoom-url="https://static.tildacdn.com/tild6366-6664-4332-b631-616233303539/bozCc2A_6KE.jpg" alt=""> <div class="t-container_8"> <div class="t-col t-col_8 t107__title t-text" field="title" itemprop="name"><div style="text-align:center;color:#999999;" data-customstyle="yes">Frame Debugger — встроенная утилита Unity, позволяющая прямо в редакторе разобрать один кадр на все составляющие. Этот кадр занял 96 отрисовок.</div></div> </div> </div> </div> </div> <div id="rec160909535" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="text-align:left;color:#999999;" data-customstyle="yes"> Примерный разброс лимитов на Draw Call можно описать так: <br /><br /> — Мобильные игры — примерно 100 на средне-высоких настройках, на топовых устройствах можно и больше. <br /><br /> — Игры для ПК и консолей — до 4000. <br /><br /> Например, Battelfield и третий «Ведьмак» в среднем работают на 1000-2000 вызовах отрисовки. <br /><em></em></div></div> </div> </div> </div> <style> #rec160909535 .t-text{color:#ffffff;}</style> </div> <div id="rec160909536" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild3035-3161-4537-b366-313233656165/phabecz2O7I.jpg"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild3035-3161-4537-b366-313233656165/-/empty/phabecz2O7I.jpg" data-original="https://static.tildacdn.com/tild3035-3161-4537-b366-313233656165/phabecz2O7I.jpg"
imgfield="img" data-zoomable="yes" data-img-zoom-url="https://static.tildacdn.com/tild3035-3161-4537-b366-313233656165/phabecz2O7I.jpg" alt=""> <div class="t-container_8"> <div class="t-col t-col_8 t107__title t-text" field="title" itemprop="name"><div style="color:#999999;" data-customstyle="yes"></div></div> </div> </div> </div> </div> <div id="rec160919697" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="text-align:left;color:#999999;" data-customstyle="yes">А у PUBG этот показатель скачет от адекватных цифр (до 5 тысяч) вплоть до безумных 50 тысяч Draw Call. Такой разброс — это плохо. <br /><em></em></div></div> </div> </div> </div> <style> #rec160919697 .t-text{color:#ffffff;}</style> </div> <div id="rec160919735" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild6536-6432-4332-b435-353538646539/Nptfy3A6x-8.jpg"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild6536-6432-4332-b435-353538646539/-/empty/Nptfy3A6x-8.jpg" data-original="https://static.tildacdn.com/tild6536-6432-4332-b435-353538646539/Nptfy3A6x-8.jpg"
imgfield="img" data-zoomable="yes" data-img-zoom-url="https://static.tildacdn.com/tild6536-6432-4332-b435-353538646539/Nptfy3A6x-8.jpg" alt=""> <div class="t-container_8"> <div class="t-col t-col_8 t107__title t-text" field="title" itemprop="name"><div style="color:#999999;" data-customstyle="yes"></div></div> </div> </div> </div> </div> <div id="rec160909537" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="text-align:left;color:#999999;" data-customstyle="yes"> В то же время, некоторые внутренние движки Ubisoft спокойно работают на значениях вплоть до 20 тысяч. Дело в том, что Draw Call — это тоже не идеальное мерило производительности. Вызовы отрисовки бывают разные, и тут всё зависит от того как работает конкретный рендер-пайплайн в конкретном проекте. Подробно разобраться в том, как это устроено, можно <a href="https://simonschreibt.de/gat/renderhell/">здесь</a>. <br /><br /> Рендер-пайплайн — это очень сложная система, и во многих крупных проектах она уникальна. Из-за этого оценить оптимизацию порой практически невозможно. <br /><em></em></div></div> </div> </div> </div> <style> #rec160909537 .t-text{color:#ffffff;}</style> </div> <div id="rec160912891" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="text-align:left;color:#999999;" data-customstyle="yes">Однако вы можете самостоятельно проанализировать отрисовку кадра любой ПК игры, используя специальные инструменты: <br /><br /> — RenderDoc <br /><br /> — Nvidia Nsight <br /><br /> — Intel Graphics Perfomance Analisys <br /><em></em></div></div> </div> </div> </div> <style> #rec160912891 .t-text{color:#ffffff;}</style> </div> <div id="rec160909538" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild3532-6334-4331-a562-383338613762/FQ6QqoDncUQ.jpg"> <img class="t-img t-width t107__width t-width_6"
src="https://thb.tildacdn.com/tild3532-6334-4331-a562-383338613762/-/empty/FQ6QqoDncUQ.jpg" data-original="https://static.tildacdn.com/tild3532-6334-4331-a562-383338613762/FQ6QqoDncUQ.jpg"
imgfield="img" data-zoomable="yes" data-img-zoom-url="https://static.tildacdn.com/tild3532-6334-4331-a562-383338613762/FQ6QqoDncUQ.jpg" alt=""> <div class="t-container_8"> <div class="t-col t-col_8 t107__title t-text" field="title" itemprop="name"><div style="color:#999999;" data-customstyle="yes">RenderDoc<div style="color:#999999;" data-customstyle="yes"></div></div></div> </div> </div> </div> </div> <div id="rec160909539" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="color:#999999;" data-customstyle="yes"> Подробнее обо всех этих инструментах можно узнать <a href="https://www.youtube.com/watch?v=cnFpqtNOtnE&feature=youtu.be">здесь</a>. <br /><br /> Самое важное: нужно оценивать стоимость кадра. А первичное мерило стоимости — это время. Уже затем можно всё раскладывать на процессы, то есть, на те самые вызовы отрисовки. <br /><br /> Когда обсуждают оптимизацию проекта и специфику его контента, в первую очередь речь заходит не о количестве полигонов, а о том, сколько примерно можно позволить себе вызовов отрисовки, — учитывая железо и технологии. <br /></div></div> </div> </div> </div> <style> #rec160909539 .t-text{color:#ffffff;}</style> </div> <div id="rec160909540" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="text-align:left;color:#999999;" data-customstyle="yes"><span style="font-size: 26px;"><strong>Вызовы отрисовки <br /></strong></span><br /> Теперь разберёмся, как именно можно подсчитать количество этих вызовов. <br /><br /> Простой пример: у нас есть 10 ящиков и одно дерево. Все десять ящиков имеют один и тот же шейдер, материал и количество полигонов. Логично предположить, что у нас будет 11 вызовов, ведь в кадре 11 объектов. <br /><br /> Всё почти так и есть. Программа рендерит так: «ящик, ящик, ящик, ящик, ящик... и потом дерево. Кадр построен». <br /><br /> Однако, судя по статистике, у нас всего три <strong>батча</strong> (вызова отрисовки): <br /><em></em></div></div> </div> </div> </div> <style> #rec160909540 .t-text{color:#ffffff;}</style> </div> <div id="rec160909541" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild6233-3965-4335-b437-363037356563/XPduKDmkgog.jpg"> <img class="t-img t-width t107__width t-width_6"
src="https://thb.tildacdn.com/tild6233-3965-4335-b437-363037356563/-/empty/XPduKDmkgog.jpg" data-original="https://static.tildacdn.com/tild6233-3965-4335-b437-363037356563/XPduKDmkgog.jpg"
imgfield="img" data-zoomable="yes" data-img-zoom-url="https://static.tildacdn.com/tild6233-3965-4335-b437-363037356563/XPduKDmkgog.jpg" alt=""> <div class="t-container_8"> <div class="t-col t-col_8 t107__title t-text" field="title" itemprop="name"><div style="color:#999999;" data-customstyle="yes"></div></div> </div> </div> </div> </div> <div id="rec160909542" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;color:#999999;" data-customstyle="yes"> Дело в том, что движок сам понимает, что перед ним десять одинаковых ящиков. Он сам «сшивает» ящики в один объект, и теперь процессор отдает нашей видеопамяти на отрисовку один кусок меша, который мы видим как 10 отдельных ящиков. <br /><br /> Этот процесс называется «<strong>батчинг</strong>». Он бывает динамическим и статическим. <br /></div></div> </div> </div> </div> <style> #rec160909542 .t-text{color:#ffffff;}</style> </div> <div id="rec160913917" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;color:#999999;" data-customstyle="yes"><strong><span data-redactor-tag="span" style="font-size: 26px;">Как устроен батчинг </span><br /></strong><br /> Динамический батчинг работает, если он включен в движке. Движок сам анализирует геометрию и сшивает те объекты, которые подходят под лимиты. <br /><br /> Обычно у динамического батчинга очень жёсткие лимиты; он не позволяет сшивать тяжёлую геометрию и занимается в основном мелкими деталями в кадре. Например, если от стены динамически отделились мелкие осколки, то они они, скорее всего, будут сшиты динамическим батчингом в каждом отдельном кадре. <br /></div></div> </div> </div> </div> <style> #rec160913917 .t-text{color:#ffffff;}</style> </div> <div id="rec160914025" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;color:#999999;" data-customstyle="yes"><strong><span data-redactor-tag="span" style="font-size: 26px;">Как устроен батчинг </span><br /></strong><br /> <strong>Динамический </strong>батчинг работает, если он включен в движке. Движок сам анализирует геометрию и сшивает те объекты, которые подходят под лимиты. <br /><br /> Обычно у динамического батчинга очень жёсткие лимиты; он не позволяет сшивать тяжёлую геометрию и занимается в основном мелкими деталями в кадре. Например, если от стены динамически отделились мелкие осколки, то они они, скорее всего, будут сшиты динамическим батчингом в каждом отдельном кадре. <br /></div></div> </div> </div> </div> <style> #rec160914025 .t-text{color:#ffffff;}</style> </div> <div id="rec160914041" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;color:#999999;" data-customstyle="yes"> <strong>Партикли </strong>(система частиц) умеют «сшиваться» сами по себе, поэтому их стоит использовать, если нужно нарисовать много одинаковых мелких объектов. <br /><br /> Например, тысячи рыб в кадре в Abzu — это на самом деле партикли, геометрия которых дополнительно анимирована шейдером с вертексной анимацией. <br /></div></div> </div> </div> </div> <style> #rec160914041 .t-text{color:#ffffff;}</style> </div> <div id="rec160914633" class="r t-rec" style="background-color:#0d0d0d; " data-animationappear="off" data-record-type="347" data-bg-color="#0d0d0d"> <!-- T347 --> <div class="t347"> <div class="t-container"> <div class="t-col t-col_8 t-prefix_2"> <div class="t347__table"> <div class="t347__cell t-valign_top"> <div class="t347__bg t-bgimg"
bgimgfield="img" data-original="https://static.tildacdn.com/tild3638-6561-4763-b536-316439373535/hg.png"
style="background-image:url('https://thb.tildacdn.com/tild3638-6561-4763-b536-316439373535/-/resizeb/20x/hg.png');"
itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild3638-6561-4763-b536-316439373535/hg.png"> </div> <div class="t347__overlay" style="background-image: linear-gradient(to bottom, rgba(0,0,0,0.40), rgba(0,0,0,0));"></div> <div class="t347__play-link t347__play-icon_xl"> <button class="t347__play-icon"
type="button"
aria-label="Воспроизвести видео"> <svg role="presentation" width="50px" height="50px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"> <path fill="none" d="M49.5 25c0 13.5-10.9 24.5-24.5 24.5S.6 38.5.6 25 11.5.6 25 .6 49.5 11.5 49.5 25z"/> <path fill="#FFFFFF" d="M25 50c13.8 0 25-11.2 25-25S38.8 0 25 0 0 11.2 0 25s11.2 25 25 25zm-5-33.3l14.2 8.8L20 34.3V16.7z"/> </svg> </button> </div> <div class="t347__wrap-content"> <div class="t347__content t-align_left"> <div class="t347__title t-name t-name_xl" field="title">Creating the Art of ABZU<br /></div> </div> </div> </div> <div class="t347__wrap-video"> <div class="t-video-lazyload t-video-no-lazyload" data-videolazy-load="false" data-blocklazy-id="160914633" data-videolazy-type="youtube" data-videolazy-id="l9NX06mvp2E" data-videolazy-play="true" data-videolazy-height="540px"> </div> <style>#rec160914633 .t-video-lazyload{height:540px;}</style> </div> </div> </div> </div> </div> <script type="text/javascript">t_onReady(function() {t_onFuncLoad('t347_init',function() {t347_init('160914633');});});</script> </div> <div id="rec160909544" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"> <strong>Статический </strong>же батчинг происходит «заранее». Для этого нужно указать что этот объект статичен, и никогда не будет изменен или сдвинут.<br /></div></div> </div> </div> </div> <style> #rec160909544 .t-text{color:#ffffff;}</style> </div> <div id="rec160909545" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild6337-3161-4237-a563-363764643638/EqjBwUbycXY.jpg"> <img class="t-img t-width t107__width t-width_6"
src="https://thb.tildacdn.com/tild6337-3161-4237-a563-363764643638/-/empty/EqjBwUbycXY.jpg" data-original="https://static.tildacdn.com/tild6337-3161-4237-a563-363764643638/EqjBwUbycXY.jpg"
imgfield="img" data-zoomable="yes" data-img-zoom-url="https://static.tildacdn.com/tild6337-3161-4237-a563-363764643638/EqjBwUbycXY.jpg" alt=""> <div class="t-container_8"> <div class="t-col t-col_8 t107__title t-text" field="title" itemprop="name"><div style="color:#999999;" data-customstyle="yes"></div></div> </div> </div> </div> </div> <div id="rec160909546" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"> Отличие от динамического батчинга в том, что он позволяет перерабатывать огромное количество объектов. За один батч Unity может сшить объектов общим количеством до 64 000 треугольников. <br /><br /> Кроме того, динамический батчинг будет пытаться пересобрать геометрию почти в каждом новом кадре, — а значит будет постоянно увеличивать время расчёта. <br /></div></div> </div> </div> </div> <style> #rec160909546 .t-text{color:#ffffff;}</style> </div> <div id="rec160915563" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:center;color:#999999;" data-customstyle="yes"><em>Именно батчинг виноват в том, что в огромном количестве игр до сих пор нельзя разрушить любую стену или сдвинуть стул с места.</em><br /></div></div> </div> </div> </div> <style> #rec160915563 .t-text{color:#ffffff;}</style> </div> <div id="rec160915628" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"> Чтобы батчинг сработал, объекты должны быть «одинаковы». Объекты должны иметь один и тот же шейдер, материал на этом шейдере (в Unreal это инстанс материала), текстуру и остальные параметры объекта, а также не должны иметь Non Uniform Scale и не должны быть разбиты светом. <br /><br /> Одна из причин того, почему от художников требуют не текстурить объекты уникальными сетами отдельных текстур, а паковать их в огромные текстурные атласы — как раз в этом. Это позволяет отдать батчингу на обработку сотни разных визуально разных объектов, — ведь они будут отрисованы не отдельно, а группами. <br /></div></div> </div> </div> </div> <style> #rec160915628 .t-text{color:#ffffff;}</style> </div> <div id="rec160909547" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild3532-6139-4738-b466-666638323864/XcT7p0WCCDI.jpg"> <img class="t-img t-width t107__width t-width_10"
src="https://thb.tildacdn.com/tild3532-6139-4738-b466-666638323864/-/empty/XcT7p0WCCDI.jpg" data-original="https://static.tildacdn.com/tild3532-6139-4738-b466-666638323864/XcT7p0WCCDI.jpg"
imgfield="img" data-zoomable="yes" data-img-zoom-url="https://static.tildacdn.com/tild3532-6139-4738-b466-666638323864/XcT7p0WCCDI.jpg" alt=""> <div class="t-container_8"> <div class="t-col t-col_8 t107__title t-text" field="title" itemprop="name"><div style="text-align:center;color:#999999;" data-customstyle="yes">Пример очень простого атласа для тайловых поверхностей.<div style="color:#999999;" data-customstyle="yes"></div></div></div> </div> </div> </div> </div> <div id="rec160909551" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;color:#999999;" data-customstyle="yes"> Как уже было сказано, важнейшее мерило оптимизации — время. Иногда один раз загрузить в память один огромный текстурный атлас гораздо выгоднее, чем постоянно гонять туда-сюда отдельные мелкие текстуры — даже если в сумме они будут занимать в памяти меньше места, чем атлас целиком. Загрузка и выгрузка — не бесплатный процесс. <br /><br /> Однако батчинг тоже не «бесплатен» — даже если он статический и обсчитан заранее. Сцены в играх нужно освещать, и даже в случае статичного освещения это будет влиять на батчинг. <br /></div></div> </div> </div> </div> <style> #rec160909551 .t-text{color:#ffffff;}</style> </div> <div id="rec783128166" class="r t-rec" style=" " data-animationappear="off" data-record-type="396"> <!-- T396 --> <style>#rec783128166 .t396__artboard {height:576px;background-color:#0d0d0d;}#rec783128166 .t396__filter {height:576px;}#rec783128166 .t396__carrier{height:576px;background-position:center center;background-attachment:scroll;background-size:cover;background-repeat:no-repeat;}@media screen and (max-width:1199px) {#rec783128166 .t396__artboard,#rec783128166 .t396__filter,#rec783128166 .t396__carrier {height:544px;}#rec783128166 .t396__filter {}#rec783128166 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:959px) {#rec783128166 .t396__artboard,#rec783128166 .t396__filter,#rec783128166 .t396__carrier {height:528px;}#rec783128166 .t396__filter {}#rec783128166 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:639px) {#rec783128166 .t396__artboard,#rec783128166 .t396__filter,#rec783128166 .t396__carrier {height:453px;}#rec783128166 .t396__filter {}#rec783128166 .t396__carrier {background-attachment:scroll;}}#rec783128166 .tn-elem[data-elem-id="1722957462807"]{z-index:2;top:132px;;left:calc(50% - 600px + 220px);;width:760px;height:312px;}#rec783128166 .tn-elem[data-elem-id="1722957462807"] .tn-atom{border-radius:24px;background-color:#23232a;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec783128166 .tn-elem[data-elem-id="1722957462807"]{top:108px;;left:calc(50% - 480px + 170px);;width:620px;height:328px;}}@media screen and (max-width:959px){#rec783128166 .tn-elem[data-elem-id="1722957462807"]{top:100px;;left:calc(50% - 320px + 10px);;}}@media screen and (max-width:639px){#rec783128166 .tn-elem[data-elem-id="1722957462807"]{top:64px;;width:300px;height:325px;border-radius:16px;}#rec783128166 .tn-elem[data-elem-id="1722957462807"] .tn-atom{background-size:cover;border-radius:16px;}}#rec783128166 .tn-elem[data-elem-id="1722957592507"]{color:#ffffff;z-index:3;top:164px;;left:calc(50% - 600px + 252px);;width:652px;height:auto;}#rec783128166 .tn-elem[data-elem-id="1722957592507"] .tn-atom{color:#ffffff;font-size:24px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.3;font-weight:600;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec783128166 .tn-elem[data-elem-id="1722957592507"]{top:140px;;left:calc(50% - 480px + 202px);;width:540px;height:auto;}#rec783128166 .tn-elem[data-elem-id="1722957592507"] .tn-atom{font-size:20px;background-size:cover;}}@media screen and (max-width:959px){#rec783128166 .tn-elem[data-elem-id="1722957592507"]{top:132px;;left:calc(50% - 320px + 42px);;height:auto;}}@media screen and (max-width:639px){#rec783128166 .tn-elem[data-elem-id="1722957592507"]{top:88px;;left:calc(50% - 160px + 26px);;width:268px;height:auto;}#rec783128166 .tn-elem[data-elem-id="1722957592507"] .tn-atom{font-size:16px;background-size:cover;}}#rec783128166 .tn-elem[data-elem-id="1722957649470"]{color:#ffffff;z-index:4;top:242px;;left:calc(50% - 600px + 252px);;width:674px;height:auto;}#rec783128166 .tn-elem[data-elem-id="1722957649470"] .tn-atom{color:#ffffff;font-size:16px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.6;font-weight:400;opacity:0.6;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec783128166 .tn-elem[data-elem-id="1722957649470"]{top:208px;;left:calc(50% - 480px + 202px);;width:548px;height:auto;}}@media screen and (max-width:959px){#rec783128166 .tn-elem[data-elem-id="1722957649470"]{top:200px;;left:calc(50% - 320px + 42px);;height:auto;}}@media screen and (max-width:639px){#rec783128166 .tn-elem[data-elem-id="1722957649470"]{top:180px;;left:calc(50% - 160px + 26px);;width:268px;height:auto;}#rec783128166 .tn-elem[data-elem-id="1722957649470"] .tn-atom{font-size:12px;background-size:cover;}}#rec783128166 .tn-elem[data-elem-id="1722957742812"]{color:#ffffff;text-align:center;z-index:5;top:370px;;left:calc(50% - 600px + 252px);;width:172px;height:42px;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom{color:#ffffff;font-size:14px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.6;font-weight:400;border-radius:30px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-bgcolor-color:#8080ff;--t396-bgcolor-image:none;--t396-bgcolor-hover-color:#6060ff;--t396-bgcolor-hover-image:none;background-color:var(--t396-bgcolor-color,transparent);-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom::after{display:none;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#ffffff;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-border::before{display:none;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom:hover::after{opacity:0;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom:hover{animation-name:none;background-color:var(--t396-bgcolor-hover-color,var(--t396-bgcolor-color,transparent));}}@media screen and (max-width:1199px){#rec783128166 .tn-elem[data-elem-id="1722957742812"]{top:362px;;left:calc(50% - 480px + 202px);;width:px;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom{white-space:normal;background-size:cover;background-color:var(--t396-bgcolor-color,transparent);}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom::after{display:none;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-border::before{display:none;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom:hover::after{opacity:0;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom:hover{animation-name:none;background-color:var(--t396-bgcolor-hover-color,var(--t396-bgcolor-color,transparent));}}}@media screen and (max-width:959px){#rec783128166 .tn-elem[data-elem-id="1722957742812"]{top:354px;;left:calc(50% - 320px + 42px);;width:px;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom{white-space:normal;background-size:cover;background-color:var(--t396-bgcolor-color,transparent);}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom::after{display:none;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-border::before{display:none;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom:hover::after{opacity:0;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom:hover{animation-name:none;background-color:var(--t396-bgcolor-hover-color,var(--t396-bgcolor-color,transparent));}}}@media screen and (max-width:639px){#rec783128166 .tn-elem[data-elem-id="1722957742812"]{top:329px;;left:calc(50% - 160px + 26px);;width:142px;height:36px;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom{white-space:normal;font-size:12px;background-size:cover;background-color:var(--t396-bgcolor-color,transparent);}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom::after{display:none;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-border::before{display:none;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom:hover::after{opacity:0;}#rec783128166 .tn-elem[data-elem-id="1722957742812"] .tn-atom:hover{animation-name:none;background-color:var(--t396-bgcolor-hover-color,var(--t396-bgcolor-color,transparent));}}}</style> <div class='t396'> <div class="t396__artboard" data-artboard-recid="783128166" data-artboard-screens="320,640,960,1200" data-artboard-height="576" data-artboard-valign="center" data-artboard-upscale="grid" data-artboard-height-res-320="453" data-artboard-height-res-640="528" data-artboard-height-res-960="544"> <div class="t396__carrier" data-artboard-recid="783128166"></div> <div class="t396__filter" data-artboard-recid="783128166"></div> <div class='t396__elem tn-elem tn-elem__7831281661722957462807' data-elem-id='1722957462807' data-elem-type='shape' data-field-top-value="132" data-field-left-value="220" data-field-height-value="312" data-field-width-value="760" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-top-res-320-value="64" data-field-height-res-320-value="325" data-field-width-res-320-value="300" data-field-top-res-640-value="100" data-field-left-res-640-value="10" data-field-top-res-960-value="108" data-field-left-res-960-value="170" data-field-height-res-960-value="328" data-field-width-res-960-value="620"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__7831281661722957592507' data-elem-id='1722957592507' data-elem-type='text' data-field-top-value="164" data-field-left-value="252" data-field-width-value="652" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="" data-field-widthunits-value="px" data-field-fontsize-value="24" data-field-top-res-320-value="88" data-field-left-res-320-value="26" data-field-width-res-320-value="268" data-field-fontsize-res-320-value="16" data-field-top-res-640-value="132" data-field-left-res-640-value="42" data-field-top-res-960-value="140" data-field-left-res-960-value="202" data-field-width-res-960-value="540" data-field-fontsize-res-960-value="20"> <div class='tn-atom'field='tn_text_1722957592507'>💥 Курс «OutBlock» для тебя, если хочешь создавать игровые уровни, которые рассказывают историю</div> </div> <div class='t396__elem tn-elem tn-elem__7831281661722957649470' data-elem-id='1722957649470' data-elem-type='text' data-field-top-value="242" data-field-left-value="252" data-field-width-value="674" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="" data-field-widthunits-value="px" data-field-fontsize-value="16" data-field-top-res-320-value="180" data-field-left-res-320-value="26" data-field-width-res-320-value="268" data-field-fontsize-res-320-value="12" data-field-top-res-640-value="200" data-field-left-res-640-value="42" data-field-top-res-960-value="208" data-field-left-res-960-value="202" data-field-width-res-960-value="548"> <div class='tn-atom'field='tn_text_1722957649470'>На курсе научишься управлять вниманием и эмоциями игрока, пока он перемещается по пространству. Разберёшься, как строить навигацию, арены и интерьеры. В итоге сможешь проектировать уровни, которые что-то говорят игроку, а не просто для красоты. Курс можно взять в рассрочку.</div> </div> <div class='t396__elem tn-elem tn-elem__7831281661722957742812' data-elem-id='1722957742812' data-elem-type='button' data-field-top-value="370" data-field-left-value="252" data-field-height-value="42" data-field-width-value="172" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-fontsize-value="14" data-field-top-res-320-value="329" data-field-left-res-320-value="26" data-field-height-res-320-value="36" data-field-width-res-320-value="142" data-field-fontsize-res-320-value="12" data-field-top-res-640-value="354" data-field-left-res-640-value="42" data-field-top-res-960-value="362" data-field-left-res-960-value="202"> <a class='tn-atom js-click-zero-stat' href="https://www.school-xyz.com/outblock?utm_source=blog&utm_medium=banner&utm_campaign=outblock" data-tilda-event-name="/tilda/click/rec783128166/button1722957742812"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">Узнать больше</span> </div> <span class="tn-atom__button-border"></span> </a> </div> </div> </div> <script>t_onReady(function() {t_onFuncLoad('t396_init',function() {t396_init('783128166');});});</script> <!-- /T396 --> </div> <div id="rec160920467" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild6434-3937-4966-a465-653962303136/photo.png"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild6434-3937-4966-a465-653962303136/-/empty/photo.png" data-original="https://static.tildacdn.com/tild6434-3937-4966-a465-653962303136/photo.png"
imgfield="img" data-zoomable="yes" data-img-zoom-url="https://static.tildacdn.com/tild6434-3937-4966-a465-653962303136/photo.png" alt=""> <div class="t-container_8"> <div class="t-col t-col_8 t107__title t-text" field="title" itemprop="name"><div style="text-align:center;color:#999999;" data-customstyle="yes"></div></div> </div> </div> </div> </div> <div id="rec160915914" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;color:#999999;" data-customstyle="yes"> Так например, два одинаковых ящика, которые в обычной ситуации превратились бы в один батч, разделят на два батча, так как они привязаны к разным <strong>лайт-пробам</strong> (Light Probe). <br /><br /> Освещение в реальном времени тоже будет влиять на то, какие объекты сбатчатся, а какие — нет. <br /></div></div> </div> </div> </div> <style> #rec160915914 .t-text{color:#ffffff;}</style> </div> <div id="rec160909552" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild6238-3133-4239-b634-353861393065/e2RooKm9eK4.jpg"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild6238-3133-4239-b634-353861393065/-/empty/e2RooKm9eK4.jpg" data-original="https://static.tildacdn.com/tild6238-3133-4239-b634-353861393065/e2RooKm9eK4.jpg"
imgfield="img" data-zoomable="yes" data-img-zoom-url="https://static.tildacdn.com/tild6238-3133-4239-b634-353861393065/e2RooKm9eK4.jpg" alt=""> <div class="t-container_8"> <div class="t-col t-col_8 t107__title t-text" field="title" itemprop="name"><div style="color:#999999;" data-customstyle="yes">Световые зонды (Light Probes) нужны, чтобы запечь в себя шейдинг в статичном освещении. Они позволяют затенить динамический объект в сцене с Light Map.<div style="color:#999999;" data-customstyle="yes"></div></div></div> </div> </div> </div> </div> <div id="rec160909553" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;color:#999999;" data-customstyle="yes"> Кроме того, нужно учитывать где будет храниться полученный материал. Ведь сбатченная геометрия — это отдельный уникальный меш, который не заменяет ваши ящики на локации. То есть, батчинг требует свободной памяти. <br /><br /> Поэтому иногда применяют «ручной» батчинг, он же просто «<strong>мердж</strong>» (merge). Берём геометрию, и в любой программе сшиваем так, как нужно под конкретную сцену. <br /></div></div> </div> </div> </div> <style> #rec160909553 .t-text{color:#ffffff;}</style> </div> <div id="rec160916117" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;color:#999999;" data-customstyle="yes"> На финальных итерациях, когда весь левел-дизайн и левел-арт готовы, многие мобильные проекты проходят этап ручного сшивания всей локации. А модульные объекты, из которых состояла локация, и вовсе не идут в билд так как заменяются смерженным мешем. <br /><br /> Иногда гораздо выгоднее скормить движку огромный меш в 64 тысячи треугольников, чтобы отрисовать всю локацию целиком. Так поступили, например, разработчики Guns Of Boom. <br /></div></div> </div> </div> </div> <style> #rec160916117 .t-text{color:#ffffff;}</style> </div> <div id="rec160916277" class="r t-rec" style="background-color:#0d0d0d; " data-animationappear="off" data-record-type="347" data-bg-color="#0d0d0d"> <!-- T347 --> <div class="t347"> <div class="t-container"> <div class="t-col t-col_8 t-prefix_2"> <div class="t347__table"> <div class="t347__cell t-valign_top"> <div class="t347__bg t-bgimg"
bgimgfield="img" data-original="https://static.tildacdn.com/tild3638-6561-4763-b536-316439373535/hg.png"
style="background-image:url('https://thb.tildacdn.com/tild3638-6561-4763-b536-316439373535/-/resizeb/20x/hg.png');"
itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild3638-6561-4763-b536-316439373535/hg.png"> </div> <div class="t347__overlay" style="background-image: linear-gradient(to bottom, rgba(0,0,0,0.40), rgba(0,0,0,0));"></div> <div class="t347__play-link t347__play-icon_xl"> <button class="t347__play-icon"
type="button"
aria-label="Воспроизвести видео"> <svg role="presentation" width="50px" height="50px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"> <path fill="none" d="M49.5 25c0 13.5-10.9 24.5-24.5 24.5S.6 38.5.6 25 11.5.6 25 .6 49.5 11.5 49.5 25z"/> <path fill="#FFFFFF" d="M25 50c13.8 0 25-11.2 25-25S38.8 0 25 0 0 11.2 0 25s11.2 25 25 25zm-5-33.3l14.2 8.8L20 34.3V16.7z"/> </svg> </button> </div> <div class="t347__wrap-content"> <div class="t347__content t-align_left"> <div class="t347__title t-name t-name_xl" field="title">Дмитрий Гладилин - Проблемы и решения при создании графики для мобильного шутера Guns of Boom <br /></div> </div> </div> </div> <div class="t347__wrap-video"> <div class="t-video-lazyload t-video-no-lazyload" data-videolazy-load="false" data-blocklazy-id="160916277" data-videolazy-type="youtube" data-videolazy-id="kYhJ2bi4R-I" data-videolazy-play="true" data-videolazy-height="540px"> </div> <style>#rec160916277 .t-video-lazyload{height:540px;}</style> </div> </div> </div> </div> </div> <script type="text/javascript">t_onReady(function() {t_onFuncLoad('t347_init',function() {t347_init('160916277');});});</script> </div> <div id="rec160916458" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;color:#999999;" data-customstyle="yes"> Подобный подход практически полностью исключает использование Occlusion Culling. Эта техника позволяет не рисовать те объекты, которые не видны камере. То есть, когда ящик перекрыт другим более крупным ящиком — мы его не видим, а значит можем не рисовать. В случае со «склеенными» мешами такое разделение невозможно.<br /></div></div> </div> </div> </div> <style> #rec160916458 .t-text{color:#ffffff;}</style> </div> <div id="rec160916497" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;color:#999999;" data-customstyle="yes"><strong><span data-redactor-tag="span" style="font-size: 26px;">Уровни детализации <br /></span></strong><br /> <strong>Level of Detail</strong> (<strong>LOD, или уровень детализации</strong>) — простая техника, которая позволяет уместить огромное количество объектов в кадре, не отнимая время на обработку лишней геометрии. <br /><br /> LOD может разбить объекты на разные батчи: и в этом нет ничего страшного, ведь зачастую несколько сотен лишних DrawCall будет быстрее обсчитаны на лодированых мешах чем рисовать их оригиналы — но сбатченные. <br /></div></div> </div> </div> </div> <style> #rec160916497 .t-text{color:#ffffff;}</style> </div> <div id="rec160916530" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;color:#999999;" data-customstyle="yes"> Сейчас есть неплохие инструменты автоматической генерации LOD-мешей, и это облегчает работу. При нужной настройке можно выдать результат не сильно хуже ручной ретопологии. Но даже используя автоматику, не стоит делать тысячи разных уровней детализации: все уровни LOD тоже нужно хранить в памяти, а её не стоит забивать просто так. <br /><br /> Обычно используют четыре уровня детализации. LOD-0 — это оригинальная модель, а LOD-3 — дальняя. LOD4 может быть просто 2D спрайтом который всегда смотрит на игрока. <br /></div></div> </div> </div> </div> <style> #rec160916530 .t-text{color:#ffffff;}</style> </div> <div id="rec160916570" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;color:#999999;" data-customstyle="yes"> Кроме LOD-0 порой нужно делать отдельную модель для кат-сцен. В ней может быть куда больше полигонов, чем у LOD-0, потому что она появляется лишь в срежиссированных сценах, и, как правило, находится очень близко к камере — поэтому для неё лучше использовать крайне высокую детализацию. <br /><br /> Это касается даже мелких объектов: например, у обычной кружки в одной из стартовых сцен Dead Space 2 было достаточно полигонов, чтобы она не казалась «квадратной», в то время как в остальной игре в LOD-0 у аналогичных объектов не было такого сглаживания. <br /></div></div> </div> </div> </div> <style> #rec160916570 .t-text{color:#ffffff;}</style> </div> <div id="rec160909554" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild3665-6566-4764-b233-323431633731/YkYBDGu_0N8.jpg"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild3665-6566-4764-b233-323431633731/-/empty/YkYBDGu_0N8.jpg" data-original="https://static.tildacdn.com/tild3665-6566-4764-b233-323431633731/YkYBDGu_0N8.jpg"
imgfield="img" data-zoomable="yes" data-img-zoom-url="https://static.tildacdn.com/tild3665-6566-4764-b233-323431633731/YkYBDGu_0N8.jpg" alt=""> <div class="t-container_8"> <div class="t-col t-col_8 t107__title t-text" field="title" itemprop="name"><div style="color:#999999;" data-customstyle="yes"></div></div> </div> </div> </div> </div> <div id="rec160916633" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;color:#999999;" data-customstyle="yes"> LOD-ы позволяют не считать лишние сотни полигонов в вашей модели. В первую очередь важно понимать роль модели в сцене и прикидывать, насколько детально игрок сможет её разглядеть. <br /><br /> Если модель, например, можно разглядеть вблизи с максимальным приближением, то просто сделайте LOD-0 достаточно детализированным, — а в самой сцене основным рабочим уровнем будет LOD-1. <br /><br /> Подход, основанный на роли модели в кадре полностью защищает вас от критики сторонников «идеальной сетки», которые без понимания контекста — просто по скриншоту, — заявят, что вы сделали 10 лишних треугольников. <br /></div></div> </div> </div> </div> <style> #rec160916633 .t-text{color:#ffffff;}</style> </div> <div id="rec160916674" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:center;color:#999999;" data-customstyle="yes"> <em>Зачем тратить время и доказывать кому либо в комментариях на ArtStation, что у вас не завышенный полигонаж? Время — куда более важный показатель оптимизации. И ваше время — в том числе.</em><em></em><br /></div></div> </div> </div> </div> <style> #rec160916674 .t-text{color:#ffffff;}</style> </div> <div id="rec160916744" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"><strong><span data-redactor-tag="span" style="font-size: 26px;">Alpha overdraw <br /></span></strong><br /> <strong>Рендер-пайплайн</strong> должен адекватно рассортировать и нарисовать сцену — обработать шейдеры, геометрию, текстуры и пост-процессы. К тому же он должен учитывать, что объекты могут быть прозрачными. <br /><br /> Чем больше площадь прозрачности в кадре, и чем больше прозрачные объекты наслаиваются друг на друга — тем дольше рендер-пайплайн будет рисовать итоговый пиксель, ведь ему придётся каждый раз его перерисовывать. Это называется <strong>Alpha overdraw</strong>. <br /><br /> Чем меньше альфы, тем быстрее будут обсчитаны пиксели. По сути, шейдер и сам рендер — это процесс/программа, которая рисует конкретный цвет конкретного пикселя на экране. И в этом случае пара десятков лишних треугольников, наоборот, ускорит рендер. <br /></div></div> </div> </div> </div> <style> #rec160916744 .t-text{color:#ffffff;}</style> </div> <div id="rec160909555" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild3736-3863-4233-a338-633766616636/VAG1vrMvtko.jpg"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild3736-3863-4233-a338-633766616636/-/empty/VAG1vrMvtko.jpg" data-original="https://static.tildacdn.com/tild3736-3863-4233-a338-633766616636/VAG1vrMvtko.jpg"
imgfield="img" data-zoomable="yes" data-img-zoom-url="https://static.tildacdn.com/tild3736-3863-4233-a338-633766616636/VAG1vrMvtko.jpg" alt=""> <div class="t-container_8"> <div class="t-col t-col_8 t107__title t-text" field="title" itemprop="name"><div style="color:#999999;" data-customstyle="yes">Cлева — обычный «плейн» с текстурой ветки. Справа — он же, но силуэт ветки обрезан по контуру, чтобы срезать лишнюю прозрачную площадь.<div style="color:#999999;" data-customstyle="yes"></div></div></div> </div> </div> </div> </div> <div id="rec160917004" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"> Z-Fight — артефакт, который образуется, если поставить несколько полигонов в одной плоскости. Рендеру не хватает точности глубины, чтобы отсортировать отрисовку этих полигонов в правильном порядке. <br /><br /> Но кроме визуального артефакта, который заметит игрок, это повлияет и на время рендера — ведь пиксели в этом месте будут постоянно «спорить» друг с другом об очереди отрисовки. <br /></div></div> </div> </div> </div> <style> #rec160917004 .t-text{color:#ffffff;}</style> </div> <div id="rec160909558" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild3461-3834-4761-a662-323435373665/Z-An4k4As6U.jpg"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild3461-3834-4761-a662-323435373665/-/empty/Z-An4k4As6U.jpg" data-original="https://static.tildacdn.com/tild3461-3834-4761-a662-323435373665/Z-An4k4As6U.jpg"
imgfield="img" data-zoomable="yes" data-img-zoom-url="https://static.tildacdn.com/tild3461-3834-4761-a662-323435373665/Z-An4k4As6U.jpg" alt=""> <div class="t-container_8"> <div class="t-col t-col_8 t107__title t-text" field="title" itemprop="name"><div style="color:#999999;" data-customstyle="yes">Два плейна на одной оси. Смешение цветов по центру и есть Z-Fight.<div style="color:#999999;" data-customstyle="yes"></div></div></div> </div> </div> </div> </div> <div id="rec160909559" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"><span style="font-size: 26px;"><strong>Итог </strong><br /></span><br /> Итак, мы выяснили, что практически ничего «бесплатного» в случае с отрисовкой кадра не бывает: технологии, которые позволяют что-то оптимизировать, не работают по нажатию нужной галочки. Всегда нужно понимать, для чего мы используем тот или иной инструмент. <br /><br /> Нынешнее железо — даже мобильное, — может обрабатывать огромное количество треугольников. Объёмы памяти и скорость растут. Чипы на мобильных устройствах и их батареи, которые перегреваются при высоком FPS, тоже становятся всё совершеннее. <br /><br /> Взять и назвать точные диапазоны количества полигонов попросту невозможно — да и бессмысленно. Всё слишком сильно зависит от того для чего используется модель, и как ей видит игрок. <br /></div></div> </div> </div> </div> <style> #rec160909559 .t-text{color:#ffffff;}</style> </div> <div id="rec160909561" class="r t-rec t-rec_pt_30 t-rec_pb_0" style="padding-top:30px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild3336-3031-4763-b038-653430366535/muAeEGv9s7U.jpg"> <img class="t-img t-width t107__width t-width_8"
src="https://thb.tildacdn.com/tild3336-3031-4763-b038-653430366535/-/empty/muAeEGv9s7U.jpg" data-original="https://static.tildacdn.com/tild3336-3031-4763-b038-653430366535/muAeEGv9s7U.jpg"
imgfield="img" data-zoomable="yes" data-img-zoom-url="https://static.tildacdn.com/tild3336-3031-4763-b038-653430366535/muAeEGv9s7U.jpg" alt=""> <div class="t-container_8"> <div class="t-col t-col_8 t107__title t-text" field="title" itemprop="name"><div style="color:#999999;" data-customstyle="yes"></div></div> </div> </div> </div> </div> <div id="rec160909562" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"><strong></strong> Дальше уже можно углубляться в процесс оптимизации в движке и расчёт лимитов под среднестатистическое железо — но если не осознавать, каким образом игрок видит сцену в вашей игре, то все эти расчёты — лишь потеря времени. <br /></div></div> </div> </div> </div> <style> #rec160909562 .t-text{color:#ffffff;}</style> </div> <div id="rec160917280" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:center;color:#999999;" data-customstyle="yes"><strong></strong> <em>Время — крайне важный ресурс не только для рендера, но и для вас как для специалиста.</em><em></em><br /></div></div> </div> </div> </div> <style> #rec160917280 .t-text{color:#ffffff;}</style> </div> <div id="rec160909564" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"> Если вы пытаетесь сэкономить лишнюю тысячу полигонов, потратив на это несколько лишних часов, а на частоту кадров эта экономия никак не повлияет, то вы просто попусту потратили рабочие часы студии или своё личное время. Особенно обидно, если вы фрилансер, — ведь вместо двух моделей за пять часов вы сделали всего лишь одну. <br /><br /> Чтобы рассчитать число полигонов в первую очередь нужно осознать контекст, в котором используется модель, и лимиты по времени. <br /><br /> Ваша задача — сделать классную модель, классный арт, классную игру; а не заниматься «преждевременной оптимизацией». <br /><em></em></div></div> </div> </div> </div> <style> #rec160909564 .t-text{color:#ffffff;}</style> </div> <div id="rec160909565" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:center;color:#999999;" data-customstyle="yes"><b><strong>***</strong></b><em></em></div></div> </div> </div> </div> <style> #rec160909565 .t-text{color:#ffffff;}</style> </div> <div id="rec160909566" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="color: rgb(153, 153, 153); line-height: 32px; text-align: left;" data-customstyle="yes">Денис Куандыков — один из авторов курса по левел-дизайну <a href="https://www.school-xyz.com/outblock">OutBlock</a>. <br /><br />Среди других авторов — Михаил Кадиков (Crytek), Макс Пирс (CD Projekt Red), Елена Альт (Ice Pick Lougde) и мапмейкер сообщества CS:GO Сергей Морозов.<br /><br />Узнать дополнительную информацию и записаться на курс можно <a href="https://www.school-xyz.com/outblock">здесь</a>.</div></div> </div> </div> </div> <style> #rec160909566 .t-text{color:#ffffff;}</style> </div> <div id="rec160918570" class="r t-rec t-rec_pt_15 t-rec_pb_0" style="padding-top:15px;padding-bottom:0px;background-color:#0d0d0d; " data-record-type="106" data-bg-color="#0d0d0d"> <!-- T004 --> <div class="t004"> <div class="t-container "> <div class="t-col t-col_8 t-prefix_2"> <div field="text" class="t-text t-text_md "><div style="line-height:32px;text-align:left;color:#999999;" data-customstyle="yes"><em>Автор: <a href="https://vk.com/rdenver">Денис Куандыков</a></em><br /><em></em></div></div> </div> </div> </div> <style> #rec160918570 .t-text{color:#ffffff;}</style> </div> <div id="rec160909613" class="r t-rec t-rec_pt_15 t-rec_pb_30" style="padding-top:15px;padding-bottom:30px;background-color:#0d0d0d; " data-record-type="3" data-bg-color="#0d0d0d"> <!-- T107 --> <div class="t107"> <div class="t-align_center" itemscope itemtype="http://schema.org/ImageObject"> <meta itemprop="image" content="https://static.tildacdn.com/tild3561-3363-4630-b231-373461643131/1.png"> <img class="t-img t-width t107__widthauto"
src="https://thb.tildacdn.com/tild3561-3363-4630-b231-373461643131/-/empty/1.png" data-original="https://static.tildacdn.com/tild3561-3363-4630-b231-373461643131/1.png"
imgfield="img"
alt=""> </div> </div> </div> <div id="rec160909614" class="r t-rec t-rec_pt_15 t-rec_pb_90" style="padding-top:15px;padding-bottom:90px;background-color:#0d0d0d; " data-record-type="797" data-bg-color="#0d0d0d"> <!-- t797 --> <div class="t797"> <div class="t-container"> <div class="t-col t-col_6 t-prefix_3 t-align_center"> <div class="t797__wrapper t797__wrapper_padding" style="background-color:#efefef;"> <div class="t794__title t-descr t-descr_md t-animate" data-animate-style="fadein" data-animate-group="yes" data-animate-order="1" field="title">Понравилась статья?</div> <div class="t797__answers t-vote" style="margin-top:-20px" data-vote-type="single" data-vote-id="160909614" data-vote-visibility="onclick"> <button type="button" class="t-vote__btn-wrapper js-vote-item t-animate" style="margin:20px 10px 0px 10px;" data-answer-id="1512750238069" data-animate-style="zoomin" data-animate-chain="yes"> <div class="t-vote__btn-el js-vote-btn js-sendvote-btn"> <img
src="https://thb.tildacdn.com/tild3165-3530-4532-b731-646435653837/-/empty/Poop_Emoji_2.png" data-original="https://static.tildacdn.com/tild3165-3530-4532-b731-646435653837/Poop_Emoji_2.png"
class="t797__img t797__img_width t-img"
imgfield="li_img__1512750238069"
alt=""
/> </div> <div class="t-vote__btn-res t-descr t-descr_xxs t-align_center " style="display:none;"> <span class="t-vote__btn-res__num js-vote-count">0</span> </div> </button> <button type="button" class="t-vote__btn-wrapper js-vote-item t-animate" style="margin:20px 10px 0px 10px;" data-answer-id="1513680765900" data-animate-style="zoomin" data-animate-chain="yes"> <div class="t-vote__btn-el js-vote-btn js-sendvote-btn"> <img
src="https://thb.tildacdn.com/tild3564-3630-4239-a563-323339636564/-/empty/Slightly_Smiling_Emo.png" data-original="https://static.tildacdn.com/tild3564-3630-4239-a563-323339636564/Slightly_Smiling_Emo.png"
class="t797__img t797__img_width t-img"
imgfield="li_img__1513680765900"
alt=""
/> </div> <div class="t-vote__btn-res t-descr t-descr_xxs t-align_center " style="display:none;"> <span class="t-vote__btn-res__num js-vote-count">0</span> </div> </button> <button type="button" class="t-vote__btn-wrapper js-vote-item t-animate" style="margin:20px 10px 0px 10px;" data-answer-id="1513669611253" data-animate-style="zoomin" data-animate-chain="yes"> <div class="t-vote__btn-el js-vote-btn js-sendvote-btn"> <img
src="https://thb.tildacdn.com/tild6130-3965-4463-a332-343937336430/-/empty/Heart_Eyes_Emoji_2.png" data-original="https://static.tildacdn.com/tild6130-3965-4463-a332-343937336430/Heart_Eyes_Emoji_2.png"
class="t797__img t797__img_width t-img"
imgfield="li_img__1513669611253"
alt=""
/> </div> <div class="t-vote__btn-res t-descr t-descr_xxs t-align_center " style="display:none;"> <span class="t-vote__btn-res__num js-vote-count">0</span> </div> </button> </div> </div> </div> </div> </div> <script>t_onReady(function() {t_onFuncLoad('t797_init',function() {t797_init(160909614);});});</script> <style> #rec160909614 .t797__wrapper{border-radius:10px;}</style> </div> <div id="rec160909615" class="r t-rec" style=" " data-animationappear="off" data-record-type="396"> <!-- T396 --> <style>#rec160909615 .t396__artboard {height:460px;background-color:#0D0D0D;}#rec160909615 .t396__filter {height:460px;}#rec160909615 .t396__carrier{height:460px;background-position:center center;background-attachment:scroll;background-size:cover;background-repeat:no-repeat;}@media screen and (max-width:1199px) {#rec160909615 .t396__artboard,#rec160909615 .t396__filter,#rec160909615 .t396__carrier {}#rec160909615 .t396__filter {}#rec160909615 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:959px) {#rec160909615 .t396__artboard,#rec160909615 .t396__filter,#rec160909615 .t396__carrier {height:440px;}#rec160909615 .t396__filter {}#rec160909615 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:639px) {#rec160909615 .t396__artboard,#rec160909615 .t396__filter,#rec160909615 .t396__carrier {}#rec160909615 .t396__filter {}#rec160909615 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:479px) {#rec160909615 .t396__artboard,#rec160909615 .t396__filter,#rec160909615 .t396__carrier {height:480px;}#rec160909615 .t396__filter {}#rec160909615 .t396__carrier {background-attachment:scroll;}}#rec160909615 .tn-elem[data-elem-id="1564554044037"]{color:#ffffff;text-align:center;z-index:1;top:100px;;left:calc(50% - 600px + 320px);;width:560px;height:auto;}#rec160909615 .tn-elem[data-elem-id="1564554044037"] .tn-atom{color:#ffffff;font-size:32px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.2;font-weight:700;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec160909615 .tn-elem[data-elem-id="1564554044037"]{top:100px;;left:calc(50% - 480px + 200px);;height:auto;}}@media screen and (max-width:959px){#rec160909615 .tn-elem[data-elem-id="1564554044037"]{top:70px;;left:calc(50% - 320px + 40px);;height:auto;}}@media screen and (max-width:639px){#rec160909615 .tn-elem[data-elem-id="1564554044037"]{top:70px;;left:calc(50% - 240px + 40px);;width:400px;height:auto;}}@media screen and (max-width:479px){#rec160909615 .tn-elem[data-elem-id="1564554044037"]{top:70px;;left:calc(50% - 160px + 30px);;width:260px;height:auto;}}#rec160909615 .tn-elem[data-elem-id="1564554130456"]{color:#999;text-align:center;z-index:2;top:185px;;left:calc(50% - 600px + 415px);;width:370px;height:auto;}#rec160909615 .tn-elem[data-elem-id="1564554130456"] .tn-atom{color:#999;font-size:16px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.3;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec160909615 .tn-elem[data-elem-id="1564554130456"]{top:185px;;left:calc(50% - 480px + 295px);;height:auto;}}@media screen and (max-width:959px){#rec160909615 .tn-elem[data-elem-id="1564554130456"]{top:155px;;left:calc(50% - 320px + 135px);;height:auto;}}@media screen and (max-width:639px){#rec160909615 .tn-elem[data-elem-id="1564554130456"]{top:155px;;left:calc(50% - 240px + 55px);;height:auto;}}@media screen and (max-width:479px){#rec160909615 .tn-elem[data-elem-id="1564554130456"]{top:195px;;left:calc(50% - 160px + 30px);;width:260px;height:auto;color:#999999;}#rec160909615 .tn-elem[data-elem-id="1564554130456"] .tn-atom{color:#999999;background-size:cover;}}#rec160909615 .tn-elem[data-elem-id="1564554178466"]{z-index:3;top:258px;;left:calc(50% - 600px + 320px);;width:560px;height:auto;}#rec160909615 .tn-elem[data-elem-id="1564554178466"] .tn-atom{background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec160909615 .tn-elem[data-elem-id="1564554178466"]{top:248px;;left:calc(50% - 480px + 200px);;height:auto;}}@media screen and (max-width:959px){#rec160909615 .tn-elem[data-elem-id="1564554178466"]{top:228px;;left:calc(50% - 320px + 40px);;height:auto;}}@media screen and (max-width:639px){#rec160909615 .tn-elem[data-elem-id="1564554178466"]{top:228px;;left:calc(50% - 240px + 10px);;width:460px;height:auto;}}@media screen and (max-width:479px){#rec160909615 .tn-elem[data-elem-id="1564554178466"]{top:248px;;left:calc(50% - 160px + 30px);;width:200px;height:auto;}}#rec160909615 .tn-elem[data-elem-id="1564876573371"]{color:#666666;text-align:center;z-index:4;top:330px;;left:calc(50% - 600px + 445px);;width:310px;height:auto;}#rec160909615 .tn-elem[data-elem-id="1564876573371"] .tn-atom{color:#666666;font-size:16px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.3;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec160909615 .tn-elem[data-elem-id="1564876573371"]{top:335px;;left:calc(50% - 480px + 325px);;height:auto;}}@media screen and (max-width:959px){#rec160909615 .tn-elem[data-elem-id="1564876573371"]{top:315px;;left:calc(50% - 320px + 165px);;height:auto;}}@media screen and (max-width:639px){#rec160909615 .tn-elem[data-elem-id="1564876573371"]{top:310px;;left:calc(50% - 240px + 85px);;height:auto;}}@media screen and (max-width:479px){#rec160909615 .tn-elem[data-elem-id="1564876573371"]{top:375px;;left:calc(50% - 160px + 30px);;width:260px;height:auto;}#rec160909615 .tn-elem[data-elem-id="1564876573371"] .tn-atom{font-size:14px;background-size:cover;}}#rec160909615 .tn-elem[data-elem-id="1565701393805"]{color:#666666;text-align:center;z-index:5;top:375px;;left:calc(50% - 600px + 445px);;width:310px;height:auto;}#rec160909615 .tn-elem[data-elem-id="1565701393805"] .tn-atom{color:#666666;font-size:16px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.3;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec160909615 .tn-elem[data-elem-id="1565701393805"]{top:380px;;left:calc(50% - 480px + 325px);;height:auto;}}@media screen and (max-width:959px){#rec160909615 .tn-elem[data-elem-id="1565701393805"]{top:360px;;left:calc(50% - 320px + 165px);;height:auto;}}@media screen and (max-width:639px){#rec160909615 .tn-elem[data-elem-id="1565701393805"]{top:360px;;left:calc(50% - 240px + 85px);;height:auto;}}@media screen and (max-width:479px){#rec160909615 .tn-elem[data-elem-id="1565701393805"]{top:420px;;left:calc(50% - 160px + 30px);;width:260px;height:auto;}#rec160909615 .tn-elem[data-elem-id="1565701393805"] .tn-atom{font-size:14px;background-size:cover;}}</style> <div class='t396'> <div class="t396__artboard" data-artboard-recid="160909615" data-artboard-screens="320,480,640,960,1200" data-artboard-height="460" data-artboard-valign="center" data-artboard-height-res-320="480" data-artboard-height-res-640="440"> <div class="t396__carrier" data-artboard-recid="160909615"></div> <div class="t396__filter" data-artboard-recid="160909615"></div> <div class='t396__elem tn-elem tn-elem__1609096151564554044037' data-elem-id='1564554044037' data-elem-type='text' data-field-top-value="100" data-field-left-value="320" data-field-width-value="560" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="" data-field-leftunits-value="" data-field-heightunits-value="" data-field-widthunits-value="" data-field-fontsize-value="32" data-field-top-res-320-value="70" data-field-left-res-320-value="30" data-field-width-res-320-value="260" data-field-top-res-480-value="70" data-field-left-res-480-value="40" data-field-width-res-480-value="400" data-field-top-res-640-value="70" data-field-left-res-640-value="40" data-field-top-res-960-value="100" data-field-left-res-960-value="200"> <div class='tn-atom'field='tn_text_1564554044037'>Хочешь получать лучшие статьи<br>от XyZ раз в неделю?</div> </div> <div class='t396__elem tn-elem tn-elem__1609096151564554130456' data-elem-id='1564554130456' data-elem-type='text' data-field-top-value="185" data-field-left-value="415" data-field-width-value="370" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="" data-field-leftunits-value="" data-field-heightunits-value="" data-field-widthunits-value="" data-field-fontsize-value="16" data-field-top-res-320-value="195" data-field-left-res-320-value="30" data-field-width-res-320-value="260" data-field-top-res-480-value="155" data-field-left-res-480-value="55" data-field-top-res-640-value="155" data-field-left-res-640-value="135" data-field-top-res-960-value="185" data-field-left-res-960-value="295"> <div class='tn-atom'field='tn_text_1564554130456'>Подпишись на рассылку XyZ</div> </div> <div class='t396__elem tn-elem tn-elem__1609096151564554178466' data-elem-id='1564554178466' data-elem-type='form' data-field-top-value="258" data-field-left-value="320" data-field-width-value="560" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="" data-field-leftunits-value="" data-field-heightunits-value="" data-field-widthunits-value="" data-field-top-res-320-value="248" data-field-left-res-320-value="30" data-field-width-res-320-value="200" data-field-top-res-480-value="228" data-field-left-res-480-value="10" data-field-width-res-480-value="460" data-field-top-res-640-value="228" data-field-left-res-640-value="40" data-field-top-res-960-value="248" data-field-left-res-960-value="200" data-field-inputpos-value="h" data-field-inputfontfamily-value="Arial" data-field-inputfontsize-value="16" data-field-inputfontweight-value="400" data-field-inputcolor-value="#666" data-field-inputbordercolor-value="#666" data-field-inputbordersize-value="1" data-field-inputradius-value="7" data-field-inputheight-value="40" data-field-inputmargbottom-value="20" data-field-inputmargright-value="10" data-field-inputtitlefontsize-value="16" data-field-inputtitlefontweight-value="400" data-field-inputtitlecolor-value="#000" data-field-inputtitlemargbottom-value="5" data-field-inputelsfontweight-value="400" data-field-inputelsfontsize-value="14" data-field-buttontitle-value="Подписаться" data-field-buttoncolor-value="#fff" data-field-buttonbgcolor-value="#38b0cd" data-field-buttonbordercolor-value="#666" data-field-buttonradius-value="7" data-field-buttonwidth-value="200" data-field-buttonheight-value="40" data-field-buttonfontfamily-value="BebasRoboto" data-field-buttonfontsize-value="16" data-field-buttonfontweight-value="600" data-field-receivers-value="3a18b021f43e61a277b0babc9a16a84c,164a3b8e9611cc7ecc538151418a854a,d2ad269d53b8517d6f011d8452411a9b,24dadee303ff10af9effec771b8b4e6f,935c4708c0542e69b9c954810f75a47f,808290b07baffee2037d44c1adc9f960,7cb71ac814cf5f11b74e7aff35c39e83,9bd20a80f92aba4c9d1823f2d1339add,3106d7f849cc37cf58f92ca54a12b20d,473bfe0c466b0830324330245ec4f856,22b6124b7d1e8c12b1bfe44591394ad1,4e149223d2a1c89490c6886635e128b1,432ab6b299e9d3b4712f0d8b851a69ca,ede885f6bf92f8aa63caaa2019930c27,ddce5c970ee590f09521887d2c815328,e8e971129be626609ea9f5eacb531712,529d776f47525813dd4c7439d5e2957d,79efdc56002e2fb9160ff9fc91750f61,9349cade6ff136590942028e6ee8bdd0" data-field-inputpos-res-320-value="v" data-field-inputmargbottom-res-320-value="10" data-field-buttonwidth-res-320-value="260"> <div class='tn-atom tn-atom__form'></div> <!--googleoff: all--> <!--noindex--> <div data-nosnippet="true" class="tn-atom__inputs-wrapp" style="display:none;"> <textarea class="tn-atom__inputs-textarea">[{"lid":"1531306540094","ls":"10","loff":"","li_type":"em","li_ph":"Email","li_req":"y","li_nm":"Email"}]</textarea> </div> <!-- Form export deps: https://static.tildacdn.com/css/tilda-zero-form-errorbox.min.css https://static.tildacdn.com/css/tilda-zero-form-horizontal.min.css https://static.tildacdn.com/js/tilda-phone-mask-1.1.min.js https://static.tildacdn.com/css/tilda-date-picker-1.0.min.css https://static.tildacdn.com/js/tilda-date-picker-1.0.min.js https://static.tildacdn.com/js/tilda-calc-1.0.min.js https://static.tildacdn.com/js/tilda-upwidget-1.1.min.js https://static.tildacdn.com/js/uploadcare-3.x.full.min.js https://static.tildacdn.com/js/uploadcare-3.x.min.js https://static.tildacdn.com/js/tilda-range-1.0.min.js https://static.tildacdn.com/css/tilda-range-1.0.min.css https://static.tildacdn.com/js/tilda-img-select-1.0.min.js https://static.tildacdn.com/css/tilda-img-select-1.0.min.css --> <!--/noindex--> <!--googleon: all--> </div> <div class='t396__elem tn-elem tn-elem__1609096151564876573371' data-elem-id='1564876573371' data-elem-type='text' data-field-top-value="330" data-field-left-value="445" data-field-width-value="310" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="" data-field-leftunits-value="" data-field-heightunits-value="" data-field-widthunits-value="" data-field-fontsize-value="16" data-field-top-res-320-value="375" data-field-left-res-320-value="30" data-field-width-res-320-value="260" data-field-fontsize-res-320-value="14" data-field-top-res-480-value="310" data-field-left-res-480-value="85" data-field-top-res-640-value="315" data-field-left-res-640-value="165" data-field-top-res-960-value="335" data-field-left-res-960-value="325"> <div class='tn-atom'field='tn_text_1564876573371'>Нажимая на кнопку, вы соглашаетесь с условиями обработки данных<br></div> </div> <div class='t396__elem tn-elem tn-elem__1609096151565701393805' data-elem-id='1565701393805' data-elem-type='text' data-field-top-value="375" data-field-left-value="445" data-field-width-value="310" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="" data-field-leftunits-value="" data-field-heightunits-value="" data-field-widthunits-value="" data-field-fontsize-value="16" data-field-top-res-320-value="420" data-field-left-res-320-value="30" data-field-width-res-320-value="260" data-field-fontsize-res-320-value="14" data-field-top-res-480-value="360" data-field-left-res-480-value="85" data-field-top-res-640-value="360" data-field-left-res-640-value="165" data-field-top-res-960-value="380" data-field-left-res-960-value="325"> <div class='tn-atom'field='tn_text_1565701393805'><u><a href="https://school-xyz.com/privacy" style="color: rgb(102, 102, 102);" data-redactor-tag="a">Политика конфеденциальности</a></u><br></div> </div> </div> </div> <script>t_onReady(function() {t_onFuncLoad('t396_init',function() {t396_init('160909615');});});</script> <!-- /T396 --> </div> <div id="rec160909616" class="r t-rec" style=" " data-animationappear="off" data-record-type="142"> <!-- T132 --> <div class="t132"> <div class="t-container_100"> <div class="t132__box t-bgimg" data-original="https://static.tildacdn.com/tild3132-6131-4063-b236-376637316638/siteback.png" data-lazy-rule="comm:resize,round:100"
style="background-image: url('https://thb.tildacdn.com/tild3132-6131-4063-b236-376637316638/-/resizeb/20x/siteback.png');"> <div class="t132__wrappper" style="background-image: linear-gradient(to bottom, rgba(0,0,0,0.60), rgba(0,0,0,0.60));"> <a href="/blog/raznyj-level-dizajn-dlya-raznyh-zhanrov"> <div class="t132__textwrapper "> <span> <div class="t132__title t-title t-title_xxs">Разный левел-дизайн для разных жанров. Хоррор, стелс-экшен, онлайн-шутер.</div> <div class="t132__descr t-descr t-descr_xs">Как создать атмосферу хоррора, заставить игрока почувствовать себя героем или создать соревновательную среду, где все равны. Рассказываем о левел-дизайне игр разных...</div> </span> </div> <img class="t132__wire " src="data:image/gif;base64,R0lGODlh6ANYAvcAAP///wAAAAICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdHR0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpaWltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1tbW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOTk5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zMzM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///yH5BAEAAAAALAAAAADoA1gCAAj/AAEIHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fwIMLH068uPHjyJMrX868ufPn0KNLn069uvXr2LNr3869u/fv4MOL/x9Pvrz58+jTq1/Pvr379/Djy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVmjhhRhmqOGGHHbo4YcghijiiCSWaOKJKKao4oostujiizDGKOOMNNZo44045qjjjjz26OOPQAYp5JBEFmnkkUgmqeSSTDbp5JNQRinllFRWaeWVWGap5ZZcdunll2CGKeaYZJZp5plopqnmmmy26eabcMYp55x01mnnnXjmqeeefPbp55+ABirooIQWauihiCaq6KKMNuroo5BGKumklFZq6aWYZqrpppx26umnoIYq6qiklmrqqaimquqqrLbq6quwxv8q66y01mrrrbjmquuuvPbq66/ABivssMQWa+yxyCar7LLMNuvss9BGK+201FZr7bXYZqvtttx26+234IYr7rjklmvuueimq+667Lbr7rvwxivvvPTWa++9+Oar77789uvvvwAHLPDABBds8MEIJ6zwwgw37PDDEEcs8cQUV2zxxRhnrPHGHHfs8ccghyzyyCSXbPLJKKes8sost+zyyzDHLPPMNNds880456zzzjz37PPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRXbfXVWGet9dZcd+3112CHLfbYZJdt9tlop6322my37fbbcMct99x012333XjnrffefPf/7fffgAcu+OCEF2744YgnrvjijDfu+OOQRy755JRXbvnlmGeu+eacd+7556CHLvropJdu+umop6766qy37vrrsMcu++y012777bjnrvvuvPfu++/ABy/88MQXb/zxyCev/PLMN+/889BHL/301Fdv/fXYZ6/99tx37/334Icv/vjkl2/++einr/767Lfv/vvwxy///PTXb//9+Oev//789+///wAMoAAHSMACGvCACEygAhfIwAY68IEQjKAEJ0jBClrwghjMoAY3yMEOevCDIAyhCEdIwhKa8IQoTKEKV8jCFrrwhTCMoQxnSMMa2vCGOMyhDnfIwx768IdADKIQ/4dIxCIa8YhITKISl8jEJjrxiVCMohSnSMUqWvGKWMyiFrfIxS568YtgDKMYx0jGMprxjGhMoxrXyMY2uvGNcIyjHOdIxzra8Y54zKMe98jHPvrxj4AMpCAHSchCGvKQiEykIhfJyEY68pGQjKQkJ0nJSlrykpjMpCY3yclOevKToAylKEdJylKa8pSoTKUqV8nKVrrylbCMpSxnScta2vKWuMylLnfJy1768pfADKYwh0nMYhrzmMhMpjKXycxmOvOZ0IymNKdJzWpa85rYzKY2t8nNbnrzm+AMpzjHSc5ymvOc6EynOtfJzna6853wjKc850nPetrznvjMpz73yWrPfvrznwANqEAHStCCGvSgCE2oQhfK0IY69KEQjahEJ0rRilr0ohjNqEY3ytGOevSjIA2pSEdK0pKa9KQoTalKV8rSlrr0pTCNqUxnStOa2vSmOM2pTnfK05769KdADapQh0rUohp1oQEBADs="> </a> </div> </div> <div class="t132__box t-bgimg" data-original="https://static.tildacdn.com/tild6263-3439-4736-b731-343163633237/sitepreview.png" data-lazy-rule="comm:resize,round:100"
style="background-image: url('https://thb.tildacdn.com/tild6263-3439-4736-b731-343163633237/-/resizeb/20x/sitepreview.png');"> <div class="t132__wrappper" style="background-image: linear-gradient(to bottom, rgba(0,0,0,0.60), rgba(0,0,0,0.60));"> <a href="/blog/rol-level-dizajnera"> <div class="t132__textwrapper "> <span> <div class="t132__title t-title t-title_xxs">Роль левел-дизайнера</div> <div class="t132__descr t-descr t-descr_xs">Почти в любой игре есть пространство, по которому перемещается игрок — и кто-то должен его проектировать. Тем не менее, не все представляют себе, чем конкретно...</div> </span> </div> <img class="t132__wire " src="data:image/gif;base64,R0lGODlh6ANYAvcAAP///wAAAAICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdHR0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpaWltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1tbW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOTk5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zMzM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f3+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy8vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///yH5BAEAAAAALAAAAADoA1gCAAj/AAEIHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9evYMOKHUu2rNmzaNOqXcu2rdu3cOPKnUu3rt27ePPq3cu3r9+/gAMLHky4sOHDiBMrXsy4sePHkCNLnky5suXLmDNr3sy5s+fPoEOLHk26tOnTqFOrXs26tevXsGPLnk27tu3buHPr3s27t+/fwIMLH068uPHjyJMrX868ufPn0KNLn069uvXr2LNr3869u/fv4MOL/x9Pvrz58+jTq1/Pvr379/Djy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVmjhhRhmqOGGHHbo4YcghijiiCSWaOKJKKao4oostujiizDGKOOMNNZo44045qjjjjz26OOPQAYp5JBEFmnkkUgmqeSSTDbp5JNQRinllFRWaeWVWGap5ZZcdunll2CGKeaYZJZp5plopqnmmmy26eabcMYp55x01mnnnXjmqeeefPbp55+ABirooIQWauihiCaq6KKMNuroo5BGKumklFZq6aWYZqrpppx26umnoIYq6qiklmrqqaimquqqrLbq6quwxv8q66y01mrrrbjmquuuvPbq66/ABivssMQWa+yxyCar7LLMNuvss9BGK+201FZr7bXYZqvtttx26+234IYr7rjklmvuueimq+667Lbr7rvwxivvvPTWa++9+Oar77789uvvvwAHLPDABBds8MEIJ6zwwgw37PDDEEcs8cQUV2zxxRhnrPHGHHfs8ccghyzyyCSXbPLJKKes8sost+zyyzDHLPPMNNds880456zzzjz37PPPQAct9NBEF2300UgnrfTSTDft9NNQRy311FRXbfXVWGet9dZcd+3112CHLfbYZJdt9tlop6322my37fbbcMct99x012333XjnrffefPf/7fffgAcu+OCEF2744YgnrvjijDfu+OOQRy755JRXbvnlmGeu+eacd+7556CHLvropJdu+umop6766qy37vrrsMcu++y012777bjnrvvuvPfu++/ABy/88MQXb/zxyCev/PLMN+/889BHL/301Fdv/fXYZ6/99tx37/334Icv/vjkl2/++einr/767Lfv/vvwxy///PTXb//9+Oev//789+///wAMoAAHSMACGvCACEygAhfIwAY68IEQjKAEJ0jBClrwghjMoAY3yMEOevCDIAyhCEdIwhKa8IQoTKEKV8jCFrrwhTCMoQxnSMMa2vCGOMyhDnfIwx768IdADKIQ/4dIxCIa8YhITKISl8jEJjrxiVCMohSnSMUqWvGKWMyiFrfIxS568YtgDKMYx0jGMprxjGhMoxrXyMY2uvGNcIyjHOdIxzra8Y54zKMe98jHPvrxj4AMpCAHSchCGvKQiEykIhfJyEY68pGQjKQkJ0nJSlrykpjMpCY3yclOevKToAylKEdJylKa8pSoTKUqV8nKVrrylbCMpSxnScta2vKWuMylLnfJy1768pfADKYwh0nMYhrzmMhMpjKXycxmOvOZ0IymNKdJzWpa85rYzKY2t8nNbnrzm+AMpzjHSc5ymvOc6EynOtfJzna6853wjKc850nPetrznvjMpz73yWrPfvrznwANqEAHStCCGvSgCE2oQhfK0IY69KEQjahEJ0rRilr0ohjNqEY3ytGOevSjIA2pSEdK0pKa9KQoTalKV8rSlrr0pTCNqUxnStOa2vSmOM2pTnfK05769KdADapQh0rUohp1oQEBADs="> </a> </div> </div> </div> </div> <script>var images=document.querySelectorAll('.t132 img.wire');Array.prototype.forEach.call(images,function(image) {image.addEventListener('load',function() {t132_unifyHeights();});});window.addEventListener('resize',function() {t_onFuncLoad('t132_unifyHeights',function() {t132_unifyHeights();});});t_onReady(function() {t_onFuncLoad('t132_unifyHeights',function() {t132_unifyHeights();});if(typeof jQuery!=='undefined') {$('.t132').bind('displayChanged',function() {t132_unifyHeights();});} else {var rec=document.getElementById('rec160909616');if(!rec) return;var wrapperBlock=rec.querySelector('.t132');if(wrapperBlock) {t_onFuncLoad('t132_unifyHeights',function() {t132_unifyHeights();});wrapperBlock.addEventListener("displayChanged",function() {t132_unifyHeights();});}}});</script> </div> <div id="rec783129287" class="r t-rec" style=" " data-animationappear="off" data-record-type="396"> <!-- T396 --> <style>#rec783129287 .t396__artboard {height:660px;background-color:#0d0d0d;}#rec783129287 .t396__filter {height:660px;}#rec783129287 .t396__carrier{height:660px;background-position:center center;background-attachment:scroll;background-size:cover;background-repeat:no-repeat;}@media screen and (max-width:1199px) {#rec783129287 .t396__artboard,#rec783129287 .t396__filter,#rec783129287 .t396__carrier {height:620px;}#rec783129287 .t396__filter {}#rec783129287 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:959px) {#rec783129287 .t396__artboard,#rec783129287 .t396__filter,#rec783129287 .t396__carrier {height:508px;}#rec783129287 .t396__filter {}#rec783129287 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:639px) {#rec783129287 .t396__artboard,#rec783129287 .t396__filter,#rec783129287 .t396__carrier {height:701px;}#rec783129287 .t396__filter {}#rec783129287 .t396__carrier {background-attachment:scroll;}}#rec783129287 .tn-elem[data-elem-id="1722957462807"]{z-index:2;top:132px;;left:calc(50% - 600px + 220px);;width:760px;height:396px;}#rec783129287 .tn-elem[data-elem-id="1722957462807"] .tn-atom{border-radius:24px;background-color:#31313a;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec783129287 .tn-elem[data-elem-id="1722957462807"]{top:108px;;left:calc(50% - 480px + 114px);;width:732px;height:404px;}}@media screen and (max-width:959px){#rec783129287 .tn-elem[data-elem-id="1722957462807"]{top:100px;;left:calc(50% - 320px + 10px);;width:620px;height:308px;}}@media screen and (max-width:639px){#rec783129287 .tn-elem[data-elem-id="1722957462807"]{top:64px;;width:300px;height:573px;border-radius:16px;}#rec783129287 .tn-elem[data-elem-id="1722957462807"] .tn-atom{background-size:cover;border-radius:16px;}}#rec783129287 .tn-elem[data-elem-id="1722958532176"]{z-index:3;top:140px;;left:calc(50% - 600px + 228px);;width:444px;height:380px;}#rec783129287 .tn-elem[data-elem-id="1722958532176"] .tn-atom{border-radius:16px;background-color:#23232a;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec783129287 .tn-elem[data-elem-id="1722958532176"]{top:116px;;left:calc(50% - 480px + 122px);;width:416px;height:388px;}}@media screen and (max-width:959px){#rec783129287 .tn-elem[data-elem-id="1722958532176"]{top:108px;;left:calc(50% - 320px + 18px);;width:604px;height:292px;}}@media screen and (max-width:639px){#rec783129287 .tn-elem[data-elem-id="1722958532176"]{top:364px;;width:284px;height:265px;}}#rec783129287 .tn-elem[data-elem-id="1722957592507"]{color:#ffffff;z-index:4;top:218px;;left:calc(50% - 600px + 252px);;width:382px;height:auto;}#rec783129287 .tn-elem[data-elem-id="1722957592507"] .tn-atom{color:#ffffff;font-size:24px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1;font-weight:600;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec783129287 .tn-elem[data-elem-id="1722957592507"]{top:194px;;left:calc(50% - 480px + 146px);;width:324px;height:auto;}#rec783129287 .tn-elem[data-elem-id="1722957592507"] .tn-atom{font-size:20px;background-size:cover;}}@media screen and (max-width:959px){#rec783129287 .tn-elem[data-elem-id="1722957592507"]{top:178px;;left:calc(50% - 320px + 34px);;width:252px;height:auto;}}@media screen and (max-width:639px){#rec783129287 .tn-elem[data-elem-id="1722957592507"]{top:434px;;left:calc(50% - 160px + 34px);;width:252px;height:auto;}#rec783129287 .tn-elem[data-elem-id="1722957592507"] .tn-atom{font-size:16px;background-size:cover;}}#rec783129287 .tn-elem[data-elem-id="1722957649470"]{color:#ffffff;z-index:5;top:258px;;left:calc(50% - 600px + 252px);;width:396px;height:auto;}#rec783129287 .tn-elem[data-elem-id="1722957649470"] .tn-atom{color:#ffffff;font-size:16px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.6;font-weight:400;opacity:0.6;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec783129287 .tn-elem[data-elem-id="1722957649470"]{top:230px;;left:calc(50% - 480px + 146px);;width:368px;height:auto;}}@media screen and (max-width:959px){#rec783129287 .tn-elem[data-elem-id="1722957649470"]{top:214px;;left:calc(50% - 320px + 34px);;width:418px;height:auto;}}@media screen and (max-width:639px){#rec783129287 .tn-elem[data-elem-id="1722957649470"]{top:458px;;left:calc(50% - 160px + 34px);;width:252px;height:auto;}#rec783129287 .tn-elem[data-elem-id="1722957649470"] .tn-atom{font-size:12px;background-size:cover;}}#rec783129287 .tn-elem[data-elem-id="1722957742812"]{color:#ffffff;text-align:center;z-index:6;top:454px;;left:calc(50% - 600px + 252px);;width:172px;height:42px;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom{color:#ffffff;font-size:14px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.6;font-weight:400;border-radius:30px;background-position:center center;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;--t396-bgcolor-color:#8080ff;--t396-bgcolor-image:none;--t396-bgcolor-hover-color:#6060ff;--t396-bgcolor-hover-image:none;background-color:var(--t396-bgcolor-color,transparent);-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom::after{display:none;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#ffffff;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-border::before{display:none;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom:hover::after{opacity:0;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom:hover{animation-name:none;background-color:var(--t396-bgcolor-hover-color,var(--t396-bgcolor-color,transparent));}}@media screen and (max-width:1199px){#rec783129287 .tn-elem[data-elem-id="1722957742812"]{top:438px;;left:calc(50% - 480px + 146px);;width:px;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom{white-space:normal;background-size:cover;background-color:var(--t396-bgcolor-color,transparent);}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom::after{display:none;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-border::before{display:none;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom:hover::after{opacity:0;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom:hover{animation-name:none;background-color:var(--t396-bgcolor-hover-color,var(--t396-bgcolor-color,transparent));}}}@media screen and (max-width:959px){#rec783129287 .tn-elem[data-elem-id="1722957742812"]{top:342px;;left:calc(50% - 320px + 34px);;width:px;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom{white-space:normal;background-size:cover;background-color:var(--t396-bgcolor-color,transparent);}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom::after{display:none;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-border::before{display:none;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom:hover::after{opacity:0;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom:hover{animation-name:none;background-color:var(--t396-bgcolor-hover-color,var(--t396-bgcolor-color,transparent));}}}@media screen and (max-width:639px){#rec783129287 .tn-elem[data-elem-id="1722957742812"]{top:577px;;left:calc(50% - 160px + 34px);;width:142px;height:36px;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom{white-space:normal;font-size:12px;background-size:cover;background-color:var(--t396-bgcolor-color,transparent);}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom::after{display:none;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-border::before{display:none;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom:hover::after{opacity:0;}#rec783129287 .tn-elem[data-elem-id="1722957742812"] .tn-atom:hover{animation-name:none;background-color:var(--t396-bgcolor-hover-color,var(--t396-bgcolor-color,transparent));}}}#rec783129287 .tn-elem[data-elem-id="1722958769545"]{z-index:7;top:140px;;left:calc(50% - 600px + 680px);;width:292px;height:380px;}#rec783129287 .tn-elem[data-elem-id="1722958769545"] .tn-atom{border-radius:16px;background-position:center center;background-size:cover;background-repeat:no-repeat;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec783129287 .tn-elem[data-elem-id="1722958769545"]{top:116px;;left:calc(50% - 480px + 546px);;height:388px;}}@media screen and (max-width:959px){#rec783129287 .tn-elem[data-elem-id="1722958769545"]{top:116px;;left:calc(50% - 320px + 474px);;width:140px;height:178px;}#rec783129287 .tn-elem[data-elem-id="1722958769545"] .tn-atom{background-position:center center;background-size:cover;}}@media screen and (max-width:639px){#rec783129287 .tn-elem[data-elem-id="1722958769545"]{top:72px;;left:calc(50% - 160px + 18px);;width:284px;height:284px;border-radius:8px;}#rec783129287 .tn-elem[data-elem-id="1722958769545"] .tn-atom{background-position:0.000% 17.334%;background-size:100.000%;border-radius:8px;}}#rec783129287 .tn-elem[data-elem-id="1722958865476"]{color:#ffffff;z-index:8;top:468px;;left:calc(50% - 600px + 696px);;width:120px;height:auto;}#rec783129287 .tn-elem[data-elem-id="1722958865476"] .tn-atom{color:#ffffff;font-size:12px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.5;font-weight:400;opacity:0.5;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec783129287 .tn-elem[data-elem-id="1722958865476"]{top:452px;;left:calc(50% - 480px + 562px);;height:auto;}}@media screen and (max-width:959px){#rec783129287 .tn-elem[data-elem-id="1722958865476"]{top:302px;;left:calc(50% - 320px + 474px);;height:auto;}}@media screen and (max-width:639px){#rec783129287 .tn-elem[data-elem-id="1722958865476"]{top:322px;;left:calc(50% - 160px + 34px);;width:220px;height:auto;}}#rec783129287 .tn-elem[data-elem-id="1722958910512"]{color:#ffffff;text-align:center;z-index:9;top:164px;;left:calc(50% - 600px + 252px);;width:64px;height:38px;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom{color:#ffffff;font-size:14px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.6;font-weight:400;border-radius:30px;background-position:center center;--t396-borderwidth:1px;--t396-bordercolor:#39393f;--t396-speedhover:0.2s;transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom::after{display:none;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom .tn-atom__button-text{transition:color var(--t396-speedhover,0s) ease-in-out;color:#ffffff;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom .tn-atom__button-border::before{display:none;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom:hover::after{opacity:0;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom:hover{border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor-hover,var(--t396-bordercolor,transparent));}}@media screen and (max-width:1199px){#rec783129287 .tn-elem[data-elem-id="1722958910512"]{top:140px;;left:calc(50% - 480px + 146px);;width:px;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom{white-space:normal;background-size:cover;padding:0;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom::after{display:none;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom .tn-atom__button-border::before{display:none;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom:hover::after{opacity:0;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom:hover{border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor-hover,var(--t396-bordercolor,transparent));}}}@media screen and (max-width:959px){#rec783129287 .tn-elem[data-elem-id="1722958910512"]{top:124px;;left:calc(50% - 320px + 34px);;width:px;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom{white-space:normal;background-size:cover;padding:0;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom::after{display:none;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom .tn-atom__button-border::before{display:none;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom:hover::after{opacity:0;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom:hover{border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor-hover,var(--t396-bordercolor,transparent));}}}@media screen and (max-width:639px){#rec783129287 .tn-elem[data-elem-id="1722958910512"]{top:380px;;width:px;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom{white-space:normal;background-size:cover;padding:0;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom::after{display:none;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom .tn-atom__button-text{overflow:visible;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom .tn-atom__button-border::before{display:none;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom .tn-atom__button-border::after{display:none;}@media (hover),(min-width:0\0){#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom:hover::after{opacity:0;}#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom:hover{animation-name:none;}}@media (hover),(min-width:0\0){#rec783129287 .tn-elem[data-elem-id="1722958910512"] .tn-atom:hover{border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor-hover,var(--t396-bordercolor,transparent));}}}</style> <div class='t396'> <div class="t396__artboard" data-artboard-recid="783129287" data-artboard-screens="320,640,960,1200" data-artboard-height="660" data-artboard-valign="center" data-artboard-upscale="grid" data-artboard-height-res-320="701" data-artboard-height-res-640="508" data-artboard-height-res-960="620"> <div class="t396__carrier" data-artboard-recid="783129287"></div> <div class="t396__filter" data-artboard-recid="783129287"></div> <div class='t396__elem tn-elem tn-elem__7831292871722957462807' data-elem-id='1722957462807' data-elem-type='shape' data-field-top-value="132" data-field-left-value="220" data-field-height-value="396" data-field-width-value="760" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-top-res-320-value="64" data-field-height-res-320-value="573" data-field-width-res-320-value="300" data-field-top-res-640-value="100" data-field-left-res-640-value="10" data-field-height-res-640-value="308" data-field-width-res-640-value="620" data-field-top-res-960-value="108" data-field-left-res-960-value="114" data-field-height-res-960-value="404" data-field-width-res-960-value="732"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__7831292871722958532176' data-elem-id='1722958532176' data-elem-type='shape' data-field-top-value="140" data-field-left-value="228" data-field-height-value="380" data-field-width-value="444" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-top-res-320-value="364" data-field-height-res-320-value="265" data-field-width-res-320-value="284" data-field-top-res-640-value="108" data-field-left-res-640-value="18" data-field-height-res-640-value="292" data-field-width-res-640-value="604" data-field-top-res-960-value="116" data-field-left-res-960-value="122" data-field-height-res-960-value="388" data-field-width-res-960-value="416"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__7831292871722957592507' data-elem-id='1722957592507' data-elem-type='text' data-field-top-value="218" data-field-left-value="252" data-field-width-value="382" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="" data-field-widthunits-value="px" data-field-fontsize-value="24" data-field-top-res-320-value="434" data-field-left-res-320-value="34" data-field-width-res-320-value="252" data-field-fontsize-res-320-value="16" data-field-top-res-640-value="178" data-field-left-res-640-value="34" data-field-width-res-640-value="252" data-field-top-res-960-value="194" data-field-left-res-960-value="146" data-field-width-res-960-value="324" data-field-fontsize-res-960-value="20"> <div class='tn-atom'field='tn_text_1722957592507'>Outblock. Левел дизайн</div> </div> <div class='t396__elem tn-elem tn-elem__7831292871722957649470' data-elem-id='1722957649470' data-elem-type='text' data-field-top-value="258" data-field-left-value="252" data-field-width-value="396" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="" data-field-widthunits-value="px" data-field-fontsize-value="16" data-field-top-res-320-value="458" data-field-left-res-320-value="34" data-field-width-res-320-value="252" data-field-fontsize-res-320-value="12" data-field-top-res-640-value="214" data-field-left-res-640-value="34" data-field-width-res-640-value="418" data-field-top-res-960-value="230" data-field-left-res-960-value="146" data-field-width-res-960-value="368"> <div class='tn-atom'field='tn_text_1722957649470'>Курс для тех, кто хочет прокачаться в прототипировании и создании игровых уровней. Уроки помогут разобраться в теме с нуля и начать путь к карьере специалиста по дизайну уровней.</div> </div> <div class='t396__elem tn-elem tn-elem__7831292871722957742812' data-elem-id='1722957742812' data-elem-type='button' data-field-top-value="454" data-field-left-value="252" data-field-height-value="42" data-field-width-value="172" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-fontsize-value="14" data-field-top-res-320-value="577" data-field-left-res-320-value="34" data-field-height-res-320-value="36" data-field-width-res-320-value="142" data-field-fontsize-res-320-value="12" data-field-top-res-640-value="342" data-field-left-res-640-value="34" data-field-top-res-960-value="438" data-field-left-res-960-value="146"> <a class='tn-atom js-click-zero-stat' href="https://www.school-xyz.com/outblock?utm_source=blog&utm_medium=banner&utm_campaign=outblock" data-tilda-event-name="/tilda/click/rec783129287/button1722957742812"> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">Узнать больше</span> </div> <span class="tn-atom__button-border"></span> </a> </div> <div class='t396__elem tn-elem tn-elem__7831292871722958769545' data-elem-id='1722958769545' data-elem-type='shape' data-field-top-value="140" data-field-left-value="680" data-field-height-value="380" data-field-width-value="292" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-top-res-320-value="72" data-field-left-res-320-value="18" data-field-height-res-320-value="284" data-field-width-res-320-value="284" data-field-top-res-640-value="116" data-field-left-res-640-value="474" data-field-height-res-640-value="178" data-field-width-res-640-value="140" data-field-top-res-960-value="116" data-field-left-res-960-value="546" data-field-height-res-960-value="388"> <div class='tn-atom t-bgimg' style="background-image:url('https://static.tildacdn.com/tild6662-3939-4432-a462-373764363136/26_1.jpg');"
aria-label='' role="img"> </div> </div> <div class='t396__elem tn-elem tn-elem__7831292871722958865476' data-elem-id='1722958865476' data-elem-type='text' data-field-top-value="468" data-field-left-value="696" data-field-width-value="120" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="" data-field-widthunits-value="px" data-field-fontsize-value="12" data-field-top-res-320-value="322" data-field-left-res-320-value="34" data-field-width-res-320-value="220" data-field-top-res-640-value="302" data-field-left-res-640-value="474" data-field-top-res-960-value="452" data-field-left-res-960-value="562"> <div class='tn-atom'field='tn_text_1722958865476'>Работа студента Дениса Савенкова</div> </div> <div class='t396__elem tn-elem tn-elem__7831292871722958910512' data-elem-id='1722958910512' data-elem-type='button' data-field-top-value="164" data-field-left-value="252" data-field-height-value="38" data-field-width-value="64" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="grid" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-fontsize-value="14" data-field-top-res-320-value="380" data-field-top-res-640-value="124" data-field-left-res-640-value="34" data-field-top-res-960-value="140" data-field-left-res-960-value="146"> <div class='tn-atom'> <div class='tn-atom__button-content'> <span class="tn-atom__button-text">Курс</span> </div> <span class="tn-atom__button-border"></span> </div> </div> </div> </div> <script>t_onReady(function() {t_onFuncLoad('t396_init',function() {t396_init('783129287');});});</script> <!-- /T396 --> </div> <!--footer--> <footer id="t-footer" class="t-records" data-hook="blocks-collection-content-node" data-tilda-project-id="1006203" data-tilda-page-id="4312269" data-tilda-page-alias="footer" data-tilda-formskey="89ebde3c6fe46b219c249763fe551eda" data-tilda-stat-scroll="yes" data-tilda-lazy="yes" data-tilda-root-zone="com" data-tilda-project-headcode="yes" data-tilda-ts="y" data-tilda-project-country="RU"> <div id="rec517261770" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- автоматизация промобара для курсов и профессий --> <script>
$(function() {
// текст для промобара
$('.heading-1 .tn-atom').html('Учись играючи и со скидкой до 55%'); // заголовок
$('.descr-1 .tn-atom').html('При покупке этого курса ты получишь в подарок любую игру до 2000 ₽ в Steam'); // описание
// описание для сайта Pro
$('.descr-pro .tn-atom').html('Дарим игры: любую до 2000 ₽ в Steam — при покупке курса, Resident Evil Requiem — при покупке профессии');
let currentDate = new Date();
function daysInMonth (month, year) {
return new Date(year, month + 1, 0).getDate();
}
let daysInMonthQuantity = daysInMonth(currentDate.getMonth(), currentDate.getYear());
let numOfMonth = currentDate.getDate();
let numOfMonthFormatted;
let currentMonth = currentDate.getMonth() + 1;
let currentMonthFormatted = currentMonth >= 10 ? currentMonth : '0' + currentMonth;
function setDateEnd(additionalDays) {
if (numOfMonth + additionalDays > daysInMonthQuantity) {
numOfMonthFormatted = '0' + (numOfMonth + additionalDays - daysInMonthQuantity);
currentMonthFormatted = currentMonth + 1 >= 10 ? currentMonth + 1 : '0' + (currentMonth + 1);
} else {
numOfMonthFormatted = numOfMonth + additionalDays >= 10 ? numOfMonth + additionalDays : '0' + (numOfMonth + additionalDays);
}
}
/* указываем дату окончания акции в промобаре */
if (currentDate.getDay() == 1) { // если сегодня понедельник
setDateEnd(3);
} else if (currentDate.getDay() == 2) { // если сегодня вторник
setDateEnd(2);
} else if (currentDate.getDay() == 3) { // если сегодня среда
setDateEnd(1);
} else if (currentDate.getDay() == 4) { // если сегодня четверг
setDateEnd(0);
} else if (currentDate.getDay() == 5) { // если сегодня пятница
setDateEnd(2);
} else if (currentDate.getDay() == 6) { // если сегодня суббота
setDateEnd(1);
} else if (currentDate.getDay() == 0) { // если сегодня воскресенье
setDateEnd(0);
}
if (document.querySelector('.promobar__date-end .tn-atom')) {
document.querySelector('.promobar__date-end .tn-atom').textContent = `до ${numOfMonthFormatted}.${currentMonthFormatted}`;
// document.querySelector('.promobar__date-end .tn-atom').textContent = `до 25.02`;
}
/* end указываем дату окончания акции в промобаре на продуктовых страницах */
});
</script> <style>
.descr-1 .tn-atom {
text-wrap-style: balance;
}
</style> <!-- nominify end --> </div> </div> </div> </div> <div id="rec521328895" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- скрыть/показать блок с акцией на курсах и профессиях --> <style>
/* блок с акцией */
#rec1123441821 {
/*display: none;*/
}
</style> <!-- nominify end --> </div> </div> </div> </div> <div id="rec703641300" class="r t-rec uc-popup-grant" style=" " data-animationappear="off" data-record-type="702"> <!-- T702 --> <div class="t702"> <div
class="t-popup" data-tooltip-hook="#popup:get-consult" data-track-popup='/tilda/popup/rec703641300/opened' role="dialog"
aria-modal="true"
tabindex="-1"
aria-label="Запишись на демо-урок" style="background-color: rgba(0,0,0,0.80);"> <div class="t-popup__close t-popup__block-close"> <button
type="button"
class="t-popup__close-wrapper t-popup__block-close-button"
aria-label="Закрыть диалоговое окно"> <svg role="presentation" class="t-popup__close-icon" width="23px" height="23px" viewBox="0 0 23 23" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="#ffffff" fill-rule="evenodd"> <rect transform="translate(11.313708, 11.313708) rotate(-45.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> <rect transform="translate(11.313708, 11.313708) rotate(-315.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> </g> </svg> </button> </div> <style>@media screen and (max-width:560px){#rec703641300 .t-popup__close-icon g{fill:#ffffff !important;}}</style> <style> #rec703641300 .t-popup__container{border-radius:24px;overflow:hidden;}@media (max-width:480px){#rec703641300 .t-popup__container{border-radius:16px;overflow:hidden;}}</style> <div class="t-popup__container t-width t-width_6"
style="background-color:#23232a;" data-popup-type="702"> <img class="t702__img t-img"
src="https://thb.tildacdn.com/tild3831-3666-4563-b734-333035633330/-/empty/_1.jpg" data-original="https://static.tildacdn.com/tild3831-3666-4563-b734-333035633330/_1.jpg"
imgfield="img"
alt=""> <div class="t702__wrapper"> <div class="t702__text-wrapper t-align_left"> <div class="t702__title t-title t-title_xxs" id="popuptitle_703641300">Запишись на демо-урок</div> <div class="t702__descr t-descr t-descr_xs">Зачем записываться?<br /><ul><li data-list="bullet">Познакомим тебя с платформой и процессом обучения.</li><li data-list="bullet">Подарим 1 из 9 курсов на выбор.</li><li data-list="bullet">Получишь доступ к пробной части курса и полную программу.</li></ul></div> </div> <form
id="form703641300" name='form703641300' role="form" action='' method='POST' data-formactiontype="2" data-inputbox=".t-input-group" class="t-form js-form-proccess t-form_inputs-total_5 " data-success-callback="t702_onSuccess"> <input type="hidden" name="formservices[]" value="d19077112a38917a19ec3d0d3a0d2542" class="js-formaction-services"> <input type="hidden" name="formservices[]" value="79efdc56002e2fb9160ff9fc91750f61" class="js-formaction-services"> <input type="hidden" name="formservices[]" value="9349cade6ff136590942028e6ee8bdd0" class="js-formaction-services"> <input type="hidden" name="tildaspec-formname" tabindex="-1" value="Заявка на бесплатный демо-урок"> <!-- @classes t-title t-text t-btn --> <div class="js-successbox t-form__successbox t-text t-text_md"
aria-live="polite"
style="display:none;"></div> <div
class="t-form__inputsbox
t-form__inputsbox_vertical-form t-form__inputsbox_inrow "> <div
class="t-input-group t-input-group_nm " data-input-lid="3316997753180" data-field-type="nm" data-field-name="name"> <div class="t-input-block " style="border-radius:16px;"> <input
type="text"
autocomplete="name"
name="name"
id="input_3316997753180"
class="t-input js-tilda-rule"
value=""
placeholder="Как тебя зовут?" data-tilda-req="1" aria-required="true" data-tilda-rule="name"
aria-describedby="error_3316997753180"
style="color:#ffffff;border:1px solid #373742;border-radius:16px;"> </div> <div class="t-input-error" aria-live="polite" id="error_3316997753180"></div> </div> <div
class="t-input-group t-input-group_em " data-input-lid="1016997753181" data-field-type="em" data-field-name="email"> <div class="t-input-block " style="border-radius:16px;"> <input
type="email"
autocomplete="email"
name="email"
id="input_1016997753181"
class="t-input js-tilda-rule"
value=""
placeholder="Твоя почта" data-tilda-req="1" aria-required="true" data-tilda-rule="email"
aria-describedby="error_1016997753181"
style="color:#ffffff;border:1px solid #373742;border-radius:16px;"> </div> <div class="t-input-error" aria-live="polite" id="error_1016997753181"></div> </div> <div
class="t-input-group t-input-group_ph " data-input-lid="1016997753182" data-field-async="true" data-field-type="ph" data-field-name="phone"> <div class="t-input-block " style="border-radius:16px;"> <input
type="tel"
autocomplete="tel"
name="phone"
id="input_1016997753182" data-phonemask-init="no" data-phonemask-id="703641300" data-phonemask-lid="1016997753182" data-phonemask-maskcountry="RU" class="t-input js-phonemask-input js-tilda-rule"
value=""
placeholder="+7(000)000-0000" data-tilda-req="1" aria-required="true" aria-describedby="error_1016997753182"
style="color:#ffffff;border:1px solid #373742;border-radius:16px;"> <script type="text/javascript">t_onReady(function() {t_onFuncLoad('t_loadJsFile',function() {t_loadJsFile('https://static.tildacdn.com/js/tilda-phone-mask-1.1.min.js',function() {t_onFuncLoad('t_form_phonemask_load',function() {var phoneMasks=document.querySelectorAll('#rec703641300 [data-phonemask-lid="1016997753182"]');t_form_phonemask_load(phoneMasks);});})})});</script> </div> <div class="t-input-error" aria-live="polite" id="error_1016997753182"></div> </div> <input type="hidden" name="519683" tabindex="-1" value="true"> <input type="hidden" name="519697" tabindex="-1" value="Консультация"> <div
class="t-input-group t-input-group_cb " data-input-lid="1016997753185" data-field-type="cb" data-field-name="privacy" data-default-value=y
> <div class="t-input-block " style="border-radius:16px;"> <label
class="t-checkbox__control t-checkbox__control_flex t-text t-text_xs"
style="color:#ffffff"> <input
type="checkbox"
name="privacy"
value="yes"
class="t-checkbox js-tilda-rule"
checked
> <div
class="t-checkbox__indicator"
style="border-color:#ffffff"></div> <span><div style="font-size: 14px;" data-customstyle="yes">Я согласен с <a href="https://school-xyz.com/privacy-policy" target="_blank" rel="noreferrer noopener" style="color: rgb(255, 255, 255); border-bottom: 1px solid rgb(255, 255, 255); box-shadow: none; text-decoration: none; font-weight: 400;">Политикой обработки персональных данных, Согласием Пользователя сайта на обработку персональных данных</a> и <a href="https://school-xyz.com/agreement" target="_blank" rel="noreferrer noopener" style="color: rgb(255, 255, 255); border-bottom: 1px solid rgb(255, 255, 255); box-shadow: none; text-decoration: none; font-weight: 400;">договором публичной оферты</a></div></span></label> <style>#rec703641300 .t-checkbox__indicator:after{border-color:#ffffff;}</style> </div> <div class="t-input-error" aria-live="polite" id="error_1016997753185"></div> </div> <div
class="t-input-group t-input-group_cb " data-input-lid="1016997753186" data-field-type="cb" data-field-name="check" data-default-value=y
> <div class="t-input-block " style="border-radius:16px;"> <label
class="t-checkbox__control t-checkbox__control_flex t-text t-text_xs"
style="color:#ffffff"> <input
type="checkbox"
name="check"
value="yes"
class="t-checkbox js-tilda-rule"
checked
> <div
class="t-checkbox__indicator"
style="border-color:#ffffff"></div> <span><div style="font-size: 14px;" data-customstyle="yes">Я согласен получать рекламную рассылку и ознакомился с <a href="https://school-xyz.com/privacy-policy" target="_blank" rel="noreferrer noopener" style="color: rgb(255, 255, 255); border-bottom: 1px solid rgb(255, 255, 255); box-shadow: none; text-decoration: none; font-weight: 400;">Согласием на получение рекламной рассылки</a></div></span></label> <style>#rec703641300 .t-checkbox__indicator:after{border-color:#ffffff;}</style> </div> <div class="t-input-error" aria-live="polite" id="error_1016997753186"></div> </div> <input type="hidden" name="526133" tabindex="-1" value="Заявка на бесплатный демо-урок"> <div class="t-form__errorbox-middle"> <!--noindex--> <div
class="js-errorbox-all t-form__errorbox-wrapper"
style="display:none;" data-nosnippet
tabindex="-1"
aria-label="Ошибки при заполнении формы"> <ul
role="list"
class="t-form__errorbox-text t-text t-text_md"> <li class="t-form__errorbox-item js-rule-error js-rule-error-all"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-req"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-email"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-name"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-phone"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-minlength"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-string"></li> </ul> </div> <!--/noindex--> </div> <div class="t-form__submit"> <button
class="t-submit t-btnflex t-btnflex_type_submit t-btnflex_md"
type="submit"><span class="t-btnflex__text">Отправить</span> <style>#rec703641300 .t-btnflex.t-btnflex_type_submit {color:#ffffff;background-color:#6060ff;--border-width:0px;border-style:none !important;border-radius:50px;box-shadow:none !important;font-family:BebasRoboto;font-weight:400;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}@media (hover:hover) {#rec703641300 .t-btnflex.t-btnflex_type_submit:not(.t-animate_no-hover):hover {color:#17171b !important;background-color:#ffffff !important;}#rec703641300 .t-btnflex.t-btnflex_type_submit:not(.t-animate_no-hover):focus-visible {color:#17171b !important;background-color:#ffffff !important;}}</style></button> </div> </div> <div class="t-form__errorbox-bottom"> <!--noindex--> <div
class="js-errorbox-all t-form__errorbox-wrapper"
style="display:none;" data-nosnippet
tabindex="-1"
aria-label="Ошибки при заполнении формы"> <ul
role="list"
class="t-form__errorbox-text t-text t-text_md"> <li class="t-form__errorbox-item js-rule-error js-rule-error-all"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-req"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-email"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-name"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-phone"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-minlength"></li> <li class="t-form__errorbox-item js-rule-error js-rule-error-string"></li> </ul> </div> <!--/noindex--> </div> </form> <style>#rec703641300 input::-webkit-input-placeholder {color:#ffffff;opacity:0.5;}#rec703641300 input::-moz-placeholder{color:#ffffff;opacity:0.5;}#rec703641300 input:-moz-placeholder {color:#ffffff;opacity:0.5;}#rec703641300 input:-ms-input-placeholder{color:#ffffff;opacity:0.5;}#rec703641300 textarea::-webkit-input-placeholder {color:#ffffff;opacity:0.5;}#rec703641300 textarea::-moz-placeholder{color:#ffffff;opacity:0.5;}#rec703641300 textarea:-moz-placeholder {color:#ffffff;opacity:0.5;}#rec703641300 textarea:-ms-input-placeholder{color:#ffffff;opacity:0.5;}</style> </div> </div> </div> </div> <script>t_onReady(function() {t_onFuncLoad('t702_initPopup',function() {t702_initPopup('703641300');});});</script> <style> #rec703641300 .t702__title{color:#ffffff;font-family:'BebasRoboto';font-weight:500;text-transform:uppercase;}@media screen and (min-width:900px){#rec703641300 .t702__title{font-size:40px;line-height:1;}}@media screen and (min-width:480px) and (max-width:900px){#rec703641300 .t702__title{font-size:32px;}}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec703641300 .t702__title{font-size:32px;line-height:1;}}#rec703641300 .t702__descr{font-size:16px;line-height:1.6;color:#ffffff;font-weight:400;}@media screen and (max-width:480px),(orientation:landscape) and (max-height:480px){#rec703641300 .t702__descr{font-size:14px;line-height:1.6;}}</style> </div> <div id="rec684407761" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- стили для #popup:get-consult --> <style>
.uc-popup-grant .t-popup__close {
top: 20px;
right: 20px !important;
width: 40px;
height: 40px;
/*background: rgb(255 255 255 / 20%);*/
background: #23232a;
border-radius: 50px;
}
.uc-popup-grant .t-popup__block-close-button {
width: 16px;
padding: 12px;
}
.uc-popup-grant .t-popup__close-icon {
width: 16px;
height: 16px;
}
.uc-popup-grant .t702 .t-popup__container {
padding: 8px;
box-sizing: border-box;
}
.uc-popup-grant .t702 .t702__img {
border-radius: 16px;
}
.uc-popup-grant .t702 .t702__wrapper {
padding: 24px;
}
/* градиент для заголовка */
.uc-popup-grant .t702__title {
/*background: linear-gradient(#FFEBA9, #D9B339 100%);*/
/*-webkit-background-clip: text;*/
/*-webkit-text-fill-color: transparent;*/
display: inline-block;
}
.uc-popup-grant .t-descr {
display: inline-block;
}
.uc-popup-grant .t-form__inputsbox {
display: flex;
flex-direction: column;
}
.uc-popup-grant .t702 .t-input-group {
margin-bottom: 8px;
}
.uc-popup-grant .t702 .t-input {
border-color: rgb(255 255 255 / 10%) !important;
}
/* стилизация чекбоксов в зеро формах */
.uc-popup-grant .t-checkbox__control {
display: flex;
column-gap: 8px;
}
.uc-popup-grant .t-checkbox__indicator {
width: 24px;
height: 24px;
margin-right: 0;
border: 2px solid rgb(255 255 255 / 50%) !important;
border-radius: 4px;
}
.uc-popup-grant .t702 .t-checkbox__control .t-checkbox:checked ~ .t-checkbox__indicator {
border-color: rgb(255 255 255 / 50%) !important;
background: transparent;
}
.uc-popup-grant .t-checkbox__indicator:after {
width: 5px;
height: 11px;
left: 7px;
top: 1px;
border-width: 0 2px 2px 0;
border-color: rgb(255 255 255 / 50%) !important;
}
/* конец стилизация чекбоксов в зеро формах */
.uc-popup-grant .t-input-group_cb {
order: 5;
}
.uc-popup-grant .t-input-group_cb div[data-customstyle='yes'] {
color: rgb(255 255 255 / 50%) !important;
font-size: 12px !important;
line-height: 1.2;
}
.uc-popup-grant .t-input-group_cb div[data-customstyle='yes'] :is(span, a) {
color: rgb(255 255 255 / 50%) !important;
border-color: rgb(255 255 255 / 50%) !important;
}
.uc-popup-grant .t702 .t-form__submit {
margin-top: 8px;
margin-bottom: 16px;
}
.uc-popup-grant .t702 .t702__form-bottom-text {
margin-top: 24px;
}
/* стилизация кнопки Телеграм */
.uc-popup-grant .t702__form-bottom-text a {
display: flex;
justify-content: center;
align-items: center;
column-gap: 8px;
height: 54px;
background: #fff;
border-radius: 50px;
color: #17171b !important;
transition: .2s ease;
}
.uc-popup-grant .t702__form-bottom-text a:hover {
background: #f5f5f5;
}
.uc-popup-grant .t702__form-bottom-text a:before {
content: '';
width: 1.5em;
aspect-ratio: 1;
background: url(https://static.tildacdn.com/tild3738-3936-4437-b162-383836343233/Artboard.svg);
background-size: contain;
background-repeat: no-repeat;
}
/* end стилизация кнопки Телеграм */
@media (max-width: 639px) {
.uc-popup-grant .t-popup {
padding: 0 10px;
}
.uc-popup-grant .t-popup[style="display: block;"] {
display: flex !important;
flex-wrap: wrap;
align-items: center;
}
.uc-popup-grant .t-popup .t-popup__container {
flex-wrap: wrap;
min-height: fit-content;
/*padding: 0;*/
margin: 24px 0;
overflow: hidden;
}
.uc-popup-grant .t702 .t702__img {
border-radius: 10px;
}
.uc-popup-grant .t-popup .t-popup__container .t702__wrapper {
background: inherit;
-webkit-transform: none;
-o-transform: none;
transform: none;
padding: 24px 8px 8px;
}
.uc-popup-grant .t-popup__close {
/*top: 16px;*/
/*right: 16px !important;*/
left: auto;
padding: 0;
align-items: center;
justify-content: center;
zoom: 0.7;
}
.uc-popup-grant .t-popup__block-close-button {
margin-right: 0;
}
.uc-popup-grant .t702 .t-input-group {
margin-bottom: 8px;
}
.uc-popup-grant .t702 .t-input {
border-radius: 8px !important;
-moz-border-radius: 8px !important;
-webkit-border-radius: 8px !important;
}
.uc-popup-grant .t-input-group_cb div[data-customstyle='yes'] {
font-size: 12px !important;
}
}
</style> <script>
// переносим крестик внутрь попапа
document.addEventListener('DOMContentLoaded', function() {
$('.uc-popup-grant .t-popup').each(function() {
$(this).find('.t-popup__container').prepend($(this).find('.t-popup__close'));
});
});
</script> <!-- nominify end --> </div> </div> </div> </div> <!-- <strong>▼ Форма для новой версии футера ▼</strong> --> <div id="rec1221022041" class="r t-rec t-rec_pt_0" style="padding-top:0px; " data-animationappear="off" data-record-type="121" data-alias-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- новая версия футера от 12.08.25 --> <footer> <div class="footer__wrap"> <div class="footer__navigation"> <div class="footer__chapter-links"> <div class="footer__chapter-links-heading">О школе</div> <nav class="footer__chapter-links-wrap"> <ul class="footer__chapter-links-list"> <li class="footer__list-link"><a href="https://www.school-xyz.com/license">Лицензия</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/feedback">Отзывы студентов</a></li> <!--<li class="footer__list-link"><a href="https://school-xyz.com/raboty-studentov">Работы студентов</a></li>--> <!--<li class="footer__list-link"><a href="https://school-xyz.com/rassrochka">Рассрочка</a></li>--> <li class="footer__list-link"><a href="#popup:rec">Реквизиты</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/certificate">Подарочный сертификат</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/adminform">Оставить отзыв руководству</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/info-about-it-activities">Об IT деятельности</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/lms">Об обучающей платформе</a></li> <!--<li class="footer__list-link"><a href="https://school-xyz.com/career-xyz">Вакансии</a></li>--> <li class="footer__list-link"><a href="https://career-center.ultimate-education.ru" target="_blank">Карьерный центр</a></li> </ul> </nav> </div> <div class="footer__chapter-links"> <div class="footer__chapter-links-heading">Направления</div> <nav class="footer__chapter-links-wrap"> <ul class="footer__chapter-links-list"> <li class="footer__list-link"><a href="https://school-xyz.com/3d-modelirovanie">3D-моделирование</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/geymdizayn">Геймдизайн</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/2d-illyustraciya">2D-иллюстрация</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/programmirovanie">Программирование</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/menedzhement">Менеджмент</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/video-i-speceffekty">Видео и спецэффекты</a></li> <!--<li class="footer__list-link"><a href="https://www.school-xyz.com/courses/3ds-max">3ds Max: курсы и профессии</a></li>--> <li class="footer__list-link"><a href="https://school-xyz.com/courses">Все курсы</a></li> </ul> </nav> </div> <div class="footer__chapter-links-wrapper"> <div class="footer__chapter-links"> <div class="footer__chapter-links-heading">Сотрудничество</div> <nav class="footer__chapter-links-wrap"> <ul class="footer__chapter-links-list"> <!--<li class="footer__list-link"><a href="https://school-xyz.com/b2b">Корпоративное обучение</a></li>--> <li class="footer__list-link"><a href="https://school-xyz.com/we-are-looking-for-new-teachers">Вакансии для экспертов</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/partners">Партнёрская программа</a></li> </ul> </nav> </div> <div class="footer__chapter-links"> <div class="footer__chapter-links-heading">Проекты</div> <nav class="footer__chapter-links-wrap"> <ul class="footer__chapter-links-list"> <li class="footer__list-link"><a href="https://media-xyz.com/">XYZ Media</a></li> <li class="footer__list-link"><a href="https://school-xyz.com/mentorstvo-s-gamedev-magistrami">Менторство в геймдеве</a></li> <li class="footer__list-link"><a href="https://thecreativity.ru/plus">Креативити</a></li> </ul> </nav> </div> </div> <div class="footer__contacts-container"> <div class="footer__contacts-wrap"> <a href="tel:+74996474926" class="">+7 (499) 647-49-26</a> <a href="tel:+74993030408" class="">+7 (499) 303-04-08</a> <a href="mailto:hello@school-xyz.com" class="footer__contacts-email">hello@school-xyz.com</a> </div> <div class="footer__social-links"> <a href="https://artstation.com/xyzschool" class="footer__social-icon"> <img src="https://static.tildacdn.com/tild6138-6134-4835-a431-326434353061/artstation.svg" class="artstation" alt="Иконка Artstation"> </a> <a href="https://vk.com/xyz_gamedev" class="footer__social-icon"> <img src="https://static.tildacdn.com/tild3933-6261-4533-b566-626135393434/vk.svg" class="vk" alt="Иконка VK"> </a> <a href="https://youtube.com/channel/UCtJsE0SDhyS4ib2evb5k3gg/videos" class="footer__social-icon"> <img src="https://static.tildacdn.com/tild6539-3932-4764-b961-663633393636/youtube.svg" class="youtube" alt="Иконка Youtube"> </a> <a href="https://t.me/xyz_cg" class="footer__social-icon"> <img src="https://static.tildacdn.com/tild3461-3738-4566-b931-323833326538/telegram.svg" class="telegram" alt="Иконка Telegram"> </a> </div> </div> </div> <div class="footer__other-info"> <div class="footer__other-info-left-side"> <p>©2026, XYZ</p> <div class="footer__awards"> <img src="" class="footer__runet-icon" alt="Иконка Рунет"> <a href="https://vk.com/wall-124560669_50286">Премия Рунета 2020, Игровая индустрия</a> </div> <div class="footer__awards"> <img src="" class="footer__skolkovo-icon" alt="Иконка Сколково"> <a href="https://navigator.sk.ru/?q=N4IgZiBcoC4IYHMDOB9GBPADgUyiA9gE4gC%2BANCEngLQC22tARtoSkgJYB2AxrhZlACMJIA">Участник Сколково</a> </div> </div> <div class="footer__legal-info"> <a href="https://www.school-xyz.com/sitemap">Карта сайта</a> <a href="https://school-xyz.com/info-about-educational-organization">Сведения об образовательной организации</a> <a href="https://school-xyz.com/privacy-policy">Обработка персональных данных</a> <a href="https://school-xyz.com/agreement">Оферта</a> <a href="#popup:sout">СОУТ</a> </div> </div> </div> </footer> <style>
:root {
font-family: 'BebasRoboto';
--color-bg: #17171b;
--color-text: #fff;
--color-text-opacity: rgba(255, 255, 255, 0.5);
--color-accent: #6060ff;
--color-border: #373742;
--color-bg-contacts: #2B2A37;
--color-bg-input: #212127;
--color-social-icon: var(--color-accent);
--color-bg-social-icon: #2B2B34;
--url-runet-icon: url(https://static.tildacdn.com/tild6136-3933-4465-b933-613637353637/runet-icon-dark.svg);
--url-skolkovo-icon: url(https://static.tildacdn.com/tild3235-3332-4635-a537-396662353164/skolkovo-icon-dark.svg);
--url-arrow-down: url(https://static.tildacdn.com/tild6663-3965-4735-b337-393062313665/arrow-down-dark.svg);
}
:root .light-theme {
--color-bg: #fff;
--color-text: #17171b;
--color-text-opacity: rgba(23, 23, 27, 0.4);
--color-border: #EDEDED;
--color-bg-contacts: #f5f5f5;
--color-bg-input: #fff;
--color-bg-social-icon: #fff;
--url-runet-icon: url(https://static.tildacdn.com/tild6133-3337-4530-b063-336537643538/runet-icon-light_1.svg);
--url-skolkovo-icon: url(https://static.tildacdn.com/tild3737-3331-4464-a437-613336636531/skolkovo-icon-light.svg);
--url-arrow-down: url(https://static.tildacdn.com/tild3737-3062-4562-b662-623536383335/arrow-down-light.svg);
}
.t123 footer {
position: relative;
background: var(--color-bg);
width: 100%;
will-change: transform;
-webkit-transform: translateZ(0);
padding-top: 112px;
}
.footer__wrap {
display: flex;
max-width: 1160px;
margin: 0 auto;
box-sizing: border-box;
flex-wrap: wrap;
column-gap: 16px;
}
.footer__navigation {
display: flex;
flex-wrap: wrap;
width: 100%;
column-gap: 16px;
padding-bottom: 64px;
margin-bottom: 40px;
border-bottom: 1px solid var(--color-border);
}
.footer__chapter-links-wrapper {
display: flex;
flex-direction: column;
row-gap: 32px;
}
.footer__chapter-links {
width: 278px;
flex-shrink: 0;
}
.footer__chapter-links:last-child {
flex-shrink: 1;
}
#allrecords .footer__chapter-links-list {
display: flex;
flex-direction: column;
row-gap: 8px;
list-style-type: none;
padding-top: 16px;
padding-left: 0;
margin-bottom: 0;
}
.footer__chapter-links-heading {
font-weight: 600;
font-size: 24px;
line-height: 130%;
color: var(--color-text);
}
.footer__list-link {
font-weight: 400;
font-size: 14px;
line-height: 160%;
}
#allrecords .footer__list-link a {
text-decoration: none;
transition: .2s ease;
color: var(--color-text);
}
#allrecords .footer__list-link a:hover {
color: var(--color-accent);
}
.footer__contacts-container {
display: flex;
align-items: flex-start;
flex-direction: column;
row-gap: 24px;
width: 278px;
box-sizing: border-box;
}
.footer__contacts-wrap {
display: flex;
flex-direction: column;
row-gap: 4px;
}
#allrecords .footer__contacts-wrap a {
font-weight: 600;
font-size: 24px;
line-height: 130%;
color: var(--color-text);
text-decoration: none;
transition: .2s ease;
}
#allrecords .footer__contacts-wrap a:hover {
color: var(--color-accent);
}
#allrecords a.footer__contacts-email {
font-weight: 400;
font-size: 18px;
line-height: 160%;
color: var(--color-accent);
transition: .2s ease;
}
#allrecords a.footer__contacts-email:hover {
color: var(--color-text);
}
.footer__social-links {
display: flex;
column-gap: 8px;
}
.footer__social-links a {
display: flex;
justify-content: center;
align-items: center;
border-radius: 50%;
overflow: hidden;
transition: .2s ease;
}
.footer__social-icon:hover {
transform: translateY(-4px);
}
.footer__other-info {
display: flex;
justify-content: space-between;
column-gap: 24px;
padding-bottom: 40px;
width: 100%;
}
.footer__other-info-left-side {
display: flex;
align-items: center;
column-gap: 32px;
}
.footer__other-info p {
font-size: 12px;
line-height: 18px;
color: var(--color-text-opacity);
}
.footer__awards {
display: flex;
align-items: center;
column-gap: 10px;
max-width: 160px;
}
#allrecords .footer__awards a {
font-size: 12px;
line-height: 18px;
color: var(--color-text-opacity);
text-decoration: none;
}
.footer__runet-icon {
content: var(--url-runet-icon);
font-size: 10px;
}
.footer__skolkovo-icon {
content: var(--url-skolkovo-icon);
font-size: 10px;
}
.footer__skolkovo-icon + a {
width: min-content;
}
.footer__legal-info {
display: flex;
align-items: center;
column-gap: 16px;
}
#allrecords .footer__legal-info a {
font-size: 12px;
line-height: 18px;
color: var(--color-text-opacity);
text-decoration: none;
transition: .2s ease;
}
#allrecords .footer__legal-info a:hover {
color: var(--color-text);
}
@media screen and (max-width: 1199px) {
.t123 footer {
padding-top: 96px;
}
.footer__wrap {
max-width: 940px;
}
.footer__contacts-container {
width: fit-content;
}
.footer__navigation {
row-gap: 32px;
padding-bottom: 40px;
}
.footer__chapter-links-wrapper {
flex-direction: row;
column-gap: 16px;
order: 4;
}
.footer__chapter-links {
width: 304px;
}
.footer__other-info {
flex-direction: column;
row-gap: 16px;
}
.footer__other-info-left-side {
column-gap: 24px;
}
.footer__legal-info {
column-gap: 16px;
}
}
@media screen and (max-width: 959px) {
.t123 footer {
padding-top: 88px;
}
.footer__wrap {
max-width: 620px;
padding-top: 16px;
border-top: 1px solid var(--color-border);
}
.footer__navigation {
flex-direction: column;
row-gap: 16px;
width: 100%;
}
.footer__chapter-links {
width: 100%;
padding-bottom: 16px;
border-bottom: 1px solid var(--color-border);
}
.footer__chapter-links-wrapper {
order: 3;
flex-direction: column;
row-gap: 16px;
}
.footer__chapter-links-heading {
position: relative;
display: flex;
align-items: center;
will-change: transform;
}
.footer__chapter-links-heading::after {
content: ' ';
background-image: var(--url-arrow-down);
width: 24px;
height: 24px;
position: absolute;
right: 0;
transition: .4s ease;
}
.footer__chapter-links-heading.open::after {
transform: rotateX(180deg);
}
.footer__chapter-links-wrap {
display: none;
}
.footer__contacts-container {
width: 620px;
flex-direction: row;
justify-content: space-between;
align-items: flex-start;
flex-wrap: wrap;
height: fit-content;
row-gap: 32px;
padding-top: 24px;
order: 4;
}
.footer__other-info {
flex-wrap: wrap;
justify-content: flex-start;
}
.footer__other-info p {
order: 2;
}
.footer__awards {
order: 3;
}
.footer__legal-info {
flex-wrap: wrap;
order: 1;
max-width: 100%;
width: 100%;
column-gap: 24px;
row-gap: 8px;
}
}
@media screen and (max-width: 639px) {
.t123 footer {
padding-top: 72px;
}
.footer__wrap {
max-width: calc(100% - 24px);
}
.footer__chapter-links-heading {
font-size: 16px;
}
.footer__list-link {
font-size: 12px;
}
.footer__contacts-container {
width: 100%;
row-gap: 16px;
padding-top: 16px;
}
#allrecords .footer__contacts-wrap a {
font-size: 16px;
}
#allrecords a.footer__contacts-email {
font-size: 12px;
}
.footer__social-links {
width: fit-content;
}
.footer__navigation {
padding-bottom: 32px;
margin-bottom: 32px;
}
.footer__other-info {
row-gap: 24px;
justify-content: flex-start;
padding-bottom: 32px;
}
.footer__other-info p {
order: 3;
text-align: center;
font-size: 10px;
width: 100%;
}
.footer__other-info-left-side {
order: 2;
flex-wrap: wrap;
justify-content: flex-start;
row-gap: 16px;
}
.footer__awards {
order: 2;
margin-bottom: 8px;
max-width: 142px;
}
#allrecords .footer__awards a {
font-size: 10px;
}
.footer__legal-info {
align-items: flex-start;
}
#allrecords .footer__legal-info a {
font-size: 10px;
line-height: 16px;
}
}
</style> <script>
document.addEventListener('DOMContentLoaded', function() {
if (document.documentElement.clientWidth < 960) {
$('.footer__chapter-links-heading').click(function() {
$(this).siblings('.footer__chapter-links-wrap').slideToggle();
$(this).toggleClass('open');
});
}
});
</script> <!-- nominify end --> </div> </div> </div> </div> <div id="rec958878116" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- стилизация новых чекбоксов от 15.04.25 --> <style>
.t-input-group.t-input-group_cb[data-field-name="privacy"], .t-input-group_cb:has(input[name="privacy"]) {
margin-bottom: 0 !important;
}
/* скрываем чекбокс у согласия с политикой и оффертой */
.t-input-group_cb[data-field-name="privacy"] :is(.t-checkbox, .t-checkbox__indicator),
.t-input-group_cb input[name="privacy"], .t-input-group_cb input[name="privacy"] + .t-checkbox__indicator {
display: none;
}
.t-input-group_cb[data-field-name="privacy"] .t-checkbox__labeltext,
.t-input-group_cb input[name="privacy"] ~ .t-checkbox__labeltext {
margin-left: 0;
}
.t-input-group_cb[data-field-name="privacy"], .t-input-group_cb .t-checkbox__control:has([name="privacy"]) {
pointer-events: none;
}
.t-input-group_cb[data-field-name="privacy"] a, .t-input-group_cb input[name="privacy"] ~ .t-checkbox__labeltext a {
pointer-events: auto;
}
.t-input-group.t-input-group_cb[data-field-name="check"], .t-input-group_cb:has(input[name="check"]) {
margin-top: 16px;
margin-bottom: 0 !important;
}
.t-input-group.t-input-group_cb[data-field-name="check"] .t-checkbox__control {
-ms-flex-align: flex-start;
-webkit-align-items: flex-start;
align-items: flex-start;
}
</style> <!-- nominify end --> </div> </div> </div> </div> <!-- <strong>▼ Мини-футер ▼</strong> --> <div id="rec216668598" class="r t-rec t-rec_pb_0" style="padding-bottom:0px; " data-animationappear="off" data-record-type="396"> <!-- T396 --> <style>#rec216668598 .t396__artboard {height:530px;}#rec216668598 .t396__filter {height:530px;}#rec216668598 .t396__carrier{height:530px;background-position:center center;background-attachment:scroll;background-size:cover;background-repeat:no-repeat;}@media screen and (max-width:1199px) {#rec216668598 .t396__artboard,#rec216668598 .t396__filter,#rec216668598 .t396__carrier {height:522px;}#rec216668598 .t396__filter {}#rec216668598 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:959px) {#rec216668598 .t396__artboard,#rec216668598 .t396__filter,#rec216668598 .t396__carrier {height:490px;}#rec216668598 .t396__filter {}#rec216668598 .t396__carrier {background-attachment:scroll;}}@media screen and (max-width:639px) {#rec216668598 .t396__artboard,#rec216668598 .t396__filter,#rec216668598 .t396__carrier {height:649px;}#rec216668598 .t396__filter {}#rec216668598 .t396__carrier {background-attachment:scroll;}}#rec216668598 .tn-elem[data-elem-id="1564645816905"]{z-index:3;top:0px;;left:0px;;width:760px;height:530px;}#rec216668598 .tn-elem[data-elem-id="1564645816905"] .tn-atom{border-radius:24px 24px 24px 24px;background-color:#17171b;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;}@media screen and (max-width:1199px){#rec216668598 .tn-elem[data-elem-id="1564645816905"]{top:0px;;left:0px;;width:620px;height:522px;}}@media screen and (max-width:959px){#rec216668598 .tn-elem[data-elem-id="1564645816905"]{top:0px;;left:0px;;width:620px;height:490px;}}@media screen and (max-width:639px){#rec216668598 .tn-elem[data-elem-id="1564645816905"]{top:0px;;left:0px;;width:300px;height:649px;border-radius:16px 16px 16px 16px;}#rec216668598 .tn-elem[data-elem-id="1564645816905"] .tn-atom{background-size:cover;border-radius:16px 16px 16px 16px;}}#rec216668598 .tn-elem[data-elem-id="1596205809432"]{color:#ffffff;z-index:4;top:144px;;left:40px;;width:310px;height:auto;}#rec216668598 .tn-elem[data-elem-id="1596205809432"] .tn-atom{vertical-align:middle;color:#ffffff;font-size:14px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.55;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec216668598 .tn-elem[data-elem-id="1596205809432"]{top:136px;;left:40px;;width:300px;height:auto;}}@media screen and (max-width:959px){#rec216668598 .tn-elem[data-elem-id="1596205809432"]{top:112px;;left:32px;;width:260px;height:auto;}}@media screen and (max-width:639px){#rec216668598 .tn-elem[data-elem-id="1596205809432"]{top:80px;;left:16px;;width:230px;height:auto;}#rec216668598 .tn-elem[data-elem-id="1596205809432"] .tn-atom{font-size:12px;background-size:cover;}}#rec216668598 .tn-elem[data-elem-id="1596206009249"]{color:#ffffff;z-index:5;top:144px;;left:350px;;width:280px;height:auto;}#rec216668598 .tn-elem[data-elem-id="1596206009249"] .tn-atom{vertical-align:middle;color:#ffffff;font-size:14px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.55;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec216668598 .tn-elem[data-elem-id="1596206009249"]{top:136px;;left:340px;;width:188px;height:auto;}}@media screen and (max-width:959px){#rec216668598 .tn-elem[data-elem-id="1596206009249"]{top:112px;;left:322px;;width:260px;height:auto;}}@media screen and (max-width:639px){#rec216668598 .tn-elem[data-elem-id="1596206009249"]{top:324px;;left:16px;;width:240px;height:auto;}#rec216668598 .tn-elem[data-elem-id="1596206009249"] .tn-atom{font-size:12px;background-size:cover;}}#rec216668598 .tn-elem[data-elem-id="1596206049927"]{color:#ffffff;z-index:6;top:40px;;left:40px;;width:418px;height:auto;}#rec216668598 .tn-elem[data-elem-id="1596206049927"] .tn-atom{vertical-align:middle;color:#ffffff;font-size:80px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1;font-weight:500;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec216668598 .tn-elem[data-elem-id="1596206049927"]{top:40px;;left:40px;;height:auto;}#rec216668598 .tn-elem[data-elem-id="1596206049927"] .tn-atom{font-size:72px;background-size:cover;}}@media screen and (max-width:959px){#rec216668598 .tn-elem[data-elem-id="1596206049927"]{top:32px;;left:32px;;height:auto;}#rec216668598 .tn-elem[data-elem-id="1596206049927"] .tn-atom{font-size:56px;background-size:cover;}}@media screen and (max-width:639px){#rec216668598 .tn-elem[data-elem-id="1596206049927"]{top:24px;;left:16px;;width:202px;height:auto;}#rec216668598 .tn-elem[data-elem-id="1596206049927"] .tn-atom{font-size:40px;background-size:cover;}}#rec216668598 .tn-elem[data-elem-id="1607933466856"]{color:#ffffff;z-index:7;top:424px;;left:40px;;width:440px;height:auto;}#rec216668598 .tn-elem[data-elem-id="1607933466856"] .tn-atom{vertical-align:middle;color:#ffffff;font-size:14px;font-family:'BebasRoboto',Arial,sans-serif;line-height:1.55;font-weight:400;background-position:center center;border-width:var(--t396-borderwidth,0);border-style:var(--t396-borderstyle,solid);border-color:var(--t396-bordercolor,transparent);transition:background-color var(--t396-speedhover,0s) ease-in-out,color var(--t396-speedhover,0s) ease-in-out,border-color var(--t396-speedhover,0s) ease-in-out,box-shadow var(--t396-shadowshoverspeed,0.2s) ease-in-out;text-shadow:var(--t396-shadow-text-x,0px) var(--t396-shadow-text-y,0px) var(--t396-shadow-text-blur,0px) rgba(var(--t396-shadow-text-color),var(--t396-shadow-text-opacity,100%));}@media screen and (max-width:1199px){#rec216668598 .tn-elem[data-elem-id="1607933466856"]{top:416px;;left:40px;;width:434px;height:auto;}}@media screen and (max-width:959px){#rec216668598 .tn-elem[data-elem-id="1607933466856"]{top:392px;;left:32px;;height:auto;}}@media screen and (max-width:639px){#rec216668598 .tn-elem[data-elem-id="1607933466856"]{top:549px;;left:16px;;width:268px;height:auto;}#rec216668598 .tn-elem[data-elem-id="1607933466856"] .tn-atom{vertical-align:middle;white-space:normal;font-size:12px;background-size:cover;}}</style> <div class='t396'> <div class="t396__artboard" data-artboard-recid="216668598" data-artboard-screens="320,640,960,1200" data-artboard-height="530" data-artboard-valign="center" data-artboard-upscale="grid" data-artboard-heightmode="hug" data-artboard-height-res-320="649" data-artboard-height-res-640="490" data-artboard-height-res-960="522"> <div class="t396__carrier" data-artboard-recid="216668598"></div> <div class="t396__filter" data-artboard-recid="216668598"></div> <div class='t396__elem tn-elem requisites-bg tn-elem__2166685981564645816905' data-elem-id='1564645816905' data-elem-type='shape' data-field-top-value="0" data-field-left-value="0" data-field-height-value="530" data-field-width-value="760" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="window" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-heightmode-value="fixed" data-field-top-res-320-value="0" data-field-left-res-320-value="0" data-field-height-res-320-value="649" data-field-width-res-320-value="300" data-field-widthmode-res-320-value="fixed" data-field-heightmode-res-320-value="fixed" data-field-top-res-640-value="0" data-field-left-res-640-value="0" data-field-height-res-640-value="490" data-field-width-res-640-value="620" data-field-axisx-res-640-value="left" data-field-heightmode-res-640-value="fixed" data-field-top-res-960-value="0" data-field-left-res-960-value="0" data-field-height-res-960-value="522" data-field-width-res-960-value="620" data-field-heightmode-res-960-value="fixed"> <div class='tn-atom'> </div> </div> <div class='t396__elem tn-elem tn-elem__2166685981596205809432' data-elem-id='1596205809432' data-elem-type='text' data-field-top-value="144" data-field-left-value="40" data-field-height-value="264" data-field-width-value="310" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="window" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="14" data-field-top-res-320-value="80" data-field-left-res-320-value="16" data-field-width-res-320-value="230" data-field-fontsize-res-320-value="12" data-field-top-res-640-value="112" data-field-left-res-640-value="32" data-field-width-res-640-value="260" data-field-top-res-960-value="136" data-field-left-res-960-value="40" data-field-width-res-960-value="300"> <div class='tn-atom'field='tn_text_1596205809432'><span style="color: rgb(115, 115, 115);">Наименование</span><br>ООО "ИКС ВАЙ ЗЕТ НЕТВОРК" <br><br><span style="color: rgb(115, 115, 115);">ИНН</span><br>9705150153 <br><br><span style="color: rgb(115, 115, 115);">КПП</span> <br>770501001 <br><br><span style="color: rgb(115, 115, 115);">Счёт (₽) </span><br>40702810902500083750<br>1207700448361 ОГРН</div> </div> <div class='t396__elem tn-elem tn-elem__2166685981596206009249' data-elem-id='1596206009249' data-elem-type='text' data-field-top-value="144" data-field-left-value="350" data-field-height-value="242" data-field-width-value="280" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="window" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="14" data-field-top-res-320-value="324" data-field-left-res-320-value="16" data-field-width-res-320-value="240" data-field-fontsize-res-320-value="12" data-field-top-res-640-value="112" data-field-left-res-640-value="322" data-field-width-res-640-value="260" data-field-top-res-960-value="136" data-field-left-res-960-value="340" data-field-width-res-960-value="188"> <div class='tn-atom'field='tn_text_1596206009249'><span style="color: rgb(115, 115, 115);">Банк получателя</span><br> "ООО "Банк Точка" "<br><br><span style="color: rgb(115, 115, 115);">Город </span><br>Москва<br><br><span style="color: rgb(115, 115, 115);">БИК </span><br>044525104<br><br><span style="color: rgb(115, 115, 115);">Корр. счёт </span><br>30101810745374525104</div> </div> <div class='t396__elem tn-elem tn-elem__2166685981596206049927' data-elem-id='1596206049927' data-elem-type='text' data-field-top-value="40" data-field-left-value="40" data-field-height-value="140" data-field-width-value="418" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="window" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="80" data-field-top-res-320-value="24" data-field-left-res-320-value="16" data-field-width-res-320-value="202" data-field-fontsize-res-320-value="40" data-field-top-res-640-value="32" data-field-left-res-640-value="32" data-field-fontsize-res-640-value="56" data-field-top-res-960-value="40" data-field-left-res-960-value="40" data-field-fontsize-res-960-value="72"> <div class='tn-atom'field='tn_text_1596206049927'>РЕКВИЗИТЫ</div> </div> <div class='t396__elem tn-elem tn-elem__2166685981607933466856' data-elem-id='1607933466856' data-elem-type='text' data-field-top-value="424" data-field-left-value="40" data-field-height-value="66" data-field-width-value="440" data-field-axisy-value="top" data-field-axisx-value="left" data-field-container-value="window" data-field-topunits-value="px" data-field-leftunits-value="px" data-field-heightunits-value="px" data-field-widthunits-value="px" data-field-textfit-value="autoheight" data-field-fontsize-value="14" data-field-top-res-320-value="549" data-field-left-res-320-value="16" data-field-width-res-320-value="268" data-field-heightunits-res-320-value="px" data-field-textfit-res-320-value="autoheight" data-field-widthmode-res-320-value="fixed" data-field-fontsize-res-320-value="12" data-field-top-res-640-value="392" data-field-left-res-640-value="32" data-field-top-res-960-value="416" data-field-left-res-960-value="40" data-field-width-res-960-value="434"> <div class='tn-atom'field='tn_text_1607933466856'><span style="color: rgb(115, 115, 115);">Юридический адрес</span><br>115184, г. Москва, вн.тер.г. муниципальный округ Замоскворечье, ул Бахрушина, д. 10, стр. 2</div> </div> </div> </div> <script>t_onReady(function() {t_onFuncLoad('t396_init',function() {t396_init('216668598');});});</script> <!-- /T396 --> </div> <div id="rec216668599" class="r t-rec uc-requisites" style=" " data-record-type="390"> <div class="t390"> <div
class="t-popup" data-tooltip-hook="#popup:rec"
role="dialog"
aria-modal="true"
tabindex="-1"> <div class="t-popup__close t-popup__block-close"> <button
type="button"
class="t-popup__close-wrapper t-popup__block-close-button"
aria-label="Закрыть диалоговое окно"> <svg role="presentation" class="t-popup__close-icon" width="23px" height="23px" viewBox="0 0 23 23" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="#fff" fill-rule="evenodd"> <rect transform="translate(11.313708, 11.313708) rotate(-45.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> <rect transform="translate(11.313708, 11.313708) rotate(-315.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> </g> </svg> </button> </div> <div class="t-popup__container t-width t-width_8"> </div> </div> </div> <script type="text/javascript">t_onReady(function(){var rec=document.querySelector('#rec216668599');if(!rec) return;rec.setAttribute('data-animationappear','off');rec.style.opacity=1;t_onFuncLoad('t390_initPopup',function() {t390_initPopup('216668599');});});</script> </div> <div id="rec216668601" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- стилизация попапа Реквизиты --> <style>
.shirina {
background: none !important;
right: 0 !important;
left: 0 !important;
}
.parpadding {
padding: 0 !important;
}
:is(.uc-requisites, .t390, .t331) .t-popup__close {
top: 24px;
right: 24px !important;
width: 44px;
height: 44px;
background: rgb(255 255 255 / 20%);
border-radius: 30px;
zoom: 0.8;
}
.t-popup__block-close-button {
width: 18px;
padding: 13px;
}
.t-popup__close-icon {
display: block;
width: 18px;
height: 18px;
}
@media (max-width: 639px) {
.uc-requisites .t-popup {
background: rgb(0 0 0 / 40%);
}
.uc-requisites .t-popup__container.t-popup__container-static {
margin: 24px auto;
}
:is(.uc-requisites, .t390) .t-popup__close {
position: absolute;
top: 16px;
right: 16px !important;
}
}
</style> <script>
document.addEventListener('DOMContentLoaded', function() {
var ZeroPopID = '#rec216668598'; //Прописываем ID Zero
var PopWindID = '#rec216668599'; //Прописываем ID PopUp окна BF503
//Переносим ZeroBlock в POPup + Добавляем новый клас в POPup
$(PopWindID + " .t-popup__container").addClass("shirina").html($(ZeroPopID));
$(PopWindID + " .t-popup__container").parent(".t-popup").addClass("parpadding");
// перемещаем крестик внутрь попапа
$('.uc-requisites').each(function() {
$(this).find('.requisites-bg').prepend($(this).find('.t-popup__close'));
});
});
</script> <!-- nominify end --> </div> </div> </div> </div> <div id="rec577164264" class="r t-rec uc-license-popup" style=" " data-record-type="390"> <div class="t390"> <div
class="t-popup" data-tooltip-hook="#popup:license"
role="dialog"
aria-modal="true"
tabindex="-1"> <div class="t-popup__close t-popup__block-close"> <button
type="button"
class="t-popup__close-wrapper t-popup__block-close-button"
aria-label="Закрыть диалоговое окно"> <svg role="presentation" class="t-popup__close-icon" width="23px" height="23px" viewBox="0 0 23 23" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="#17171b" fill-rule="evenodd"> <rect transform="translate(11.313708, 11.313708) rotate(-45.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> <rect transform="translate(11.313708, 11.313708) rotate(-315.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> </g> </svg> </button> </div> <div class="t-popup__container t-width t-width_6"> <div class="t390__wrapper t-align_center"> <div class="t390__descr t-descr t-descr_xs">Лицензия на образовательную деятельность рег. номер <span style="font-weight: 700;">Л035−1 298−77/179 677</span> от 22 февраля 2022</div> </div> </div> </div> </div> <script type="text/javascript">t_onReady(function(){var rec=document.querySelector('#rec577164264');if(!rec) return;rec.setAttribute('data-animationappear','off');rec.style.opacity=1;t_onFuncLoad('t390_initPopup',function() {t390_initPopup('577164264');});});</script> <style> #rec577164264 .t390__descr{color:#17171b;}</style> </div> <div id="rec586447967" class="r t-rec uc-license-popup" style=" " data-record-type="390"> <div class="t390"> <div
class="t-popup" data-tooltip-hook="#popup:sout"
role="dialog"
aria-modal="true"
tabindex="-1"
aria-label="Результаты СОУТ"> <div class="t-popup__close t-popup__block-close"> <button
type="button"
class="t-popup__close-wrapper t-popup__block-close-button"
aria-label="Закрыть диалоговое окно"> <svg role="presentation" class="t-popup__close-icon" width="23px" height="23px" viewBox="0 0 23 23" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <g stroke="none" stroke-width="1" fill="#17171b" fill-rule="evenodd"> <rect transform="translate(11.313708, 11.313708) rotate(-45.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> <rect transform="translate(11.313708, 11.313708) rotate(-315.000000) translate(-11.313708, -11.313708) " x="10.3137085" y="-3.6862915" width="2" height="30"></rect> </g> </svg> </button> </div> <div class="t-popup__container t-width t-width_8"> <div class="t390__wrapper t-align_left"> <div class="t390__title t-heading t-heading_lg" id="popuptitle_586447967">Результаты СОУТ</div> <div class="t390__descr t-descr t-descr_xs">В декабре 2022 года в соответствии с действующим законодательством Российской Федерации в ООО «ИКС ВАЙ ЗЕТ НЕТВОРК» была проведена специальная оценка условий труда.<br /><br />С учётом требований законодательства Российской Федерации о персональных данных и законодательства Российской Федерации о государственной и об иной охраняемой законом тайне публикуем:<br /><ul><li style="color: rgb(23, 23, 27);"><a href="https://drive.google.com/file/d/1Hf0P73TIs0gn8ZB2SeQOeCdK0y1RaYP_/view" target="_blank" rel="noreferrer noopener" style="color: rgb(23, 23, 27); border-bottom: 1px solid rgb(23, 23, 27); box-shadow: none; text-decoration: none;">сводную ведомость специальной оценки условий труда</a></li><li><a href="https://drive.google.com/file/d/1msPYwdLZh2h88eb6Jrz-xDyERfamTmQc/view" target="_blank" rel="noreferrer noopener" style="color: rgb(23, 23, 27); border-bottom: 1px solid rgb(23, 23, 27); box-shadow: none; text-decoration: none;">перечень мероприятий по улучшению условий и охраны труда работников</a>, на рабочих местах которых проводилась специальная оценка условий труда.</li></ul></div> </div> </div> </div> </div> <script type="text/javascript">t_onReady(function(){var rec=document.querySelector('#rec586447967');if(!rec) return;rec.setAttribute('data-animationappear','off');rec.style.opacity=1;t_onFuncLoad('t390_initPopup',function() {t390_initPopup('586447967');});});</script> <style> #rec586447967 .t390__title{color:#17171b;font-weight:500;text-transform:uppercase;}@media screen and (min-width:900px){#rec586447967 .t390__title{font-size:60px;line-height:1;}}#rec586447967 .t390__descr{font-size:14px;line-height:1.6;color:#17171b;}</style> </div> <div id="rec577164294" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- стилизация попапа с лицензией и СОУТ --> <style>
.uc-license-popup .t-popup__container {
border-radius: 20px;
}
.uc-license-popup .t-popup__close {
zoom: 0.8;
background: #F0F0F0;
border-radius: 30px;
width: 44px;
height: 44px;
}
.uc-license-popup .t-popup__block-close-button {
width: 18px;
padding: 13px;
}
.uc-license-popup .t-popup__close-icon {
display: block;
width: 18px;
height: 18px;
}
@media screen and (max-width: 1199px) {
.uc-license-popup .t390__title {
font-size: 52px !important;
}
}
@media screen and (max-width: 959px) {
.uc-license-popup .t390__title {
font-size: 48px !important;
}
}
@media screen and (max-width: 639px) {
.uc-license-popup .t-popup__close {
zoom: 0.6;
top: 16px;
right: 16px;
}
.uc-license-popup .t390__wrapper {
padding: 32px 40px;
}
.uc-license-popup .t390__title {
font-size: 28px !important;
}
.uc-license-popup .t390__descr {
font-size: 10px !important;
}
}
</style> <script>
// переносим крестик внутрь попапа
document.addEventListener('DOMContentLoaded', function() {
$('.uc-license-popup .t-popup').each(function() {
$(this).find('.t-popup__container').prepend($(this).find('.t-popup__close'));
});
});
</script> <!-- nominify end --> </div> </div> </div> </div> <div id="rec602614066" class="r t-rec" style=" " data-animationappear="off" data-record-type="886"> <!-- T886 --> <div class="t886 t886_closed" data-storage-item="t886cookiename_1006203" style=""> <div class="t886__wrapper" style="background-color:#ffffff; width:740px;"> <div class="t886__text t-text t-text_xs t-valign_middle" field="text">Пользуясь нашим сайтом, ты соглашаешься с тем, что мы <u style="color: rgb(128, 128, 255);"><a href="https://www.school-xyz.com/privacy-policy" style="box-shadow: none; text-decoration: none; border-bottom-style: solid; border-bottom-color: rgb(128, 128, 255); color: rgb(128, 128, 255);">используем cookies</a></u>.</div> <div
class="t-btn t-btnflex t-btnflex_type_button t-btnflex_sm t886__btn"
type="button"><span class="t-btnflex__text">Принять</span> <style>#rec602614066 .t-btnflex.t-btnflex_type_button {color:#ffffff;background-color:#6060ff;border-style:solid !important;border-color:#6060ff !important;--border-width:1px;border-radius:50px;box-shadow:none !important;font-weight:400;padding:9px 24px 9px 24px;transition-duration:0.2s;transition-property:background-color,color,border-color,box-shadow,opacity,transform,gap;transition-timing-function:ease-in-out;}@media (hover:hover) {#rec602614066 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):hover {color:#ffffff !important;background-color:#6060ff !important;}#rec602614066 .t-btnflex.t-btnflex_type_button:not(.t-animate_no-hover):focus-visible {color:#ffffff !important;background-color:#6060ff !important;}}</style></div> </div> </div> <script type="text/javascript">t_onReady(function() {t_onFuncLoad('t886_init',function() {t886_init('602614066');});});</script> <style>#rec602614066 .t886__text{text-align:left;}</style> <style> #rec602614066 .t886__text{line-height:1.6;color:#17171b;}</style> <style>#rec602614066 .t886__wrapper {box-shadow:0px 0px 4px rgba(0,0,0,0.1);}</style> <style> #rec602614066 .t886__wrapper{border-radius:16px;}@media (max-width:480px){#rec602614066 .t886__wrapper{border-radius:8px;}}</style> </div> <div id="rec602637647" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- стилизация виджета cookie --> <style>
.t886 {
width: 100%;
z-index: 1000000001;
transition: .3s ease;
}
.t-body.show-promobar:not(.hide-promobar) .t886 {
bottom: calc(var(--dynamic-bottom) + 20px) !important;
}
.t886__wrapper {
display: flex;
padding: 12px 24px;
margin: 0 auto;
gap: 16px;
}
.t886__text {
font-size: 14px;
padding-right: 0 !important;
}
.t886__btn {
font-size: 14px;
line-height: 1.6;
}
@media screen and (max-width: 980px) {
.t886 {
width: calc(100% - 20px) !important;
left: 10px !important;
bottom: unset !important;
top: 14px !important;
}
.t886__wrapper {
border-radius: 8px !important;
padding: 8px 16px;
gap: 20px;
}
}
@media (max-width: 639px) {
.t886__text {
font-size: 10px;
}
}
</style> <!-- nominify end --> </div> </div> </div> </div> <div id="rec368502560" class="r t-rec" style=" " data-animationappear="off" data-record-type="131"> <!-- T123 --> <div class="t123"> <div class="t-container_100 "> <div class="t-width t-width_100 "> <!-- nominify begin --> <!-- плагин интеграции amo crm -> yandex metrika --> <script type="text/javascript">
(function(){
var ya_counter_id = '65640406';
var ya_client_id = '';
var setYaClientId = function (){
var intervalYaClientId = setInterval(function(){
try {
if (typeof window['yaCounter'+ya_counter_id] !== "undefined" && typeof window['yaCounter'+ya_counter_id].getClientID !== "undefined") {
ya_client_id = window['yaCounter'+ya_counter_id].getClientID();
if (!ya_client_id)
return;
var forms = document.getElementsByTagName("form");
for (var i = 0; i < forms.length; i++) {
var input = document.createElement("INPUT");
input.type = "hidden";
input.name = "YMClientID";
input.value = ya_client_id;
forms[i].appendChild(input);
}
clearInterval(intervalYaClientId);
}
} catch(err) {
}
}, 1000);
};
setYaClientId();
})();
</script> <!-- nominify end --> </div> </div> </div> </div> </footer> <!--/footer--> </div> <!--/allrecords--> <!-- Stat --> <!-- Yandex.Metrika counter 65640406 --> <script type="text/javascript" data-tilda-cookie-type="analytics">setTimeout(function(){(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window,document,"script","https://mc.yandex.ru/metrika/tag.js","ym");window.mainMetrikaId='65640406';ym(window.mainMetrikaId,"init",{clickmap:true,trackLinks:true,accurateTrackBounce:true,webvisor:true,params:{__ym:{"ymCms":{"cms":"tilda","cmsVersion":"1.0"}}},ecommerce:"dataLayer"});},2000);</script> <noscript><div><img src="https://mc.yandex.ru/watch/65640406" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> <script type="text/javascript">if(!window.mainTracker) {window.mainTracker='tilda';}
window.tildastatscroll='yes';setTimeout(function(){(function(d,w,k,o,g) {var n=d.getElementsByTagName(o)[0],s=d.createElement(o),f=function(){n.parentNode.insertBefore(s,n);};s.type="text/javascript";s.async=true;s.key=k;s.id="tildastatscript";s.src=g;if(w.opera=="[object Opera]") {d.addEventListener("DOMContentLoaded",f,false);} else {f();}})(document,window,'46f1ce95aad41ac8b0d98605c4e04383','script','https://static.tildacdn.com/js/tilda-stat-1.0.min.js');},2000);</script> <!-- Rating Mail.ru counter --> <script type="text/javascript" data-tilda-cookie-type="analytics">setTimeout(function(){var _tmr=window._tmr||(window._tmr=[]);_tmr.push({id:"3737289",type:"pageView",start:(new Date()).getTime()});window.mainMailruId='3737289';(function(d,w,id) {if(d.getElementById(id)) {return;}
var ts=d.createElement("script");ts.type="text/javascript";ts.async=true;ts.id=id;ts.src="https://top-fwz1.mail.ru/js/code.js";var f=function() {var s=d.getElementsByTagName("script")[0];s.parentNode.insertBefore(ts,s);};if(w.opera=="[object Opera]") {d.addEventListener("DOMContentLoaded",f,false);} else {f();}})(document,window,"topmailru-code");},2000);</script> <noscript><img src="https://top-fwz1.mail.ru/counter?id=3737289;js=na" style="border:0;position:absolute;left:-9999px;width:1px;height:1px" alt="Top.Mail.Ru" /></noscript> <!-- //Rating Mail.ru counter --> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KTCCH4H" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> </body> </html>