#статьи
Стаи и толпы в играх: как программируют реалистичное стайное поведение
Изучаем, на какие ухищрения шли разработчики, чтобы большие скопления NPC и животных выглядели убедительно.
Иллюстрация: Assassin’s Creed Unity / Ubisoft Montreal / A Plague Tale: Innocence / Asobo Studio / AI and Games / Colowgee для Skillbox Media
Делает игры на Unity, пишет статьи про геймдев. Всё ещё ждёт, когда выпустят No One Lives Forever 3.
В видеоиграх при создании реально больших скоплений существ или NPC нельзя просто запрограммировать логику поведения одного из них, а потом напичкать локацию его клонами. Игра захлебнётся тормозами, пытаясь провести вычисления для каждого. Поэтому разработчикам приходится идти на определённые хитрости, которые позволяют повысить производительность, но при этом выдают максимально естественный результат. Рассмотрим, как они добиваются этого.
Алгоритм Boids в действии. Сделано на основе реализации алгоритма для Unity блогером
SuboptimalEngПодписывайтесь на наш телеграм-канал «Чекпоинт». Это уютное место, в котором мы рассказываем об играх и о том, как они создаются, а также делимся полезными советами разработчиков и пишем о важных обновлениях популярного софта. Комментарии открыты: вы можете предложить идею для нового текста или просто обсудить всё, что связано с геймдевом.
В фильме Тима Бёртона «Бэтмен возвращается» была сцена, в которой на жителей Готэма напала стая летучих мышей, а также сцена с марширующими пингвинами. Их воплотили на экране при помощи компьютерной графики, а вот за естественность стайного поведения отвечал алгоритм, разработанный экспертом по компьютерной графике Крейгом Рейнольдсом — он известен также тем, что приложил руку к фильму «Трон». Алгоритм этот называется Boids.
Крейг Рейнольдс не был самым первым человеком, который попытался создать симуляцию поведения групп существ. Но именно его алгоритм Boids сейчас считается основой, на которой многие разработчики игр создают симуляции стайного поведения в своих проектах.
«В 1986 году я создал компьютерную модель скоординированного движения животных, таких как птичьи стаи и косяки рыб. Она была основана на трёхмерной вычислительной геометрии, обычно используемой в компьютерной анимации или автоматизированном проектировании. Я назвал этих моделируемых существ боидами (boids — сокращение от bird-oid, то есть „подобный птицам“. — Авт.). Базовая модель стайного движения состоит из трёх простых режимов управления, которые описывают, как маневрирует отдельный боид в зависимости от положения и скорости своих ближайших товарищей по стае».
Крейг Рейнольдс,
создатель алгоритма Boids
В тот момент Крейг Рейнольдс работал в Symbolics Graphics Division, которая делала графический софт, использовавшийся при создании фильмов.
Софт, созданный компанией, использовался в таких фильмах, как «Звёздный Путь 3: В поисках Спока» и «Освободите Вилли». В 1987 году Symbolics Graphics Division выпустила трёхминутный мультфильм Stanley and Stella in: Breaking the Ice, в котором впервые был продемонстрирован алгоритм Boids в действии.Сюжет у мультфильма простенький. По космосу летает сфера, разделённая льдом на две половинки. Внизу — вода, и там плавают косяки рыб. Вверху — воздух, и там летают стаи птиц. Однажды птица Стэнли влюбляется в рыбку Стеллу и в пикирующем полёте пробивает клювом лёд, разделяющий их миры. Благодаря этому птицы и рыбы теперь парят в сфере вместе.
Кадр: мультипликационный фильм Stanley and Stella in: Breaking the Ice / Whitney / Demos ProductionsИ стаи птиц, и косяки рыб в мультфильме вели себя так, как вели бы большие скопления рыб и птиц в реальном мире. Его показали на SIGGRAPH’87 — ежегодной конференции, посвящённой компьютерной графике. Там же Крейг Рейнольдс представил доклад, в котором подробно описал, как ему удалось с помощью нулей и единиц достоверно воспроизвести то, на что у эволюции ушли миллионы лет.
Если вкратце, то каждый боид в группе следует трём простым правилам:
1. Separation (Разделение): боид должен избегать столкновений с соседями по стае.
2. Alignment (Выравнивание): боид должен корректировать своё направление, чтобы оно совпадало с направлением ближайших соседей.
3. Cohesion (Сплочённость): боид должен двигаться в позиции, которую можно назвать средней позицией между позициями ближайших соседей, то есть он должен держаться товарищей.
Separation (Разделение). Источник данных:
официальный сайт Крейга Рейнольдса
Инфографика: Майя Мальгина для Skillbox MediaAlignment (Выравнивание). Источник данных:
официальный сайт Крейга Рейнольдса
Инфографика: Майя Мальгина для Skillbox MediaCohesion (Сплочённость). Источник данных:
официальный сайт Крейга Рейнольдса
Инфографика: Майя Мальгина для Skillbox MediaКаждый боид в стае — это автономная единица, которая двигается сама по себе. Но если в поле его зрения попадёт другой такой же боид, то он начнёт корректировать своё поведение, исходя из трёх описанных выше правил. То есть он будет поворачивать в ту же сторону, в которую поворачивает сосед, и держаться от него на небольшом расстоянии, чтобы не столкнуться, но при этом постарается быть рядом.
Если к ним присоединится ещё пара боидов, то наш изначальный боид будет проводить те же вычисления с учётом товарищей. А если к ним добавится ещё сотня, то… изначальный боид всё равно будет учитывать лишь ближайших к нему товарищей. Он не станет ориентироваться на поведение всей сотни боидов — только на поведение тех, кто совсем рядом. Когда вы выходите из забитого вагона метро, то не смотрите, куда идут все сто с лишним пассажиров. Вы ориентируетесь лишь на ближайших к вам людей.
С помощью алгоритма Boids можно сделать вот такие группы летучих мышей (скопление наверху). Обратите внимание: дерево рассекло одну стаю на две небольших
Скриншот: игра Vampire Survivors / Лука ГалантеДля взаимодействия с соседями у каждого боида есть два параметра. Во-первых, это радиус, на котором он ищет ближайшие боиды. Во-вторых, это угол обзора: боиду необязательно следить за всеми товарищами. Достаточно смотреть за теми, которые находятся перед ним. Если группа рассекается какой-то преградой на половинки, то большой радиус поиска товарищей позволит ей вновь соединиться. А маленький радиус в этом случае приведёт к распаду большой стаи на две маленьких. Также большой радиус защитит от ситуации, когда боиды отсоединяются от группы, потеряв из вида товарища, через которого они к ней и присоединились.
Источник данных: David M. Bourg, Glenn Seemann.
AI for Game Developers.
Инфографика: Майя Мальгина для Skillbox MediaЕсли угол обзора сделать узким, то все боиды будут учитывать лишь впереди идущего соседа. И вся стая превратится в змейку, которая развалится на первом же резком повороте, ведь тогда впереди идущий боид исчезнет из поля зрения своих последователей. А широкий угол обзора формирует широкую стаю, члены которой будут крепко держаться друг за друга.
Источник данных: David M. Bourg, Glenn Seemann.
AI for Game Developers.
Инфографика: Майя Мальгина для Skillbox MediaРадиус поиска и угол обзора боида можно делать разными для каждого из трёх правил, таким образом получив необходимый вид построения. Чтобы продемонстрировать это, мы взяли готовый проект для Unity от блогера SuboptimalEng, который как раз и построен на алгоритме Boids. В процессе работы программы мы постоянно изменяли радиус для Separation, Alignment и Cohesion, и боиды сразу меняли своё построение в зависимости от новых условий. То летали хаотично, игнорируя друг друга, то вдруг собирались в небольшие группки, то выстраивались в длинную цепочку или разлетались в стороны, снова забыв друг о друге.
Алгоритм Boids в действии. Сделано на основе реализации алгоритма для Unity блогером
SuboptimalEngМодификаций для алгоритма Boids можно создать бессчётное множество, тут всё зависит от потребностей разработчика и его фантазии. Делает он декорацию с симуляцией поведения животных вдалеке или систему для передвижения войск в стратегии в реальном времени? Использует алгоритм в двухмерном или в трёхмерном пространстве? Стаи просто передвигаются по определённой области или выполняют какую-то ещё функцию, например нападают на игрока?
Таким образом, сложное поведение большой стаи создаётся благодаря трём простым правилам, которые соблюдает каждый из боидов. А теперь разберёмся, как похожий трюк проделывали разработчики разных игр.
Увидеть реализацию алгоритма, разработанного Крейгом Рейнольдсом, можно, например, в самой первой Half-Life 1998 года — в финальной сцене, в которой G-Man рассказывает Гордону Фримену о карьерных перспективах на новом рабочем месте. Действие происходило в мире Зен, и, если помните, позади G-Man’а в этот момент летала стайка существ, похожих на птиц. Стайка как раз использовала алгоритм Boids. Что забавно, в файлах игры модели этих птичек так и назывались — Boid.
Стайка инопланетных птиц позади G-Man’а, встречающаяся лишь в этой сцене
Изображение: игра Half-Life / Valve / MarphitimusBlackimusАвтор ютуб-канала MarphitimusBlackimus подробно разобрал, как работали эти птички. Их правдоподобное поведение было одной из технологических фишек, продемонстрированных ещё в ранней версии игры, Half-Life Alpha. При активации птицы выбирали себе лидера и следовали за ним.
Стая двигалась по локации без заранее проложенного пути и избегала препятствий. Убедительности поведению инопланетных птиц добавляло и то, что скорость, с которой они махали крыльями, зависела от ускорения и манёвров стаи при повороте.
Скриншот: игра Half-Life / Valve / MarphitimusBlackimusЕсли птица-лидер погибала, то стая выбирала себе нового лидера и следовала уже за ним. Также в момент гибели любой из птиц стая начинала издавать сердитые звуки.
К сожалению, в игре эти существа встречаются лишь раз, когда у игрока нет возможности взаимодействовать с ними. Они играют только роль декорации. Но благодаря тому, что двигаются они как захотят, а не по заранее прописанному маршруту, каждый игрок, прошедший Half-Life, видел свою уникальную и неповторимую версию полёта птичек позади G-Man’а.
Впечатляющая работа с поведением уличной толпы была проделана разработчиками Assassin’s Creed Unity. В один момент времени игра может показать на экране лишь 120 NPC с детализированными моделями и анимацией. При этом проработанный искусственный интеллект будет лишь у 40 из них. Несмотря на эти ограничения, в некоторых сценах можно увидеть до 10 тысяч NPC, которые издалека выглядят и ведут себя так, будто у них проработанный ИИ и подробная модель.
Скриншот: игра Assassin’s Creed Unity / Ubisoft MontrealВ самой первой игре серии было ограничение в 100 NPC. Сюда входят вообще все люди, которых вы видите на улице, включая стражников и персонажей, необходимых для геймплея. Простых горожан-статистов, которые идут по улице, выполняя декоративную функцию, можно было сделать максимум 20. Их пришлось размазывать по уровню, чтобы улицы не казались пустыми. Поэтому рядом с главным героем всегда находится максимум четыре NPC. Улицы с настоящей толпой в игре тоже встречаются, но лишь в определённых миссиях, где разработчики могли сосредоточить все ресурсы на её реализации.
Скриншот: игра Assassin’s Creed Unity / Ubisoft MontrealВ Assassin’s Creed 3 разработчики внедрили технологию, позволявшую показывать на экране тысячи дешёвых мешей (низкополигональных 3D-моделей) с простой анимацией. Её использовали для крыс, птиц, крабов и для изображения многотысячной армии в битве при Банкер-Хилле. Но солдаты, из которых эта армия состоит, разве что проигрывают простые анимации — пригнуться, перезарядить оружие… Игрок не может с ними взаимодействовать.
Скриншот: игра Assassin’s Creed Unity / Ubisoft MontrealЭту технологию использования упрощённых моделей доработали в Assassin’s Creed Unity, рассказывающей о Великой французской революции. Разработчики создали систему Bulk (английское слово, имеющее несколько значений, включая «объём», «масса»). Как в алгоритме Крейга Рейнольдса Boids каждое отдельное существо стаи называлось Boid, так и в системе Bulk каждого отдельного NPC разработчики называют… Bulk.
Суть в том, что изначально толпа на улицах состоит из упрощённых моделей горожан. Но когда герой приближается к ним, игра незаметно заменяет простого горожанина на более сложного.
Упрощённая модель горожанки с анимацией, которая даже не позволяет ей правдоподобно держать стул
Кадр: GDC / YouTubeЕсли расстояние до NPC больше 40 метров, то игрок видит персонажа из 2000 полигонов, у которого всего 11 костей для анимации и простейшая система реакции на события. На расстоянии от 40 до 12 метров вместо упрощённой версии горожанина появляется NPC с полноценной моделью, но урезанной системой поведения, простыми системами анимации и проверки столкновений с окружающими объектами. А если до NPC меньше 12 метров, то он заменяется на объект с детализированной моделью из 20 000 полигонов с 300 костей для анимации и искусственным интеллектом, реалистично реагирующим на действия игрока.
Скриншот: игра Assassin’s Creed Unity / Ubisoft MontrealДля игры также пришлось создать собственную систему просчёта столкновений NPC в толпе, ведь использовать хитбоксы для тысяч горожан было бы слишком накладно.
«По сути, у нас есть карта с местоположением каждого NPC в мире. Для каждого из них мы определяем, находится ли он в пределах досягаемости другого NPC, и если это так, то он воспроизводит простую анимацию и скользит в сторону. Так что это не реальное физическое столкновение. Чтобы они не могли пройти сквозь здание, мы используем навмеш».
Франсуа Курнуайе,
программист, работавший над серией Assassin’s Creed
Изображение: GDC / YouTubeЗа искусственный интеллект и за то, какую анимацию необходимо запустить в настоящий момент, отвечают «пастухи» — невидимые объекты, которые генерируют вокруг себя толпу и руководят ею. Разработчики заполнили улицы именно «пастухами», а не горожанами, и с их помощью смогли настроить численность толпы, её плотность и поведение на каждой конкретной улице. Например, будут NPC просто прогуливаться или же протестовать против чего-то.
Каждый круг отмечает толпу, контролируемую одним «пастухом»
Кадр: GDC / YouTubeТакже в игре есть «блуждающие пастухи», которые контролируют поведение NPC, передвигающихся по улицам. По сути, NPC движутся по кругу по заранее проложенному маршруту. Если долго идти за одним из пешеходов на улице, то минут через двадцать вы с ним вернётесь в исходную точку. Помимо этой операции, «блуждающий пастух» следит за тем, чтобы по каждому району Парижа ходили характерные для него типажи.
Примерно так выглядят закольцованные маршруты для NPC на улицах Парижа
Кадр: GDC / YouTubeГлавной фишкой A Plague Tale: Innocence стали полчища крыс. С их помощью разработчики из Asobo Studio хотели показать последствия чумы во Франции времён Столетней войны.
«Мы хотели рассказать историю о Чёрной смерти. А поскольку бороться с вирусом в игре не так-то просто, мы взяли популярный образ чумы — крыс, распространяющих болезнь по странам. Нам понравилась эта идея, но это означало, что понадобится много крыс, тысячи крыс, чтобы это выглядело правдоподобно. На бумаге хорошо. А вот технически нет: как я и сказал, речь шла о тысячах крыс на [одном] экране».
Кевин Шото,
гейм-директор A Plague Tale: Innocence
В качестве референса разработчики использовали документальные кадры о вторжении полчищ мышей и крыс на австралийские фермы, которых полно на YouTube. Правда, если вы сравните, как крысы двигаются в игре и на документальных записях, то заметите, что игровые грызуны не так проворны. Разработчики специально замедлили их, иначе от крыс было бы невозможно убежать.
Скриншот: игра A Plague Tale: Innocence / Asobo StudioЕщё на раннем этапе разработки в студии решили, что на экране одновременно будет бегать до 5000 особей (в сиквеле A Plague Tale: Requiem их уже около 300 000). При этом все крысы должны вести себя по-разному. Одна преследует игрока, другая бросается на стражников. Какая-то спасается от яркого света. Ещё одна просто бродит вдалеке в поисках еды.
«В целях оптимизации несколько крыс делят между собой модели поведения, но в основном у каждой крысы своё собственное поведение. Вы можете изолировать одну крысу, и она будет вести себя обычно. Можете взять 10 крыс, и они будут вести себя по-разному, отличаясь друг от друга».
Кевин Шото,
гейм-директор A Plague Tale: Innocence
Начали с малого — создали небольшую стайку из 10–20 особей, чтобы посмотреть, получится ли убедительно показать крыс в игре. Потом попытались увеличить это количество в сотни раз. Но обработка поведения всего одной крысы — это уже довольно ресурсозатратная операция, поэтому просто взять и увеличить их количество до тысяч было нерабочей идеей.
Подобное требовало тщательного проектирования и большой работы над оптимизацией, тем более что разработчики сразу поняли: у них не получится реализовать задумку с помощью графических трюков вроде генератора частиц либо анимированных текстур, как в спортивных симуляторах, где похожим образом изображают толпу зрителей на трибунах.
«Мы начали с чего-то, больше похожего на симуляцию воды, но это совершенно не работало. Крысы ощущались как частицы, а не как крысы».
Кевин Шото,
гейм-директор A Plague Tale: Innocence
Скриншот: игра A Plague Tale: Innocence / Asobo StudioОтдельная сложность заключалась в поведении крыс, преследующих и атакующих протагониста и NPC. Разработчики не могли просто позволить каждой особи самостоятельно просчитывать свой маршрут до персонажа. Процессор закипел бы, пытаясь провести такие вычисления для каждой из 5000 крыс.
Команда решила сделать наоборот. Не крысы вычисляют, как им дойти до цели, а, условно говоря, цель определяет, по каким маршрутам крысы могут к ней попасть. Игра строит что-то вроде конвейерных лент, которые из любой точки уровня ведут прямо к персонажу, и крысы просто бегут по созданным для них маршрутам, подключаясь к ближайшему. Когда цель перемещается в пространстве, маршруты для крыс просчитываются заново. Подобная механика называется flow field pathfinding.
Flow field pathfinding на С++ в исполнении
FunneracticКадр: Funneractic / YouTube Как это работает
В каждой локации, где есть крысы, игра создаёт на полу невидимую сетку из квадратов. Каждый квадрат содержит информацию о направлении, в котором должна двигаться крыса, оказавшаяся на нём.
Если клетка находится в освещённой зоне или близко к ней, то крысы получают приказ отступить от неё. Точно такую же отталкивающую силу имеют клетки вокруг постоянных преград вроде стен и колонн, чтобы крысы держались от них подальше и не проваливались в текстуры. Также это улучшает читаемость геометрии помещения.
Если игрок, NPC или источник света меняют своё положение на сетке, то она просчитывает направление для каждой клетки заново. Такой подход позволяет задать направление движения для большой группы объектов, экономя при этом ресурсы компьютера.
Так выглядит сетка на полу, каждый квадрат которой задаёт крысам направление к цели
Скриншот: игра A Plague Tale: Innocence / Asobo Studio / AI and GamesЧтобы 5000 крыс не набрасывались на одну цель — например, стражника или игрока — всем скопом, для каждой ситуации разработчики определили, сколько именно особей нужно для осуществления атаки. Например, если на стражника накинется достаточное количество крыс, остальные уже не будут забираться на него вторым и третьим слоем.
Кстати, изначально стражники при виде крыс успевали убежать, так что натравливать на них грызунов было бесполезно. Поэтому разработчики схитрили: когда крысы атакуют, у стражников увеличивается время, необходимое на разворот. В итоге они просто не успевают развернуться и убежать.
Команда предусмотрела и ситуацию, при которой игрок с помощью факела загоняет толпу крыс в угол. Грызуны, которым больше некуда отступать, просто магическим образом исчезают, оставляя вместо себя искры. Это своеобразный костыль, чтобы перехитрить игроков, которые станут гонять крыс факелом по уровню, пытаясь «сломать» их.
Скриншот: игра A Plague Tale: Innocence / Asobo StudioОтдельные крысы на краю освещённой области бросаются на свет, прежде чем отступить от него. Это как бы размывает для игрока границу между опасной и безопасной зонами. Хотя урона такие бросающиеся одиночки всё равно не наносят, так что это, скорее, просто визуальный приём.
Другая особенность — заметив протагониста, крыса встаёт на задние лапки и поворачивает голову в его сторону. Благодаря этому жесту можно увидеть, как информация о вашем присутствии расходится волной по орде.
«Мы хотели, чтобы они были агрессивными, пугали игрока и угрожали ему, и как бы говорили, что если вы выйдете из-под защиты света, то умрёте».
Кевин Шото,
гейм-директор A Plague Tale: Innocence
Ну и ещё одна любопытная деталь. В игре этого не заметишь, но в интересах оптимизации лишь ближайшие к протагонисту 400 крыс будут иметь индивидуальную анимацию, модель поведения и детали вроде хвоста, следующего за движением остального тела.
У крыс, находящихся подальше, одна общая анимация и нет хвостов. Ну а самых дальних крыс разработчики описывают как «просто картошку». У них нет анимации, только упрощённая модель. Игра при необходимости смешивает все три типа крыс, благодаря чему они выглядят как жуткая однородная масса.
Детально проработанные крысы, которые идут в первых рядах
Скриншот: игра A Plague Tale: Innocence / Asobo StudioКрысы-«картофелины» вдалеке от персонажа
Скриншот: игра A Plague Tale: Innocence / Asobo StudioВ Hitman: Blood Money полноценную толпу пешеходов можно увидеть на уровне The Murder of Crows, где на улицах Нового Орлеана происходит парад. По большей части это — декорация. Например, в толпе нельзя спрятаться от преследователей. Людей из толпы нельзя ни скрытно убивать, ни использовать в качестве живого щита. А если 47-й начинает стрельбу, пешеходы сначала синхронно расходятся в стороны, прикрывая голову руками, а через несколько секунд забывают обо всём и снова ходят по улице как ни в чём не бывало.
Скриншот: игра Hitman: Blood Money / IO InteractiveВ следующей игре серии, Hitman: Absolution, поведение толпы значительно доработали. Теперь вы можете использовать пешеходов как живой щит, а если будете спокойно стоять в толпе, то противник вас не заметит. Ну а перестрелка или взрыв приведут к более реалистичному поведению NPC: они запаникуют и убегут к ближайшему выходу.
Толпа в Hitman: Absolution может состоять из 1200 NPC с возможностью показать на экране 500 из них. Все NPC перемещаются по локации по навигационному мешу по такому же принципу, как в A Plague Tale: Innocence: пол, по которому ходят NPC, покрыт сеткой из клеток, и каждая из них хранит информацию, которую NPC использует при движении. Например, можно ли на эту клетку встать и кто на ней уже стоит.
Скриншот: игра Hitman: Absolution / IO InteractiveОдни клетки помечают зоны выхода из локации, вторые используются для построения маршрута движения NPC, третьи обозначают места, которых нужно избегать, четвёртые подсказывают, какие области на локации становятся запретными, если протагонист начинает сеять в толпе панику. Благодаря этому к стреляющему 47-му никто не приближается.
Изображение: GDC VaultПоведение каждого NPC в толпе работает по принципу машины состояний (state machine). В зависимости от ситуации и окружения ИИ выбирает одно из состояний — например, стоять, ждать, идти, насторожиться, испугаться или умереть.
В состоянии «ждать» пешеход проверяет пространство вокруг себя на преграды вроде стен и других пешеходов и ждёт, пока в одном из направлений не освободится дорога, после чего меняет состояние на «идти». Уже в этом состоянии NPC просто ходит по окрестностям, используя алгоритм блуждания (wander steering behavior), разработанный упомянутым в начале материала Крейгом Рейнольдсом.
Скриншот: игра Hitman: Absolution / IO InteractiveЭтот алгоритм помогает создать эффект более реалистичного передвижения персонажей, не привязанных к строго проложенным для них маршрутам. Благодаря ему у игрока создаётся впечатление, что NPC и правда просто прогуливается по локации.
Суть в том, что каждый кадр к вектору движения персонажа добавляются небольшие случайные отклонения. Используются именно небольшие отклонения, чтобы персонаж не менял направление движения резко. Если он двигался вверх и вправо, то в следующем кадре будет всё также двигаться вверх и вправо, но чуть-чуть под другим углом.
На невидимом круге перед персонажем создаются случайные отклонения к направлению персонажа. Каждый кадр отклонения меняются на величину случайного смещения, представленную маленьким кружком. Источник данных: статья
Steering Behaviors For Autonomous Characters, Craig W. Reynolds /
официальный сайт Крейга Рейнольдса
Инфографика: Майя Мальгина для Skillbox MediaВ случае паники NPC находит кратчайший путь до выхода из локации. Путь генерируется автоматически при помощи сетки и клеток, обозначающих выход, о которых говорилось выше. Если в какой-то момент другие NPC перегородили дорогу, то убегающий пешеход переключается на соседний маршрут, ведущий к другой ближайшей клетке выхода. Отметим, что клеток выхода на уровне несколько и готовые маршруты к ним, которые используют NPC, вычисляются при помощи модифицированного алгоритма Дейкстры. Он как раз и помогает находить кратчайшие пути между несколькими соединёнными между собой точками.
Скриншот: игра Hitman: Absolution / IO InteractiveТолпы живых мертвецов, гоняющиеся за игроками в Left 4 Dead, произошли от ботов Counter-Strike: Source. Программист Майк Бут рассказывал, что, тестируя последних, команда однажды заметила, что отбиваться автоматами от 30 ботов, вооружённых только ножами, крайне весело. Поэтому, как только Counter-Strike: Source вышла, Valve сразу принялась экспериментировать с этой идеей. Разумеется, для новой игры о зомби-апокалипсисе поведение ботов пришлось переработать.
Скриншот: игра Left 4 Dead / Valve«„Орда заражённых“ для нас — главный герой Left 4 Dead, и мы потратили много усилий, чтобы сделать движения [врагов] правдоподобными. Сюда входят сотни анимаций, сделанных с помощью захвата движений, которые алгоритмически смешиваются с физическими системами, чтобы создать персонажей, реалистично взаимодействующих с окружающей средой и друг другом».
Фил Робб,
один из основателей Turtle Rock Studios (также известной как Valve South), создавшей Left 4 Dead
Поведение орды заражённых зависит от её текущего режима. По умолчанию используется режим «блуждание». Зомби шатаются по округе, кто-то кашляет, кого-то рвёт. Какие-то заражённые дерутся друг с другом. Другие прислонились к стенам, сидят или лежат на земле. Появление героев выводит их из оцепенения: включается режим «настороже». В нём зомби начинают оглядываться и искать источник их беспокойства. Если они видят игрока, то он становится их целью. Зомби бегут к нему на своей максимальной скорости, минуя преграды — перепрыгивая, перелезая через них.
Скриншот: игра Left 4 Dead / ValveВсе уровни в Left 4 Dead линейные. Но на каждом из них есть множество помещений и закутков, необходимых для спауна живых мертвецов, чтобы им было откуда внезапно выбежать толпой, застав игроков врасплох. В этих ответвлениях разработчики разместили случайно появляющиеся аптечки, бомбы, оружие и бутылки с зажигательной смесью, чтобы поощрять игроков за стремление изучить локацию.
«Хоть и нелепо говорить о продвинутом ИИ зомби, мы потратили много времени на системы искусственного интеллекта для орды. Прежде всего — на их способность ориентироваться в пространстве. У локаций в Left 4 Dead сложная геометрия, и они усеяны объектами, которые можно ломать и передвигать. Одной из [наших] целей было сделать так, чтобы нигде не было места, где игроки могли бы стоять, а зомби не смогли бы до них добраться. Чтобы добиться этого, нужен был не только надёжный код поиска пути, но и алгоритмы следования по нему. Зомби, идущие по такому пути, должны постоянно оценивать геометрию вокруг себя и решать, где присесть, встать, подпрыгнуть, перелезть или иным образом обойти почти произвольные препятствия окружающей среды».
Мэтт Кэмпбелл,
один из разработчиков Left 4 Dead
Скриншот: игра Left 4 Dead / ValveПри разработке команда столкнулась с ограничением на объём данных, которые сервер должен отправлять каждому из игроков. В многопользовательских играх вроде Counter-Strike достаточно передать информацию только о других игроках, их оружии и о том, куда летят их пули. Но в Left 4 Dead также надо обновлять данные о поведении каждого из десятков мертвецов.
Разработчикам пришлось пойти на хитрость. На локациях, которые состоят преимущественно из помещений с плоским полом, мертвецы передают свои координаты лишь по осям X и Z. А вот координаты по оси Y они передают только, когда меняется высота, на которой находится мертвец: если он поднимается или спускается на один этаж, например.
Скриншот: игра Left 4 Dead / ValveВ Left 4 Dead ограниченный набор локаций. Реиграбельность обеспечивает ИИ-режиссёр, который всякий раз наполняет уровень мертвецами по-разному, в зависимости от навыков игроков (хотя позже один из разработчиков уверял, что никакого ИИ-режиссёра не существует, а вместо него просто генератор случайных чисел).
«Мы создали систему, которая отслеживает „уровень стресса“ каждого выжившего через такие данные, как „сколько урона получает игрок“, „сколько зомби он убил рядом с собой“ и так далее. Если стресс выжившего становится слишком сильным, система вмешивается и принудительно занижает популяцию зомби, чтобы у команды было время на передышку».
Гаутам Баббар,
один из разработчиков Left 4 Dead
Также разработчики сделали систему, которая заселяет локации только теми видами зомби, которые могут на ней присутствовать. Условно, зомби в медицинской форме появляются только в больнице. Полицейские бродят по улице, офисные работники — в офисах. Ну а комбинируя случайным образом разные текстуры для головы, используя разные оттенки для одежды и различные модели тел, разработчики смогли создать до 1500 разновидностей заражённых. Поэтому игроки не сразу замечают, что мертвецы в преследующей их толпе повторяются.
Days Gone, ещё одна игра о мире, пережившем зомби-апокалипсис, разрабатывалась с оглядкой на фильм «Война миров Z». Авторы хотели повторить толпы заражённых, которые гонялись за персонажем Брэда Питта. Эффекта зомби-цунами они не сделали, но вполне правдоподобно изобразили большие скопления фрикеров, или, как их ещё называют, фриков, — людей, под действием вируса мутировавших в монстров (фрикерами также могут быть и животные, но далее речь пойдёт только про людей).
Скриншот: игра Days Gone / Bend StudioЧисленность одной стаи может составлять до 500 особей, причём разработчики не просто расставили их по определённым локациям. Каждая стая проживает день согласно своим потребностям.
«Они не будут просто сидеть на лесопилке. Они будут входить в здания и впадать в спячку днём, а ночью — выходить и спускаться к воде, чтобы попить, после чего — бродить вокруг. Все 40 типов фрикеров в игре делают так».
Джон Гарвин,
реативный директор Days Gone
Скриншот: игра Days Gone / Bend StudioНо была проблема: как создать иллюзию, будто толпа в 500 особей не состоит из близнецов? У команды было всего восемь уникальных моделей, поэтому игроки очень быстро заметили бы противников, как две капли воды похожих друг на друга. Чтобы внести разнообразие, разработчики немного изменили размер некоторых фрикеров в толпе — это повлияло и на их движения.
«Если сделать их на одну десятую метра выше или ниже, то это немного разнообразит всю группу… Также простое изменение роста персонажа меняло его походку. Автоматически мы получили разную скорость передвижения фрикеров».
Джефф Росс,
гейм-директор Days Gone
Скриншот: игра Days Gone / Bend StudioЧтобы вся толпа монстров одномоментно не задавила протагониста числом, разработчики придумали систему, которая натравливает на него противников постепенно. Вокруг главного героя есть невидимый круг — если фрикер оказывается внутри этого круга, то начинает бежать к персонажу. По ходу боя круг увеличивается и в итоге накрывает собой всю орду, чтобы даже отставшие заражённые не забывали про игрока.
Другая проблема: изначально фрикеры, преследуя героя, собирались в длинную линию, так как предпочитали идти по наиболее короткому маршруту. Это лишало игру тактического разнообразия: монстры фактически выстраивались в очередь на убой автоматическим оружием. Поэтому разработчикам пришлось найти способ, как рассеять толпу, чтобы игроку было сложнее выбрать, в кого стрелять в первую очередь (но о самом способе они умолчали).
В Subnautica, игре об исследованиях инопланетного океана, рыбы предпочитают держаться особняком. Косяками плавают лишь мелкие рыбёшки.
В конце ролика можно увидеть, как косяк рыб ушёл в скалу
В то время как более крупных особей-одиночек игрок может добыть, чтобы съесть, косяки играют роль скорее декорации. У них нет хитбокса, и вы можете спокойно проплыть сквозь них. В то же время и они могут спокойно проплыть сквозь что угодно — скалы, других рыб, подводные аппараты или даже стены вашей подводной базы.
Это один из самых известных багов Subnautica — косяк рыб, который летает по вашему убежищу, будто оно заполнено водой.
Скриншот: игра Subnautica / Unknown Worlds EntertainmentНа самом деле косяк рыб в Subnautica — это не множество маленьких объектов, а один невидимый объект с генератором частиц внутри него. На такую хитрость разработчикам пришлось пойти для повышения производительности.
«Единственный способ получить косяк из такого количества рыб — это реализовать их в качестве эффекта частиц, которые используют полигон с текстурой [рыбы], как это реализовано сейчас. Использование одиночных рыб в таком большом количестве — это серьёзный удар по производительности не только из-за геометрических деталей, но и из-за искусственного интеллекта каждой отдельной рыбы и общего их количества».
Один из разработчиков Subnautica, отвечая на вопрос игрока в Steam о том, что рыбы в косяках ненастоящие
Скриншот: игра Subnautica / Unknown Worlds Entertainment* * *
Стаи, косяки, табуны, толпы, рои или просто группы существ в игре не всегда нужны, но если они есть и грамотно реализованы, то это гарантированно добавит зрелищности и реалистичности. Воплотить в жизнь такое стайное поведение можно разными способами. Главное здесь — не перегрузить компьютер вычислениями.
В некоторых случаях, как в Subnautica, можно обойтись и простым генератором частиц. Но в примерах вроде Assassin’s Creed Unity, Left 4 Dead или Hitman: Absolution, где толпа — это отдельная игровая механика, подобным хитростям места не найдётся. Придётся придумывать свои или использовать те наработки, уже имеющиеся в игровой индустрии, — например, алгоритм Boids Крейга Рейнольдса, созданный ещё в 1980-х, который в том или ином виде до сих пор встречается в играх и кино.
Научитесь: Профессия Разработчик игр на Unity с нуля
Узнать больше
<!DOCTYPE html>
<html class="l-html" lang="ru">
<head>
<script>
mindbox = window.mindbox || function() { mindbox.queue.push(arguments); };
mindbox.queue = mindbox.queue || [];
mindbox('create', {
endpointId: 'skillbox.skillboxMediaWebsite'
});
</script>
<script src="https://api.s.mindbox.ru/scripts/v1/tracker.js" async></script>
<script>window.yaContextCb = window.yaContextCb || []</script>
<script src="https://yandex.ru/ads/system/context.js" async></script>
<!-- Google Tag Manager -->
<script async data-skip-moving="true" type="text/javascript">
/** Google Tagmanager */
;(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-NLCGQ25');
window.dataLayer = window.dataLayer || [];
function gtag() {
window.dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'GTM-NLCGQ25');
</script>
<!-- End Google Tag Manager -->
<!-- Retail Rocket -->
<script type="text/javascript">
var rrPartnerId = "6048a0d097a52514f050731f";
var rrApi = {};
var rrApiOnReady = rrApiOnReady || [];
rrApi.addToBasket = rrApi.order = rrApi.categoryView = rrApi.view =
rrApi.recomMouseDown = rrApi.recomAddToCart = function() {};
(function(d) {
var ref = d.getElementsByTagName('script')[0];
var apiJs, apiJsId = 'rrApi-jssdk';
if (d.getElementById(apiJsId)) return;
apiJs = d.createElement('script');
apiJs.id = apiJsId;
apiJs.async = true;
apiJs.src = "//cdn.retailrocket.ru/content/javascript/tracking.js";
ref.parentNode.insertBefore(apiJs, ref);
}(document));
</script>
<!-- End Retail Rocket -->
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
<meta name="google-site-verification" content="UA-kf725UpqwkHenFmDQ05SW115fL9UdD9uXiFy-ibQ"/>
<meta name="robots" content="index, follow"/>
<link rel="dns-prefetch" href="//fonts.googleapis.com">
<link rel="shortcut icon" href="/favicon.ico">
<link rel="canonical" href="https://skillbox.ru/media/gamedev/stai-i-tolpy-v-igrakh-kak-programmiruyut-realistichnoe-staynoe-povedenie/">
<link rel="preload" href="https://marketplace.canva.com/EAD2962NKnQ/2/0/1600w/canva-rainbow-gradient-pink-and-purple-zoom-virtual-background-_Tcjok-d9b4.jpg" as="image" />
<link rel="preload" href="https://via.placeholder.com/1170x250/92c952" as="image" />
<link rel="preload" href="https://via.placeholder.com/768x250/40E0D0" as="image" />
<link rel="preload" href="https://via.placeholder.com/375x250/ffbcee" as="image" />
<title>Как программируют поведение стай и толп в играх — алгоритм boids и другие подходы / Skillbox Media</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="keywords" content="симуляция стаи, поведение NPC, boids, wander steering behavior" />
<meta name="description" content="Изучаем методы создания реалистичных стай животных и толп NPC в видеоиграх." />
<link href="/bitrix/cache/css/s1/media/kernel_main/kernel_main_v1.css?177096852510536" type="text/css" rel="stylesheet" />
<link href="/bitrix/js/ui/fonts/opensans/ui.font.opensans.css?16341171742599" type="text/css" rel="stylesheet" />
<link href="/bitrix/js/main/popup/dist/main.popup.bundle.css?163411696226345" type="text/css" rel="stylesheet" />
<link href="//cdnjs.cloudflare.com/ajax/libs/Swiper/4.5.1/css/swiper.min.css" type="text/css" rel="stylesheet" />
<link href="/bitrix/cache/css/s1/media/page_a1ad23d5ae1fea4c6ac7c690c80a4763/page_a1ad23d5ae1fea4c6ac7c690c80a4763_v1.css?1771490810746236" type="text/css" rel="stylesheet" />
<link href="/bitrix/cache/css/s1/media/template_176a7c2453ad8025fa7d27f65ba6a4b1/template_176a7c2453ad8025fa7d27f65ba6a4b1_v1.css?1771490810442835" type="text/css" data-template-style="true" rel="stylesheet" />
<script type="text/javascript">if(!window.BX)window.BX={};if(!window.BX.message)window.BX.message=function(mess){if(typeof mess==='object'){for(let i in mess) {BX.message[i]=mess[i];} return true;}};</script>
<script type="text/javascript">(window.BX||top.BX).message({'JS_CORE_LOADING':'Загрузка...','JS_CORE_NO_DATA':'- Нет данных -','JS_CORE_WINDOW_CLOSE':'Закрыть','JS_CORE_WINDOW_EXPAND':'Развернуть','JS_CORE_WINDOW_NARROW':'Свернуть в окно','JS_CORE_WINDOW_SAVE':'Сохранить','JS_CORE_WINDOW_CANCEL':'Отменить','JS_CORE_WINDOW_CONTINUE':'Продолжить','JS_CORE_H':'ч','JS_CORE_M':'м','JS_CORE_S':'с','JSADM_AI_HIDE_EXTRA':'Скрыть лишние','JSADM_AI_ALL_NOTIF':'Показать все','JSADM_AUTH_REQ':'Требуется авторизация!','JS_CORE_WINDOW_AUTH':'Войти','JS_CORE_IMAGE_FULL':'Полный размер'});</script>
<script type="text/javascript" src="/bitrix/js/main/core/core.js?1634117028565340"></script>
<script>BX.setJSList(['/bitrix/js/main/core/core_ajax.js','/bitrix/js/main/core/core_promise.js','/bitrix/js/main/polyfill/promise/js/promise.js','/bitrix/js/main/loadext/loadext.js','/bitrix/js/main/loadext/extension.js','/bitrix/js/main/polyfill/promise/js/promise.js','/bitrix/js/main/polyfill/find/js/find.js','/bitrix/js/main/polyfill/includes/js/includes.js','/bitrix/js/main/polyfill/matches/js/matches.js','/bitrix/js/ui/polyfill/closest/js/closest.js','/bitrix/js/main/polyfill/fill/main.polyfill.fill.js','/bitrix/js/main/polyfill/find/js/find.js','/bitrix/js/main/polyfill/matches/js/matches.js','/bitrix/js/main/polyfill/core/dist/polyfill.bundle.js','/bitrix/js/main/core/core.js','/bitrix/js/main/polyfill/intersectionobserver/js/intersectionobserver.js','/bitrix/js/main/lazyload/dist/lazyload.bundle.js','/bitrix/js/main/polyfill/core/dist/polyfill.bundle.js','/bitrix/js/main/parambag/dist/parambag.bundle.js']);
BX.setCSSList(['/bitrix/js/main/lazyload/dist/lazyload.bundle.css','/bitrix/js/main/parambag/dist/parambag.bundle.css']);</script>
<script type="text/javascript">(window.BX||top.BX).message({'AMPM_MODE':false});(window.BX||top.BX).message({'MONTH_1':'Январь','MONTH_2':'Февраль','MONTH_3':'Март','MONTH_4':'Апрель','MONTH_5':'Май','MONTH_6':'Июнь','MONTH_7':'Июль','MONTH_8':'Август','MONTH_9':'Сентябрь','MONTH_10':'Октябрь','MONTH_11':'Ноябрь','MONTH_12':'Декабрь','MONTH_1_S':'января','MONTH_2_S':'февраля','MONTH_3_S':'марта','MONTH_4_S':'апреля','MONTH_5_S':'мая','MONTH_6_S':'июня','MONTH_7_S':'июля','MONTH_8_S':'августа','MONTH_9_S':'сентября','MONTH_10_S':'октября','MONTH_11_S':'ноября','MONTH_12_S':'декабря','MON_1':'янв','MON_2':'фев','MON_3':'мар','MON_4':'апр','MON_5':'май','MON_6':'июн','MON_7':'июл','MON_8':'авг','MON_9':'сен','MON_10':'окт','MON_11':'ноя','MON_12':'дек','DAY_OF_WEEK_0':'Воскресенье','DAY_OF_WEEK_1':'Понедельник','DAY_OF_WEEK_2':'Вторник','DAY_OF_WEEK_3':'Среда','DAY_OF_WEEK_4':'Четверг','DAY_OF_WEEK_5':'Пятница','DAY_OF_WEEK_6':'Суббота','DOW_0':'Вс','DOW_1':'Пн','DOW_2':'Вт','DOW_3':'Ср','DOW_4':'Чт','DOW_5':'Пт','DOW_6':'Сб','FD_SECOND_AGO_0':'#VALUE# секунд назад','FD_SECOND_AGO_1':'#VALUE# секунду назад','FD_SECOND_AGO_10_20':'#VALUE# секунд назад','FD_SECOND_AGO_MOD_1':'#VALUE# секунду назад','FD_SECOND_AGO_MOD_2_4':'#VALUE# секунды назад','FD_SECOND_AGO_MOD_OTHER':'#VALUE# секунд назад','FD_SECOND_DIFF_0':'#VALUE# секунд','FD_SECOND_DIFF_1':'#VALUE# секунда','FD_SECOND_DIFF_10_20':'#VALUE# секунд','FD_SECOND_DIFF_MOD_1':'#VALUE# секунда','FD_SECOND_DIFF_MOD_2_4':'#VALUE# секунды','FD_SECOND_DIFF_MOD_OTHER':'#VALUE# секунд','FD_SECOND_SHORT':'#VALUE#с','FD_MINUTE_AGO_0':'#VALUE# минут назад','FD_MINUTE_AGO_1':'#VALUE# минуту назад','FD_MINUTE_AGO_10_20':'#VALUE# минут назад','FD_MINUTE_AGO_MOD_1':'#VALUE# минуту назад','FD_MINUTE_AGO_MOD_2_4':'#VALUE# минуты назад','FD_MINUTE_AGO_MOD_OTHER':'#VALUE# минут назад','FD_MINUTE_DIFF_0':'#VALUE# минут','FD_MINUTE_DIFF_1':'#VALUE# минута','FD_MINUTE_DIFF_10_20':'#VALUE# минут','FD_MINUTE_DIFF_MOD_1':'#VALUE# минута','FD_MINUTE_DIFF_MOD_2_4':'#VALUE# минуты','FD_MINUTE_DIFF_MOD_OTHER':'#VALUE# минут','FD_MINUTE_0':'#VALUE# минут','FD_MINUTE_1':'#VALUE# минуту','FD_MINUTE_10_20':'#VALUE# минут','FD_MINUTE_MOD_1':'#VALUE# минуту','FD_MINUTE_MOD_2_4':'#VALUE# минуты','FD_MINUTE_MOD_OTHER':'#VALUE# минут','FD_MINUTE_SHORT':'#VALUE#мин','FD_HOUR_AGO_0':'#VALUE# часов назад','FD_HOUR_AGO_1':'#VALUE# час назад','FD_HOUR_AGO_10_20':'#VALUE# часов назад','FD_HOUR_AGO_MOD_1':'#VALUE# час назад','FD_HOUR_AGO_MOD_2_4':'#VALUE# часа назад','FD_HOUR_AGO_MOD_OTHER':'#VALUE# часов назад','FD_HOUR_DIFF_0':'#VALUE# часов','FD_HOUR_DIFF_1':'#VALUE# час','FD_HOUR_DIFF_10_20':'#VALUE# часов','FD_HOUR_DIFF_MOD_1':'#VALUE# час','FD_HOUR_DIFF_MOD_2_4':'#VALUE# часа','FD_HOUR_DIFF_MOD_OTHER':'#VALUE# часов','FD_HOUR_SHORT':'#VALUE#ч','FD_YESTERDAY':'вчера','FD_TODAY':'сегодня','FD_TOMORROW':'завтра','FD_DAY_AGO_0':'#VALUE# дней назад','FD_DAY_AGO_1':'#VALUE# день назад','FD_DAY_AGO_10_20':'#VALUE# дней назад','FD_DAY_AGO_MOD_1':'#VALUE# день назад','FD_DAY_AGO_MOD_2_4':'#VALUE# дня назад','FD_DAY_AGO_MOD_OTHER':'#VALUE# дней назад','FD_DAY_DIFF_0':'#VALUE# дней','FD_DAY_DIFF_1':'#VALUE# день','FD_DAY_DIFF_10_20':'#VALUE# дней','FD_DAY_DIFF_MOD_1':'#VALUE# день','FD_DAY_DIFF_MOD_2_4':'#VALUE# дня','FD_DAY_DIFF_MOD_OTHER':'#VALUE# дней','FD_DAY_AT_TIME':'#DAY# в #TIME#','FD_DAY_SHORT':'#VALUE#д','FD_MONTH_AGO_0':'#VALUE# месяцев назад','FD_MONTH_AGO_1':'#VALUE# месяц назад','FD_MONTH_AGO_10_20':'#VALUE# месяцев назад','FD_MONTH_AGO_MOD_1':'#VALUE# месяц назад','FD_MONTH_AGO_MOD_2_4':'#VALUE# месяца назад','FD_MONTH_AGO_MOD_OTHER':'#VALUE# месяцев назад','FD_MONTH_DIFF_0':'#VALUE# месяцев','FD_MONTH_DIFF_1':'#VALUE# месяц','FD_MONTH_DIFF_10_20':'#VALUE# месяцев','FD_MONTH_DIFF_MOD_1':'#VALUE# месяц','FD_MONTH_DIFF_MOD_2_4':'#VALUE# месяца','FD_MONTH_DIFF_MOD_OTHER':'#VALUE# месяцев','FD_MONTH_SHORT':'#VALUE#мес','FD_YEARS_AGO_0':'#VALUE# лет назад','FD_YEARS_AGO_1':'#VALUE# год назад','FD_YEARS_AGO_10_20':'#VALUE# лет назад','FD_YEARS_AGO_MOD_1':'#VALUE# год назад','FD_YEARS_AGO_MOD_2_4':'#VALUE# года назад','FD_YEARS_AGO_MOD_OTHER':'#VALUE# лет назад','FD_YEARS_DIFF_0':'#VALUE# лет','FD_YEARS_DIFF_1':'#VALUE# год','FD_YEARS_DIFF_10_20':'#VALUE# лет','FD_YEARS_DIFF_MOD_1':'#VALUE# год','FD_YEARS_DIFF_MOD_2_4':'#VALUE# года','FD_YEARS_DIFF_MOD_OTHER':'#VALUE# лет','FD_YEARS_SHORT_0':'#VALUE#л','FD_YEARS_SHORT_1':'#VALUE#г','FD_YEARS_SHORT_10_20':'#VALUE#л','FD_YEARS_SHORT_MOD_1':'#VALUE#г','FD_YEARS_SHORT_MOD_2_4':'#VALUE#г','FD_YEARS_SHORT_MOD_OTHER':'#VALUE#л','CAL_BUTTON':'Выбрать','CAL_TIME_SET':'Установить время','CAL_TIME':'Время','FD_LAST_SEEN_TOMORROW':'завтра в #TIME#','FD_LAST_SEEN_NOW':'только что','FD_LAST_SEEN_TODAY':'сегодня в #TIME#','FD_LAST_SEEN_YESTERDAY':'вчера в #TIME#','FD_LAST_SEEN_MORE_YEAR':'более года назад'});</script>
<script type="text/javascript">(window.BX||top.BX).message({'WEEK_START':'1'});</script>
<script type="text/javascript">(window.BX||top.BX).message({'LANGUAGE_ID':'ru','FORMAT_DATE':'DD.MM.YYYY','FORMAT_DATETIME':'DD.MM.YYYY HH:MI:SS','COOKIE_PREFIX':'BITRIX_SM','SERVER_TZ_OFFSET':'10800','UTF_MODE':'Y','SITE_ID':'s1','SITE_DIR':'/','USER_ID':'','SERVER_TIME':'1771691634','USER_TZ_OFFSET':'0','USER_TZ_AUTO':'Y','bitrix_sessid':'ce5cbaac4a01098fc68660fe3bb69582'});</script>
<script type="text/javascript" src="/bitrix/js/main/date/main.date.js?159955296434530"></script>
<script type="text/javascript" src="/bitrix/js/main/popup/dist/main.popup.bundle.js?1634116962109107"></script>
<script type="text/javascript" src="/bitrix/js/main/core/core_date.js?163411653136080"></script>
<script type="text/javascript" src="/bitrix/js/ui/vue/vue2/prod/dist/vue.bundle.js?1635848017173206"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.5.1/js/swiper.min.js"></script>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/fingerprintjs2/2.1.0/fingerprint2.min.js"></script>
<script type="text/javascript">BX.setCSSList(['/bitrix/js/main/core/css/core_date.css','/setka/css/setka_skillbox.css','/local/templates/.default/components/bitrix/news.detail/article/style.css','/static/css/newarticle.css','/local/templates/media/libs/jquery.formstyler.css','/local/templates/media/fonts/graphik-font/stylesheet.css','/static/css/main.css','/local/templates/media/template_styles.css']);</script>
<script src="https://cdn.skillbox.pro/frontend-libs/promo-banner/5.10.1/banner-plugin.min.js"></script>
<script type="text/javascript" async src="https://relap.io/api/v6/head.js?token=sI73Ph6a5BnkqK2o"></script>
<meta property="og:title" content="Стаи и толпы в играх: как программируют реалистичное стайное поведение" />
<meta property="og:description" content="Изучаем, на какие ухищрения шли разработчики, чтобы большие скопления NPC и животных выглядели убедительно." />
<meta property="og:url" content="https://skillbox.ru/media/gamedev/stai-i-tolpy-v-igrakh-kak-programmiruyut-realistichnoe-staynoe-povedenie/" />
<meta property="og:type" content="article" />
<meta property="og:site_name" content="skillbox.ru" />
<meta property="og:locale" content="ru_RU" />
<meta property="og:image" content="https://248006.selcdn.ru/main/iblock/168/1686acd990654953ff8a5bb5cf0a3c64/1351678af63afae32ce04ccc99399cbd.jpg" />
<meta name="relap-image" content="https://248006.selcdn.ru/main/iblock/168/1686acd990654953ff8a5bb5cf0a3c64/1351678af63afae32ce04ccc99399cbd.jpg" />
<meta property="og:image:width" content="600" />
<meta property="og:image:height" content="315" />
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:image" content="https://248006.selcdn.ru/main/iblock/168/1686acd990654953ff8a5bb5cf0a3c64/1351678af63afae32ce04ccc99399cbd.jpg" />
<meta property="vk:image" content="https://248006.selcdn.ru/main/iblock/f79/f79beba038874e2249993ddf971eb83e/fcb05b4a73777b6cc826def06074c82d.jpg" />
<meta property="article:author" content="Данил Свечков" />
<meta property="article:tag" content="статьи" />
<meta property="article:section" content="Геймдев" />
<script type="text/javascript" src="/static/js/vendor.js?1771489421543641"></script>
<script type="text/javascript" src="/local/assets/js/common.js?177148933727419"></script>
<script type="text/javascript" src="/static/js/main.js?1771489421125222"></script>
<script type="text/javascript" src="/local/templates/media/js/main.js?17714893372418"></script>
<script type="text/javascript" src="/local/components/prmedia/popup.subscribe/templates/.default/script.js?17714893376820"></script>
<script type="text/javascript" src="/local/templates/.default/components/bitrix/news.detail/article/infinity.js?177148933713735"></script>
<script type="text/javascript" src="/local/templates/.default/components/bitrix/news/articles/script.js?1771489337246"></script>
<script type="text/javascript" src="/setka/js/setka_skillbox.js?1771489337106775"></script>
<script type="text/javascript" src="/local/templates/.default/components/bitrix/news.detail/article/script.js?17714893377503"></script>
<script type="text/javascript">var _ba = _ba || []; _ba.push(["aid", "84a6082a990bbac8858fb733b97bed30"]); _ba.push(["host", "skillbox.ru"]); (function() {var ba = document.createElement("script"); ba.type = "text/javascript"; ba.async = true;ba.src = (document.location.protocol == "https:" ? "https://" : "http://") + "bitrix.info/ba.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(ba, s);})();</script>
</head>
<body>
<div class="js-sticky-delimiter"></div>
<div class="bx-panel"></div>
<!-- Google Tag Manager (noscript) -->
<noscript>
<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NLCGQ25" height="0" width="0"
style="display:none;visibility:hidden"></iframe>
</noscript>
<!-- End Google Tag Manager (noscript) -->
<svg class="app-svg-visually-hidden" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<path id="def-arrow-down-a" d="M223 20813l4 5 4-5z"/>
<path id="def-arrow-a" d="M1044.6 803.2a.81.81 0 01-.5.18.8.8 0 01-.8-.8v-3.24c-2.97.1-5.17.88-6.52 2.3a4.86 4.86 0 00-1.39 3.29.8.8 0 01-.75.83h-.04a.79.79 0 01-.79-.74c-.22-3.78.69-6.76 2.69-8.84a10.76 10.76 0 016.81-3.07v-3.3a.8.8 0 011.29-.63l7.91 6.39a.8.8 0 010 1.25zm.3-11.73v2.42a.5.5 0 01-.03.1.8.8 0 01-.05.21.78.78 0 01-.47.42.67.67 0 01-.25.05h-.01c-.06 0-3.93-.04-6.46 2.62-.8.85-1.4 1.87-1.74 2.99 1.79-1.7 4.55-2.57 8.21-2.57.44 0 .8.36.8.8v2.4l5.85-4.72z"/>
<path id="def-be-a" d="M55.6 29.58h6.12v-1.59H55.6zm.64 5.74s.26-2.23 2.58-2.23c2.32 0 2.26 2.23 2.26 2.23zm-3.23 1.27S52.56 42 58.72 42c0 0 5.26.37 5.26-3.81H61.4s-.09 1.59-2.58 1.59c0 0-2.58.17-2.58-2.55l7.74-.01c-.08-.32.9-6.42-5.16-6.36-5.77.05-5.81 5.73-5.81 5.73zm-10.34 2.8v-4.24H47s1.7.16 1.7 2.24c0 1.76-1.06 1.99-1.7 2zM47 29.61s1.16.06 1.16 1.62-.76 1.64-1.49 1.64h-4v-3.26zm4.33 1.3c0-2.68-1.81-3.91-4.26-3.91H39v15.01h8.07s4.92.15 4.92-4.43c0 0 .22-3.73-2.9-3.73 0 0 2.24-.25 2.24-2.94z"/>
<path id="def-briefcase-a" d="M855 13538c0-1.7 1.3-3 3-3s3 1.3 3 3v7c0 1.7-1.3 3-3 3s-3-1.3-3-3v-7z"/>
<path id="def-comments-a" d="M752 8958l-4 4v-12a1 1 0 011-1h11a1 1 0 011 1v7a1 1 0 01-1 1zm12-6v13l-3.2-4H751l2-2h9v-8h1c1 0 1 .45 1 1z"/>
<path id="def-eaye-a" d="M630 8956.22c0 1.04-3.58 5.21-8 5.21s-8-4.26-8-5.21c0-1.05 3.58-5.22 8-5.22s8 4.17 8 5.22zm-5 0h-3v-3.13a3.13 3.13 0 100 6.26 3.07 3.07 0 003-3.13z"/>
<path id="def-file-a" d="M493 9457a2 2 0 01-1.98-2v-16a2 2 0 011.98-2h19.82c1.13 0 2.07.87 2.15 2v16a2.15 2.15 0 01-2.15 2zm0-18v8.83l5.3-4.59a.98.98 0 011.35.05l5.34 5.39 3.27-2.48a.98.98 0 011.36.16l3.35 4.07V9439zm19.97 14.55l-4.27-5.18-3.21 2.43c-.4.3-.95.26-1.3-.09l-5.3-5.35-5.9 5.1v4.54h19.98zm-6.1-10.55a1.98 1.98 0 113.97.04 1.98 1.98 0 01-3.97-.04z"/>
<path id="def-gplus-a" d="M466 10169a4 4 0 013.87-3.99 4.14 4.14 0 012.93.99c-.33.36-.67.71-1.03 1.04-.72-.42-1.58-.75-2.41-.46a2.52 2.52 0 00-1.67 3.23c.41 1.35 2.09 2.1 3.4 1.52a2.22 2.22 0 001.33-1.51c-.78-.01-1.56 0-2.34-.03v-1.36h3.9a4.45 4.45 0 01-.83 3.2c-1 1.28-2.88 1.66-4.4 1.16a4 4 0 01-2.75-3.79z"/><path id="def-gplus-b" d="M476.34 10166h1.32l.01 1.33H479v1.33l-1.33.01v1.33h-1.33l-.01-1.33H475v-1.33l1.33-.01.01-1.33z"/>
<path id="def-inst-a" d="M1480.93 332c-3.5 0-3.95.02-5.32.07-1.37.07-2.3.28-3.14.6-.84.34-1.57.77-2.28 1.5a6.36 6.36 0 00-1.5 2.28 9.84 9.84 0 00-.6 3.14c-.07 1.37-.07 1.82-.07 5.32s.02 3.96.07 5.32c.07 1.37.28 2.31.6 3.14.34.85.77 1.58 1.5 2.29a6.51 6.51 0 002.28 1.5c.82.3 1.77.53 3.14.6 1.37.07 1.82.07 5.32.07s3.96-.02 5.32-.07a9.48 9.48 0 003.14-.6 6.14 6.14 0 002.29-1.5 6.36 6.36 0 001.5-2.29c.3-.81.53-1.77.6-3.14.07-1.36.07-1.82.07-5.32s-.02-3.95-.07-5.32a9.48 9.48 0 00-.6-3.14 6.14 6.14 0 00-1.5-2.28 6.36 6.36 0 00-2.29-1.5 9.84 9.84 0 00-3.14-.6c-1.38-.05-1.82-.07-5.32-.07zm0 2.32c3.45 0 3.85.02 5.22.07 1.27.05 1.94.26 2.4.45.6.25 1.03.52 1.48.97.45.45.73.89.97 1.5.18.44.39 1.14.45 2.39.07 1.37.07 1.76.07 5.21s-.01 3.85-.07 5.22a6.55 6.55 0 01-.45 2.4c-.24.6-.52 1.03-.97 1.48-.45.45-.88.73-1.49.97-.45.18-1.14.39-2.39.45-1.37.07-1.77.07-5.22.07-3.45 0-3.84-.01-5.21-.07a6.55 6.55 0 01-2.4-.45 4.11 4.11 0 01-1.49-.97 4.11 4.11 0 01-.97-1.49 7.52 7.52 0 01-.45-2.39c-.07-1.37-.07-1.77-.07-5.22 0-3.45.02-3.84.07-5.21.05-1.27.26-1.95.45-2.4.25-.6.52-1.04.97-1.49.45-.45.89-.72 1.5-.97a7.52 7.52 0 012.39-.45c1.35-.05 1.76-.07 5.21-.07z"/><path id="def-inst-b" d="M1480.93 349.2a4.3 4.3 0 110-8.59 4.3 4.3 0 010 8.6zm0-10.93a6.62 6.62 0 100 13.24 6.62 6.62 0 000-13.24z"/><path id="def-inst-c" d="M1486.27 338.01a1.54 1.54 0 113.09 0 1.54 1.54 0 01-3.09 0z"/>
<path id="def-like-down-a" d="M1004.33 543.66c-1.1 0-2.45-.86-2.61-3.31-.05-1.41.11-2.82.48-4.19h-2.96c-2.15 0-3.42-1.35-3.42-2.67 0-.39.05-.77.17-1.13a2.4 2.4 0 01-.99-2.03 2.35 2.35 0 011.02-2.05c-.12-.34-.18-.7-.17-1.06.86-.6 1.2-1.7.86-2.7 0-2.52 3.45-2.52 4.57-2.52h2.85c1.3.06 2.56.4 3.71 1 .67.36 1.41.6 2.18.67h3.23c.25 0 .5.11.65.31.12.14 1.1 1.47 1.1 4.69.03 1.8-.28 3.6-.9 5.31a.83.83 0 01-.67.5c-.03 0-3.27.4-4.85 1.98a10.32 10.32 0 00-2.8 5.94 1.4 1.4 0 01-1.45 1.26zm-6.84-10.17c0 .34.52 1 1.75 1h4.06a.83.83 0 01.8 1.1c-.5 1.5-.73 3.07-.72 4.65.08 1.1.44 1.6.79 1.72a11.94 11.94 0 013.23-6.67c1.57-1.58 4.2-2.18 5.32-2.38.41-1.37.62-2.8.61-4.24a8.18 8.18 0 00-.56-3.34h-2.75c-1-.07-1.97-.35-2.85-.81a7.53 7.53 0 00-3.04-.85h-2.85c-1.32 0-2.9.15-2.9.85-.02.11.02.22.09.3a.73.73 0 01.75.77.92.92 0 01-.85.87.85.85 0 00-.85.77c-.05.22.01.44.17.6.42.07.71.45.67.88a.87.87 0 01-.86.77.77.77 0 00-.83.85.8.8 0 00.87.85c.46.01.82.4.81.85 0 .43-.33.78-.76.8-.09.21-.12.44-.1.66z"/>
<path id="def-like-up-a" d="M944.67 520c1.1 0 2.45.87 2.61 3.32.05 1.4-.11 2.82-.48 4.18h2.96c2.15 0 3.42 1.36 3.42 2.67 0 .39-.05.77-.17 1.14a2.4 2.4 0 01.99 2.02c.04.81-.35 1.59-1.02 2.05.12.34.18.7.17 1.07-.86.6-1.2 1.7-.86 2.69 0 2.52-3.45 2.52-4.57 2.52h-2.85a8.94 8.94 0 01-3.71-.99 5.67 5.67 0 00-2.18-.67h-3.23a.83.83 0 01-.65-.32c-.12-.14-1.1-1.47-1.1-4.68-.03-1.81.28-3.62.9-5.32a.83.83 0 01.67-.5c.03 0 3.27-.4 4.85-1.98a10.32 10.32 0 002.8-5.93 1.4 1.4 0 011.45-1.27zm6.84 10.17c0-.34-.52-1-1.75-1h-4.06a.83.83 0 01-.8-1.1c.5-1.5.73-3.07.72-4.65-.08-1.1-.44-1.6-.79-1.72a11.94 11.94 0 01-3.23 6.67c-1.57 1.58-4.2 2.19-5.32 2.38a14.38 14.38 0 00-.61 4.25 8.18 8.18 0 00.56 3.33h2.75c1 .07 1.97.35 2.85.82.94.49 1.98.78 3.04.85h2.85c1.32 0 2.9-.15 2.9-.86a.35.35 0 00-.09-.3.73.73 0 01-.75-.77.92.92 0 01.85-.87c.44 0 .81-.33.85-.77a.65.65 0 00-.17-.6.81.81 0 01-.67-.87.87.87 0 01.86-.78.77.77 0 00.83-.85.8.8 0 00-.87-.85.83.83 0 01-.81-.85c0-.43.33-.78.76-.8.09-.21.12-.43.1-.66z"/>
<path id="def-like-a" d="M701.32 8960.32a.95.95 0 01-.95.95h-5.72c-.96 0-1.92-.95-2.87-.95h-.95v-6.68c.04-.6.4-1.12.95-1.36a4.78 4.78 0 002.87-4.37v-.96a.95.95 0 01.95-.95h.95c.53 0 .95.43.95.95v5.73h3.82a.9.9 0 01.96.96zm-14.31.95v-9.54h1.9a.96.96 0 01.97.95v7.64a.96.96 0 01-.96.95zm.99-8.3a.48.48 0 10.88.38.48.48 0 00-.88-.38z"/>
<path id="def-link-a" d="M626.02 1163.93l-.02 15.99 13.02.01v-4a.86.86 0 01.24-.68.9.9 0 01.66-.28 1 1 0 011 1v4.95a1 1 0 01-.29.7 1 1 0 01-.71.29H625a1 1 0 01-.71-.29 1 1 0 01-.29-.7V1163a1 1 0 011-1h3.95a1 1 0 011 1 .89.89 0 01-.93.93z"/><path id="def-link-b" d="M641.95 1171a1 1 0 01-1-1v-5.59l-9.25 9.3a.99.99 0 01-1.41-.01.99.99 0 01.01-1.41l9.24-9.29h-5.56a1 1 0 01-1-1 1 1 0 011-1h7.97a1 1 0 011 1v8a1 1 0 01-1 1z"/>
<path id="def-mail-a" d="M1058 261c0-.6-.4-1-1-1h-14c-.6 0-1 .4-1 1l8 6.5z"/><path id="def-mail-b" d="M1042 262.5v8.5c0 .6.4 1 1 1h14c.6 0 1-.4 1-1v-8.5l-8 6.5z"/>
<path id="def-outside-a" d="M1204.24 9231.16h-10.05c-.92 0-1.67-.75-1.67-1.68v-4.2c0-.46.38-.84.84-.84a.81.81 0 01.8.84v4.2h10.08v-16.8h-10.08v4.2a.81.81 0 01-.8.84.84.84 0 01-.84-.84v-4.2c0-.93.75-1.68 1.67-1.68h10.05c.92 0 1.67.75 1.67 1.68v16.8c0 .93-.75 1.68-1.67 1.68zm-15.56-10.92h11.37a.84.84 0 110 1.68h-11.36l1.91 1.92a.84.84 0 11-1.18 1.2l-3.35-3.36a.86.86 0 01-.24-.6v-.02a.83.83 0 01.24-.58l3.35-3.36a.83.83 0 011.18 0c.33.33.33.87 0 1.2z"/>
<path id="def-pencil-a" d="M1190.84 9818.68a.64.64 0 01-.19.13l-.07.06-4.42 1.82c-.1.05-.21.07-.32.07a.83.83 0 01-.77-1.15l1.84-4.4v-.02a.38.38 0 01.09-.13l.08-.13v-.01l10.82-10.82-.44-.44-3.56 3.57a.83.83 0 01-1.18-1.18l4.16-4.15a.81.81 0 011.17 0l1.03 1.03 1.86-1.86a.84.84 0 011.17 0l2.58 2.58c.33.32.33.85 0 1.18zm-2.88-1.7l-.58 1.41 1.41-.58zm.88-1.47l1.41 1.4 10.24-10.23-1.4-1.4zm12.69-12.68l-1.27 1.27 1.4 1.4 1.28-1.27z"/>
<path id="def-phone-a" d="M732.62 41c-2.25 0-6.37-2.73-10.24-6.78a33.08 33.08 0 01-5.22-6.96c-1.33-2.53-1.52-4.32-.56-5.31l2.91-2.72c.17-.16.4-.24.63-.23.24.02.46.13.61.32l3.79 4.58c.23.28.28.68.12 1.01l-1.47 3.08 5.24 5.48 2.93-1.54a.83.83 0 01.96.12l4.38 3.96c.17.16.28.38.3.63a.97.97 0 01-.22.67l-2.53 3.02c-.33.34-.81.67-1.63.67zm-14.76-17.78c-.15.21-.25 1.09.83 3.15 1.06 2 2.8 4.32 4.93 6.55 3.87 4.06 7.53 6.25 9 6.25.2 0 .3-.04.33-.08l1.94-2.3-3.27-2.95-2.98 1.56a.84.84 0 01-1.01-.17l-6.12-6.42a.92.92 0 01-.16-1.05l1.48-3.12-2.82-3.42z"/>
<path id="def-plus-a" d="M1223.33 4172.67h-6.66v6.66a.67.67 0 01-1.34 0v-6.66h-6.66a.67.67 0 010-1.34h6.66v-6.66a.67.67 0 011.34 0v6.66h6.66a.67.67 0 010 1.34z"/>
<path id="def-search-a" d="M1092.53 24.87a6.7 6.7 0 10-.05 13.4 6.7 6.7 0 00.05-13.4zm12.1 18.85a.95.95 0 01-1.35 0l-5.4-5.43a8.62 8.62 0 111.35-1.35l5.4 5.43c.37.37.37.98 0 1.35z"/>
<path id="def-shape-a" d="M879 13323h-4a1 1 0 01-1-1v-4a1 1 0 011-1h.85c-1.29-8.14-8.38-15.22-16.85-16.81v.81a1 1 0 01-1 1h-4a1 1 0 01-1-1v-.81c-8.47 1.6-15.56 8.67-16.85 16.81h.85a1 1 0 011 1v4a1 1 0 01-1 1h-4a1 1 0 01-1-1v-4a1 1 0 011-1h1.13c1.03-7.24 6.24-13.76 13.07-17h-6.48a1.98 1.98 0 01-1.72 1.01c-.97 0-1.8-.69-1.98-1.65a2 2 0 011.28-2.23 2 2 0 012.42.87H853v-1a1 1 0 011-1h4a1 1 0 011 1v1h12.27a2.01 2.01 0 110 2h-6.47c6.83 3.24 12.04 9.76 13.07 17H879a1 1 0 011 1v4a1 1 0 01-1 1zm-43-4h-2v2h2zm21-21h-2v2h2zm21 21h-2v2h2zm-22.93-12.51a.52.52 0 01.1-.18l.01-.03.03-.03a1 1 0 01.2-.21l.06-.04c.06-.04.12-.08.19-.1l.04-.02.09-.01.05-.01.16-.03.15.03h.04l.11.01.04.02.19.1.02.02.02.01a.92.92 0 01.24.25l.02.03c.04.05.08.12.1.18l.03.05c.02.07 2.33 7.26 8.51 10.59.26.14.45.39.51.68a.97.97 0 01-.2.82 23.7 23.7 0 00-3.99 8.81 8.02 8.02 0 012.21 5.57 1 1 0 01-1 1h-14a1 1 0 01-1-1 8.02 8.02 0 012.21-5.57 23.66 23.66 0 00-3.99-8.8 1 1 0 01.31-1.51c6.21-3.34 8.49-10.52 8.51-10.59l.03-.04zm.93 20.49a6 6 0 00-5.92 5.02h11.84a6 6 0 00-5.92-5.02zm-4.06-.9a8.17 8.17 0 018.12 0 25.8 25.8 0 013.47-7.78 20.33 20.33 0 01-6.53-6.96v6.93a2 2 0 01-.97 3.73 2.03 2.03 0 01-2.03-2 2 2 0 011-1.7v-6.96a20.33 20.33 0 01-6.53 6.96 25.8 25.8 0 013.47 7.78z"/>
<path id="def-strawberry-a" d="M873.26 13427.96a7.49 7.49 0 01-4.13-1.21 20.45 20.45 0 012.02 8.92c0 10.41-17.26 18.25-28.46 18.25-3.71 0-6.53-.86-8.17-2.48l-.1-.1c-3.9-4.01-2.65-13.97.62-21.78 3.77-9.01 9.53-14.39 15.41-14.39 3.1 0 6.17.68 8.97 1.99a8.12 8.12 0 01-.65-1.24c-1.09-2.7-.53-5.87 1.68-9.44a1 1 0 011.11-.45c.21.06 5.12 1.38 6.8 5.49.8 2.19.7 4.61-.29 6.72 1.25-.51 2.58-.79 3.92-.83 5.12 0 7.74 4.75 8.4 7.26a.97.97 0 01-.45 1.1 12.95 12.95 0 01-6.68 2.19zm-36.36 2.36c-3.42 8.19-3.85 16.84-.97 19.69l.08.09c1.26 1.18 3.62 1.82 6.68 1.82a38.27 38.27 0 0017.26-4.82c3.43-1.92 9.18-5.96 9.18-11.43a18.4 18.4 0 00-18.68-18.5c-5.93 0-10.89 6.79-13.55 13.15zm29.59-18.05c-.97-2.38-3.49-3.6-4.73-4.07-1.52 2.71-1.89 5.05-1.12 6.96.96 2.37 3.48 3.6 4.73 4.08 1.52-2.71 1.89-5.05 1.12-6.97zm5.5 7.13c-1.75.08-3.45.6-4.95 1.51.59 1.54 2.36 5.06 6.22 5.06 1.75-.08 3.45-.6 4.94-1.5-.59-1.55-2.36-5.07-6.21-5.07zm-13.43 13.54h3v3h-3zm-4-5h3v3h-3zm2 13h-3v-3h3zm-7-8h3v3h-3zm0-9h3v3h-3zm2 22h-3v-3h3zm-7-8h3v3h-3zm0-9h3v3h-3zm-5 14h3v3h-3zm0-9h3v3h-3z"/>
<path id="def-telegram-a" d="M823.8 272.93l-4.09 20.05c-.3 1.42-1.16 1.76-2.36 1.1l-6.52-4.77-3.13 3c-.55.47-.75.66-1.27.65-.5 0-.74-.3-1.03-1.1l-2.4-7.29-6.26-1.94c-1.01-.32-1.06-1.66.31-2.05l25.01-9.39c1.14-.52 2.18 0 1.74 1.74zm-17.39 18.55l.6-5.26 11.83-10.54c.31-.36.09-.88-.61-.42l-14.24 8.87z"/>
<path id="def-tm-a" d="M1406.46 346.34l13.28-8.34c.65-.44.86.05.57.39l-11.02 9.91-.57 4.96zm16.84-12.16l-23.32 8.83c-1.27.37-1.24 1.62-.3 1.93l5.84 1.82 2.24 6.86c.28.75.5 1.04.96 1.04.49 0 .67-.18 1.19-.62.58-.55 1.5-1.43 2.92-2.83l6.08 4.49c1.12.62 1.92.3 2.21-1.04l3.8-18.85c.41-1.63-.55-2.12-1.62-1.63z"/>
<path id="def-trash-a" d="M1175 9805h-1.09l-1.8 13.12a2.15 2.15 0 01-2.11 1.88h-8a2.14 2.14 0 01-2.1-1.88l-1.78-13.12H1157a1 1 0 010-2h5v-1a3 3 0 013-3h2a3 3 0 013 3v1h5a1 1 0 010 2zm-7-3a1 1 0 00-1-1h-2a1 1 0 00-1 1v1h4zm-7.87 3l1.75 12.9c.02.05.07.09.12.1h8c.06-.01.1-.05.12-.11l1.78-12.89zm6.87 3h2v6h-2zm-4 0h2v6h-2z"/>
<path id="def-triangle-a" d="M1238 6883l7.22 7.22 7.22-7.22z"/>
<path id="def-user-circle-a" d="M1265.24 30.18a10 10 0 01-2.18 10.9 6.94 6.94 0 00-4.7-4.69 5 5 0 10-4.66.01c-2.24.72-4 2.47-4.72 4.71a10 10 0 1116.26-10.93zm-6.22 1.82a3 3 0 11-6-.01 3 3 0 016 .01zm-8.3 10.48c.4-2.6 2.65-4.5 5.28-4.48 2.73 0 5.1 1.96 5.27 4.37l.03.09a9.9 9.9 0 01-10.57.02zM1256 46a12.01 12.01 0 000-24 12 12 0 100 24z"/>
<path id="def-vb-a" d="M955.45 276.38c.68 3.25.79 6.51-.02 9.76-.14.57-.36 1.11-.58 1.65-.84 2.05-2.5 3.13-4.57 3.73-1.63.48-3.31.69-5 .82-.89.07-2.29.03-3.18.02-.76-.01-.55-.04-1.04.45-.96.97-1.84 1.82-2.76 2.84a28 28 0 01-1.35 1.35v-4.93c0-.25-.07-.4-.3-.5-.26-.1-.5-.24-.75-.34a6.95 6.95 0 01-4.35-4.98 19.93 19.93 0 01-.51-6.16c.07-1.4.26-2.79.64-4.15a6.8 6.8 0 013.48-4.25 13.83 13.83 0 014.79-1.47 25.9 25.9 0 019.8.59 8.9 8.9 0 013.5 1.69 6.59 6.59 0 012.2 3.88zm-12.05-1.52c.54.04 1.07.15 1.6.28 1.98.5 3.52 1.53 4.32 3.43.42.99.63 2.02.7 3.08.02.27.15.42.43.42.27-.01.38-.19.39-.43.02-.21.01-.42.01-.64a7.41 7.41 0 00-1.39-4.12c-1.49-1.96-3.43-2.7-6-2.82-.31-.02-.49.1-.51.42-.01.31.21.36.45.38zm4.39 4.61c.11.4.21.81.26 1.22.03.27-.03.64.42.65.32.01.4-.13.43-.67a4.58 4.58 0 00-.68-2.46c-.96-1.52-2.37-2.16-4.16-2.32-.28-.03-.48.08-.52.37-.05.3.14.44.41.48.55.08 1.08.22 1.6.4a3.32 3.32 0 012.24 2.33zm-2.22-1.46a2.29 2.29 0 00-.89-.22c-.38.03-.58.19-.58.45.01.33.3.33.52.39l.27.06c.72.19 1.13.65 1.27 1.36.03.13.04.27.08.4.06.18.18.31.4.31.21-.01.34-.13.39-.32l.04-.35a2.4 2.4 0 00-1.5-2.08zm4.89 7.94c-.78-.65-1.6-1.25-2.47-1.78-1.02-.62-1.77-.45-2.47.49l-.11.14c-.32.39-.72.54-1.22.4a5.89 5.89 0 01-1.51-.74 6.76 6.76 0 01-2.77-3.19c-.35-.82-.19-1.35.54-1.88l.28-.2c.55-.45.68-.89.37-1.52a9.94 9.94 0 00-2.3-3.05 1.3 1.3 0 00-.97-.36 2.9 2.9 0 00-2.62 2.74c-.01.37.08.78.24 1.17 2.23 5.38 6.16 9.1 11.6 11.36.4.17.82.27 1.25.15a3.75 3.75 0 002.55-2.16c.28-.61.14-1.13-.39-1.57z"/>
<path id="def-ynadex-a" d="M471.93 10326.44h-.59c-.92 0-1.8-.64-1.8-2.24 0-1.67.83-2.35 1.68-2.35h.7v4.59zm.92-5.44h-1.6c-1.55 0-2.87 1.13-2.87 3.33 0 1.32.64 2.3 1.78 2.78l-2.13 3.68c-.07.12 0 .21.1.21h1c.08 0 .14-.03.17-.1l1.93-3.6h.7v3.6c0 .05.04.1.1.1h.86c.08 0 .11-.04.11-.1v-9.77c0-.09-.06-.13-.15-.13z"/>
<path id="def-ytube-a" d="M1343.37 349.72v-9.44l6.27 4.72zm-7.81-14.03a3.54 3.54 0 00-3.56 3.51v11.6a3.54 3.54 0 003.56 3.51h19.88a3.54 3.54 0 003.56-3.5V339.2a3.54 3.54 0 00-3.56-3.51h-19.88z"/>
</defs>
<symbol id="icon-arrow-chevron" viewBox="0 0 9 15"><path d="M7.07.862L0 7.93 7.072 15l1.06-1.06-6.011-6.01L8.13 1.922 7.07.862z"/></symbol>
<symbol id="icon-arrow-down" viewBox="0 0 8 5"><use xlink:href="#def-arrow-down-a" transform="translate(-223 -20813)"/></symbol>
<symbol id="icon-arrow-left" viewBox="0 0 18 12"><path d="M.1 6.3c-.1-.3 0-.6.1-.8l4.3-4.3c.3-.3.7-.3 1 0 .3.3.3.7 0 1l-3 3.1h14.1c.4 0 .7.3.7.7 0 .4-.3.7-.7.7H2.5l3.1 3.1c.3.3.3.8 0 1-.2.2-.3.2-.4.3-.2.1-.5 0-.7-.2L.2 6.6c-.1-.1-.1-.2-.1-.3z"/></symbol>
<symbol id="icon-arrow-menu" viewBox="0 0 10 5"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 0l5 5 5-5H0z"/></symbol>
<symbol id="icon-arrow-right" viewBox="0 0 15 12"><path d="M14.19 5.77c.11.26.05.57-.15.78l-4.32 4.33a.72.72 0 01-1.02 0 .72.72 0 010-1.02l3.09-3.1H.69A.72.72 0 010 6.04c0-.38.31-.7.69-.72h11.1L8.7 2.23a.73.73 0 01.33-1.21c.24-.06.51.01.69.19l4.32 4.32a.6.6 0 01.15.24z"/></symbol>
<symbol id="icon-arrow" viewBox="0 0 20 17"><use xlink:href="#def-arrow-a" transform="translate(-1033 -789)"/></symbol>
<symbol id="icon-be" viewBox="0 0 25 16"><use xlink:href="#def-be-a" transform="translate(-39 -27)"/></symbol>
<symbol id="icon-be2-mob" viewBox="0 0 34 34"><path d="M15.426 16.508s1.507-.112 1.507-1.879S15.7 12 14.138 12H9v9.875h5.138s3.137.099 3.137-2.915c0 0 .137-2.452-1.85-2.452zm-4.162-2.753h2.874s.699 0 .699 1.027c0 1.028-.411 1.177-.877 1.177h-2.696v-2.204zm2.742 6.365h-2.742v-2.64h2.874s1.041-.013 1.041 1.357c0 1.142-.761 1.271-1.173 1.283zM23.408 12.582h-4.074v1.216h4.074v-1.216zM21.458 14.513c-3.797 0-3.794 3.793-3.794 3.793s-.26 3.775 3.794 3.775c0 0 3.38.193 3.38-2.626H23.1s.058 1.062-1.584 1.062c0 0-1.737.116-1.737-1.718h5.116s.56-4.286-3.437-4.286zm1.545 2.968h-3.244s.213-1.522 1.738-1.522 1.506 1.522 1.506 1.522z"/></symbol>
<symbol id="icon-be2" viewBox="0 0 56 56"><path d="M27.475 27.946s1.987-.148 1.987-2.479c0-2.33-1.625-3.467-3.685-3.467H19v13.024h6.777s4.137.13 4.137-3.844c0 0 .18-3.234-2.439-3.234zm-5.489-3.631h3.791s.921 0 .921 1.355-.542 1.551-1.156 1.551h-3.556v-2.906zm3.616 8.394h-3.616v-3.48h3.79s1.374-.018 1.374 1.788c0 1.506-1.004 1.677-1.548 1.692zM38.004 22.767H32.63v1.604h5.373v-1.604zM35.432 25.314c-5.009 0-5.004 5.003-5.004 5.003s-.344 4.98 5.004 4.98c0 0 4.456.254 4.456-3.464h-2.292s.077 1.4-2.088 1.4c0 0-2.291.154-2.291-2.266h6.748s.738-5.653-4.533-5.653zm2.037 3.915H33.19s.28-2.008 2.291-2.008c2.013 0 1.987 2.008 1.987 2.008z"/></symbol>
<symbol id="icon-briefcase" viewBox="834 13519 48 44"><path d="M836.5 13563c-1.4 0-2.5-1.2-2.5-2.6v-19.4c0 .6.4 1 1 1h1v18.4c0 .3.2.6.5.6h42.9c.3 0 .5-.3.5-.6v-18.4h1c.6 0 1-.4 1-1s-.4-1-1-1h-1v-10.4c0-.3-.2-.5-.5-.6h-42.9c-.3 0-.5.3-.5.6v10.4h-1c-.6 0-1 .4-1 1v-11.4c0-1.4 1.1-2.5 2.5-2.6H849v1c0 .6.4 1 1 1s1-.4 1-1v-1h14v1c0 .6.4 1 1 1 .3 0 .5-.1.7-.3.2-.2.3-.4.3-.7v-1h12.5c1.4 0 2.5 1.2 2.5 2.6v30.9c0 1.4-1.1 2.6-2.5 2.6h-43zm18.4-21H836v-2h18.9c.6 0 1 .4 1 1s-.4 1-1 1zm25.1-2v2h-18.9c-.6 0-1-.4-1-1s.4-1 1-1H880zm-13-16.8c0-2.3-1.9-4.2-4.2-4.2h-9.6c-2.3 0-4.2 1.9-4.2 4.2v3.8h2v-3.8c0-1.2 1-2.2 2.2-2.2h9.6c1.2 0 2.2 1 2.2 2.2v3.8h2v-3.8z"/><clipPath id="def-briefcase-b"><use xlink:href="#def-briefcase-a" overflow="visible"/></clipPath><g clip-path="url(#def-briefcase-b)"><path stroke-width="4" stroke-miterlimit="50" d="M855 13538c0-1.7 1.3-3 3-3s3 1.3 3 3v7c0 1.7-1.3 3-3 3s-3-1.3-3-3v-7z"/></g></symbol>
<symbol id="icon-burger" viewBox="0 0 20 14"><g fill-rule="evenodd"><path d="M0 0h20v2H0zM0 6h20v2H0zM0 12h20v2H0z"/></g></symbol>
<symbol id="icon-cancel-circle" viewBox="0 0 24 24"><path d="M12 24a12 12 0 110-24 12 12 0 010 24zm0-22a10 10 0 100 20 10 10 0 000-20zm4.71 13.29L13.41 12l3.3-3.29a1 1 0 00-.02-1.4 1 1 0 00-1.4-.02L12 10.59l-3.29-3.3a1 1 0 00-1.4.02 1 1 0 00-.02 1.4l3.3 3.29-3.3 3.29a1 1 0 00.02 1.4 1 1 0 001.4.02l3.29-3.3 3.29 3.3a1 1 0 001.42 0 1 1 0 000-1.42z"/></symbol>
<symbol id="icon-clip" viewBox="0 0 25 22"><path d="M12.1 21.37a1.02 1.02 0 01-.71-1.73L21.74 9.11a4.19 4.19 0 000-5.87 4.04 4.04 0 00-5.78 0l-12 12.21c-.59.49-.94 1.2-.97 1.97.05.49.28.95.63 1.29.31.35.77.53 1.23.48.74-.17 1.4-.57 1.89-1.15l9.42-9.58a.98.98 0 011.41 0c.39.4.39 1.04 0 1.44l-9.42 9.58A5.3 5.3 0 015.1 21.2a3.37 3.37 0 01-2.89-1.05A4.16 4.16 0 011 17.54a4.62 4.62 0 011.55-3.53l12-12.2a6.03 6.03 0 018.6 0 6.24 6.24 0 010 8.74L12.8 21.07a.98.98 0 01-.7.3z"/></symbol>
<symbol id="icon-clock" viewBox="0 0 24 24"><path d="M0 12a12 12 0 1124 0 12 12 0 01-24 0zm2 0a10 10 0 1020 0 10 10 0 00-20 0zm14 5a1 1 0 00.71-1.71L13 11.59V5a1 1 0 00-1-1 1 1 0 00-1 1v7a1 1 0 00.08.38c.05.12.12.24.21.33l4 4c.19.18.45.29.71.29z"/></symbol>
<symbol id="icon-close-menu" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.636 2.303L13.97.636 8.136 6.469 2.303.636.636 2.303 6.47 8.136.636 13.97l1.667 1.667 5.833-5.833 5.833 5.833 1.667-1.666-5.833-5.834 5.833-5.833z"/></symbol>
<symbol id="icon-close" viewBox="0 0 16 15"><g fill-rule="evenodd"><path d="M1.963.045l13.791 12.86-1.364 1.463L.6 1.508z"/><path d="M14.39.045L.6 12.905l1.364 1.463 13.79-12.86z"/></g></symbol>
<symbol id="icon-comments" viewBox="0 0 16 16"><use xlink:href="#def-comments-a" transform="translate(-748 -8949)"/></symbol>
<symbol id="icon-eaye" viewBox="0 0 16 11"><use xlink:href="#def-eaye-a" transform="translate(-614 -8951)"/></symbol>
<symbol id="icon-fb" viewBox="0 0 13 25"><path d="M8.44 25V13.6h3.83l.58-4.45H8.44V6.31c0-1.28.36-2.16 2.2-2.16H13V.18A29.7 29.7 0 009.57 0c-3.4 0-5.73 2.07-5.73 5.87v3.28H0v4.45h3.84V25z"/></symbol>
<symbol id="icon-fb2-mob" viewBox="0 0 34 34"><path fill-rule="evenodd" clip-rule="evenodd" d="M18.415 24.638v-7.131h2.457l.366-2.784h-2.823v-1.776c0-.8.23-1.351 1.411-1.351h1.514v-2.49A21.931 21.931 0 0019.14 9c-2.182 0-3.677 1.295-3.677 3.672v2.051H13v2.784h2.463v7.13h2.952z"/></symbol>
<symbol id="icon-fb2" viewBox="0 0 56 56"><path fill-rule="evenodd" clip-rule="evenodd" d="M30.142 38.625V29.22h3.24l.483-3.671H30.14v-2.343c0-1.056.305-1.782 1.862-1.782H34V18.14a28.937 28.937 0 00-2.902-.14c-2.877 0-4.849 1.708-4.849 4.843v2.706H23v3.671h3.25v9.405h3.892z"/></symbol>
<symbol id="icon-file" viewBox="0 0 24 20"><use xlink:href="#def-file-a" transform="translate(-491 -9437)"/></symbol>
<symbol id="icon-github-mob" viewBox="0 0 34 34"><path d="M17.2 10c-3.978 0-7.2 3.307-7.2 7.386 0 3.263 2.063 6.031 4.923 7.007.36.07.492-.16.492-.355 0-.175-.006-.64-.009-1.256-2.003.445-2.425-.99-2.425-.99-.328-.853-.801-1.081-.801-1.081-.652-.458.05-.449.05-.449.723.052 1.103.761 1.103.761.642 1.13 1.685.803 2.097.615.065-.478.25-.803.456-.988-1.599-.185-3.28-.82-3.28-3.65 0-.806.28-1.464.741-1.981-.08-.187-.324-.938.063-1.955 0 0 .603-.198 1.98.757a6.754 6.754 0 011.8-.25 6.754 6.754 0 011.8.25c1.368-.955 1.971-.757 1.971-.757.387 1.017.144 1.768.072 1.955.46.517.738 1.175.738 1.981 0 2.838-1.683 3.462-3.285 3.644.252.222.486.674.486 1.366 0 .989-.009 1.783-.009 2.023 0 .193.126.424.495.35 2.881-.969 4.942-3.739 4.942-6.997 0-4.079-3.224-7.386-7.2-7.386z"/></symbol>
<symbol id="icon-github" viewBox="0 0 56 56"><path d="M27.913 19C22.436 19 18 23.362 18 28.741c0 4.305 2.84 7.955 6.778 9.242.496.092.677-.21.677-.468 0-.232-.008-.844-.012-1.657-2.758.588-3.34-1.306-3.34-1.306-.45-1.125-1.102-1.425-1.102-1.425-.898-.604.07-.592.07-.592.995.068 1.518 1.004 1.518 1.004.884 1.49 2.32 1.059 2.887.81.09-.63.344-1.059.628-1.302-2.202-.244-4.515-1.082-4.515-4.814 0-1.063.384-1.932 1.02-2.614-.112-.246-.446-1.236.086-2.578 0 0 .83-.26 2.727.999a9.676 9.676 0 012.478-.329 9.676 9.676 0 012.478.329c1.883-1.26 2.714-.999 2.714-.999.532 1.342.198 2.332.099 2.578a3.737 3.737 0 011.016 2.614c0 3.742-2.317 4.566-4.523 4.805.347.293.67.89.67 1.803 0 1.303-.013 2.35-.013 2.667 0 .255.173.56.681.463 3.966-1.279 6.804-4.932 6.804-9.23 0-5.38-4.439-9.741-9.913-9.741z"/></symbol>
<symbol id="icon-gplus" viewBox="0 0 13 8"><use xlink:href="#def-gplus-a" transform="translate(-466 -10165)"/><use xlink:href="#def-gplus-b" transform="translate(-466 -10165)"/></symbol>
<symbol id="icon-head" viewBox="0 0 54 45"><g transform="translate(2 2)" fill-rule="evenodd"><path d="M9.23 19.458v17.61s14.232 8.328 28.462 0V19.231" fill-rule="nonzero"/><path stroke-width="3" fill-rule="nonzero" stroke-linecap="round" stroke-linejoin="round" d="M46.923 13.25L22.99 0 0 14.007l23.179 13.44L46.923 13.25V30"/><path d="M9.23 19.458v17.61s14.232 8.328 28.462 0V19.231" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><circle stroke-width="3" fill-rule="nonzero" stroke-linecap="round" stroke-linejoin="round" cx="47.308" cy="32.692" r="2.692"/><path d="M32.733 18.745c.53.295 1.074.575 1.604.87 1.302.7 2.468-1.164 1.181-1.865-3.694-1.99-7.403-3.98-11.097-5.957-.53-.294-1.075-.575-1.604-.869-1.302-.7-2.468 1.163-1.181 1.864 3.694 1.99 7.403 3.981 11.097 5.957zM36.733 15.745c.53.295 1.074.575 1.604.87 1.302.7 2.468-1.164 1.181-1.865a4281.61 4281.61 0 00-11.097-5.957c-.53-.294-1.075-.575-1.604-.869-1.302-.7-2.468 1.163-1.181 1.864 3.694 1.99 7.403 3.981 11.097 5.957z" fill-rule="nonzero"/></g></symbol>
<symbol id="icon-inst" viewBox="0 0 26 26"><use xlink:href="#def-inst-a" transform="translate(-1468 -332)"/><use xlink:href="#def-inst-b" transform="translate(-1468 -332)"/><use xlink:href="#def-inst-c" transform="translate(-1468 -332)"/></symbol>
<symbol id="icon-instagram-mob" viewBox="0 0 34 34"><path fill-rule="evenodd" clip-rule="evenodd" d="M24.027 20.23a3.801 3.801 0 01-3.797 3.797h-6.433A3.801 3.801 0 0110 20.23v-6.433A3.801 3.801 0 0113.797 10h6.433a3.801 3.801 0 013.797 3.797v6.433zm-7.014-7.052a3.84 3.84 0 00-3.835 3.835 3.84 3.84 0 003.835 3.836 3.84 3.84 0 003.836-3.836 3.84 3.84 0 00-3.836-3.835zm0 6.848A3.016 3.016 0 0114 17.013 3.016 3.016 0 0117.013 14a3.016 3.016 0 013.013 3.013 3.016 3.016 0 01-3.013 3.013zm2.794-7.077c0-.625.509-1.133 1.133-1.133.625 0 1.134.508 1.134 1.133s-.509 1.134-1.134 1.134a1.135 1.135 0 01-1.133-1.134z"/></symbol>
<symbol id="icon-instagram" viewBox="0 0 56 56"><path fill-rule="evenodd" clip-rule="evenodd" d="M37.5 32.492a5.014 5.014 0 01-5.008 5.008h-8.484A5.014 5.014 0 0119 32.492v-8.484A5.014 5.014 0 0124.008 19h8.484a5.014 5.014 0 015.008 5.008v8.484zm-9.25-9.3a5.064 5.064 0 00-5.058 5.058c0 2.79 2.269 5.059 5.058 5.059 2.79 0 5.059-2.27 5.059-5.059 0-2.79-2.27-5.058-5.059-5.058zm0 9.032a3.978 3.978 0 01-3.974-3.974 3.978 3.978 0 013.974-3.974 3.978 3.978 0 013.974 3.974 3.978 3.978 0 01-3.974 3.974zm3.685-9.334c0-.825.67-1.495 1.494-1.495.825 0 1.495.67 1.495 1.495 0 .824-.67 1.495-1.495 1.495-.824 0-1.494-.67-1.494-1.495z"/></symbol>
<symbol id="icon-like-down" viewBox="0 0 20 22"><use xlink:href="#def-like-down-a" transform="translate(-995 -522)"/></symbol>
<symbol id="icon-like-up" viewBox="0 0 20 22"><use xlink:href="#def-like-up-a" transform="translate(-934 -520)"/></symbol>
<symbol id="icon-like" viewBox="0 0 16 16"><use xlink:href="#def-like-a" transform="translate(-687 -8946)"/></symbol>
<symbol id="icon-link" viewBox="0 0 19 21"><use xlink:href="#def-link-a" transform="translate(-624 -1161)"/><use xlink:href="#def-link-b" transform="translate(-624 -1161)"/></symbol>
<symbol id="icon-mail" viewBox="0 0 16 12"><use xlink:href="#def-mail-a" transform="translate(-1042 -260)"/><use xlink:href="#def-mail-b" transform="translate(-1042 -260)"/></symbol>
<symbol id="icon-minus-zoom" viewBox="0 0 26 2"><path stroke-linecap="square" stroke-miterlimit="50" stroke-width="2" d="M1.5 1h23.19"/></symbol>
<symbol id="icon-outside" viewBox="0 0 21 21"><use xlink:href="#def-outside-a" transform="translate(-1185 -9211)"/></symbol>
<symbol id="icon-pencil" viewBox="0 0 20 21"><use xlink:href="#def-pencil-a" transform="translate(-1185 -9800)"/></symbol>
<symbol id="icon-phone" viewBox="0 0 21 22"><use xlink:href="#def-phone-a" transform="translate(-716 -19)"/></symbol>
<symbol id="icon-play-circle" viewBox="0 0 24 24"><path d="M12 24a12 12 0 110-24 12 12 0 010 24zM2 12a10 10 0 1020 0 10 10 0 00-20 0z"/><path d="M11.01 14.52c-.05.28.1.55.35.67.25.13.55.07.74-.14l2.85-2.94c.26-.27.27-.7.02-.98l-2.83-2.94a.69.69 0 00-.75-.13.67.67 0 00-.38.65z"/></symbol>
<symbol id="icon-play-reviews" viewBox="0 0 9 9"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.074 4.507c0 .41-.745.741-.745.741l-5.854 2.91a.619.619 0 01-.563-.054.649.649 0 01-.294-.494V1.392A.586.586 0 01.895.853a.557.557 0 01.595.01l5.839 2.903s.745.331.745.741z"/></symbol>
<symbol id="icon-play" viewBox="0 0 17 17"><path d="M17 9.02c0 .88-1.6 1.59-1.6 1.59L2.84 16.86c-.4.16-.84.12-1.21-.12A1.4 1.4 0 011 15.68V2.33c-.03-.47.2-.92.6-1.16.39-.24.89-.23 1.27.02L15.4 7.43s1.6.71 1.6 1.59z"/></symbol>
<symbol id="icon-plus-zoom" viewBox="0 0 24 24"><path d="M23 13H13v10a1 1 0 01-1 1 1 1 0 01-1-1V13H1a1 1 0 01-1-1 1 1 0 011-1h10V1a1 1 0 011-1 1 1 0 011 1v10h10a1 1 0 011 1 1 1 0 01-1 1z"/></symbol>
<symbol id="icon-plus" viewBox="0 0 16 16"><use xlink:href="#def-plus-a" transform="translate(-1208 -4164)"/></symbol>
<symbol id="icon-search" viewBox="0 0 22 22"><use xlink:href="#def-search-a" transform="translate(-1083 -22)"/></symbol>
<symbol id="icon-shape" viewBox="0 0 48 38"><use xlink:href="#def-shape-a" transform="translate(-832 -13296)"/></symbol>
<symbol id="icon-share" viewBox="0 0 26 24"><path d="M21.03 8a3.95 3.95 0 01-3.02-1.41l-9.08 4.54c.12.55.13 1.11.02 1.66l9.06 4.61a3.98 3.98 0 11-.9 1.79l-9.05-4.61a4 4 0 11-.05-5.22l9.1-4.55A4 4 0 1121.03 8zm0 14a2 2 0 002-2 2 2 0 10-2 2zm-18-10a2 2 0 104 0 2 2 0 00-4 0zm16-8a2 2 0 104 0 2 2 0 00-4 0z"/></symbol>
<symbol id="icon-smile" viewBox="0 0 23 24"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.5 23.278c-6.351 0-11.5-5.148-11.5-11.5C0 5.427 5.149.278 11.5.278S23 5.427 23 11.778c-.005 6.35-5.15 11.495-11.5 11.5zm0-21.083a9.583 9.583 0 00-9.583 9.583 9.584 9.584 0 1019.167 0A9.599 9.599 0 0011.5 2.195zm-6.613 12.87a7.38 7.38 0 006.613 4.38 7.333 7.333 0 006.613-4.38.957.957 0 00-.93-1.427.96.96 0 00-.796.603 5.277 5.277 0 01-9.774 0 .959.959 0 00-1.726.824zm10.447-3.287a1.917 1.917 0 110-3.833 1.917 1.917 0 010 3.833zM5.75 9.862a1.917 1.917 0 103.833 0 1.917 1.917 0 00-3.833 0z"/></symbol>
<symbol id="icon-socials" viewBox="0 0 40 40"><g fill-rule="evenodd"><circle cx="20" cy="20" r="20"/><path d="M20.021 31h-.485C13.717 31 9 26.08 9 20.009c0-6.07 4.717-10.991 10.536-10.991.309-.024.619-.024.928 0 5.819 0 10.536 4.92 10.536 10.99C31 26.08 26.283 31 20.464 31h-.443zm0-2.198h.316c4.655 0 8.43-3.937 8.43-8.793s-3.775-8.793-8.43-8.793h-.632c-4.655 0-8.43 3.937-8.43 8.793s3.775 8.793 8.43 8.793h.316z"/><path d="M19.382 31C13.648 31 9 26.08 9 20.009c0-6.07 4.648-10.991 10.382-10.991.305-.024.61-.024.914 0 .252.02.488.138.665.33 5.385 5.95 5.385 15.338 0 21.29a.998.998 0 01-1.142.252.992.992 0 01-.437.11zm.322-19.784h-.238c-4.588 0-8.306 3.937-8.306 8.793s3.718 8.793 8.306 8.793a.981.981 0 01.26 0c4.23-5.007 4.23-12.58 0-17.586h-.022z" clip-rule="evenodd"/><path d="M19.91 30.967a1.101 1.101 0 01-.419-.077 1.101 1.101 0 01-1.21-.253c-5.708-5.95-5.708-15.337 0-21.288a1.1 1.1 0 01.704-.33 6.664 6.664 0 011.012 0C26.074 9.02 31 13.94 31 20.01S26.074 31 19.997 31l-.088-.033zm-.353-19.783a13.177 13.177 0 000 17.585c.091-.012.184-.012.275 0 4.861 0 8.802-3.936 8.802-8.792s-3.94-8.793-8.802-8.793h-.275z" clip-rule="evenodd"/><path d="M27.944 17H11.056C10.473 17 10 16.552 10 16s.473-1 1.056-1h16.888c.583 0 1.056.448 1.056 1s-.473 1-1.056 1zM27.944 25H11.056C10.473 25 10 24.552 10 24s.473-1 1.056-1h16.888c.583 0 1.056.448 1.056 1s-.473 1-1.056 1z"/></g></symbol>
<symbol id="icon-strawberry" viewBox="0 0 49 48"><use xlink:href="#def-strawberry-a" transform="translate(-832 -13406)"/></symbol>
<symbol id="icon-telegram" viewBox="0 0 29 24"><use xlink:href="#def-telegram-a" transform="translate(-795 -271)"/></symbol>
<symbol id="icon-telegram2-mob" viewBox="0 0 34 34"><path d="M14.95 19.329l-.25 3.528c.358 0 .514-.154.7-.34l1.683-1.607 3.486 2.553c.64.356 1.09.168 1.263-.588L24.12 12.15c.204-.946-.341-1.316-.964-1.084l-13.452 5.15c-.918.357-.904.869-.156 1.1l3.44 1.07 7.988-4.998c.375-.25.717-.112.436.137L14.95 19.33z"/></symbol>
<symbol id="icon-telegram2" viewBox="0 0 56 56"><path d="M25.848 30.985l-.331 4.653c.473 0 .678-.203.924-.447l2.22-2.121 4.598 3.367c.843.47 1.437.223 1.665-.776l3.018-14.143.001-.001c.268-1.247-.45-1.734-1.272-1.428L18.929 26.88c-1.211.47-1.193 1.145-.206 1.451l4.536 1.411 10.536-6.593c.495-.328.946-.146.575.182l-8.522 7.653z"/></symbol>
<symbol id="icon-tm" viewBox="0 0 26 22"><use xlink:href="#def-tm-a" transform="translate(-1399 -334)"/></symbol>
<symbol id="icon-trash" viewBox="0 0 20 21"><use xlink:href="#def-trash-a" transform="translate(-1156 -9799)"/></symbol>
<symbol id="icon-triangle" viewBox="0 0 16 8"><use xlink:href="#def-triangle-a" transform="translate(-1237 -6883)"/></symbol>
<symbol id="icon-tw" viewBox="0 0 18 15"><path d="M18 1.75c-.66.3-1.37.5-2.12.59A3.7 3.7 0 0017.5.27c-.71.43-1.5.74-2.34.91a3.68 3.68 0 00-6.39 2.56c0 .3.03.58.09.85A10.45 10.45 0 011.25.69 3.75 3.75 0 002.4 5.68a3.67 3.67 0 01-1.68-.47v.05a3.75 3.75 0 002.97 3.67 3.51 3.51 0 01-1.67.06 3.7 3.7 0 003.45 2.6A7.33 7.33 0 010 13.14a10.37 10.37 0 005.66 1.68c6.79 0 10.51-5.7 10.51-10.64l-.01-.49A7.35 7.35 0 0018 1.76z"/></symbol>
<symbol id="icon-twitter-mob" viewBox="0 0 34 34"><path d="M24.406 12.386a6.16 6.16 0 01-1.702.466 2.937 2.937 0 001.3-1.632c-.572.34-1.202.58-1.873.715a2.952 2.952 0 00-5.109 2.02c0 .233.02.458.068.672a8.36 8.36 0 01-6.087-3.089 2.957 2.957 0 00.908 3.947 2.917 2.917 0 01-1.335-.363v.032a2.967 2.967 0 002.366 2.902c-.24.066-.502.097-.774.097-.189 0-.38-.01-.56-.05a2.981 2.981 0 002.76 2.057 5.934 5.934 0 01-3.661 1.26c-.242 0-.475-.011-.707-.04a8.314 8.314 0 004.53 1.325c5.435 0 8.406-4.502 8.406-8.404 0-.13-.004-.257-.01-.382a5.89 5.89 0 001.48-1.533z"/></symbol>
<symbol id="icon-twitter" viewBox="0 0 56 56"><path d="M38 21.828c-.707.31-1.46.515-2.244.615a3.874 3.874 0 001.713-2.153 7.783 7.783 0 01-2.47.943 3.894 3.894 0 00-6.738 2.664c0 .308.026.605.09.887a11.025 11.025 0 01-8.028-4.074 3.922 3.922 0 00-.533 1.969 3.9 3.9 0 001.73 3.237 3.847 3.847 0 01-1.76-.48v.043a3.913 3.913 0 003.12 3.827 3.887 3.887 0 01-1.02.129c-.25 0-.502-.015-.738-.067.505 1.543 1.937 2.677 3.64 2.714a7.827 7.827 0 01-4.83 1.66c-.32 0-.626-.013-.932-.052a10.966 10.966 0 005.976 1.748c7.167 0 11.086-5.938 11.086-11.085a9.95 9.95 0 00-.014-.503A7.77 7.77 0 0038 21.828z"/></symbol>
<symbol id="icon-user-circle" viewBox="0 0 24 24"><use xlink:href="#def-user-circle-a" transform="translate(-1244 -22)"/></symbol>
<symbol id="icon-vb" viewBox="0 0 25 27"><use xlink:href="#def-vb-a" transform="translate(-931 -270)"/></symbol>
<symbol id="icon-view-list" viewBox="0 0 15 15"><path d="M0 6V0h15v6zm0 9V9h15v6z"/></symbol>
<symbol id="icon-view-tile" viewBox="0 0 15 15"><path d="M0 6V0h6v6zm9 0V0h6v6zm0 9V9h6v6zm-9 0V9h6v6z"/></symbol>
<symbol id="icon-vk" viewBox="0 0 22 14"><path d="M10.61 13.8h1.3s.39-.04.59-.27c.19-.2.18-.59.18-.59s-.02-1.8.78-2.07c.8-.26 1.82 1.75 2.91 2.52.81.58 1.44.46 1.44.46l2.89-.05s1.52-.09.8-1.33c-.06-.1-.42-.92-2.15-2.59-1.82-1.75-1.58-1.47.61-4.5 1.33-1.84 1.87-2.97 1.7-3.45-.16-.46-1.14-.34-1.14-.34l-3.26.02s-.24-.03-.42.08-.29.36-.29.36-.52 1.43-1.2 2.64c-1.46 2.57-2.04 2.7-2.27 2.54-.56-.37-.42-1.49-.42-2.28 0-2.49.36-3.52-.71-3.79A5.26 5.26 0 0010.43 1c-1.16-.01-2.15.01-2.7.29-.38.19-.66.61-.49.63.22.03.71.14.97.51.33.47.32 1.53.32 1.53s.19 2.92-.45 3.29c-.44.25-1.04-.26-2.34-2.59-.66-1.19-1.16-2.5-1.16-2.5s-.1-.25-.27-.38c-.21-.16-.5-.21-.5-.21l-3.1.02s-.47.01-.64.22c-.15.19-.01.58-.01.58s2.43 5.89 5.17 8.87c2.52 2.72 5.38 2.54 5.38 2.54z"/></symbol>
<symbol id="icon-vk2-mob" viewBox="0 0 34 34"><path fill-rule="evenodd" clip-rule="evenodd" d="M16.79 21.913h.947a.77.77 0 00.436-.201.795.795 0 00.13-.459s-.016-1.399.573-1.608c.588-.209 1.336 1.351 2.13 1.954.297.259.68.383 1.063.346l2.123-.032s1.116-.073.589-1.03a7.642 7.642 0 00-1.582-2.002c-1.337-1.35-1.153-1.134.451-3.473.978-1.424 1.367-2.3 1.245-2.67a.866.866 0 00-.832-.257l-2.4.016a.463.463 0 00-.305.056.702.702 0 00-.214.282 15.134 15.134 0 01-.886 2.042c-1.062 1.978-1.49 2.082-1.665 1.962-.405-.29-.306-1.15-.306-1.77 0-1.913.268-2.717-.511-2.926a4.053 4.053 0 00-1.123-.12 4.804 4.804 0 00-1.987.225c-.275.144-.48.466-.351.49.273.03.524.167.703.386.165.37.246.774.237 1.182 0 0 .145 2.26-.329 2.54-.32.194-.764-.2-1.719-1.993a17.581 17.581 0 01-.848-1.938.803.803 0 00-.198-.29.84.84 0 00-.367-.16l-2.276.016a.723.723 0 00-.466.169.581.581 0 00-.016.442s1.788 4.559 3.805 6.859c.99 1.217 2.427 1.931 3.95 1.962z"/></symbol>
<symbol id="icon-vk2" viewBox="0 0 56 56"><path fill-rule="evenodd" clip-rule="evenodd" d="M28.274 34.074h1.25c.213-.024.413-.117.574-.265.117-.177.177-.39.172-.605 0 0-.02-1.845.755-2.12.776-.276 1.763 1.78 2.811 2.576.391.342.895.506 1.4.456l2.802-.042s1.47-.096.775-1.358a10.079 10.079 0 00-2.085-2.64c-1.763-1.782-1.522-1.495.594-4.582 1.29-1.877 1.804-3.033 1.642-3.52a1.143 1.143 0 00-1.098-.34l-3.163.021a.61.61 0 00-.403.075.925.925 0 00-.282.37 19.972 19.972 0 01-1.17 2.694c-1.4 2.61-1.964 2.747-2.196 2.588-.534-.382-.403-1.516-.403-2.333 0-2.524.353-3.584-.675-3.86a5.345 5.345 0 00-1.48-.16 6.336 6.336 0 00-2.62.298c-.363.19-.635.615-.464.646.36.039.691.221.927.51.218.487.325 1.02.312 1.558 0 0 .192 2.98-.433 3.352-.423.254-1.007-.265-2.267-2.63a23.184 23.184 0 01-1.118-2.556 1.06 1.06 0 00-.262-.382 1.109 1.109 0 00-.484-.212l-3.002.021a.953.953 0 00-.615.223.767.767 0 00-.02.583s2.358 6.013 5.018 9.046c1.305 1.606 3.2 2.548 5.209 2.588z"/></symbol>
<symbol id="icon-yandex" viewBox="0 0 5 11"><path d="M4.847 0H3.259C1.7 0 .376 1.169.376 3.438c0 1.36.64 2.364 1.783 2.86L.028 10.092c-.07.123 0 .22.111.22h.99c.083 0 .139-.028.166-.097L3.231 6.49h.697v3.726c0 .041.041.097.097.097h.864c.083 0 .111-.042.111-.11V.138C5 .04 4.944 0 4.847 0zm-.92 5.61h-.584c-.92 0-1.81-.66-1.81-2.31 0-1.719.835-2.42 1.684-2.42h.71v4.73z" fill-rule="nonzero"/></symbol>
<symbol id="icon-ynadex" viewBox="0 0 5 10"><use xlink:href="#def-ynadex-a" transform="translate(-468 -10321)"/></symbol>
<symbol id="icon-ytube" viewBox="0 0 27 20"><use xlink:href="#def-ytube-a" transform="translate(-1332 -335)"/></symbol>
</svg>
<div class="header-banner topBanner" data-type="header" style="display: block; position: sticky; top: 0; z-index: 999;">
<a data-source="218273" data-banner="226288" class="universal-notice js-universal-notice-notice universal-notice--webp universal-notice--bitrix universal-notice--active" href="https://skillbox.ru/sale/main/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_banners_header_all_all_skillbox" target="_blank" style="--banner-bg: #5927E9;--banner-color: #fff;--button-font-color: #000000;--button-bg-color: #FFFFFF;--banner-img-left: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_left/602754/f9ac17dd-a1d4-46c6-aa14-4f7b949defd1.png);--banner-img-left-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_left/602754/f9ac17dd-a1d4-46c6-aa14-4f7b949defd1.webp);--banner-img-center: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.png);--banner-img-center-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.webp);--banner-img-center-mobile: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.png);--banner-img-center-mobile-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_center/602507/232fc4a5-b130-4af2-a629-bdb293a4dd2e.webp);--banner-img-right: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_right/602755/ad7a7fe5-b8d3-47a3-885b-51a7971c12a9.png);--banner-img-right-webp: url(https://cdn.skillbox.pro/mainsite/banners/promo_picture_right/602755/ad7a7fe5-b8d3-47a3-885b-51a7971c12a9.webp);">
<span class="universal-notice__wrapper">
<b class="universal-notice__title">
Скидка до 55% и 3 курса в подарок
</b>
<span class="universal-timer js-universal-notice-timer js-universal-notice-active">
<span class="universal-timer__days js-universal-notice-days">2 дня</span>
<span class="js-universal-notice-hours">13</span>
:<span class="js-universal-notice-minutes">30</span>
:<span class="js-universal-notice-seconds">09</span>
</span>
<span class="universal-notice__button">Выбрать курс</span>
</span>
</a><script>
document.addEventListener('DOMContentLoaded', () => {
// Установите конечную дату
const deadline = new Date();
deadline.setDate(5);
deadline.setHours(0, 0, 0);
// Найдите элементы DOM
var timer = document.querySelector('.universal-timer');
const elDays = timer.querySelector('.js-universal-notice-days');
const elHours = timer.querySelector('.js-universal-notice-hours');
const elMinutes = timer.querySelector('.js-universal-notice-minutes');
const elSeconds = timer.querySelector('.js-universal-notice-seconds');
// Функция обновления таймера
const updateTimer = () => {
const now = new Date();
let diff = Math.max(0, deadline - now);
if (diff === 0) {
let lastDayOfMonth = new Date(now.getFullYear(), now.getMonth() + 1, 0);
let lastDay = lastDayOfMonth.getDate();
if (lastDay - now.getDate() < 4) {
deadline.setMonth(deadline.getMonth() + 1, 1);
} else {
deadline.setDate(deadline.getDate() + 4);
}
diff = Math.max(0, deadline - now);
}
// Time calculations for days, hours, minutes and seconds
var days = Math.floor(diff / (1000 * 60 * 60 * 24));
var hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)).toString();
var minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60)).toString();
var seconds = Math.floor((diff % (1000 * 60)) / 1000).toString();
if (timer) {
let dayTitles = ['день', 'дня', 'дней'];
let daySuffix = dayTitles[(days % 100 > 4 && days % 100 < 20) ? 2 : [2, 0, 1, 1, 1, 2][days % 10 < 5 ? days % 10 : 5]]
elDays.innerHTML = days + ' ' + daySuffix;
elHours.innerHTML = hours.padStart(2, '0');
elMinutes.innerHTML = minutes.padStart(2, '0');
elSeconds.innerHTML = seconds.padStart(2, '0');
}
};
updateTimer();
const timerId = setInterval(updateTimer, 1000);
});
</script>
<style>@font-face{font-display:swap;font-family:Graphik;font-weight:500;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Medium.woff2) format("woff2")}@font-face{font-display:swap;font-family:Graphik;font-weight:700;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Bold.woff2) format("woff2")}.universal-notice{position:sticky;z-index:5;top:0;box-sizing:border-box;text-decoration:none;display:none;justify-content:space-between;overflow:hidden;color:var(--banner-color);background-color:var(--banner-bg);font-family:Graphik,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:opacity .25s ease-in-out}.universal-notice--active{display:flex}.universal-notice--bitrix{z-index:1000}.universal-notice *,.universal-notice ::after,.universal-notice ::before{box-sizing:inherit}.universal-notice::after,.universal-notice::before{display:none;width:194px;height:56px;content:"";background-size:194px 56px;background-repeat:no-repeat}.universal-notice--no-webp::before{background-image:var(--banner-img-left)}.universal-notice--no-webp::after{background-image:var(--banner-img-right)}.universal-notice--webp::before{background-image:var(--banner-img-left-webp)}.universal-notice--webp::after{background-image:var(--banner-img-right-webp)}.universal-notice--new-design{position:static;margin:4px;border-radius:16px}.universal-notice--new-design::after,.universal-notice--new-design::before{width:166px;height:48px;background-size:166px 48px}.universal-notice__wrapper{display:grid;grid-template-columns:1fr auto;align-items:center;grid-gap:12px;padding:12px;width:100%}.universal-notice--new-design .universal-notice__wrapper::after{height:48px}.universal-notice__title{font-weight:500;font-size:15px;line-height:16px}.universal-notice--new-design .universal-notice__title{font-size:14px;line-height:15px}.universal-timer{display:none;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:500;font-size:24px;line-height:26px}.universal-notice--new-design .universal-timer{font-size:22px;line-height:24px}.universal-timer__days{margin-right:8px}.universal-notice__button{grid-column:2/3;padding:6px 16px;border-radius:6px;color:var(--button-font-color);background-color:var(--button-bg-color);font-weight:500;font-size:14px;line-height:20px}.universal-notice-sticky{position:fixed;z-index:5;top:0;left:0;width:100%;padding:11px 8px;color:var(--banner-color);background-color:var(--banner-bg);text-align:center;transition:transform .3s ease-in-out;will-change:transform;transform:translateY(-200%)}.universal-notice-sticky--show{transform:translateY(0)}@media (min-width:360px) and (max-width:0px){.universal-notice__wrapper{padding:0 12px;grid-template-columns:1fr 56px auto}.universal-notice__wrapper::after{grid-column:2/3;grid-row:1/2;width:100%;height:56px;background-size:cover;background-repeat:no-repeat;content:""}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 48px auto}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile-webp)}.universal-notice__button{grid-column:3/4}}@media (min-width:360px){.universal-notice__wrapper{padding:0 12px;grid-template-columns:1fr 56px auto}.universal-notice__wrapper::after{grid-column:2/3;grid-row:1/2;width:100%;height:56px;background-size:cover;background-repeat:no-repeat;content:""}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 48px auto}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-mobile-webp)}.universal-notice__button{grid-column:3/4}}@media (min-width:768px){.universal-notice::before{background-position:right center;flex-shrink:0;display:block}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-webp)}}@media (min-width:768px) and (max-width:0px){.universal-notice::before{background-position:right center;flex-shrink:0;display:block}.universal-notice--no-webp .universal-notice__wrapper::after{background-image:var(--banner-img-center)}.universal-notice--webp .universal-notice__wrapper::after{background-image:var(--banner-img-center-webp)}}@media (min-width:1024px){.universal-notice::after,.universal-notice::before{width:250px;height:72px;background-size:250px 72px}.universal-notice--new-design{height:64px;border-radius:32px}.universal-notice--new-design::after,.universal-notice--new-design::before{width:226px;height:64px;background-size:226px 64px}.universal-notice__wrapper{grid-template-columns:1fr 72px auto;grid-gap:24px;padding-right:16px;padding-left:24px}.universal-notice__wrapper::after{height:72px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px auto}.universal-notice--new-design .universal-notice__wrapper::after{height:64px}.universal-notice__title{font-size:24px;line-height:26px}.universal-notice--new-design .universal-notice__title{font-size:22px;line-height:24px}.universal-notice__button{padding:10px 24px;border-radius:8px}.universal-notice-sticky{padding:14px 24px}}@media (min-width:1024px) and (max-width:0px){.universal-notice::after,.universal-notice::before{width:250px;height:72px;background-size:250px 72px}.universal-notice--new-design{height:64px;border-radius:32px}.universal-notice--new-design::after,.universal-notice--new-design::before{width:226px;height:64px;background-size:226px 64px}.universal-notice__wrapper{grid-template-columns:1fr 72px auto;grid-gap:24px;padding-right:16px;padding-left:24px}.universal-notice__wrapper::after{height:72px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px auto}.universal-notice--new-design .universal-notice__wrapper::after{height:64px}.universal-notice__title{font-size:24px;line-height:26px}.universal-notice--new-design .universal-notice__title{font-size:22px;line-height:24px}.universal-notice__button{padding:10px 24px;border-radius:8px}.universal-notice-sticky{padding:14px 24px}}@media (min-width:1280px){.universal-notice::before{flex-shrink:1}.universal-notice::after{background-position:left center;display:block}.universal-notice__wrapper{grid-template-columns:1fr 72px minmax(202px,auto) auto;min-width:940px;max-width:1020px;padding-right:24px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px minmax(202px,auto) auto}.universal-timer.js-universal-notice-active{display:flex}.universal-notice__timer-nuxt{display:flex}.universal-notice__button{grid-column:4/5}}@media (min-width:1280px) and (max-width:0px){.universal-notice::before{flex-shrink:1}.universal-notice::after{background-position:left center;display:block}.universal-notice__wrapper{grid-template-columns:1fr 72px minmax(202px,auto) auto;min-width:940px;max-width:1020px;padding-right:24px}.universal-notice--new-design .universal-notice__wrapper{grid-template-columns:1fr 64px minmax(202px,auto) auto}.universal-timer.js-universal-notice-active{display:flex}.universal-notice__timer-nuxt{display:flex}.universal-notice__button{grid-column:4/5}}@media (min-width:1400px) and (max-width:0px){.universal-notice::before{flex-shrink:0}.universal-notice::after{flex-shrink:0}}@media (min-width:1400px){.universal-notice::before{flex-shrink:0}.universal-notice::after{flex-shrink:0}}</style> </div>
<script>
document.addEventListener("DOMContentLoaded", function(event) {
window.TopBanner = true;
});
$(document).ready(function () {
$.ajax({
url: '/local/ajax/advert.php',
type: 'POST',
data: {
'type': 'top-banner-show',
'id': 226288,
'section_id': 0,
},
success: function (result) {
}
});
});
$(document).on('click', '.header-banner', function () {
$.ajax({
url: '/local/ajax/advert.php',
type: 'POST',
data: {
'type': 'top-banner-click',
'id': 226288,
'section_id': 0,
},
success: function (result) {
}
});
var page = window.location;
var $article = $('section[data-article-text]');
var pageId = $article.data('articleid');
if(pageId === undefined)
{
pageId = 0;
}
window.dataLayer.push({
'event': 'go_to_course',
'courseID': 226288,
'page': page,
'pageID': pageId
});
});
</script>
<header class="header">
<div id="menu" class="header__wrapper container">
<div class="header__logo link-active">
<a href="/media/" class="header__media-main-link">
<img src="/local/templates/media/images/logo/skillbox-media.svg" alt="Skillbox"/>
</a>
<a href="/media/gamedev/" class="header__media-category-link">
<span class="header__media-category js-category ">Геймдев</span>
</a>
</div>
<a href="/media/about-media/" v-if="!isMobile" rel="nofollow" class="menu-nav__link menu-nav__link--about" target="_blank" style="display: none">
Про медиа
</a>
<button v-if="!isMobile" v-show="!isMobile" rel="nofollow" class="toggle-menu header__toggle toggle-menu--course"
@click="openCourseMenu()"
:class="{ 'toggle-menu--active': isOpenCourseMenu }"
style="display: none">
Онлайн-курсы
<svg width="13" height="12" viewBox="0 0 13 12" fill="none" xmlns="http://www.w3.org/2000/svg"
:class="{
'animated-chevron--default': isOpenCourseMenu,
'animated-chevron--active animated-chevron--default': ! isOpenCourseMenu
}"
class="animated-chevron toggle-menu__arrow select-arrow select-arrow--small">
<line x1="6.48415" y1="5.92242" x2="11.4909" y2="10.9291" stroke="currentColor" stroke-width="1.78"
class=" animated-chevron__line animated-chevron__line1 animated-chevron__line1--default"></line>
<line x1="6.3701" y1="5.9224" x2="11.3768" y2="0.915678" stroke="currentColor" stroke-width="1.78"
class="animated-chevron__line"></line>
<line x1="1.36337" y1="10.9291" x2="6.3701" y2="5.9224" stroke="currentColor" stroke-width="1.78"
class="animated-chevron__line animated-chevron__line2 animated-chevron__line2--default"></line>
<line x1="1.47743" y1="0.915681" x2="6.48415" y2="5.9224" stroke="currentColor" stroke-width="1.78"
class="animated-chevron__line"></line>
</svg>
</button>
<a href="https://skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=button_main_skillbox&utm_term=mainskillbox" v-if="!isMobile" v-show="!isMobile" rel="nofollow" class="menu-nav__link menu-nav__link-ml0 menu-nav__link--main" target="_blank" style="display: none">
Главная Skillbox
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.9375 10.0618L9.9161 4.08203" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3.93811 3.93665H10.0631V10.0616" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
<div v-if="isOpenCourseMenu && !isMobile" class="menu-block menu-block--desktop" @click="closeCourseMenu($event)" style="display: none">
<div class="menu-block__wrapper menu-block__wrapper--desktop">
<div class="menu-block__content vue-container">
<span class="menu-block__title">
Направления обучения
</span>
<ul class="menu-directions menu-block__direction">
<li class="menu-directions__item">
<a href="https://skillbox.ru/courses/?utm_source=media&utm_medium=button&utm_campaign=button_courses_all&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="All directions">
Все направления
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/code/?utm_source=media&utm_medium=button&utm_campaign=button_courses_code&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Code">
Программирование
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/design/?utm_source=media&utm_medium=button&utm_campaign=button_courses_design&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Design">
Дизайн
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/management?utm_source=media&utm_medium=button&utm_campaign=button_courses_management&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Management">
Управление
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/marketing?utm_source=media&utm_medium=button&utm_campaign=button_courses_marketing&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Marketing">
Маркетинг
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/games?utm_source=media&utm_medium=button&utm_campaign=button_courses_games&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="GameDev">
Игры
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/multimedia?utm_source=media&utm_medium=button&utm_campaign=button_courses_multimedia&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="">
Кино и Музыка
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/psychology?utm_source=media&utm_medium=button&utm_campaign=button_courses_psychology&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Психология
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/health?utm_source=media&utm_medium=button&utm_campaign=button_courses_health&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Здоровье
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/spo/?utm_source=media&utm_medium=button&utm_campaign=button_courses_spo&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Цифровой колледж
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/general-development/?utm_source=media&utm_medium=button&utm_campaign=button_courses_general-development&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Education">
Общее развитие
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/engineering/?utm_source=media&utm_medium=button&utm_campaign=button_courses_engineering&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="engineering">
Инженерия
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/english/?utm_source=media&utm_medium=button&utm_campaign=button_courses_english&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="english">
Английский язык
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/other/?utm_source=media&utm_medium=button&utm_campaign=button_courses_other&utm_term=button" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Other">
Другое
</a>
</li>
</ul>
</div>
</div>
</div>
<div v-show="isOpenMenu" class="menu-block" @click="closeMenu($event)" style="display: none">
<div class="menu-block__wrapper">
<div class="menu-block__content vue-container">
<h2 class="menu-block__header">Редакции</h2>
<div class="tab-nav" data-tab-parent="" data-action="index">
<div class="tab-nav__item">
<a class="" data-tab-name="media_nav" data-section-id="0" data-code="All directions" href="/media/">
<img src="/local/templates/media/images/common/menu-icon-mobile-1.png" alt=""/>
Все
</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="/media/topic/history/">
<img src="/local/templates/media/images/common/menu-icon-mobile-19.png"
alt=""/>
Истории</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="8"
data-code="Design"
href="/media/design/">
<img src="/local/templates/media/images/common/menu-icon-mobile-2.png" alt=""/>
Дизайн</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="10"
data-code="Code"
href="/media/code/">
<img src="/local/templates/media/images/common/menu-icon-mobile-3.png" alt=""/>
Код</a>
</div>
<div class="tab-nav__item">
<a class="tab-active"
data-tab-name="media_nav"
data-section-id="18"
data-code="GameDev"
href="/media/gamedev/">
<img src="/local/templates/media/images/common/menu-icon-mobile-4.png" alt=""/>
Геймдев</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="21"
data-code="Business"
href="/media/business/">
<img src="/local/templates/media/images/common/menu-icon-mobile-9.png" alt=""/>
Бизнес</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="9"
data-code="Marketing"
href="/media/marketing/">
<img src="/local/templates/media/images/common/menu-icon-mobile-5.png" alt=""/>
Маркетинг</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="11"
data-code=""
href="/media/management/">
<img src="/local/templates/media/images/common/menu-icon-mobile-6.png" alt=""/>
Управление</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="29"
data-code=""
href="/media/cinemusic/">
<img src="/local/templates/media/images/common/menu-icon-mobile-22.png" alt=""/>
Кино</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="36"
data-code=""
href="/media/music/">
<img src="/local/templates/media/images/common/menu-icon-mobile-23.png" alt=""/>
Музыка</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="34"
data-code=""
href="/media/photo/">
<img src="/local/templates/media/images/common/menu-icon-mobile-20.png" alt=""/>
Проектная фотография</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="17"
data-code="Development"
href="/media/growth/">
<img src="/local/templates/media/images/common/menu-icon-mobile-7.png" alt=""/>
Развитие</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="33"
data-code=""
href="/media/health/">
<img src="/local/templates/media/images/common/menu-icon-mobile-16.png" alt=""/>
Здоровье</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="32"
data-code=""
href="/media/money/">
<img src="/local/templates/media/images/common/menu-icon-mobile-17.png" alt=""/>
Деньги</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="22"
data-code="Education"
href="/media/education/">
<img src="/local/templates/media/images/common/menu-icon-mobile-8.png" alt=""/>
Образование</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="31"
data-code=""
href="/media/edtech/">
<img src="/local/templates/media/images/common/menu-icon-mobile-11.png" alt=""/>
EdTech</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="30"
data-code=""
href="/media/corptrain/">
<img src="/local/templates/media/images/common/menu-icon-mobile-10.png" alt=""/>
Корп. обучение</a>
</div>
<div class="tab-nav__item">
<a class=""
data-tab-name="media_nav"
data-section-id="35"
data-code=""
href="/media/skillbox-blog/">
<img src="/local/templates/media/images/common/menu-icon-mobile-21.png" alt=""/>
Блог Skillbox</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="https://skillbox.ru/media/glossary/">
<img src="/local/templates/media/images/common/menu-icon-mobile-18.png"
alt=""/>
Глоссарий</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="/media/topic/specials/">
<img src="/local/templates/media/images/common/menu-icon-mobile-13.png"
alt=""/>
Спецпроекты</a>
</div>
<div class="tab-nav__item tab-nav__item--custom tab-nav__item--spec"
data-nav-parent-item>
<a
data-tab-name="media_nav"
data-code=""
href="https://skillbox.ru/course/career-guide-free/">
<img src="/local/templates/media/images/common/menu-icon-mobile-15.png"
alt=""/>
Профориентация</a>
</div>
</div>
<h2 class="menu-block__header">Онлайн-курсы</h2>
<ul class="menu-directions menu-block__direction">
<li class="menu-directions__item">
<a href="https://skillbox.ru/courses/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="All directions">
Все направления
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/code/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Code">
Программирование
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/design/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Design">
Дизайн
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/marketing/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Marketing">
Маркетинг
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/management/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Management">
Управление
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/games/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="GameDev">
Игры
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/multimedia/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="">
Мультимедиа
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/psychology/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Development">
Психология
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/general-development/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Education">
Общее развитие
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/engineering/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="engineering">
Инженерия
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/english/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="english">
Английский язык
</a>
</li>
<li class="menu-directions__item">
<a href="https://skillbox.ru/other/" target="_blank"
class="ui-tab ui-tab--link menu-directions__tab ui-tab--small"
data-code="Other">
Другое
</a>
</li>
</ul>
<a href="/media/about-media/" rel="nofollow" class="menu-nav__link">
Про медиа
</a>
<a href="https://skillbox.ru/" rel="nofollow" class="menu-nav__link">
Главная Skillbox
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.9375 10.0618L9.9161 4.08203" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3.93811 3.93665H10.0631V10.0616" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
</div>
</div>
</div>
<button v-if="isMobile" class="menu-toggle"
@click="openMenu()"
:class="{ 'menu-toggle--opened': isOpenMenu }" style="opacity: 0">
<span v-if="isOpenMenu" class="menu-toggle__line"></span>
<svg v-if="!isOpenMenu" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24 5.5H0V4H24V5.5ZM24 11.5H0V13H24V11.5ZM24 19H0V20.5H24V19Z" fill="black"/>
</svg>
</button>
</div>
<script>
BX.Vue.create({
el: '#menu',
data: {
isOpenMenu: false,
isOpenCourseMenu: false,
isMobile: false,
isSubOpen: false,
display: 'none'
},
computed: {
isMobile() {
const w = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;
return w < 1024;
}
},
methods: {
openMenu() {
this.isOpenMenu = !this.isOpenMenu;
document.getElementsByTagName('body')[0].classList.toggle('scroll-locked');
window.addEventListener('keyup', this.closeMenu);
},
closeMenu(event) {
if (event.target.classList.contains('menu-block') || event.keyCode === 27) {
this.isOpenMenu = false;
document.getElementsByTagName('body')[0].classList.remove('scroll-locked');
window.removeEventListener('keyup', this.closeMenu);
}
},
openCourseMenu() {
this.isOpenCourseMenu = !this.isOpenCourseMenu;
if (this.isOpenCourseMenu) {
document.getElementsByTagName('body')[0].classList.add('scroll-locked');
window.addEventListener('keyup', this.closeCourseMenu);
} else {
document.getElementsByTagName('body')[0].classList.remove('scroll-locked');
window.removeEventListener('keyup', this.closeCourseMenu);
}
},
closeCourseMenu(event) {
if (event.target.classList.contains('menu-block') || event.keyCode === 27) {
this.isOpenCourseMenu = false;
document.getElementsByTagName('body')[0].classList.remove('scroll-locked');
window.removeEventListener('keyup', this.closeCourseMenu);
}
},
openSub() {
this.isSubOpen = !this.isSubOpen;
},
isMobileFn() {
const w = window.innerWidth
|| document.documentElement.clientWidth
|| document.body.clientWidth;
this.isMobile = (w < 1024);
}
},
created() {
window.addEventListener("resize", this.isMobileFn);
document.querySelector('.menu-block').style.display = '';
document.querySelector('.menu-toggle').style.opacity = '1';
document.querySelector('.menu-nav__link').style.display = '';
this.display = 'block';
this.isMobileFn();
},
destroyed() {
window.removeEventListener("resize", this.isMobileFn);
}
});
</script>
</header>
<main class="content">
<div class="page style-update">
<div class="page-wrap">
<style>
.article-inner .rr-widget__title {
padding-top: 0 !important;
}
.article-inner div[data-retailrocket-markup-block] {
margin-top: -32px;
display: none;
}
.article-inner {
font-family: 'Graphik';
}
</style>
<div class="under_header_banner" data-type="under_header"><!-- Yandex.RTB R-A-13443663-10 -->
<div id="yandex_rtb_R-A-13443663-10"></div>
<script>
window.yaContextCb.push(() => {
Ya.Context.AdvManager.render({
"blockId": "R-A-13443663-10",
"renderTo": "yandex_rtb_R-A-13443663-10"
})
})
</script>
</div> <div data-area="article" data-title="Как программируют поведение стай и толп в играх — алгоритм boids и другие подходы / Skillbox Media" class=" noFullClass">
<div class="article-inner">
<section class="top-section-detail-page ">
<div class="container">
<div class="article-preview-info">
<div class="article-preview-info__tags ">
<div class="tag article-preview-info__tag">
<a href="/media/gamedev/"
class="tag-item university">
Геймдев </a>
</div>
</div>
<a class="info-hashtag article-preview-info__hashtag" href="/media/topic/articles/">
#статьи </a>
<ul class="info article-preview__info-box">
<li class="info-item"> <time class="info-text" datatime="#">21 фев 2024</time></li>
<li class="info-item hidden">
<span class="info-icon"><img src="/local/templates/media/images/icons/like.svg" alt=""></span>
<span class="info__text js-article-like-value">0</span>
</li>
</ul>
</div>
<div class="row">
<div class="top-section-detail-page__title-block col-xl-9 col-lg-10">
<div class="article-preview">
<h1 class="article-preview__title">Стаи и толпы в играх: как программируют реалистичное стайное поведение</h1>
<p class="article-preview__description">Изучаем, на какие ухищрения шли разработчики, чтобы большие скопления NPC и животных выглядели убедительно.</p>
</div>
</div>
</div>
</div>
</section>
<section data-article-text
data-articleId="218273"
data-courseId="3367"
>
<div class="container">
<noindex>
<div class="share" data-nosnippet>
<button class="share__handler-btn ">
<span class="share__handler-icon">
<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 4.99902L6 0V2.99805C2.688 2.99805 0 5.68505 0 8.99805V11.498H0.0980225C0.765022 8.91205 3.107 6.99805 5.901 6.99805H6.00098V9.99805L11 4.99902Z" fill="currentColor"/>
</svg>
</span>
<span class="share__handler-text">Поделиться</span>
</button>
<div class="share__list">
<a href="#" class="share__item" data-code="vk">
<span class="share__item-icon share__item-icon--vk">
<svg width="9" height="5" viewBox="0 0 9 5" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.04776 4.98054H4.53996C4.62377 4.97136 4.70279 4.9361 4.76621 4.87951C4.81226 4.81209 4.83594 4.73139 4.83369 4.64925C4.83369 4.64925 4.82574 3.94629 5.1314 3.84125C5.43701 3.73621 5.826 4.51998 6.23879 4.82297C6.39281 4.95308 6.59128 5.01558 6.79053 4.99669L7.89399 4.98054C7.89399 4.98054 8.47355 4.94415 8.19965 4.46339C7.98372 4.08315 7.70589 3.743 7.37799 3.45744C6.68338 2.77872 6.77865 2.8878 7.61219 1.71216C8.12024 0.997077 8.32269 0.556717 8.25918 0.370875C8.14651 0.254767 7.98299 0.205914 7.82655 0.241594L6.58018 0.249674C6.52565 0.241067 6.46984 0.251007 6.42141 0.277954C6.37298 0.314507 6.33466 0.363228 6.31025 0.419356C6.18259 0.772814 6.0287 1.11586 5.8498 1.44552C5.29807 2.43936 5.07579 2.49188 4.98451 2.43128C4.77416 2.28584 4.82574 1.85356 4.82574 1.54248C4.82574 0.580957 4.96468 0.176954 4.55979 0.0719133C4.36879 0.0254376 4.17259 0.00505841 3.97631 0.0113129C3.62834 -0.0214164 3.27745 0.017045 2.94429 0.124433C2.8014 0.197154 2.69423 0.358753 2.76171 0.370875C2.90334 0.385518 3.03406 0.454932 3.12688 0.564795C3.21268 0.750336 3.25481 0.953675 3.24993 1.15868C3.24993 1.15868 3.32535 2.29392 3.07925 2.43532C2.91254 2.53228 2.68232 2.33432 2.18616 1.4334C2.01958 1.11848 1.87243 0.793298 1.74557 0.459754C1.72231 0.404013 1.68704 0.354309 1.64236 0.314316C1.58589 0.272672 1.52066 0.245006 1.45184 0.233514L0.268986 0.241594C0.181167 0.241154 0.0958013 0.271066 0.0268587 0.326434C-0.00595087 0.396174 -0.00882613 0.476652 0.0189202 0.548633C0.0189202 0.548633 0.947737 2.83932 1.99563 3.99477C2.51 4.60651 3.2568 4.96526 4.04776 4.98054Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Vkontakte</span>
</a>
<a href="#" class="share__item" data-code="tw">
<span class="share__item-icon share__item-icon--tw">
<svg width="9" height="7" viewBox="0 0 9 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.52788 0.00144284V0H5.9158L6.05754 0.027414C6.15204 0.0452114 6.23783 0.068535 6.31491 0.0973918C6.39201 0.126249 6.46661 0.159917 6.53872 0.198391C6.61083 0.236864 6.67623 0.276066 6.73492 0.315982C6.79311 0.355422 6.84533 0.397265 6.89158 0.441509C6.93733 0.486237 7.0087 0.49778 7.10568 0.476138C7.20266 0.454495 7.3071 0.424433 7.419 0.38596C7.5309 0.347487 7.64156 0.304201 7.75097 0.256104C7.86039 0.208007 7.92703 0.177469 7.95091 0.164484C7.97428 0.151022 7.98671 0.143808 7.98821 0.142841L7.98969 0.140677L7.99715 0.13707L8.00461 0.133463L8.01207 0.129856L8.01953 0.126249L8.02102 0.124084L8.02326 0.122642L8.02551 0.121199L8.02699 0.119034L8.03445 0.11687L8.04191 0.115427L8.04043 0.126249L8.03818 0.13707L8.03445 0.147891L8.03072 0.158713L8.02699 0.165927L8.02326 0.173141L8.01953 0.183962C8.01705 0.191176 8.01456 0.200793 8.01207 0.212819C8.00959 0.224845 7.98596 0.272935 7.9412 0.357103C7.89644 0.441271 7.84049 0.526637 7.77335 0.613208C7.70621 0.699778 7.64604 0.765182 7.59283 0.809434C7.53911 0.854162 7.50355 0.885421 7.48614 0.903219C7.46874 0.921492 7.4476 0.938323 7.42273 0.953718L7.38543 0.977525L7.37797 0.981132L7.37051 0.984739L7.36902 0.986903L7.36678 0.988346L7.36454 0.989789L7.36305 0.991953L7.35559 0.99556L7.34813 0.999168L7.34664 1.00133L7.3444 1.00277L7.34216 1.00422L7.34067 1.00638L7.33918 1.00855L7.33694 1.00999L7.3347 1.01143L7.33321 1.0136H7.37051L7.57939 0.970311C7.71865 0.941454 7.85168 0.906588 7.9785 0.865705L8.17992 0.800777L8.2023 0.793563L8.21349 0.789956L8.22095 0.786348L8.22841 0.782741L8.23587 0.779134L8.24333 0.775527L8.25825 0.773363L8.27317 0.77192V0.786348L8.26944 0.787791L8.26571 0.789956L8.26423 0.79212L8.26198 0.793563L8.25974 0.795006L8.25825 0.79717L8.25677 0.799334L8.25452 0.800777L8.25228 0.80222L8.25079 0.804384L8.24931 0.806548L8.24706 0.807991L8.24333 0.815205L8.2396 0.82242L8.23736 0.823862C8.23637 0.825305 8.20479 0.866181 8.14262 0.946504C8.08046 1.0273 8.04689 1.06818 8.04191 1.06915C8.03694 1.07059 8.02997 1.0778 8.02102 1.09079C8.01257 1.10425 7.95985 1.15788 7.86287 1.25166C7.76589 1.34545 7.67091 1.42889 7.57791 1.502C7.48441 1.57558 7.43716 1.666 7.43616 1.77325C7.43467 1.88002 7.42895 2.00074 7.419 2.13541C7.40905 2.27007 7.3904 2.41555 7.36305 2.57186C7.3357 2.72817 7.29342 2.90492 7.23623 3.10211C7.17904 3.29929 7.10941 3.49168 7.02735 3.67925C6.94529 3.86681 6.8595 4.03514 6.76998 4.18424C6.68046 4.33334 6.5984 4.45958 6.5238 4.56299C6.4492 4.66639 6.37336 4.76378 6.29626 4.85516C6.21918 4.94654 6.12171 5.04947 6.00384 5.16393C5.88547 5.27791 5.82082 5.34044 5.80988 5.3515C5.79844 5.36208 5.74971 5.40152 5.66365 5.46981C5.57812 5.53858 5.48611 5.60736 5.38763 5.67614C5.28966 5.74443 5.19964 5.80143 5.11758 5.84711C5.03552 5.8928 4.93655 5.94498 4.82067 6.00366C4.70529 6.06282 4.58046 6.11765 4.44618 6.16815C4.3119 6.21865 4.17016 6.26554 4.02096 6.30882C3.87176 6.35211 3.72753 6.38578 3.58827 6.40982C3.44903 6.43387 3.29112 6.45431 3.11456 6.47114L2.84973 6.49639V6.5H2.36483V6.49639L2.30142 6.49279C2.25915 6.49038 2.22433 6.48797 2.19698 6.48557C2.16963 6.48317 2.06643 6.46994 1.88739 6.44589C1.70835 6.42185 1.56785 6.3978 1.4659 6.37375C1.36395 6.34971 1.21225 6.30401 1.01083 6.23668C0.809413 6.16935 0.637087 6.10129 0.493854 6.03252C0.351121 5.96422 0.261601 5.92094 0.225293 5.90266C0.189485 5.88487 0.149201 5.86275 0.10444 5.83629L0.0373001 5.79661L0.0358156 5.79445L0.0335701 5.79301L0.0313321 5.79156L0.0298401 5.7894L0.0223801 5.78579L0.0149201 5.78219L0.0134355 5.78002L0.01119 5.77858L0.00895204 5.77714L0.00746003 5.77497L0.00597548 5.77281L0.00373001 5.77137H0V5.75694L0.00746003 5.75838L0.0149201 5.76054L0.0484902 5.76415C0.0708703 5.76655 0.131796 5.77016 0.231261 5.77497C0.330733 5.77978 0.436412 5.77978 0.548312 5.77497C0.660213 5.77016 0.774605 5.75934 0.891474 5.74251C1.00835 5.72568 1.14636 5.69682 1.30551 5.65594C1.46466 5.61505 1.61087 5.56648 1.74416 5.51021C1.87695 5.45346 1.97144 5.41114 2.02764 5.38324C2.08334 5.35583 2.16838 5.30484 2.28277 5.2303L2.45435 5.11848L2.45584 5.11632L2.45808 5.11487L2.46033 5.11343L2.46181 5.11127L2.4633 5.1091L2.46554 5.10766L2.46779 5.10622L2.46927 5.10405L2.47673 5.10189L2.48419 5.10044L2.48568 5.09323L2.48792 5.08602L2.49017 5.08457L2.49165 5.08241L2.43197 5.0788C2.39219 5.0764 2.35364 5.07399 2.31634 5.07159C2.27904 5.06918 2.2206 5.05836 2.14103 5.03912C2.06146 5.01988 1.97567 4.99103 1.88366 4.95255C1.79165 4.91408 1.70213 4.86838 1.6151 4.81548C1.52807 4.76258 1.46515 4.71857 1.42636 4.68346C1.38807 4.64883 1.33833 4.59978 1.27716 4.53629C1.21648 4.47233 1.16376 4.40668 1.119 4.33934C1.07424 4.27202 1.03148 4.19433 0.990699 4.10633L0.928774 3.97503L0.925044 3.96421L0.921314 3.95339L0.919076 3.94617L0.917584 3.93896L0.928774 3.9404L0.939964 3.94256L1.02202 3.95339C1.07674 3.9606 1.16253 3.963 1.27939 3.9606C1.39627 3.9582 1.47709 3.95339 1.52185 3.94617C1.56661 3.93896 1.59396 3.93414 1.60391 3.93174L1.61883 3.92814L1.63748 3.92453L1.65613 3.92092L1.65762 3.91876L1.65986 3.91731L1.6621 3.91587L1.66359 3.91371L1.64867 3.9101L1.63375 3.90649L1.61883 3.90289L1.60391 3.89928L1.58899 3.89567C1.57904 3.89327 1.56164 3.88846 1.53677 3.88124C1.5119 3.87403 1.44476 3.84757 1.33535 3.80189C1.22594 3.7562 1.1389 3.71171 1.07424 3.66842C1.00943 3.62501 0.947626 3.57754 0.889235 3.5263C0.831047 3.47436 0.767145 3.40751 0.697513 3.32575C0.627888 3.24399 0.565724 3.149 0.511012 3.04079C0.456308 2.93257 0.415277 2.82917 0.387922 2.73058C0.360676 2.63256 0.3427 2.53235 0.334217 2.43119L0.320781 2.27969L0.328241 2.28113L0.335701 2.2833L0.343161 2.2869L0.350621 2.29051L0.358081 2.29412L0.365541 2.29772L0.481172 2.34822C0.558264 2.38189 0.653998 2.41075 0.768383 2.43479C0.882775 2.45884 0.951154 2.47207 0.973534 2.47447L1.0071 2.47808H1.07424L1.07276 2.47592L1.07051 2.47447L1.06828 2.47303L1.06678 2.47087L1.0653 2.4687L1.06305 2.46726L1.06082 2.46582L1.05932 2.46365L1.05186 2.46004L1.0444 2.45644L1.04292 2.45427L1.04067 2.45283L1.03844 2.45139L1.03694 2.44922L1.02948 2.44562L1.02202 2.44201L1.02054 2.43984C1.01905 2.43888 0.99766 2.42349 0.956376 2.39367C0.915592 2.36337 0.872823 2.32418 0.828063 2.27608C0.783303 2.22798 0.738543 2.17749 0.693783 2.12458C0.64894 2.07156 0.609 2.01483 0.574422 1.95505C0.539614 1.89493 0.502806 1.81846 0.464014 1.72564C0.425721 1.6333 0.396627 1.54023 0.376731 1.44645C0.356843 1.35266 0.345653 1.26008 0.343161 1.1687C0.340677 1.07732 0.343161 0.999168 0.350621 0.93424C0.358081 0.869312 0.373001 0.795965 0.395382 0.714206C0.417762 0.632448 0.450093 0.545877 0.492362 0.454495L0.555772 0.317425L0.559502 0.306604L0.563232 0.295782L0.565478 0.29434L0.566962 0.292175L0.568454 0.290011L0.570692 0.288568L0.572938 0.290011L0.574422 0.292175L0.575914 0.29434L0.578152 0.295782L0.580398 0.297225L0.581882 0.29939L0.583374 0.301554L0.585612 0.302997L0.589342 0.310211L0.593072 0.317425L0.595318 0.318868L0.596802 0.321032L0.697513 0.429245C0.764653 0.501387 0.844229 0.581948 0.936234 0.670921C1.02825 0.759894 1.07922 0.806065 1.08916 0.809434C1.09912 0.813279 1.11154 0.824338 1.12646 0.842619C1.14138 0.860417 1.19112 0.902981 1.27567 0.970311C1.36022 1.03764 1.47087 1.1158 1.60764 1.20477C1.74441 1.29375 1.89609 1.38152 2.0627 1.46809C2.22931 1.55466 2.40835 1.63281 2.59982 1.70255C2.7913 1.77229 2.92558 1.81798 3.00266 1.83962C3.07975 1.86127 3.21154 1.88892 3.39804 1.92259C3.58454 1.95625 3.72505 1.9779 3.81954 1.98751C3.91403 1.99713 3.97869 2.00266 4.0135 2.00411L4.06572 2.00555L4.06423 1.99473L4.06199 1.98391L4.04707 1.89373C4.03712 1.83361 4.03215 1.74944 4.03215 1.64123C4.03215 1.53302 4.04085 1.43322 4.05826 1.34184C4.07567 1.25046 4.10178 1.15788 4.13659 1.0641C4.1714 0.970311 4.20547 0.895038 4.23879 0.838291C4.27261 0.78202 4.31687 0.717814 4.37158 0.645671C4.42629 0.573529 4.49716 0.498985 4.58419 0.422031C4.67122 0.345077 4.77069 0.276542 4.88259 0.216426C4.99449 0.15631 5.09769 0.110615 5.19218 0.0793563C5.28668 0.0480971 5.36625 0.0276521 5.4309 0.0180355C5.49556 0.00841898 5.52788 0.00288568 5.52788 0.00144284Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Twitter</span>
</a>
<a href="#" class="share__item" data-code="tg">
<span class="share__item-icon share__item-icon--tg">
<svg width="10" height="7" viewBox="0 0 10 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.39589 3.04852C1.39589 3.04852 5.05491 1.51189 6.32392 0.9708C6.8104 0.754384 8.46012 0.0617918 8.46012 0.0617918C8.46012 0.0617918 9.22155 -0.241191 9.15809 0.494655C9.13692 0.797667 8.96773 1.85815 8.79854 3.00523C8.54472 4.62846 8.26976 6.40316 8.26976 6.40316C8.26976 6.40316 8.22746 6.90097 7.86791 6.98753C7.50836 7.0741 6.91613 6.68455 6.8104 6.59795C6.72577 6.53304 5.22411 5.5591 4.6742 5.08295C4.52614 4.9531 4.35695 4.6934 4.69533 4.39039C5.45676 3.67617 6.36622 2.78882 6.91613 2.2261C7.16995 1.96638 7.42374 1.36038 6.36622 2.09622C4.86456 3.15674 3.38403 4.15231 3.38403 4.15231C3.38403 4.15231 3.04561 4.36873 2.41111 4.17394C1.77657 3.97918 1.03631 3.71945 1.03631 3.71945C1.03631 3.71945 0.528726 3.39481 1.39589 3.04852Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Telegram</span>
</a>
<a href="#" class="share__item js-share-item-copy">
<span class="share__item-icon share__item-icon--copy">
<svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.19922 5.40327C4.37217 5.63449 4.59283 5.8258 4.84622 5.96425C5.09962 6.10269 5.37982 6.18501 5.66783 6.20564C5.95584 6.22627 6.24492 6.18471 6.51546 6.08379C6.78599 5.98287 7.03166 5.82495 7.2358 5.62074L8.44399 4.41255C8.81079 4.03277 9.01375 3.52412 9.00917 2.99615C9.00458 2.46818 8.79281 1.96313 8.41946 1.58978C8.04611 1.21644 7.54106 1.00466 7.01309 1.00008C6.48512 0.995488 5.97647 1.19845 5.59669 1.56525L4.904 2.25392" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.81002 4.59658C5.63707 4.36536 5.41641 4.17404 5.16302 4.0356C4.90962 3.89716 4.62942 3.81483 4.34141 3.79421C4.0534 3.77358 3.76432 3.81514 3.49379 3.91605C3.22325 4.01697 2.97758 4.17489 2.77344 4.3791L1.56525 5.58729C1.19845 5.96707 0.995488 6.47572 1.00008 7.0037C1.00466 7.53167 1.21644 8.03672 1.58978 8.41006C1.96313 8.78341 2.46818 8.99518 2.99615 8.99977C3.52412 9.00436 4.03277 8.80139 4.41255 8.43459L5.10122 7.74592" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
<span class="share__item-text">Скопировать ссылку</span>
</a>
</div>
</div> <!-- //share -->
</noindex>
<div class="row">
<div class="col-xl-9 col-lg-8 col-poster">
<div class="article-poster">
<picture >
<img src="https://248006.selcdn.ru/main/iblock/914/91496d81233f66d3ff41f558dabe2f98/f40721e882b78e9356a7b3fcdb298812.png" itemprop='image' class='hidden-xs' />
</picture> <picture >
<img src="https://248006.selcdn.ru/main/iblock/914/91496d81233f66d3ff41f558dabe2f98/f40721e882b78e9356a7b3fcdb298812.png" itemprop='image' class='visible-xs' />
</picture> </div>
<noindex>
<p class="article-poster-text" data-nosnippet>
Иллюстрация: Assassin’s Creed Unity / Ubisoft Montreal / A Plague Tale: Innocence / Asobo Studio / AI and Games / Colowgee для Skillbox Media </p>
</noindex>
</div>
<div class="col-xl-3 col-lg-4 col-author">
<div class="article-author">
<div class="article-author__image">
<a href="/media/authors/danil-svechkov/">
<img src="https://248006.selcdn.ru/main/iblock/806/8062b01ccd930029ca655123cb4d5b10/e1d8396a8150329d077b361e7295fe6c.png" alt="Данил Свечков">
</a>
</div>
<div class="article-author__info">
<div class="article-author__name">
Данил Свечков </div>
<div class="article-author__description">
<a href="https://hmason.itch.io/"><span style="color: #0000ff;"><u>Делает игры</u></span></a> на Unity, пишет статьи про геймдев. Всё ещё ждёт, когда выпустят No One Lives Forever 3. </div>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row flex-row-rev">
<div class="col-xl-3 col-lg-4 col-author">
<div class="js-article-banner" data-article-banner-mobile data-type="side_mounted" data-article-banner-sticky-start>
<!--AdFox START-->
<!--yandex_skillbox.media-->
<!--Площадка: Skillbox / Сквозной для застройщика Легенда / Боковой баннер сквозной для застройщика Легенда-->
<!--Категория: <не задана>-->
<!--Тип баннера: Media banner-->
<div id="adfox_176131540100027244"></div>
<script>
window.yaContextCb.push(()=>{
Ya.adfoxCode.create({
ownerId: 11649869,
containerId: 'adfox_176131540100027244',
params: {
p1: 'dkugb',
p2: 'p'
}
})
})
</script> </div>
<div class="js-article-banner" data-article-banner-mobile data-type="vertical" data-article-banner-sticky-end></div>
</div>
<div class="col-xl-9 col-lg-8 col-poster">
<div class="container container--setka">
<div class="js-article-banner" data-type="top"></div>
<div class="article-detail-text__setka" data-detail-text>
<div class="stk-post stk-layout_12col_18068 stk-theme_26309" data-stk="{"images":[{"id":73951,"alt":"","caption":""},{"id":73954,"alt":"","caption":""},{"id":73952,"alt":"","caption":""},{"id":73949,"alt":"","caption":""},{"id":73948,"alt":"","caption":""},{"id":73946,"alt":"","caption":""},{"id":73945,"alt":"","caption":""},{"id":73944,"alt":"","caption":""},{"id":73947,"alt":"","caption":""},{"id":73942,"alt":"","caption":""},{"id":73936,"alt":"","caption":""},{"id":73940,"alt":"","caption":""},{"id":73943,"alt":"","caption":""},{"id":73941,"alt":"","caption":""},{"id":73938,"alt":"","caption":""},{"id":73937,"alt":"","caption":""},{"id":73939,"alt":"","caption":""},{"id":73933,"alt":"","caption":""},{"id":73934,"alt":"","caption":""},{"id":73953,"alt":"","caption":""},{"id":73929,"alt":"","caption":""},{"id":73930,"alt":"","caption":""},{"id":73931,"alt":"","caption":""},{"id":73932,"alt":"","caption":""},{"id":73955,"alt":"","caption":""},{"id":73923,"alt":"","caption":""},{"id":73928,"alt":"","caption":""},{"id":73925,"alt":"","caption":""},{"id":73927,"alt":"","caption":""},{"id":73922,"alt":"","caption":""},{"id":73921,"alt":"","caption":""},{"id":73950,"alt":"","caption":""},{"id":73920,"alt":"","caption":""},{"id":73919,"alt":"","caption":""},{"id":73926,"alt":"","caption":""},{"id":73918,"alt":"","caption":""},{"id":73917,"alt":"","caption":""},{"id":73916,"alt":"","caption":""},{"id":73924,"alt":"","caption":""},{"id":73935,"alt":"","caption":""}]}" data-ui-id="post" data-ce-tag="post" data-reset-type="class" data-layout-type="auto" data-editor-version="3.2.8-rc1"><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset" data-ce-tag="paragraph">В видеоиграх при создании реально больших скоплений существ или NPC нельзя просто запрограммировать логику поведения одного из них, а потом напичкать локацию его клонами. Игра захлебнётся тормозами, пытаясь провести вычисления для каждого. Поэтому разработчикам приходится идти на определённые хитрости, которые позволяют повысить производительность, но при этом выдают максимально естественный результат. Рассмотрим, как они добиваются этого.</p><figure class="stk-code_keep-ratio stk-reset stk-embed_rendered" data-embed-link="https://youtu.be/AuTXezCj5Gc" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:75.00%"><iframe class="embedly-embed" src="//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FAuTXezCj5Gc%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DAuTXezCj5Gc&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FAuTXezCj5Gc%2Fhqdefault.jpg&key=8d3909c69dfb4ee29c710191d8dd756a&type=text%2Fhtml&schema=youtube" width="640" height="480" scrolling="no" title="YouTube embed" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description">Алгоритм Boids в действии. Сделано на основе реализации алгоритма для Unity блогером <a href="https://www.youtube.com/@SuboptimalEng" target="_blank" class="stk-reset">SuboptimalEng</a></figcaption></figure></div></div><div class="stk-grid stk-grid__layout_columns" data-stk-css="stkAMqsq" data-ce-tag="grid"><div data-col-width="1" class="stk-grid-col align-left valign-top stk-mobile-hidden" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><a class="sklbx-link sklbx-link--fb stk-container stk-container-link stk-reset" data-ce-tag="container" data-container-name="Telegram" href="https://t.me/skillbox_media_gamedev" target="_blank"><svg class="sklbx-link__icon" width="25" height="20" xmlns="http://www.w3.org/2000/svg">
<path d="m9.417 15.181-.397 5.584c.568 0 .814-.244 1.109-.537l2.663-2.545 5.518 4.041c1.012.564 1.725.267 1.998-.931l3.622-16.972.001-.001c.321-1.496-.541-2.081-1.527-1.714l-21.29 8.151c-1.453.564-1.431 1.374-.247 1.741l5.443 1.693 12.643-7.911c.595-.394 1.136-.176.691.218z" fill-rule="evenodd"></path>
</svg></a></div><div data-col-width="11" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-reset stk-theme_26309__mb_05 stk-theme_26309__style_font_style-1629726727970" data-ce-tag="paragraph" data-stk-css="stk2bUk3">Подписывайтесь на наш <a class="stk-reset" href="https://t.me/skillbox_media_gamedev" target="_blank">телеграм-канал «Чекпоинт»</a>. Это уютное место, в котором мы рассказываем об играх и о том, как они создаются, а также делимся полезными советами разработчиков и пишем о важных обновлениях популярного софта. Комментарии открыты: вы можете предложить идею для нового текста или просто обсудить всё, что связано с геймдевом.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph">Истоки симуляции стайного поведения</h2><p class="stk-reset" data-ce-tag="paragraph">В фильме Тима Бёртона «Бэтмен возвращается» была сцена, в которой на жителей Готэма <a class="stk-reset" href="https://www.youtube.com/watch?v=A8Xt3DlrwhY" target="_blank">напала стая</a> летучих мышей, а также сцена с марширующими пингвинами. Их воплотили на экране при помощи компьютерной графики, а вот за естественность стайного поведения отвечал алгоритм, разработанный экспертом по компьютерной графике Крейгом Рейнольдсом — он известен также тем, что приложил руку к фильму «Трон». Алгоритм этот называется <strong class="stk-reset">Boids</strong>.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062720022024_cba3ff6fc5f4ad9712e5d47ed42da16219aca970.gif" data-image-id="73935" data-image-name="01.gif" width="770" height="578" loading="lazy" class="stk-image stk-reset"/></div></figure><p class="stk-reset" data-ce-tag="paragraph">Крейг Рейнольдс не был самым первым человеком, который попытался создать симуляцию поведения групп существ. Но именно его алгоритм Boids сейчас считается основой, на которой многие разработчики игр создают симуляции стайного поведения в своих проектах.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkZPuO-"><div data-col-width="1" class="stk-grid-col" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><p class="stk-element_no-text stk-reset" data-ce-tag="paragraph"><img alt="" class="stk-reset stk-theme_26309__symbol_custom_image_2666427 stk-icon" src="https://ceditor.setka.io/clients/Y5wcTIuOndOzJ1OsacHi3bS9nZFnZeBC/css/assets/26658/img/__hm6D-A.svg"></p></div><div data-col-width="11" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">«В 1986 году я создал компьютерную модель скоординированного движения животных, таких как птичьи стаи и косяки рыб. Она была основана на трёхмерной вычислительной геометрии, обычно используемой в компьютерной анимации или автоматизированном проектировании. Я назвал этих моделируемых существ боидами (boids — сокращение от bird-oid, то есть „подобный птицам“. — Авт.). Базовая модель стайного движения состоит из трёх простых режимов управления, которые описывают, как маневрирует отдельный боид в зависимости от положения и скорости своих ближайших товарищей по стае».</p><p class="stk-theme_26309__mb_05 stk-theme_26309__style_small_text stk-reset" data-ce-tag="paragraph"><a class="stk-reset" href="https://www.red3d.com/cwr/boids/" target="_blank">К<strong class="stk-reset">рейг Рейнольдс</strong></a><strong class="stk-reset">,</strong> <br>создатель алгоритма Boids</p></div></div><p class="stk-reset" data-ce-tag="paragraph">В тот момент Крейг Рейнольдс работал в <span class="stk-reset" data-stk-footnote-link="fnpwSOg">Symbolics</span> Graphics Division, которая делала графический софт, использовавшийся при создании фильмов.</p><p class="stk-reset" data-ce-tag="paragraph">Софт, созданный компанией, использовался в таких фильмах, как <strong class="stk-reset">«Звёздный Путь 3: В поисках Спока»</strong> и <strong class="stk-reset">«Освободите Вилли»</strong>. В 1987 году Symbolics Graphics Division выпустила трёхминутный <a href="https://www.youtube.com/watch?v=3bTqWsVqyzE" target="_blank" class="stk-reset">мультфильм</a><strong class="stk-reset"> Stanley and Stella in: Breaking the Ice</strong>, в котором впервые был продемонстрирован алгоритм Boids в действии.Сюжет у мультфильма простенький. По космосу летает сфера, разделённая льдом на две половинки. Внизу — вода, и там плавают косяки рыб. Вверху — воздух, и там летают стаи птиц. Однажды птица Стэнли влюбляется в рыбку Стеллу и в пикирующем полёте пробивает клювом лёд, разделяющий их миры. Благодаря этому птицы и рыбы теперь парят в сфере вместе.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062620022024_b629b7dc02fe6f5723da7d5f3dd63eb28fb5f3e4.jpg" data-image-id="73924" data-image-name="02.jpg" width="1540" height="1155" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Кадр: мультипликационный фильм Stanley and Stella in: Breaking the Ice / Whitney / Demos Productions</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">И стаи птиц, и косяки рыб в мультфильме вели себя так, как вели бы большие скопления рыб и птиц в реальном мире. Его показали на <a href="https://history.siggraph.org/animation-video-pod/stanley-and-stella-breaking-the-ice-by-malone-wahrman-reynolds-and-bergeron/" target="_blank" class="stk-reset">SIGGRAPH’87</a> — ежегодной конференции, посвящённой компьютерной графике. Там же Крейг Рейнольдс представил <a href="https://www.red3d.com/cwr/papers/1987/boids.html" target="_blank" class="stk-reset">доклад</a>, в котором подробно описал, как ему удалось с помощью нулей и единиц достоверно воспроизвести то, на что у эволюции ушли миллионы лет.</p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Если вкратце, то каждый боид в группе следует трём простым правилам:</p><p class="stk-theme_26309__mb_05 stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="paragraph">1. <strong class="stk-reset">Separation </strong>(Разделение): боид должен избегать столкновений с соседями по стае.</p><p class="stk-theme_26309__mb_05 stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="paragraph">2. <strong class="stk-reset">Alignment </strong>(Выравнивание): боид должен корректировать своё направление, чтобы оно совпадало с направлением ближайших соседей.</p><p class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="paragraph">3. <strong class="stk-reset">Cohesion</strong> (Сплочённость): боид должен двигаться в позиции, которую можно назвать средней позицией между позициями ближайших соседей, то есть он должен держаться товарищей.</p><div class="stk-gallery stk-gallery stk-gallery stk-gallery" data-ce-tag="gallery"><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062520022024_181cbb31e4238c1c11b385d01e6dcc075479973d.jpg" data-image-id="73916" data-image-name="03.jpg" width="1540" height="998" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">Separation (Разделение). Источник данных: <a class="stk-reset" href="https://www.red3d.com/cwr/boids/" target="_blank">официальный сайт</a> Крейга Рейнольдса<br><em class="stk-reset">Инфографика: Майя Мальгина для Skillbox Media</em></figcaption></figure><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062520022024_aadc6dada1c2b47a57ee8a782537d4bcc1e79599.jpg" data-image-id="73917" data-image-name="04.jpg" width="1540" height="998" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">Alignment (Выравнивание). Источник данных: <a class="stk-reset" href="https://www.red3d.com/cwr/boids/" target="_blank" data-gtm-vis-has-fired10171822_255="1">официальный сайт</a> Крейга Рейнольдса <br data-gtm-vis-has-fired10171822_255="1"><em class="stk-reset" data-gtm-vis-has-fired10171822_255="1">Инфографика: Майя Мальгина для Skillbox Media</em></figcaption></figure><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062520022024_3a13088d023e9f50b6d7dd9d789d9ee05e51ab28.jpg" data-image-id="73918" data-image-name="05.jpg" width="1540" height="998" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">Cohesion (Сплочённость). Источник данных: <a class="stk-reset" href="https://www.red3d.com/cwr/boids/" target="_blank">официальный сайт</a> Крейга Рейнольдса<br><em class="stk-reset">Инфографика: Майя Мальгина для Skillbox Media</em></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Каждый боид в стае — это автономная единица, которая двигается сама по себе. Но если в поле его зрения попадёт другой такой же боид, то он начнёт корректировать своё поведение, исходя из трёх описанных выше правил. То есть он будет поворачивать в ту же сторону, в которую поворачивает сосед, и держаться от него на небольшом расстоянии, чтобы не столкнуться, но при этом постарается быть рядом.</p><p class="stk-reset" data-ce-tag="paragraph">Если к ним присоединится ещё пара боидов, то наш изначальный боид будет проводить те же вычисления с учётом товарищей. А если к ним добавится ещё сотня, то… изначальный боид всё равно будет учитывать лишь ближайших к нему товарищей. Он не станет ориентироваться на поведение всей сотни боидов — только на поведение тех, кто совсем рядом. Когда вы выходите из забитого вагона метро, то не смотрите, куда идут все сто с лишним пассажиров. Вы ориентируетесь лишь на ближайших к вам людей.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062620022024_a21449561049939422c6ccf788bc0c1c90d933e0.jpg" data-image-id="73926" data-image-name="06.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">С помощью алгоритма Boids можно сделать вот такие группы летучих мышей (скопление наверху). Обратите внимание: дерево рассекло одну стаю на две небольших <br data-gtm-vis-has-fired10171822_255="1"><em class="stk-reset" data-gtm-vis-has-fired10171822_255="1">Скриншот: игра Vampire Survivors / Лука Галанте</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Для взаимодействия с соседями у каждого боида есть два параметра. Во-первых, это радиус, на котором он ищет ближайшие боиды. Во-вторых, это угол обзора: боиду необязательно следить за <strong class="stk-reset">всеми</strong> товарищами. Достаточно смотреть за теми, которые находятся перед ним. Если группа рассекается какой-то преградой на половинки, то большой радиус поиска товарищей позволит ей вновь соединиться. А маленький радиус в этом случае приведёт к распаду большой стаи на две маленьких. Также большой радиус защитит от ситуации, когда боиды отсоединяются от группы, потеряв из вида товарища, через которого они к ней и присоединились.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062520022024_67e34c602f3338613896d5e163d290f14fdaa52e.jpg" data-image-id="73919" data-image-name="07.jpg" width="1540" height="967" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">Источник данных: David M. Bourg, Glenn Seemann. <a class="stk-reset" href="https://www.oreilly.com/library/view/ai-for-game/0596005555/ch04.html" target="_blank">AI for Game Developers</a>.<br><em class="stk-reset">Инфографика: Майя Мальгина для Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Если угол обзора сделать узким, то все боиды будут учитывать лишь впереди идущего соседа. И вся стая превратится в змейку, которая развалится на первом же резком повороте, ведь тогда впереди идущий боид исчезнет из поля зрения своих последователей. А широкий угол обзора формирует широкую стаю, члены которой будут крепко держаться друг за друга.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062520022024_4bee5bc7607f7bd29ea700220550e2abce458536.jpg" data-image-id="73920" data-image-name="08.jpg" width="1540" height="1127" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">Источник данных: David M. Bourg, Glenn Seemann. <a class="stk-reset" href="https://www.oreilly.com/library/view/ai-for-game/0596005555/ch04.html" target="_blank">AI for Game Developers</a>.<br><em class="stk-reset">Инфографика: Майя Мальгина для Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Радиус поиска и угол обзора боида можно делать разными для каждого из трёх правил, таким образом получив необходимый вид построения. Чтобы продемонстрировать это, мы взяли <a href="https://github.com/SuboptimalEng/boids" target="_blank" class="stk-reset">готовый проект</a> для Unity от блогера SuboptimalEng, который как раз и построен на алгоритме Boids. В процессе работы программы мы постоянно изменяли радиус для Separation, Alignment и Cohesion, и боиды сразу меняли своё построение в зависимости от новых условий. То летали хаотично, игнорируя друг друга, то вдруг собирались в небольшие группки, то выстраивались в длинную цепочку или разлетались в стороны, снова забыв друг о друге.</p><figure class="stk-code_keep-ratio stk-reset stk-embed_rendered" data-embed-link="https://youtu.be/IxM7eO1BaZA" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:75.00%"><iframe class="embedly-embed" src="//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FIxM7eO1BaZA%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DIxM7eO1BaZA&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FIxM7eO1BaZA%2Fhqdefault.jpg&key=8d3909c69dfb4ee29c710191d8dd756a&type=text%2Fhtml&schema=youtube" width="640" height="480" scrolling="no" title="YouTube embed" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description">Алгоритм Boids в действии. Сделано на основе реализации алгоритма для Unity блогером <a href="https://www.youtube.com/@SuboptimalEng" target="_blank" class="stk-reset">SuboptimalEng</a></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Модификаций для алгоритма <strong class="stk-reset">Boids </strong>можно создать бессчётное множество, тут всё зависит от потребностей разработчика и его фантазии. Делает он декорацию с симуляцией поведения животных вдалеке или систему для передвижения войск в стратегии в реальном времени? Использует алгоритм в двухмерном или в трёхмерном пространстве? Стаи просто передвигаются по определённой области или выполняют какую-то ещё функцию, например нападают на игрока?</p><p class="stk-reset" data-ce-tag="paragraph">Таким образом, сложное поведение большой стаи создаётся благодаря трём простым правилам, которые соблюдает каждый из боидов. А теперь разберёмся, как похожий трюк проделывали разработчики разных игр.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph">Half-Life</h2><p class="stk-reset" data-ce-tag="paragraph">Увидеть реализацию алгоритма, разработанного Крейгом Рейнольдсом, можно, например, в самой первой <strong class="stk-reset">Half-Life</strong> 1998 года — в финальной сцене, в которой G-Man рассказывает Гордону Фримену о карьерных перспективах на новом рабочем месте. Действие происходило в мире Зен, и, если помните, позади G-Man’а в этот момент летала стайка существ, похожих на птиц. Стайка как раз использовала алгоритм <strong class="stk-reset">Boids</strong>. Что забавно, в файлах игры модели этих птичек так и назывались — Boid.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062920022024_879a10a0253513b0b0241d867b4679d90345508a.gif" data-image-id="73950" data-image-name="09.gif" width="770" height="433" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">Стайка инопланетных птиц позади G-Man’а, встречающаяся лишь в этой сцене<br><em class="stk-reset">Изображение: игра Half-Life / Valve / MarphitimusBlackimus</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Автор ютуб-канала <a href="https://www.youtube.com/watch?v=ucPLCf05VrI" target="_blank" class="stk-reset">MarphitimusBlackimus</a> подробно разобрал, как работали эти птички. Их правдоподобное поведение было одной из технологических фишек, продемонстрированных ещё в ранней версии игры, Half-Life Alpha. При активации птицы выбирали себе лидера и следовали за ним.</p><p class="stk-reset" data-ce-tag="paragraph">Стая двигалась по локации без заранее проложенного пути и избегала препятствий. Убедительности поведению инопланетных птиц добавляло и то, что скорость, с которой они махали крыльями, зависела от ускорения и манёвров стаи при повороте.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062620022024_cece785eb92cd643f5e788e5f37e3d933a76f56c.jpg" data-image-id="73921" data-image-name="10.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Half-Life / Valve / MarphitimusBlackimus</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Если птица-лидер погибала, то стая выбирала себе нового лидера и следовала уже за ним. Также в момент гибели любой из птиц стая начинала издавать сердитые звуки.</p><p class="stk-reset" data-ce-tag="paragraph">К сожалению, в игре эти существа встречаются лишь раз, когда у игрока нет возможности взаимодействовать с ними. Они играют только роль декорации. Но благодаря тому, что двигаются они как захотят, а не по заранее прописанному маршруту, каждый игрок, прошедший Half-Life, видел свою уникальную и неповторимую версию полёта птичек позади G-Man’а.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph">Assassin’s Creed Unity</h2><p class="stk-reset" data-ce-tag="paragraph">Впечатляющая работа с поведением уличной толпы была проделана разработчиками <strong class="stk-reset">Assassin’s Creed Unity</strong>. В один момент времени игра может показать на экране лишь 120 NPC с детализированными моделями и анимацией. При этом проработанный искусственный интеллект будет лишь у 40 из них. Несмотря на эти ограничения, в некоторых сценах можно увидеть до 10 тысяч NPC, которые издалека выглядят и ведут себя так, будто у них проработанный ИИ и подробная модель.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062620022024_2229e417950c39bd1ac90259b6c781a232a40430.jpg" data-image-id="73922" data-image-name="11.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Assassin’s Creed Unity / Ubisoft Montreal</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В самой первой игре серии <a href="https://youtu.be/Rz2cNWVLncI?si=SBnPjzyrQNz86FyF&t=82" target="_blank" class="stk-reset">было ограничение в 100 NPC</a>. Сюда входят вообще все люди, которых вы видите на улице, включая стражников и персонажей, необходимых для геймплея. Простых горожан-статистов, которые идут по улице, выполняя декоративную функцию, можно было сделать максимум 20. Их пришлось размазывать по уровню, чтобы улицы не казались пустыми. Поэтому рядом с главным героем всегда находится максимум четыре NPC. Улицы с настоящей толпой в игре тоже встречаются, но лишь в определённых миссиях, где разработчики могли сосредоточить все ресурсы на её реализации.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062620022024_71b97f3681cfd481f98f8279e17d064ae63ea66a.jpg" data-image-id="73927" data-image-name="12.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Assassin’s Creed Unity / Ubisoft Montreal</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В <strong class="stk-reset">Assassin’s Creed 3</strong> разработчики внедрили технологию, позволявшую показывать на экране тысячи дешёвых мешей (низкополигональных 3D-моделей) с простой анимацией. Её использовали для крыс, птиц, крабов и для изображения многотысячной армии в битве при Банкер-Хилле. Но солдаты, из которых эта армия состоит, разве что проигрывают простые анимации — пригнуться, перезарядить оружие… Игрок не может с ними взаимодействовать.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062620022024_b96f49b701f581862428f9c58e1a46c731d0aa89.jpg" data-image-id="73925" data-image-name="13.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Assassin’s Creed Unity / Ubisoft Montreal</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Эту технологию использования упрощённых моделей доработали в <strong class="stk-reset">Assassin’s Creed Unity</strong>, рассказывающей о Великой французской революции. Разработчики создали систему <strong class="stk-reset">Bulk </strong>(английское слово, имеющее несколько значений, включая «объём», «масса»).<em class="stk-reset"> </em>Как в алгоритме Крейга Рейнольдса <strong class="stk-reset">Boids</strong><strong class="stk-reset"> </strong>каждое отдельное существо стаи называлось Boid, так и в системе Bulk<strong class="stk-reset"> </strong>каждого отдельного NPC разработчики называют… Bulk.</p><p class="stk-reset" data-ce-tag="paragraph">Суть в том, что изначально толпа на улицах состоит из упрощённых моделей горожан. Но когда герой приближается к ним, игра незаметно заменяет простого горожанина на более сложного.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062620022024_d75dd4921f9f5ca9dc828e1efafbd5a21dfa9c5d.jpg" data-image-id="73928" data-image-name="14.jpg" width="1540" height="1155" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">Упрощённая модель горожанки с анимацией, которая даже не позволяет ей правдоподобно держать стул<br><em class="stk-reset">Кадр: <a class="stk-reset" href="https://www.youtube.com/@Gdconf" target="_blank">GDC</a> / YouTube</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Если расстояние до NPC больше 40 метров, то игрок видит персонажа из 2000 полигонов, у которого всего 11 костей для анимации и простейшая система реакции на события. На расстоянии от 40 до 12 метров вместо упрощённой версии горожанина появляется NPC с полноценной моделью, но урезанной системой поведения, простыми системами анимации и проверки столкновений с окружающими объектами. А если до NPC меньше 12 метров, то он заменяется на объект с детализированной моделью из 20 000 полигонов с 300 костей для анимации и искусственным интеллектом, реалистично реагирующим на действия игрока.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062620022024_b76bc71fa80c20942ed01e19c21ead7b69ad6b89.jpg" data-image-id="73923" data-image-name="15.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Assassin’s Creed Unity / Ubisoft Montreal</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Для игры также пришлось создать собственную систему просчёта столкновений NPC в толпе, ведь использовать хитбоксы для тысяч горожан было бы слишком накладно.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stktyYr3"><div data-col-width="1" class="stk-grid-col" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><p class="stk-element_no-text stk-reset" data-ce-tag="paragraph"><img alt="" class="stk-reset stk-theme_26309__symbol_custom_image_2666427 stk-icon" src="https://ceditor.setka.io/clients/Y5wcTIuOndOzJ1OsacHi3bS9nZFnZeBC/css/assets/26658/img/__hm6D-A.svg"></p></div><div data-col-width="11" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">«По сути, у нас есть карта с местоположением каждого NPC в мире. Для каждого из них мы определяем, находится ли он в пределах досягаемости другого NPC, и если это так, то он воспроизводит простую анимацию и скользит в сторону. Так что это не реальное физическое столкновение. Чтобы они не могли пройти сквозь здание, мы используем навмеш».</p><p class="stk-theme_26309__mb_05 stk-theme_26309__style_small_text stk-reset" data-ce-tag="paragraph"><a class="stk-reset" href="https://youtu.be/Rz2cNWVLncI?t=621" target="_blank"><strong class="stk-reset">Франсуа Курнуайе</strong></a>, <br>программист, работавший над серией Assassin’s Creed</p></div></div><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13063020022024_7e2fb2c666710d4e57dc71289e1cd3b9e352b001.gif" data-image-id="73955" data-image-name="16.gif" width="770" height="577" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Изображение: <a class="stk-reset" href="https://www.youtube.com/@Gdconf" target="_blank">GDC</a> / YouTube</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">За искусственный интеллект и за то, какую анимацию необходимо запустить в настоящий момент, отвечают «пастухи» — невидимые объекты, которые генерируют вокруг себя толпу и руководят ею. Разработчики заполнили улицы именно «пастухами», а не горожанами, и с их помощью смогли настроить численность толпы, её плотность и поведение на каждой конкретной улице. Например, будут NPC просто прогуливаться или же протестовать против чего-то.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062720022024_1cc7c7aaff1472b38801633d33e2f9e6221a290f.jpg" data-image-id="73932" data-image-name="17.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">Каждый круг отмечает толпу, контролируемую одним «пастухом»<br><em class="stk-reset">Кадр: <a class="stk-reset" href="https://www.youtube.com/@Gdconf" target="_blank">GDC</a> / YouTube</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Также в игре есть «блуждающие пастухи», которые контролируют поведение NPC, передвигающихся по улицам. По сути, NPC движутся по кругу по заранее проложенному маршруту. Если долго идти за одним из пешеходов на улице, то минут через двадцать вы с ним вернётесь в исходную точку. Помимо этой операции, «блуждающий пастух» следит за тем, чтобы по каждому району Парижа ходили характерные для него типажи.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062720022024_62bf1942effdabf0107c530d35221fdf53489254.jpg" data-image-id="73931" data-image-name="18.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">Примерно так выглядят закольцованные маршруты для NPC на улицах Парижа<br><em class="stk-reset">Кадр: <a class="stk-reset" href="https://www.youtube.com/@Gdconf" target="_blank">GDC</a> / YouTube</em></figcaption></figure></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph">A Plague Tale: Innocence</h2><p class="stk-reset" data-ce-tag="paragraph">Главной фишкой <strong class="stk-reset">A Plague Tale: Innocence</strong> стали полчища крыс. С их помощью разработчики из <strong class="stk-reset">Asobo Studio</strong> хотели показать последствия чумы во Франции времён Столетней войны.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stk4oPi1"><div data-col-width="1" class="stk-grid-col" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><p class="stk-element_no-text stk-reset" data-ce-tag="paragraph"><img alt="" class="stk-reset stk-theme_26309__symbol_custom_image_2666427 stk-icon" src="https://ceditor.setka.io/clients/Y5wcTIuOndOzJ1OsacHi3bS9nZFnZeBC/css/assets/26658/img/__hm6D-A.svg"></p></div><div data-col-width="11" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">«Мы хотели рассказать историю о Чёрной смерти. А поскольку бороться с вирусом в игре не так-то просто, мы взяли популярный образ чумы — крыс, распространяющих болезнь по странам. Нам понравилась эта идея, но это означало, что понадобится много крыс, тысячи крыс, чтобы это выглядело правдоподобно. На бумаге хорошо. А вот технически нет: как я и сказал, речь шла о тысячах крыс на [одном] экране».</p><p class="stk-theme_26309__style_small_text stk-reset" data-ce-tag="paragraph"><a class="stk-reset" href="https://youtu.be/d_7WecU5qAs?t=38" target="_blank"><strong class="stk-reset">Кевин Шото</strong></a>, <br>гейм-директор A Plague Tale: Innocence</p></div></div><p class="stk-reset" data-ce-tag="paragraph">В качестве референса разработчики использовали документальные кадры о вторжении полчищ мышей и крыс на австралийские фермы, которых полно на YouTube. Правда, если вы сравните, как крысы двигаются в игре и на документальных записях, то заметите, что игровые грызуны не так проворны. Разработчики специально замедлили их, иначе от крыс было бы невозможно убежать.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062720022024_ea2b2f998665356b094cbc9e4d99ecdc646b93d5.jpg" data-image-id="73930" data-image-name="19.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра A Plague Tale: Innocence / Asobo Studio</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Ещё на раннем этапе разработки в студии решили, что на экране одновременно будет бегать до 5000 особей (в сиквеле <strong class="stk-reset">A Plague Tale: Requiem</strong> их уже около 300 000). При этом все крысы должны вести себя по-разному. Одна преследует игрока, другая бросается на стражников. Какая-то спасается от яркого света. Ещё одна просто бродит вдалеке в поисках еды.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkGAyC7"><div data-col-width="1" class="stk-grid-col" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><p class="stk-element_no-text stk-reset" data-ce-tag="paragraph"><img alt="" class="stk-reset stk-theme_26309__symbol_custom_image_2666427 stk-icon" src="https://ceditor.setka.io/clients/Y5wcTIuOndOzJ1OsacHi3bS9nZFnZeBC/css/assets/26658/img/__hm6D-A.svg"></p></div><div data-col-width="11" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">«В целях оптимизации несколько крыс делят между собой модели поведения, но в основном у каждой крысы своё собственное поведение. Вы можете изолировать одну крысу, и она будет вести себя обычно. Можете взять 10 крыс, и они будут вести себя по-разному, отличаясь друг от друга».</p><p class="stk-theme_26309__style_small_text stk-reset" data-ce-tag="paragraph"><a class="stk-reset" href="https://youtu.be/d_7WecU5qAs?t=262" target="_blank"><strong class="stk-reset">Кевин Шото</strong></a>, <br>гейм-директор A Plague Tale: Innocence</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Начали с малого — создали небольшую стайку из 10–20 особей, чтобы посмотреть, получится ли убедительно показать крыс в игре. Потом попытались увеличить это количество в сотни раз. Но обработка поведения всего одной крысы — это уже довольно ресурсозатратная операция, поэтому просто взять и увеличить их количество до тысяч было нерабочей идеей.</p><p class="stk-reset" data-ce-tag="paragraph">Подобное требовало тщательного проектирования и большой работы над оптимизацией, тем более что разработчики сразу поняли: у них не получится реализовать задумку с помощью графических трюков вроде генератора частиц либо анимированных текстур, как в спортивных симуляторах, где похожим образом изображают толпу зрителей на трибунах.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkg1gYE"><div data-col-width="1" class="stk-grid-col" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><p class="stk-element_no-text stk-reset" data-ce-tag="paragraph"><img alt="" class="stk-reset stk-theme_26309__symbol_custom_image_2666427 stk-icon" src="https://ceditor.setka.io/clients/Y5wcTIuOndOzJ1OsacHi3bS9nZFnZeBC/css/assets/26658/img/__hm6D-A.svg"></p></div><div data-col-width="11" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">«Мы начали с чего-то, больше похожего на симуляцию воды, но это совершенно не работало. Крысы ощущались как частицы, а не как крысы».</p><p class="stk-theme_26309__style_small_text stk-reset" data-ce-tag="paragraph"><a class="stk-reset" href="https://www.youtube.com/watch?v=d_7WecU5qAs" target="_blank"><strong class="stk-reset">Кевин Шото</strong></a>, <br>гейм-директор A Plague Tale: Innocence</p></div></div><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062620022024_b200d8bc76303a5287d3954213dd40d331052ae4.jpg" data-image-id="73929" data-image-name="20.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра A Plague Tale: Innocence / Asobo Studio</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Отдельная сложность заключалась в поведении крыс, преследующих и атакующих протагониста и NPC. Разработчики не могли просто позволить каждой особи самостоятельно просчитывать свой маршрут до персонажа. Процессор закипел бы, пытаясь провести такие вычисления для каждой из 5000 крыс.</p><p class="stk-reset" data-ce-tag="paragraph">Команда решила сделать наоборот. Не крысы вычисляют, как им дойти до цели, а, условно говоря, цель определяет, по каким маршрутам крысы могут к ней попасть. Игра строит что-то вроде конвейерных лент, которые из любой точки уровня ведут прямо к персонажу, и крысы просто бегут по созданным для них маршрутам, подключаясь к ближайшему. Когда цель перемещается в пространстве, маршруты для крыс просчитываются заново. Подобная механика называется <strong class="stk-reset">flow field pathfinding</strong>.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062920022024_5c990ce80e04f9903ea6dbaef130562b44abea46.gif" data-image-id="73953" data-image-name="21.gif" width="770" height="578" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">Flow field pathfinding на С++ в исполнении <a class="stk-reset" href="https://youtu.be/TFk-fO3SWcg?si=0U_xUnbgza6Qy9Jg" target="_blank">Funneractic</a><br><em class="stk-reset">Кадр: <a class="stk-reset" href="https://www.youtube.com/@funneractic" target="_blank">Funneractic</a> / YouTube</em></figcaption></figure><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkIuQ90"><div data-col-width="1" class="stk-grid-col" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><p class="stk-element_no-text stk-reset" data-ce-tag="paragraph"><img alt="" class="stk-reset stk-theme_26309__symbol_custom_image_3098437 stk-icon" src="https://ceditor.setka.io/clients/Y5wcTIuOndOzJ1OsacHi3bS9nZFnZeBC/css/assets/26658/img/info_0_40IVGA.svg"></p></div><div data-col-width="11" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-theme_26309__mb_05 stk-reset stk-theme_26309__style_font_style-1629290372003" data-ce-tag="paragraph"><strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1"> Как это работает</strong></p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">В каждой локации, где есть крысы, игра <a href="https://youtu.be/1R7W8LVvegk?si=BpjYFgwWt0LfO0ln&t=315" target="_blank" class="stk-reset">создаёт</a> на полу невидимую сетку из квадратов. Каждый квадрат содержит информацию о направлении, в котором должна двигаться крыса, оказавшаяся на нём.</p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Если клетка находится в освещённой зоне или близко к ней, то крысы получают приказ отступить от неё. Точно такую же отталкивающую силу имеют клетки вокруг постоянных преград вроде стен и колонн, чтобы крысы держались от них подальше и не проваливались в текстуры. Также это улучшает читаемость геометрии помещения.</p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Если игрок, NPC или источник света меняют своё положение на сетке, то она просчитывает направление для каждой клетки заново. Такой подход позволяет задать направление движения для большой группы объектов, экономя при этом ресурсы компьютера.</p></div></div><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062720022024_acb3891951eada938d821fe8c18ea10c2884033f.jpg" data-image-id="73934" data-image-name="22.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">Так выглядит сетка на полу, каждый квадрат которой задаёт крысам направление к цели<br><em class="stk-reset">Скриншот: игра A Plague Tale: Innocence / Asobo Studio / <a class="stk-reset" href="https://youtu.be/1R7W8LVvegk?si=ImDH4GrDiOSY_muh" target="_blank">AI and Games</a></em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Чтобы 5000 крыс не набрасывались на одну цель — например, стражника или игрока — всем скопом, для каждой ситуации разработчики определили, сколько именно особей нужно для осуществления атаки. Например, если на стражника накинется достаточное количество крыс, остальные уже не будут забираться на него вторым и третьим слоем.</p><p class="stk-reset" data-ce-tag="paragraph">Кстати, изначально стражники при виде крыс успевали убежать, так что натравливать на них грызунов было бесполезно. Поэтому разработчики схитрили: когда крысы атакуют, у стражников увеличивается время, необходимое на разворот. В итоге они просто не успевают развернуться и убежать.</p><p class="stk-reset" data-ce-tag="paragraph">Команда предусмотрела и ситуацию, при которой игрок с помощью факела загоняет толпу крыс в угол. Грызуны, которым больше некуда отступать, просто магическим образом исчезают, оставляя вместо себя искры. Это своеобразный костыль, чтобы перехитрить игроков, которые станут гонять крыс факелом по уровню, пытаясь «сломать» их.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062720022024_00ef4ecbef33723c9293d85ddb5e396ecc049496.jpg" data-image-id="73933" data-image-name="23.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра A Plague Tale: Innocence / Asobo Studio</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Отдельные крысы на краю освещённой области бросаются на свет, прежде чем отступить от него. Это как бы размывает для игрока границу между опасной и безопасной зонами. Хотя урона такие бросающиеся одиночки всё равно не наносят, так что это, скорее, просто визуальный приём.</p><p class="stk-reset" data-ce-tag="paragraph">Другая особенность — заметив протагониста, крыса встаёт на задние лапки и поворачивает голову в его сторону. Благодаря этому жесту можно увидеть, как информация о вашем присутствии расходится волной по орде.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkaGlrs"><div data-col-width="1" class="stk-grid-col" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><p class="stk-element_no-text stk-reset" data-ce-tag="paragraph"><img alt="" class="stk-reset stk-theme_26309__symbol_custom_image_2666427 stk-icon" src="https://ceditor.setka.io/clients/Y5wcTIuOndOzJ1OsacHi3bS9nZFnZeBC/css/assets/26658/img/__hm6D-A.svg"></p></div><div data-col-width="11" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">«Мы хотели, чтобы они были агрессивными, пугали игрока и угрожали ему, и как бы говорили, что если вы выйдете из-под защиты света, то умрёте».</p><p class="stk-theme_26309__style_small_text stk-reset" data-ce-tag="paragraph"><a class="stk-reset" href="https://www.rockpapershotgun.com/how-a-plague-tale-innocences-rat-hordes-were-made" target="_blank"><strong class="stk-reset">Кевин Шото</strong></a>, <br>гейм-директор A Plague Tale: Innocence</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Ну и ещё одна любопытная деталь. В игре этого не заметишь, но в интересах оптимизации лишь ближайшие к протагонисту 400 крыс будут иметь индивидуальную анимацию, модель поведения и детали вроде хвоста, следующего за движением остального тела.</p><p class="stk-reset" data-ce-tag="paragraph">У крыс, находящихся подальше, одна общая анимация и нет хвостов. Ну а самых дальних крыс разработчики описывают как «просто картошку». У них нет анимации, только упрощённая модель. Игра при необходимости смешивает все три типа крыс, благодаря чему они выглядят как жуткая однородная масса.</p><div class="stk-gallery stk-gallery stk-gallery stk-gallery" data-ce-tag="gallery"><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062820022024_6ed0b04ccb1af0573cd045b2bd21a60938919582.jpg" data-image-id="73939" data-image-name="24.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">Детально проработанные крысы, которые идут в первых рядах <br><em class="stk-reset">Скриншот: игра A Plague Tale: Innocence / Asobo Studio</em></figcaption></figure><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062820022024_d879e3a09b3d33248cfb9e16b5b5b31c5891b3f5.jpg" data-image-id="73937" data-image-name="25.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">Крысы-«картофелины» вдалеке от персонажа <br><em class="stk-reset">Скриншот: игра A Plague Tale: Innocence / Asobo Studio</em></figcaption></figure></div></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph">Hitman: Absolution</h2><p class="stk-reset" data-ce-tag="paragraph">В <strong class="stk-reset">Hitman: Blood Money</strong> полноценную толпу пешеходов можно увидеть на уровне The Murder of Crows, где на улицах Нового Орлеана происходит парад. По большей части это — декорация. Например, в толпе нельзя спрятаться от преследователей. Людей из толпы нельзя ни скрытно убивать, ни использовать в качестве живого щита. А если 47-й <a href="https://www.youtube.com/watch?v=iNC2X9r0oGY&t=10s" target="_blank" class="stk-reset">начинает стрельбу</a>, пешеходы сначала синхронно расходятся в стороны, прикрывая голову руками, а через несколько секунд забывают обо всём и снова ходят по улице как ни в чём не бывало.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062820022024_1b9538555bc8b6bb16a0625a682661edb953ea1c.jpg" data-image-id="73938" data-image-name="26.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Hitman: Blood Money / IO Interactive</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В следующей игре серии, <strong class="stk-reset">Hitman: Absolution</strong>, поведение толпы значительно доработали. Теперь вы можете использовать пешеходов как живой щит, а если будете спокойно стоять в толпе, то противник вас не заметит. Ну а перестрелка или взрыв приведут к более реалистичному поведению NPC: они запаникуют и убегут к ближайшему выходу.</p><p class="stk-reset" data-ce-tag="paragraph">Толпа в Hitman: Absolution может состоять из 1200 NPC с возможностью показать на экране 500 из них. Все NPC перемещаются по локации по навигационному мешу по такому же принципу, как в A Plague Tale: Innocence: пол, по которому ходят NPC, покрыт сеткой из клеток, и каждая из них хранит информацию, которую NPC использует при движении. Например, можно ли на эту клетку встать и кто на ней уже стоит.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062820022024_5d2552f3c147808bd3c9149b748f69964400c85d.jpg" data-image-id="73941" data-image-name="27.jpg" class="stk-image stk-reset" width="1540" height="866" loading="lazy"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Hitman: Absolution / IO Interactive</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Одни клетки помечают зоны выхода из локации, вторые используются для построения маршрута движения NPC, третьи обозначают места, которых нужно избегать, четвёртые подсказывают, какие области на локации становятся запретными, если протагонист начинает сеять в толпе панику. Благодаря этому к стреляющему 47-му никто не приближается.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062820022024_7b6ae682f40573d2c3c9364d21893c206fdb58bd.jpg" data-image-id="73943" data-image-name="28.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Изображение: <a class="stk-reset" href="https://www.gdcvault.com/" target="_blank">GDC Vault</a></em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Поведение каждого NPC в толпе работает по принципу <strong class="stk-reset">машины состояний</strong> (state machine). В зависимости от ситуации и окружения ИИ выбирает одно из состояний — например, стоять, ждать, идти, насторожиться, испугаться или умереть.</p><p class="stk-reset" data-ce-tag="paragraph">В состоянии «ждать» пешеход проверяет пространство вокруг себя на преграды вроде стен и других пешеходов и ждёт, пока в одном из направлений не освободится дорога, после чего меняет состояние на «идти». Уже в этом состоянии NPC просто ходит по окрестностям, используя алгоритм блуждания (<a href="https://www.red3d.com/cwr/steer/Wander.html" target="_blank" class="stk-reset">wander steering behavior</a>), разработанный упомянутым в начале материала Крейгом Рейнольдсом.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062820022024_3a951572a2150028f8727110976985967433bc44.jpg" data-image-id="73940" data-image-name="29.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Hitman: Absolution / IO Interactive</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Этот алгоритм помогает создать эффект более реалистичного передвижения персонажей, не привязанных к строго проложенным для них маршрутам. Благодаря ему у игрока создаётся впечатление, что NPC и правда просто прогуливается по локации.</p><p class="stk-reset" data-ce-tag="paragraph">Суть в том, что каждый кадр к вектору движения персонажа <a href="https://code.tutsplus.com/understanding-steering-behaviors-wander--gamedev-1624t" target="_blank" class="stk-reset">добавляются</a> небольшие случайные отклонения. Используются именно небольшие отклонения, чтобы персонаж не менял направление движения резко. Если он двигался вверх и вправо, то в следующем кадре будет всё также двигаться вверх и вправо, но чуть-чуть под другим углом.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062720022024_3b7708faf9e65ed911a092d713c25e363002f0d0.jpg" data-image-id="73936" data-image-name="30.jpg" width="1540" height="904" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description">На невидимом круге перед персонажем создаются случайные отклонения к направлению персонажа. Каждый кадр отклонения меняются на величину случайного смещения, представленную маленьким кружком. Источник данных: статья <a class="stk-reset" href="https://www.red3d.com/cwr/papers/1999/gdc99steer.pdf" target="_blank">Steering Behaviors For Autonomous Characters</a>, Craig W. Reynolds / <a class="stk-reset" href="https://www.red3d.com/cwr/steer/" target="_blank">официальный сайт</a> Крейга Рейнольдса<br><em class="stk-reset">Инфографика: Майя Мальгина для Skillbox Media</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В случае паники NPC находит кратчайший путь до выхода из локации. Путь генерируется автоматически при помощи сетки и клеток, обозначающих выход, о которых говорилось выше. Если в какой-то момент другие NPC перегородили дорогу, то убегающий пешеход переключается на соседний маршрут, ведущий к другой ближайшей клетке выхода. Отметим, что клеток выхода на уровне несколько и готовые маршруты к ним, которые используют NPC, вычисляются при помощи модифицированного <a href="https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B" target="_blank" class="stk-reset">алгоритма Дейкстры</a>. Он как раз и помогает находить кратчайшие пути между несколькими соединёнными между собой точками.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062820022024_1f995b601aba92748690c952130d3d6669d3fcca.jpg" data-image-id="73942" data-image-name="31.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Hitman: Absolution / IO Interactive</em></figcaption></figure></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph">Left 4 Dead</h2><p class="stk-reset" data-ce-tag="paragraph">Толпы живых мертвецов, гоняющиеся за игроками в <strong class="stk-reset">Left 4 Dead</strong>, произошли от ботов <strong class="stk-reset">Counter-Strike: Source</strong>. Программист Майк Бут <a href="https://left4dead.fandom.com/wiki/Developer_Commentary_(Left_4_Dead)#:~:text=rooftop%20door%20%5D-,%5BMike%20Booth%5D,-While%20we%20were" target="_blank" class="stk-reset">рассказывал</a>, что, тестируя последних, команда однажды заметила, что отбиваться автоматами от 30 ботов, вооружённых только ножами, крайне весело. Поэтому, как только Counter-Strike: Source вышла, <strong class="stk-reset">Valve</strong> сразу принялась экспериментировать с этой идеей. Разумеется, для новой игры о зомби-апокалипсисе поведение ботов пришлось переработать.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062920022024_174dab7e39076657c683b5ce7334147bbc186e9b.jpg" data-image-id="73947" data-image-name="32.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Left 4 Dead / Valve</em></figcaption></figure><div class="stk-grid" data-ce-tag="grid" data-stk-css="stk8cxVx"><div data-col-width="1" class="stk-grid-col" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><p class="stk-element_no-text stk-reset" data-ce-tag="paragraph"><img alt="" class="stk-reset stk-theme_26309__symbol_custom_image_2666427 stk-icon" src="https://ceditor.setka.io/clients/Y5wcTIuOndOzJ1OsacHi3bS9nZFnZeBC/css/assets/26658/img/__hm6D-A.svg"></p></div><div data-col-width="11" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">«„Орда заражённых“ для нас — главный герой Left 4 Dead, и мы потратили много усилий, чтобы сделать движения [врагов] правдоподобными. Сюда входят сотни анимаций, сделанных с помощью захвата движений, которые алгоритмически смешиваются с физическими системами, чтобы создать персонажей, реалистично взаимодействующих с окружающей средой и друг другом».</p><p class="stk-theme_26309__style_small_text stk-reset" data-ce-tag="paragraph"><a class="stk-reset" href="https://left4dead.fandom.com/wiki/Developer_Commentary_(Left_4_Dead)#:~:text=interactive%20Common%20Infected.-,%5BPhil%20Robb%5D,-We%20treat%20%E2%80%98the" target="_blank"><strong class="stk-reset">Фил Робб</strong></a>, <br>один из основателей Turtle Rock Studios (также известной как Valve South), создавшей Left 4 Dead</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Поведение орды заражённых зависит от её текущего режима. По умолчанию используется режим «блуждание». Зомби шатаются по округе, кто-то кашляет, кого-то рвёт. Какие-то заражённые дерутся друг с другом. Другие прислонились к стенам, сидят или лежат на земле. Появление героев выводит их из оцепенения: включается режим «настороже». В нём зомби начинают оглядываться и искать источник их беспокойства. Если они видят игрока, то он становится их целью. Зомби бегут к нему на своей максимальной скорости, минуя преграды — перепрыгивая, перелезая через них.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062920022024_f6a03683afb636aed1c2d98a66b99d839599856a.jpg" data-image-id="73944" data-image-name="33.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Left 4 Dead / Valve</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Все уровни в Left 4 Dead линейные. Но на каждом из них есть множество помещений и закутков, необходимых для спауна живых мертвецов, чтобы им было откуда внезапно выбежать толпой, застав игроков врасплох. В этих ответвлениях разработчики разместили случайно появляющиеся аптечки, бомбы, оружие и бутылки с зажигательной смесью, чтобы поощрять игроков за стремление изучить локацию.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkUyXqE"><div data-col-width="1" class="stk-grid-col" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><p class="stk-element_no-text stk-reset" data-ce-tag="paragraph"><img alt="" class="stk-reset stk-theme_26309__symbol_custom_image_2666427 stk-icon" src="https://ceditor.setka.io/clients/Y5wcTIuOndOzJ1OsacHi3bS9nZFnZeBC/css/assets/26658/img/__hm6D-A.svg"></p></div><div data-col-width="11" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">«Хоть и нелепо говорить о продвинутом ИИ зомби, мы потратили много времени на системы искусственного интеллекта для орды. Прежде всего — на их способность ориентироваться в пространстве. У локаций в Left 4 Dead сложная геометрия, и они усеяны объектами, которые можно ломать и передвигать. Одной из [наших] целей было сделать так, чтобы нигде не было места, где игроки могли бы стоять, а зомби не смогли бы до них добраться. Чтобы добиться этого, нужен был не только надёжный код поиска пути, но и алгоритмы следования по нему. Зомби, идущие по такому пути, должны постоянно оценивать геометрию вокруг себя и решать, где присесть, встать, подпрыгнуть, перелезть или иным образом обойти почти произвольные препятствия окружающей среды».</p><p class="stk-theme_26309__style_small_text stk-reset" data-ce-tag="paragraph"><a class="stk-reset" href="https://left4dead.fandom.com/wiki/Developer_Commentary_(Left_4_Dead)#:~:text=subway%20car%20%5D-,%5BMatt%20Campbell%5D,-Although%20it%20sounds" target="_blank"><strong class="stk-reset">Мэтт Кэмпбелл</strong></a>, <br>один из разработчиков Left 4 Dead</p></div></div><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062920022024_f1dba46f5eb3018402b190ecf8fd0ee8a8f3b6eb.jpg" data-image-id="73945" data-image-name="34.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Left 4 Dead / Valve</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">При разработке команда столкнулась с ограничением на объём данных, которые сервер должен отправлять каждому из игроков. В многопользовательских играх вроде Counter-Strike достаточно передать информацию только о других игроках, их оружии и о том, куда летят их пули. Но в Left 4 Dead также надо обновлять данные о поведении каждого из десятков мертвецов.</p><p class="stk-reset" data-ce-tag="paragraph">Разработчикам пришлось пойти на хитрость. На локациях, которые состоят преимущественно из помещений с плоским полом, мертвецы передают свои координаты лишь по осям X и Z. А вот координаты по оси Y они передают только, когда меняется высота, на которой находится мертвец: если он поднимается или спускается на один этаж, например.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062920022024_c276ca8d399eee73a1c079a8558d4d7cc1304846.jpg" data-image-id="73946" data-image-name="35.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Left 4 Dead / Valve</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В Left 4 Dead ограниченный набор локаций. Реиграбельность обеспечивает ИИ-режиссёр, который всякий раз наполняет уровень мертвецами по-разному, в зависимости от навыков игроков (хотя позже один из разработчиков уверял, что никакого ИИ-режиссёра <a class="stk-reset" href="https://www.gamedeveloper.com/design/15-years-later-chet-faliszek-dishes-on-the-making-of-left-4-dead" target="_blank">не существует</a>, а вместо него просто генератор случайных чисел).</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkhm8e3"><div data-col-width="1" class="stk-grid-col" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><p class="stk-element_no-text stk-reset" data-ce-tag="paragraph"><img alt="" class="stk-reset stk-theme_26309__symbol_custom_image_2666427 stk-icon" src="https://ceditor.setka.io/clients/Y5wcTIuOndOzJ1OsacHi3bS9nZFnZeBC/css/assets/26658/img/__hm6D-A.svg"></p></div><div data-col-width="11" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">«Мы создали систему, которая отслеживает „уровень стресса“ каждого выжившего через такие данные, как „сколько урона получает игрок“, „сколько зомби он убил рядом с собой“ и так далее. Если стресс выжившего становится слишком сильным, система вмешивается и принудительно занижает популяцию зомби, чтобы у команды было время на передышку».</p><p class="stk-theme_26309__style_small_text stk-reset" data-ce-tag="paragraph"><a class="stk-reset" href="https://left4dead.fandom.com/wiki/Developer_Commentary_(Left_4_Dead)#:~:text=windowed%2Droom%20%5D-,%5BGautam%20Babbar%5D,-Based%20on%20the" target="_blank"><strong class="stk-reset">Гаутам Баббар</strong></a>, <br>один из разработчиков Left 4 Dead</p></div></div><p class="stk-reset" data-ce-tag="paragraph">Также разработчики сделали систему, которая заселяет локации только теми видами зомби, которые могут на ней присутствовать. Условно, зомби в медицинской форме появляются только в больнице. Полицейские бродят по улице, офисные работники — в офисах. Ну а комбинируя случайным образом разные текстуры для головы, используя разные оттенки для одежды и различные модели тел, разработчики смогли создать до 1500 разновидностей заражённых. Поэтому игроки не сразу замечают, что мертвецы в преследующей их толпе повторяются.</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph">Days Gone</h2><p class="stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">Days Gone</strong>, ещё одна игра о мире, пережившем зомби-апокалипсис, разрабатывалась с оглядкой на фильм <strong class="stk-reset">«Война миров Z»</strong>. Авторы хотели повторить толпы заражённых, которые гонялись за персонажем Брэда Питта. Эффекта зомби-цунами они не сделали, но вполне правдоподобно изобразили большие скопления фрикеров, или, как их ещё называют, фриков, — людей, под действием вируса мутировавших в монстров (фрикерами также могут быть и животные, но далее речь пойдёт только про людей).</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062920022024_b2d44a98fb0ab389c6e9b7d88859ec7c32c16caa.jpg" data-image-id="73948" data-image-name="36.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Days Gone / Bend Studio</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Численность одной стаи может составлять до 500 особей, причём разработчики не просто расставили их по определённым локациям. Каждая стая проживает день согласно своим потребностям.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkdFQPL"><div data-col-width="1" class="stk-grid-col" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><p class="stk-element_no-text stk-reset" data-ce-tag="paragraph"><img alt="" class="stk-reset stk-theme_26309__symbol_custom_image_2666427 stk-icon" src="https://ceditor.setka.io/clients/Y5wcTIuOndOzJ1OsacHi3bS9nZFnZeBC/css/assets/26658/img/__hm6D-A.svg"></p></div><div data-col-width="11" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">«Они не будут просто сидеть на лесопилке. Они будут входить в здания и впадать в спячку днём, а ночью — выходить и спускаться к воде, чтобы попить, после чего — бродить вокруг. Все 40 типов фрикеров в игре делают так».</p><p class="stk-theme_26309__style_small_text stk-reset" data-ce-tag="paragraph"><a class="stk-reset" href="https://youtu.be/NIsRvgwNX4Y?t=315" target="_blank"><strong class="stk-reset">Джон Гарвин</strong></a>, <br>реативный директор Days Gone</p></div></div><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062920022024_aac8ad733053ee9cbb56d28ab610f6284be1959b.jpg" data-image-id="73949" data-image-name="37.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Days Gone / Bend Studio</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Но была проблема: как создать иллюзию, будто толпа в 500 особей не состоит из близнецов? У команды было всего восемь уникальных моделей, поэтому игроки очень быстро заметили бы противников, как две капли воды похожих друг на друга. Чтобы внести разнообразие, разработчики немного изменили размер некоторых фрикеров в толпе — это повлияло и на их движения.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stk6hxcH"><div data-col-width="1" class="stk-grid-col" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><p class="stk-element_no-text stk-reset" data-ce-tag="paragraph"><img alt="" class="stk-reset stk-theme_26309__symbol_custom_image_2666427 stk-icon" src="https://ceditor.setka.io/clients/Y5wcTIuOndOzJ1OsacHi3bS9nZFnZeBC/css/assets/26658/img/__hm6D-A.svg"></p></div><div data-col-width="11" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">«Если сделать их на одну десятую метра выше или ниже, то это немного разнообразит всю группу… Также простое изменение роста персонажа меняло его походку. Автоматически мы получили разную скорость передвижения фрикеров».</p><p class="stk-reset stk-theme_26309__style_small_text" data-ce-tag="paragraph"><a class="stk-reset" href="https://www.youtube.com/watch?v=NIsRvgwNX4Y" target="_blank"><strong class="stk-reset">Джефф Росс</strong></a>, <br>гейм-директор Days Gone</p></div></div><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062920022024_787cd23beca8deedb64c04891cba8e155a2f0297.jpg" data-image-id="73952" data-image-name="38.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Days Gone / Bend Studio</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Чтобы вся толпа монстров одномоментно не задавила протагониста числом, разработчики придумали систему, которая натравливает на него противников постепенно. Вокруг главного героя есть невидимый круг — если фрикер оказывается внутри этого круга, то начинает бежать к персонажу. По ходу боя круг увеличивается и в итоге накрывает собой всю орду, чтобы даже отставшие заражённые не забывали про игрока.</p><p class="stk-reset" data-ce-tag="paragraph">Другая проблема: изначально фрикеры, преследуя героя, собирались в длинную линию, так как предпочитали идти по наиболее короткому маршруту. Это лишало игру тактического разнообразия: монстры фактически выстраивались в очередь на убой автоматическим оружием. Поэтому разработчикам пришлось найти способ, как рассеять толпу, чтобы игроку было сложнее выбрать, в кого стрелять в первую очередь (но о самом способе они умолчали).</p></div></div><div class="stk-theme_26309__mb_15 stk-grid" data-ce-tag="grid"><div data-col-width="12" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><h2 class="stk-reset stk-theme_26309__style_large_header" data-ce-tag="paragraph">Subnautica</h2><p class="stk-reset" data-ce-tag="paragraph">В <strong class="stk-reset">Subnautica</strong>, игре об исследованиях инопланетного океана, рыбы предпочитают держаться особняком. Косяками плавают лишь мелкие рыбёшки.</p><figure class="stk-code_keep-ratio stk-reset stk-embed_rendered" data-embed-link="https://youtu.be/F8DHORcbjcI" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:56.21%"><iframe class="embedly-embed" src="//cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FF8DHORcbjcI%3Ffeature%3Doembed&display_name=YouTube&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DF8DHORcbjcI&image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FF8DHORcbjcI%2Fhqdefault.jpg&key=8d3909c69dfb4ee29c710191d8dd756a&type=text%2Fhtml&schema=youtube" width="854" height="480" scrolling="no" title="YouTube embed" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description">В конце ролика можно увидеть, как косяк рыб ушёл в скалу</figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">В то время как более крупных особей-одиночек игрок может добыть, чтобы съесть, косяки играют роль скорее декорации. У них <a href="https://subnautica.fandom.com/wiki/Shoal_of_Fish_(Subnautica)#:~:text=Shoals%20of%20fish%20do%20not%20have%20a%20hitbox" target="_blank" class="stk-reset">нет хитбокса</a>, и вы можете спокойно проплыть сквозь них. В то же время и они могут спокойно проплыть сквозь что угодно — скалы, других рыб, подводные аппараты или даже стены вашей подводной базы.</p><p class="stk-reset" data-ce-tag="paragraph">Это один из самых известных багов Subnautica — косяк рыб, который летает по вашему убежищу, будто оно заполнено водой.</p><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062920022024_a7f41f7e241a23287e43cf7b32196328f3ee98f4.jpg" data-image-id="73954" data-image-name="39.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Subnautica / Unknown Worlds Entertainment</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">На самом деле косяк рыб в Subnautica — это не множество маленьких объектов, а один невидимый объект с генератором частиц внутри него. На такую хитрость разработчикам пришлось пойти для повышения производительности.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stk2ilvm"><div data-col-width="1" class="stk-grid-col" data-ce-tag="grid-col" data-stk-css="" data-stk-css-m=""><p class="stk-element_no-text stk-reset" data-ce-tag="paragraph"><img alt="" class="stk-reset stk-theme_26309__symbol_custom_image_2666427 stk-icon" src="https://ceditor.setka.io/clients/Y5wcTIuOndOzJ1OsacHi3bS9nZFnZeBC/css/assets/26658/img/__hm6D-A.svg"></p></div><div data-col-width="11" class="stk-grid-col stk-grid-col_last" data-ce-tag="grid-col"><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">«Единственный способ получить косяк из такого количества рыб — это реализовать их в качестве эффекта частиц, которые используют полигон с текстурой [рыбы], как это реализовано сейчас. Использование одиночных рыб в таком большом количестве — это серьёзный удар по производительности не только из-за геометрических деталей, но и из-за искусственного интеллекта каждой отдельной рыбы и общего их количества».</p><p class="stk-theme_26309__mb_05 stk-reset stk-theme_26309__style_small_text" data-ce-tag="paragraph"><a href="https://steamcommunity.com/app/264710/discussions/0/617336568078226610/" target="_blank" class="stk-reset">Один из разработчиков Subnautica</a>, отвечая на вопрос игрока в Steam о том, что рыбы в косяках ненастоящие</p></div></div><figure class="stk-reset stk-image-figure" data-ce-tag="image-figure"><div class="stk-mask" data-ce-tag="mask"><img src="/upload/setka_images/13062920022024_01c985b720c9d485c3202f0fd3f67804db43c17c.jpg" data-image-id="73951" data-image-name="40.jpg" width="1540" height="866" loading="lazy" class="stk-image stk-reset"/></div><figcaption style="display:block" class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">Скриншот: игра Subnautica / Unknown Worlds Entertainment</em></figcaption></figure><p class="align-center stk-reset" data-ce-tag="paragraph">* * *</p><p class="stk-reset" data-ce-tag="paragraph">Стаи, косяки, табуны, толпы, рои или просто группы существ в игре не всегда нужны, но если они есть и грамотно реализованы, то это гарантированно добавит зрелищности и реалистичности. Воплотить в жизнь такое стайное поведение можно разными способами. Главное здесь — не перегрузить компьютер вычислениями.</p><p class="stk-reset" data-ce-tag="paragraph">В некоторых случаях, как в <strong class="stk-reset">Subnautica</strong>, можно обойтись и простым генератором частиц. Но в примерах вроде <strong class="stk-reset">Assassin’s Creed Unity</strong>, <strong class="stk-reset">Left 4 Dead</strong> или <strong class="stk-reset">Hitman: Absolution</strong>, где толпа — это отдельная игровая механика, подобным хитростям места не найдётся. Придётся придумывать свои или использовать те наработки, уже имеющиеся в игровой индустрии, — например, алгоритм <strong class="stk-reset">Boids</strong> Крейга Рейнольдса, созданный ещё в 1980-х, который в том или ином виде до сих пор встречается в играх и кино.</p></div></div><style data-stk-css="stkAMqsq" class="" media="all">
[data-stk-css="stkAMqsq"]:not(#stk):not(#stk):not(style) {
border-radius: 16px;
padding: 20px;
border: 1px solid;
border-color: #E4E4E4;
background-color: rgba(241, 242, 246, 1)
}
</style><style data-stk-css="stk2bUk3" class="" media="all">
[data-stk-css="stk2bUk3"]:not(#stk):not(#stk):not(style) {
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
-o-hyphens: none;
hyphens: none
}
</style><style data-stk-css="stk2ilvm" media="all" class="">
[data-stk-css="stk2ilvm"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stk6hxcH" media="all" class="">
[data-stk-css="stk6hxcH"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkdFQPL" media="all" class="">
[data-stk-css="stkdFQPL"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkhm8e3" media="all" class="">
[data-stk-css="stkhm8e3"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkUyXqE" media="all" class="">
[data-stk-css="stkUyXqE"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stk8cxVx" media="all" class="">
[data-stk-css="stk8cxVx"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkaGlrs" media="all" class="">
[data-stk-css="stkaGlrs"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkIuQ90" media="all" class="">
[data-stk-css="stkIuQ90"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkg1gYE" media="all" class="">
[data-stk-css="stkg1gYE"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkGAyC7" media="all" class="">
[data-stk-css="stkGAyC7"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stk4oPi1" media="all" class="">
[data-stk-css="stk4oPi1"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stktyYr3" media="all" class="">
[data-stk-css="stktyYr3"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><style data-stk-css="stkZPuO-" media="all" class="">
[data-stk-css="stkZPuO-"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style><div class="stk-footnote stk-footnote--hide" data-stk-show="mouseover" data-stk-footnote-body="fnpwSOg" data-ce-tag="footnote" style="display:none"><div class="stk-footnote__close"></div><div class="stk-footnote__body"><p class="stk-theme_26309__style_small_text stk-reset" data-ce-tag="paragraph">Компания Symbolics среди прочего известна тем, что первой в истории зарегистрировала доменное имя в зоне .com.</p></div></div></div> </div>
</div>
</div>
</div>
<div class="col-xl-9 col-lg-8 col-poster">
<div class="article-preview-info">
</div>
</div>
<noindex>
<div class="share" data-nosnippet>
<button class="share__handler-btn ">
<span class="share__handler-icon">
<svg width="11" height="12" viewBox="0 0 11 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11 4.99902L6 0V2.99805C2.688 2.99805 0 5.68505 0 8.99805V11.498H0.0980225C0.765022 8.91205 3.107 6.99805 5.901 6.99805H6.00098V9.99805L11 4.99902Z" fill="currentColor"/>
</svg>
</span>
<span class="share__handler-text">Поделиться</span>
</button>
<div class="share__list">
<a href="#" class="share__item" data-code="vk">
<span class="share__item-icon share__item-icon--vk">
<svg width="9" height="5" viewBox="0 0 9 5" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.04776 4.98054H4.53996C4.62377 4.97136 4.70279 4.9361 4.76621 4.87951C4.81226 4.81209 4.83594 4.73139 4.83369 4.64925C4.83369 4.64925 4.82574 3.94629 5.1314 3.84125C5.43701 3.73621 5.826 4.51998 6.23879 4.82297C6.39281 4.95308 6.59128 5.01558 6.79053 4.99669L7.89399 4.98054C7.89399 4.98054 8.47355 4.94415 8.19965 4.46339C7.98372 4.08315 7.70589 3.743 7.37799 3.45744C6.68338 2.77872 6.77865 2.8878 7.61219 1.71216C8.12024 0.997077 8.32269 0.556717 8.25918 0.370875C8.14651 0.254767 7.98299 0.205914 7.82655 0.241594L6.58018 0.249674C6.52565 0.241067 6.46984 0.251007 6.42141 0.277954C6.37298 0.314507 6.33466 0.363228 6.31025 0.419356C6.18259 0.772814 6.0287 1.11586 5.8498 1.44552C5.29807 2.43936 5.07579 2.49188 4.98451 2.43128C4.77416 2.28584 4.82574 1.85356 4.82574 1.54248C4.82574 0.580957 4.96468 0.176954 4.55979 0.0719133C4.36879 0.0254376 4.17259 0.00505841 3.97631 0.0113129C3.62834 -0.0214164 3.27745 0.017045 2.94429 0.124433C2.8014 0.197154 2.69423 0.358753 2.76171 0.370875C2.90334 0.385518 3.03406 0.454932 3.12688 0.564795C3.21268 0.750336 3.25481 0.953675 3.24993 1.15868C3.24993 1.15868 3.32535 2.29392 3.07925 2.43532C2.91254 2.53228 2.68232 2.33432 2.18616 1.4334C2.01958 1.11848 1.87243 0.793298 1.74557 0.459754C1.72231 0.404013 1.68704 0.354309 1.64236 0.314316C1.58589 0.272672 1.52066 0.245006 1.45184 0.233514L0.268986 0.241594C0.181167 0.241154 0.0958013 0.271066 0.0268587 0.326434C-0.00595087 0.396174 -0.00882613 0.476652 0.0189202 0.548633C0.0189202 0.548633 0.947737 2.83932 1.99563 3.99477C2.51 4.60651 3.2568 4.96526 4.04776 4.98054Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Vkontakte</span>
</a>
<a href="#" class="share__item" data-code="tw">
<span class="share__item-icon share__item-icon--tw">
<svg width="9" height="7" viewBox="0 0 9 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.52788 0.00144284V0H5.9158L6.05754 0.027414C6.15204 0.0452114 6.23783 0.068535 6.31491 0.0973918C6.39201 0.126249 6.46661 0.159917 6.53872 0.198391C6.61083 0.236864 6.67623 0.276066 6.73492 0.315982C6.79311 0.355422 6.84533 0.397265 6.89158 0.441509C6.93733 0.486237 7.0087 0.49778 7.10568 0.476138C7.20266 0.454495 7.3071 0.424433 7.419 0.38596C7.5309 0.347487 7.64156 0.304201 7.75097 0.256104C7.86039 0.208007 7.92703 0.177469 7.95091 0.164484C7.97428 0.151022 7.98671 0.143808 7.98821 0.142841L7.98969 0.140677L7.99715 0.13707L8.00461 0.133463L8.01207 0.129856L8.01953 0.126249L8.02102 0.124084L8.02326 0.122642L8.02551 0.121199L8.02699 0.119034L8.03445 0.11687L8.04191 0.115427L8.04043 0.126249L8.03818 0.13707L8.03445 0.147891L8.03072 0.158713L8.02699 0.165927L8.02326 0.173141L8.01953 0.183962C8.01705 0.191176 8.01456 0.200793 8.01207 0.212819C8.00959 0.224845 7.98596 0.272935 7.9412 0.357103C7.89644 0.441271 7.84049 0.526637 7.77335 0.613208C7.70621 0.699778 7.64604 0.765182 7.59283 0.809434C7.53911 0.854162 7.50355 0.885421 7.48614 0.903219C7.46874 0.921492 7.4476 0.938323 7.42273 0.953718L7.38543 0.977525L7.37797 0.981132L7.37051 0.984739L7.36902 0.986903L7.36678 0.988346L7.36454 0.989789L7.36305 0.991953L7.35559 0.99556L7.34813 0.999168L7.34664 1.00133L7.3444 1.00277L7.34216 1.00422L7.34067 1.00638L7.33918 1.00855L7.33694 1.00999L7.3347 1.01143L7.33321 1.0136H7.37051L7.57939 0.970311C7.71865 0.941454 7.85168 0.906588 7.9785 0.865705L8.17992 0.800777L8.2023 0.793563L8.21349 0.789956L8.22095 0.786348L8.22841 0.782741L8.23587 0.779134L8.24333 0.775527L8.25825 0.773363L8.27317 0.77192V0.786348L8.26944 0.787791L8.26571 0.789956L8.26423 0.79212L8.26198 0.793563L8.25974 0.795006L8.25825 0.79717L8.25677 0.799334L8.25452 0.800777L8.25228 0.80222L8.25079 0.804384L8.24931 0.806548L8.24706 0.807991L8.24333 0.815205L8.2396 0.82242L8.23736 0.823862C8.23637 0.825305 8.20479 0.866181 8.14262 0.946504C8.08046 1.0273 8.04689 1.06818 8.04191 1.06915C8.03694 1.07059 8.02997 1.0778 8.02102 1.09079C8.01257 1.10425 7.95985 1.15788 7.86287 1.25166C7.76589 1.34545 7.67091 1.42889 7.57791 1.502C7.48441 1.57558 7.43716 1.666 7.43616 1.77325C7.43467 1.88002 7.42895 2.00074 7.419 2.13541C7.40905 2.27007 7.3904 2.41555 7.36305 2.57186C7.3357 2.72817 7.29342 2.90492 7.23623 3.10211C7.17904 3.29929 7.10941 3.49168 7.02735 3.67925C6.94529 3.86681 6.8595 4.03514 6.76998 4.18424C6.68046 4.33334 6.5984 4.45958 6.5238 4.56299C6.4492 4.66639 6.37336 4.76378 6.29626 4.85516C6.21918 4.94654 6.12171 5.04947 6.00384 5.16393C5.88547 5.27791 5.82082 5.34044 5.80988 5.3515C5.79844 5.36208 5.74971 5.40152 5.66365 5.46981C5.57812 5.53858 5.48611 5.60736 5.38763 5.67614C5.28966 5.74443 5.19964 5.80143 5.11758 5.84711C5.03552 5.8928 4.93655 5.94498 4.82067 6.00366C4.70529 6.06282 4.58046 6.11765 4.44618 6.16815C4.3119 6.21865 4.17016 6.26554 4.02096 6.30882C3.87176 6.35211 3.72753 6.38578 3.58827 6.40982C3.44903 6.43387 3.29112 6.45431 3.11456 6.47114L2.84973 6.49639V6.5H2.36483V6.49639L2.30142 6.49279C2.25915 6.49038 2.22433 6.48797 2.19698 6.48557C2.16963 6.48317 2.06643 6.46994 1.88739 6.44589C1.70835 6.42185 1.56785 6.3978 1.4659 6.37375C1.36395 6.34971 1.21225 6.30401 1.01083 6.23668C0.809413 6.16935 0.637087 6.10129 0.493854 6.03252C0.351121 5.96422 0.261601 5.92094 0.225293 5.90266C0.189485 5.88487 0.149201 5.86275 0.10444 5.83629L0.0373001 5.79661L0.0358156 5.79445L0.0335701 5.79301L0.0313321 5.79156L0.0298401 5.7894L0.0223801 5.78579L0.0149201 5.78219L0.0134355 5.78002L0.01119 5.77858L0.00895204 5.77714L0.00746003 5.77497L0.00597548 5.77281L0.00373001 5.77137H0V5.75694L0.00746003 5.75838L0.0149201 5.76054L0.0484902 5.76415C0.0708703 5.76655 0.131796 5.77016 0.231261 5.77497C0.330733 5.77978 0.436412 5.77978 0.548312 5.77497C0.660213 5.77016 0.774605 5.75934 0.891474 5.74251C1.00835 5.72568 1.14636 5.69682 1.30551 5.65594C1.46466 5.61505 1.61087 5.56648 1.74416 5.51021C1.87695 5.45346 1.97144 5.41114 2.02764 5.38324C2.08334 5.35583 2.16838 5.30484 2.28277 5.2303L2.45435 5.11848L2.45584 5.11632L2.45808 5.11487L2.46033 5.11343L2.46181 5.11127L2.4633 5.1091L2.46554 5.10766L2.46779 5.10622L2.46927 5.10405L2.47673 5.10189L2.48419 5.10044L2.48568 5.09323L2.48792 5.08602L2.49017 5.08457L2.49165 5.08241L2.43197 5.0788C2.39219 5.0764 2.35364 5.07399 2.31634 5.07159C2.27904 5.06918 2.2206 5.05836 2.14103 5.03912C2.06146 5.01988 1.97567 4.99103 1.88366 4.95255C1.79165 4.91408 1.70213 4.86838 1.6151 4.81548C1.52807 4.76258 1.46515 4.71857 1.42636 4.68346C1.38807 4.64883 1.33833 4.59978 1.27716 4.53629C1.21648 4.47233 1.16376 4.40668 1.119 4.33934C1.07424 4.27202 1.03148 4.19433 0.990699 4.10633L0.928774 3.97503L0.925044 3.96421L0.921314 3.95339L0.919076 3.94617L0.917584 3.93896L0.928774 3.9404L0.939964 3.94256L1.02202 3.95339C1.07674 3.9606 1.16253 3.963 1.27939 3.9606C1.39627 3.9582 1.47709 3.95339 1.52185 3.94617C1.56661 3.93896 1.59396 3.93414 1.60391 3.93174L1.61883 3.92814L1.63748 3.92453L1.65613 3.92092L1.65762 3.91876L1.65986 3.91731L1.6621 3.91587L1.66359 3.91371L1.64867 3.9101L1.63375 3.90649L1.61883 3.90289L1.60391 3.89928L1.58899 3.89567C1.57904 3.89327 1.56164 3.88846 1.53677 3.88124C1.5119 3.87403 1.44476 3.84757 1.33535 3.80189C1.22594 3.7562 1.1389 3.71171 1.07424 3.66842C1.00943 3.62501 0.947626 3.57754 0.889235 3.5263C0.831047 3.47436 0.767145 3.40751 0.697513 3.32575C0.627888 3.24399 0.565724 3.149 0.511012 3.04079C0.456308 2.93257 0.415277 2.82917 0.387922 2.73058C0.360676 2.63256 0.3427 2.53235 0.334217 2.43119L0.320781 2.27969L0.328241 2.28113L0.335701 2.2833L0.343161 2.2869L0.350621 2.29051L0.358081 2.29412L0.365541 2.29772L0.481172 2.34822C0.558264 2.38189 0.653998 2.41075 0.768383 2.43479C0.882775 2.45884 0.951154 2.47207 0.973534 2.47447L1.0071 2.47808H1.07424L1.07276 2.47592L1.07051 2.47447L1.06828 2.47303L1.06678 2.47087L1.0653 2.4687L1.06305 2.46726L1.06082 2.46582L1.05932 2.46365L1.05186 2.46004L1.0444 2.45644L1.04292 2.45427L1.04067 2.45283L1.03844 2.45139L1.03694 2.44922L1.02948 2.44562L1.02202 2.44201L1.02054 2.43984C1.01905 2.43888 0.99766 2.42349 0.956376 2.39367C0.915592 2.36337 0.872823 2.32418 0.828063 2.27608C0.783303 2.22798 0.738543 2.17749 0.693783 2.12458C0.64894 2.07156 0.609 2.01483 0.574422 1.95505C0.539614 1.89493 0.502806 1.81846 0.464014 1.72564C0.425721 1.6333 0.396627 1.54023 0.376731 1.44645C0.356843 1.35266 0.345653 1.26008 0.343161 1.1687C0.340677 1.07732 0.343161 0.999168 0.350621 0.93424C0.358081 0.869312 0.373001 0.795965 0.395382 0.714206C0.417762 0.632448 0.450093 0.545877 0.492362 0.454495L0.555772 0.317425L0.559502 0.306604L0.563232 0.295782L0.565478 0.29434L0.566962 0.292175L0.568454 0.290011L0.570692 0.288568L0.572938 0.290011L0.574422 0.292175L0.575914 0.29434L0.578152 0.295782L0.580398 0.297225L0.581882 0.29939L0.583374 0.301554L0.585612 0.302997L0.589342 0.310211L0.593072 0.317425L0.595318 0.318868L0.596802 0.321032L0.697513 0.429245C0.764653 0.501387 0.844229 0.581948 0.936234 0.670921C1.02825 0.759894 1.07922 0.806065 1.08916 0.809434C1.09912 0.813279 1.11154 0.824338 1.12646 0.842619C1.14138 0.860417 1.19112 0.902981 1.27567 0.970311C1.36022 1.03764 1.47087 1.1158 1.60764 1.20477C1.74441 1.29375 1.89609 1.38152 2.0627 1.46809C2.22931 1.55466 2.40835 1.63281 2.59982 1.70255C2.7913 1.77229 2.92558 1.81798 3.00266 1.83962C3.07975 1.86127 3.21154 1.88892 3.39804 1.92259C3.58454 1.95625 3.72505 1.9779 3.81954 1.98751C3.91403 1.99713 3.97869 2.00266 4.0135 2.00411L4.06572 2.00555L4.06423 1.99473L4.06199 1.98391L4.04707 1.89373C4.03712 1.83361 4.03215 1.74944 4.03215 1.64123C4.03215 1.53302 4.04085 1.43322 4.05826 1.34184C4.07567 1.25046 4.10178 1.15788 4.13659 1.0641C4.1714 0.970311 4.20547 0.895038 4.23879 0.838291C4.27261 0.78202 4.31687 0.717814 4.37158 0.645671C4.42629 0.573529 4.49716 0.498985 4.58419 0.422031C4.67122 0.345077 4.77069 0.276542 4.88259 0.216426C4.99449 0.15631 5.09769 0.110615 5.19218 0.0793563C5.28668 0.0480971 5.36625 0.0276521 5.4309 0.0180355C5.49556 0.00841898 5.52788 0.00288568 5.52788 0.00144284Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Twitter</span>
</a>
<a href="#" class="share__item" data-code="tg">
<span class="share__item-icon share__item-icon--tg">
<svg width="10" height="7" viewBox="0 0 10 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.39589 3.04852C1.39589 3.04852 5.05491 1.51189 6.32392 0.9708C6.8104 0.754384 8.46012 0.0617918 8.46012 0.0617918C8.46012 0.0617918 9.22155 -0.241191 9.15809 0.494655C9.13692 0.797667 8.96773 1.85815 8.79854 3.00523C8.54472 4.62846 8.26976 6.40316 8.26976 6.40316C8.26976 6.40316 8.22746 6.90097 7.86791 6.98753C7.50836 7.0741 6.91613 6.68455 6.8104 6.59795C6.72577 6.53304 5.22411 5.5591 4.6742 5.08295C4.52614 4.9531 4.35695 4.6934 4.69533 4.39039C5.45676 3.67617 6.36622 2.78882 6.91613 2.2261C7.16995 1.96638 7.42374 1.36038 6.36622 2.09622C4.86456 3.15674 3.38403 4.15231 3.38403 4.15231C3.38403 4.15231 3.04561 4.36873 2.41111 4.17394C1.77657 3.97918 1.03631 3.71945 1.03631 3.71945C1.03631 3.71945 0.528726 3.39481 1.39589 3.04852Z" fill="white"/>
</svg>
</span>
<span class="share__item-text">Telegram</span>
</a>
<a href="#" class="share__item js-share-item-copy">
<span class="share__item-icon share__item-icon--copy">
<svg width="10" height="10" viewBox="0 0 10 10" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.19922 5.40327C4.37217 5.63449 4.59283 5.8258 4.84622 5.96425C5.09962 6.10269 5.37982 6.18501 5.66783 6.20564C5.95584 6.22627 6.24492 6.18471 6.51546 6.08379C6.78599 5.98287 7.03166 5.82495 7.2358 5.62074L8.44399 4.41255C8.81079 4.03277 9.01375 3.52412 9.00917 2.99615C9.00458 2.46818 8.79281 1.96313 8.41946 1.58978C8.04611 1.21644 7.54106 1.00466 7.01309 1.00008C6.48512 0.995488 5.97647 1.19845 5.59669 1.56525L4.904 2.25392" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.81002 4.59658C5.63707 4.36536 5.41641 4.17404 5.16302 4.0356C4.90962 3.89716 4.62942 3.81483 4.34141 3.79421C4.0534 3.77358 3.76432 3.81514 3.49379 3.91605C3.22325 4.01697 2.97758 4.17489 2.77344 4.3791L1.56525 5.58729C1.19845 5.96707 0.995488 6.47572 1.00008 7.0037C1.00466 7.53167 1.21644 8.03672 1.58978 8.41006C1.96313 8.78341 2.46818 8.99518 2.99615 8.99977C3.52412 9.00436 4.03277 8.80139 4.41255 8.43459L5.10122 7.74592" stroke="black" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</span>
<span class="share__item-text">Скопировать ссылку</span>
</a>
</div>
</div>
</noindex>
</div>
<section class="container inset" data-banner="217687" data-source="218273" data-format="horizontal">
<div class="row">
<div class="col-lg-8 col-sm-12">
<a
target="_blank" href="https://skillbox.ru/course/profession-unity-middle/"
class="article-advert-banner__link courseLink"
data-banner="217687"
data-source="218273"
data-format="horizontal"
data-type="horizontal"
>
<div class="inset__wrapper" style="background-color: #E1F5FC;">
<div class="inset__content">
<h2 class="inset__header">Курс</h2>
<p class="inset__description">
Профессия Разработчик игр на Unity с нуля </p>
<p class="inset__text">
Вы получите полноценную профессию всего за год, смените сферу деятельности и начнете зарабатывать уже во время обучения. </p>
<p class="inset__button article-advert-banner__link"> Узнать про курс</p>
</div>
<div class="inset__image">
<img src="https://cdn.skillbox.pro/landgen/blocks/start-screen/545466/lg/a3dfdaea-3133-4dec-a735-efd72017989f.webp" width="145" height="145" alt="">
</div>
</div>
</a>
</div>
</div>
</section>
</section>
<div class="article-banner" data-banner="221421" data-source="218273" data-format="vertical" data-type="vertical">
<div class="row">
<div class="col-sm-4 col-sm-12">
<a data-source="218273" data-banner="221421" href="https://bootcamp.skillbox.ru/2d-game-short/?utm_source=media&utm_medium=banners&utm_campaign=all_all_media_banners_invite_bootcamp-616_all_gameA_skillbox" class="inset__wrapper" style="background-color: #f2eeff; display: block; text-decoration: none; color: inherit;" target="_blank">
<div class="inset__content">
<div class="inset__image" style="text-align: center;">
<img src="https://skillbox.ru/upload/setka_images/gamedev_side_a.png" width="250" height="135" alt="">
</div>
<p class="inset__description" style="color:#000!important; padding-bottom:13px;">
Любите игры? Попробуйте себя в геймдеве!
</p>
<p class="inset__text" style="color:#000!important">
❓Кто вы: геймдизайнер, разработчик, концепт-художник? Узнайте на бесплатном курсе.
</p>
<div class="inset__button article-advert-banner__link" style="color:#000; background-color:#ffafff; display: inline-block;">? Узнать, кто я →</div>
</div>
</a>
</div>
</div>
</div>
<a
target="_blank" href="https://skillbox.ru/course/profession-unity-middle/"
class="article-banner article-advert-banner__link"
style="background-color: #E1F5FC;"
data-banner="217687"
data-source="218273"
data-format="top"
data-type="top"
>
<div class="article-banner__img">
<img src="https://cdn.skillbox.pro/landgen/blocks/start-screen/545466/lg/a3dfdaea-3133-4dec-a735-efd72017989f.webp" alt="">
</div>
<span class="article-banner__title">Научитесь: <u>Профессия Разработчик игр на Unity с нуля</u></span>
<span class="article-banner__link">Узнать больше</span>
</a>
<section class="container news">
<div class="row">
<div class="col-lg-8 col-sm-12">
<h2 class="news__header">Новости</h2>
<div class="row">
<div class="col-xl-4 col-lg-6 col-md-4 col-12 news__item">
<a href="/media/gamedev/novye-vakansii-v-geymdeve-v-rossii-i-drugikh-stranakh/" class="news__text">
Новые вакансии в геймдеве — в России и других странах </a>
<span class="news__date">23 июн 2025</span>
</div>
<div class="col-xl-4 col-lg-6 col-md-4 col-12 news__item">
<a href="/media/gamedev/kak-ustanovit-russkiy-yazyk-v-the-elder-scrolls-4-oblivion-remastered/" class="news__text">
Как установить русский язык в The Elder Scrolls 4: Oblivion Remastered </a>
<span class="news__date">23 апр 2025</span>
</div>
<div class="col-xl-4 col-lg-6 col-md-4 col-12 news__item">
<a href="/media/gamedev/remaster-days-gone-novaya-igra-ot-avtorov-returnal-i-drugie-igry-so-state-of-play-2025/" class="news__text">
Ремастер Days Gone, новая игра от авторов Returnal и другие игры со State of Play 2025 </a>
<span class="news__date">13 фев 2025</span>
</div>
</div>
</div>
</div>
</section>
<div class="slider-news-wrap media-catalog-content media-catalog-content--interesting">
<div class="container">
<div class="slider-news slider-news--article-slider js-slider-news">
<div class="slider-news__header">
<div class="slider-news__title" style="font-family: 'Graphik'; font-weight: 500;">
<span class="slider-news__title-notmob">Это интересно</span>
<span class="slider-news__title-mob">Это интересно</span>
</div>
<div class="slider-news__nav-wrapper">
<div class="slider-news__nav-button button-prev swiper-button-disabled" tabindex="0" role="button" aria-label="Previous slide" aria-disabled="true">
<svg viewBox="0 0 9 15" width="9" height="15" class="icon">
<use xlink:href="/static/svg/svg-symbols-site.svg#icon-arrow-chevron" href="/static/svg/svg-symbols-site.svg#icon-arrow-chevron"></use>
</svg>
</div>
<div class="slider-news__nav-button button-next" tabindex="0" role="button" aria-label="Next slide" aria-disabled="false">
<svg viewBox="0 0 9 15" width="9" height="15" class="icon">
<use xlink:href="/static/svg/svg-symbols-site.svg#icon-arrow-chevron" href="/static/svg/svg-symbols-site.svg#icon-arrow-chevron"></use>
</svg>
</div>
</div>
</div>
<div class="slider-news__carousel grad-end">
<div class="slider-news__container swiper-container swiper-container-initialized swiper-container-horizontal">
<div class="swiper-wrapper">
<div class="slider-news__slide swiper-slide swiper-slide-active" style="margin-right: 20px;">
<div class="news-block__item">
<div class="news-block__img" style="margin-bottom: 8px;">
<picture>
<img src="https://248006.selcdn.ru/main/iblock/0d8/0d8aa9493e01c7ba537ff3d6448b546d/c1db1aa21b11c1d1ffa63b56ebf1f1bb.jpg">
</picture> </div>
<a href="/media/gamedev/story-anton-lovkaycis/" class="news-block__title" style="font-family: 'Graphik'; font-size: 14px; line-height: 19px; -webkit-line-clamp: 4; font-weight: 500">
«Наконец почувствовал себя на своём месте»: история геймдизайнера Антона Ловкайциса </a>
</div>
</div>
<div class="slider-news__slide swiper-slide swiper-slide-active" style="margin-right: 20px;">
<div class="news-block__item">
<div class="news-block__img" style="margin-bottom: 8px;">
<picture>
<img src="https://248006.selcdn.ru/main/iblock/56b/56b55c44a69de66809b2628b5403dff2/686b7a4dcd4a19d6b8729882e2f018cc.png">
</picture> </div>
<a href="/media/gamedev/komandy-minecraft/" class="news-block__title" style="font-family: 'Graphik'; font-size: 14px; line-height: 19px; -webkit-line-clamp: 4; font-weight: 500">
Полезные команды Minecraft, о которых вы могли не знать </a>
</div>
</div>
<div class="slider-news__slide swiper-slide swiper-slide-active" style="margin-right: 20px;">
<div class="news-block__item">
<div class="news-block__img" style="margin-bottom: 8px;">
<picture>
<img src="https://248006.selcdn.ru/main/iblock/9c9/9c9cd317f3b707aec56220b7fe6b5522/3091c79a2abe790014f41c95546d71e9.png">
</picture> </div>
<a href="/media/gamedev/kak-sdelat-svoj-mod-minecraft/" class="news-block__title" style="font-family: 'Graphik'; font-size: 14px; line-height: 19px; -webkit-line-clamp: 4; font-weight: 500">
Как создавать моды для Minecraft: руководство для начинающих </a>
</div>
</div>
<div class="slider-news__slide swiper-slide swiper-slide-active" style="margin-right: 20px;">
<div class="news-block__item">
<div class="news-block__img" style="margin-bottom: 8px;">
<picture>
<img src="https://248006.selcdn.ru/main/iblock/335/3351deb1e791b5035982a1bc8883835b/4a6f8d0878d6eaffe5211f410aff0b7d.jpg">
</picture> </div>
<a href="/media/gamedev/story-artem-niyazov/" class="news-block__title" style="font-family: 'Graphik'; font-size: 14px; line-height: 19px; -webkit-line-clamp: 4; font-weight: 500">
«Я работал на стройке, а теперь разрабатываю игры»: история Артёма Ниязова </a>
</div>
</div>
<div class="slider-news__slide swiper-slide swiper-slide-active" style="margin-right: 20px;">
<div class="news-block__item">
<div class="news-block__img" style="margin-bottom: 8px;">
<picture>
<img src="https://248006.selcdn.ru/main/iblock/9bb/9bb6e7d9d354ccccff54426a130317ae/cf8ea59f07ab9d9303634c3166a2c0d7.png">
</picture> </div>
<a href="/media/gamedev/obzor-knigi-razrabotka-igr-na-unity-putevoditelya-po-vozmozhnostyam-igrovogo-dvizhka/" class="news-block__title" style="font-family: 'Graphik'; font-size: 14px; line-height: 19px; -webkit-line-clamp: 4; font-weight: 500">
Обзор книги «Разработка игр на Unity» — путеводителя по возможностям игрового движка </a>
</div>
</div>
</div>
<span class="swiper-notification" aria-live="assertive" aria-atomic="true"></span>
</div>
</div>
</div>
</div>
</div>
<div class="question">
<div class="container">
<div class="question__inner">
<div class="question__title">Понравилась статья?</div>
<a href="#" data-cur-url="/media/gamedev/stai-i-tolpy-v-igrakh-kak-programmiruyut-realistichnoe-staynoe-povedenie/"
class="question__btn js-modalLink" data-mfp-src="#modalAuth">Да</a>
</div>
</div>
</div>
</div>
<span
data-area="article-bottom"
data-current-url="/media/gamedev/stai-i-tolpy-v-igrakh-kak-programmiruyut-realistichnoe-staynoe-povedenie/"
data-id="218273">
</span>
</div>
<script type="application/ld+json">
{"@context":"http:\/\/schema.org","@type":"Article","url":"https:\/\/skillbox.ru\/media\/gamedev\/stai-i-tolpy-v-igrakh-kak-programmiruyut-realistichnoe-staynoe-povedenie\/","headline":"\u0421\u0442\u0430\u0438 \u0438\u00a0\u0442\u043e\u043b\u043f\u044b \u0432\u00a0\u0438\u0433\u0440\u0430\u0445: \u043a\u0430\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u044e\u0442 \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0435 \u0441\u0442\u0430\u0439\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435","articleSection":"\u0413\u0435\u0439\u043c\u0434\u0435\u0432","articleBody":"\u0412 \u0432\u0438\u0434\u0435\u043e\u0438\u0433\u0440\u0430\u0445 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \r\n\u0441\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432 \u0438\u043b\u0438 NPC \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u0430\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043b\u043e\u0433\u0438\u043a\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043d\u0438\u0445, \u0430 \u043f\u043e\u0442\u043e\u043c \u043d\u0430\u043f\u0438\u0447\u043a\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u0446\u0438\u044e \u0435\u0433\u043e \u043a\u043b\u043e\u043d\u0430\u043c\u0438. \u0418\u0433\u0440\u0430 \u0437\u0430\u0445\u043b\u0435\u0431\u043d\u0451\u0442\u0441\u044f \u0442\u043e\u0440\u043c\u043e\u0437\u0430\u043c\u0438, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u0434\u0442\u0438 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b\u0434\u0430\u044e\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043e\u043d\u0438 \u0434\u043e\u0431\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u044d\u0442\u043e\u0433\u043e.\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c Boids \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438. \u0421\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0434\u043b\u044f Unity \u0431\u043b\u043e\u0433\u0435\u0440\u043e\u043c SuboptimalEng [ https:\/\/www.youtube.com\/@SuboptimalEng ] \r\n\r\n \r\n\r\n \r\n\r\n\r\n\u041f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435\u0441\u044c \u043d\u0430 \u043d\u0430\u0448 \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c-\u043a\u0430\u043d\u0430\u043b \r\n\u00ab\u0427\u0435\u043a\u043f\u043e\u0438\u043d\u0442\u00bb . \u042d\u0442\u043e \u0443\u044e\u0442\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0431 \u0438\u0433\u0440\u0430\u0445 \u0438 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u043d\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438 \u0441\u043e\u0432\u0435\u0442\u0430\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438 \u043f\u0438\u0448\u0435\u043c \u043e \u0432\u0430\u0436\u043d\u044b\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0441\u043e\u0444\u0442\u0430. \u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044b: \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u044c \u0438\u0434\u0435\u044e \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0431\u0441\u0443\u0434\u0438\u0442\u044c \u0432\u0441\u0451, \u0447\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0433\u0435\u0439\u043c\u0434\u0435\u0432\u043e\u043c.\r\n\r\n\u0418\u0441\u0442\u043e\u043a\u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0441\u0442\u0430\u0439\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f\r\n\r\n\u0412 \u0444\u0438\u043b\u044c\u043c\u0435 \u0422\u0438\u043c\u0430 \u0411\u0451\u0440\u0442\u043e\u043d\u0430 \u00ab\u0411\u044d\u0442\u043c\u0435\u043d \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f\u00bb \r\n\u0431\u044b\u043b\u0430 \u0441\u0446\u0435\u043d\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430 \u0436\u0438\u0442\u0435\u043b\u0435\u0439 \u0413\u043e\u0442\u044d\u043c\u0430 \u043d\u0430\u043f\u0430\u043b\u0430 \u0441\u0442\u0430\u044f [ https:\/\/www.youtube.com\/watch?v=A8Xt3DlrwhY ] \u043b\u0435\u0442\u0443\u0447\u0438\u0445 \u043c\u044b\u0448\u0435\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u0446\u0435\u043d\u0430 \u0441 \u043c\u0430\u0440\u0448\u0438\u0440\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0438\u043d\u0433\u0432\u0438\u043d\u0430\u043c\u0438. \u0418\u0445 \u0432\u043e\u043f\u043b\u043e\u0442\u0438\u043b\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u0438, \u0430 \u0432\u043e\u0442 \u0437\u0430 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0441\u0442\u0430\u0439\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u043e\u0442\u0432\u0435\u0447\u0430\u043b \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u044d\u043a\u0441\u043f\u0435\u0440\u0442\u043e\u043c \u043f\u043e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u0435 \u041a\u0440\u0435\u0439\u0433\u043e\u043c \u0420\u0435\u0439\u043d\u043e\u043b\u044c\u0434\u0441\u043e\u043c \u2014 \u043e\u043d \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u0442\u0430\u043a\u0436\u0435 \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0438\u043b \u0440\u0443\u043a\u0443 \u043a \u0444\u0438\u043b\u044c\u043c\u0443 \u00ab\u0422\u0440\u043e\u043d\u00bb. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u044d\u0442\u043e\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f Boids.\r\n\r\n \r\n\r\n\u041a\u0440\u0435\u0439\u0433 \u0420\u0435\u0439\u043d\u043e\u043b\u044c\u0434\u0441 \u043d\u0435 \u0431\u044b\u043b \u0441\u0430\u043c\u044b\u043c \u043f\u0435\u0440\u0432\u044b\u043c \r\n\u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0433\u0440\u0443\u043f\u043f \u0441\u0443\u0449\u0435\u0441\u0442\u0432. \u041d\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c Boids \u0441\u0435\u0439\u0447\u0430\u0441 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u043e\u0441\u043d\u043e\u0432\u043e\u0439, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043d\u043e\u0433\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438\u0433\u0440 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0441\u0442\u0430\u0439\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445.\r\n\r\n\r\n\r\n \r\n\u041a\u0430\u0434\u0440: \u043c\u0443\u043b\u044c\u0442\u0438\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0438\u043b\u044c\u043c Stanley and Stella in: Breaking the Ice \/ Whitney \/ Demos Productions\r\n\r\n\u0418 \u0441\u0442\u0430\u0438 \u043f\u0442\u0438\u0446, \u0438 \u043a\u043e\u0441\u044f\u043a\u0438 \u0440\u044b\u0431 \u0432 \u043c\u0443\u043b\u044c\u0442\u0444\u0438\u043b\u044c\u043c\u0435 \r\n\u0432\u0435\u043b\u0438 \u0441\u0435\u0431\u044f \u0442\u0430\u043a, \u043a\u0430\u043a \u0432\u0435\u043b\u0438 \u0431\u044b \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0441\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u0440\u044b\u0431 \u0438 \u043f\u0442\u0438\u0446 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0438\u0440\u0435. \u0415\u0433\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0438 \u043d\u0430 SIGGRAPH\u201987 \u2014 \u0435\u0436\u0435\u0433\u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438, \u043f\u043e\u0441\u0432\u044f\u0449\u0451\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u0433\u0440\u0430\u0444\u0438\u043a\u0435. \u0422\u0430\u043c \u0436\u0435 \u041a\u0440\u0435\u0439\u0433 \u0420\u0435\u0439\u043d\u043e\u043b\u044c\u0434\u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043b \u0434\u043e\u043a\u043b\u0430\u0434 , \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043b, \u043a\u0430\u043a \u0435\u043c\u0443 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0443\u043b\u0435\u0439 \u0438 \u0435\u0434\u0438\u043d\u0438\u0446 \u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0442\u043e, \u043d\u0430 \u0447\u0442\u043e \u0443 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u0438 \u0443\u0448\u043b\u0438 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u044b \u043b\u0435\u0442.\r\n\r\n\u0415\u0441\u043b\u0438 \u0432\u043a\u0440\u0430\u0442\u0446\u0435, \u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0431\u043e\u0438\u0434 \u0432 \u0433\u0440\u0443\u043f\u043f\u0435 \r\n\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0442\u0440\u0451\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c:\r\n\r\n1. Separation (\u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435): \u0431\u043e\u0438\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c \r\n\u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0439 \u0441 \u0441\u043e\u0441\u0435\u0434\u044f\u043c\u0438 \u043f\u043e \u0441\u0442\u0430\u0435.\r\n\r\n2. Alignment (\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435): \u0431\u043e\u0438\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \r\n\u0441\u0432\u043e\u0451 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u043e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u043e \u0441 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0441\u043e\u0441\u0435\u0434\u0435\u0439.\r\n\r\n3. Cohesion (\u0421\u043f\u043b\u043e\u0447\u0451\u043d\u043d\u043e\u0441\u0442\u044c): \u0431\u043e\u0438\u0434 \u0434\u043e\u043b\u0436\u0435\u043d \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \r\n\u0432 \u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0437\u0438\u0446\u0438\u044f\u043c\u0438 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u0441\u043e\u0441\u0435\u0434\u0435\u0439, \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u043d \u0434\u043e\u043b\u0436\u0435\u043d \u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0435\u0439.\r\n\r\n \r\nSeparation (\u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435). \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445: \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u041a\u0440\u0435\u0439\u0433\u0430 \u0420\u0435\u0439\u043d\u043e\u043b\u044c\u0434\u0441\u0430\r\n\u0418\u043d\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430: \u041c\u0430\u0439\u044f \u041c\u0430\u043b\u044c\u0433\u0438\u043d\u0430 \u0434\u043b\u044f Skillbox Media\r\n \r\nAlignment (\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435). \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445: \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u041a\u0440\u0435\u0439\u0433\u0430 \u0420\u0435\u0439\u043d\u043e\u043b\u044c\u0434\u0441\u0430 \r\n\u0418\u043d\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430: \u041c\u0430\u0439\u044f \u041c\u0430\u043b\u044c\u0433\u0438\u043d\u0430 \u0434\u043b\u044f Skillbox Media\r\n \r\nCohesion (\u0421\u043f\u043b\u043e\u0447\u0451\u043d\u043d\u043e\u0441\u0442\u044c). \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445: \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u041a\u0440\u0435\u0439\u0433\u0430 \u0420\u0435\u0439\u043d\u043e\u043b\u044c\u0434\u0441\u0430\r\n\u0418\u043d\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430: \u041c\u0430\u0439\u044f \u041c\u0430\u043b\u044c\u0433\u0438\u043d\u0430 \u0434\u043b\u044f Skillbox Media\r\n\r\n\u041a\u0430\u0436\u0434\u044b\u0439 \u0431\u043e\u0438\u0434 \u0432 \u0441\u0442\u0430\u0435 \u2014 \u044d\u0442\u043e \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u0430\u044f \r\n\u0435\u0434\u0438\u043d\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0432\u0438\u0433\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435. \u041d\u043e \u0435\u0441\u043b\u0438 \u0432 \u043f\u043e\u043b\u0435 \u0435\u0433\u043e \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u0434\u0440\u0443\u0433\u043e\u0439 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u0431\u043e\u0438\u0434, \u0442\u043e \u043e\u043d \u043d\u0430\u0447\u043d\u0451\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0451 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435, \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0442\u0440\u0451\u0445 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0448\u0435 \u043f\u0440\u0430\u0432\u0438\u043b. \u0422\u043e \u0435\u0441\u0442\u044c \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c \u0432 \u0442\u0443 \u0436\u0435 \u0441\u0442\u043e\u0440\u043e\u043d\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0435\u0434, \u0438 \u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043d\u0435\u0433\u043e \u043d\u0430 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u043c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u0435\u0442\u0441\u044f \u0431\u044b\u0442\u044c \u0440\u044f\u0434\u043e\u043c.\r\n\r\n\u0415\u0441\u043b\u0438 \u043a \u043d\u0438\u043c \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u043f\u0430\u0440\u0430 \u0431\u043e\u0438\u0434\u043e\u0432, \r\n\u0442\u043e \u043d\u0430\u0448 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043e\u0438\u0434 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c \u0442\u0435 \u0436\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0435\u0439. \u0410 \u0435\u0441\u043b\u0438 \u043a \u043d\u0438\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u0441\u043e\u0442\u043d\u044f, \u0442\u043e\u2026 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u043e\u0438\u0434 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043b\u0438\u0448\u044c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u043a \u043d\u0435\u043c\u0443 \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0435\u0439. \u041e\u043d \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0439 \u0441\u043e\u0442\u043d\u0438 \u0431\u043e\u0438\u0434\u043e\u0432 \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0442\u0435\u0445, \u043a\u0442\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u0440\u044f\u0434\u043e\u043c. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b \u0432\u044b\u0445\u043e\u0434\u0438\u0442\u0435 \u0438\u0437 \u0437\u0430\u0431\u0438\u0442\u043e\u0433\u043e \u0432\u0430\u0433\u043e\u043d\u0430 \u043c\u0435\u0442\u0440\u043e, \u0442\u043e \u043d\u0435 \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435, \u043a\u0443\u0434\u0430 \u0438\u0434\u0443\u0442 \u0432\u0441\u0435 \u0441\u0442\u043e \u0441 \u043b\u0438\u0448\u043d\u0438\u043c \u043f\u0430\u0441\u0441\u0430\u0436\u0438\u0440\u043e\u0432. \u0412\u044b \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u0442\u0435\u0441\u044c \u043b\u0438\u0448\u044c \u043d\u0430 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u043a \u0432\u0430\u043c \u043b\u044e\u0434\u0435\u0439.\r\n \r\n\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 Boids \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u044b \u043b\u0435\u0442\u0443\u0447\u0438\u0445 \u043c\u044b\u0448\u0435\u0439 (\u0441\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u0435 \u043d\u0430\u0432\u0435\u0440\u0445\u0443). \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0434\u0435\u0440\u0435\u0432\u043e \u0440\u0430\u0441\u0441\u0435\u043a\u043b\u043e \u043e\u0434\u043d\u0443 \u0441\u0442\u0430\u044e \u043d\u0430 \u0434\u0432\u0435 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Vampire Survivors \/ \u041b\u0443\u043a\u0430 \u0413\u0430\u043b\u0430\u043d\u0442\u0435\r\n\r\n\u0414\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0441\u043e\u0441\u0435\u0434\u044f\u043c\u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \r\n\u0431\u043e\u0438\u0434\u0430 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430. \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u044d\u0442\u043e \u0440\u0430\u0434\u0438\u0443\u0441, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043e\u043d \u0438\u0449\u0435\u0442 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0435 \u0431\u043e\u0438\u0434\u044b. \u0412\u043e-\u0432\u0442\u043e\u0440\u044b\u0445, \u044d\u0442\u043e \u0443\u0433\u043e\u043b \u043e\u0431\u0437\u043e\u0440\u0430: \u0431\u043e\u0438\u0434\u0443 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0432\u0441\u0435\u043c\u0438 \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0430\u043c\u0438. \u0414\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0437\u0430 \u0442\u0435\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0434 \u043d\u0438\u043c. \u0415\u0441\u043b\u0438 \u0433\u0440\u0443\u043f\u043f\u0430 \u0440\u0430\u0441\u0441\u0435\u043a\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043f\u0440\u0435\u0433\u0440\u0430\u0434\u043e\u0439 \u043d\u0430 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u043a\u0438, \u0442\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0440\u0430\u0434\u0438\u0443\u0441 \u043f\u043e\u0438\u0441\u043a\u0430 \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0435\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0435\u0439 \u0432\u043d\u043e\u0432\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f. \u0410 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0440\u0430\u0434\u0438\u0443\u0441 \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u0440\u0430\u0441\u043f\u0430\u0434\u0443 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u0442\u0430\u0438 \u043d\u0430 \u0434\u0432\u0435 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445. \u0422\u0430\u043a\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0440\u0430\u0434\u0438\u0443\u0441 \u0437\u0430\u0449\u0438\u0442\u0438\u0442 \u043e\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0431\u043e\u0438\u0434\u044b \u043e\u0442\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u044e\u0442\u0441\u044f \u043e\u0442 \u0433\u0440\u0443\u043f\u043f\u044b, \u043f\u043e\u0442\u0435\u0440\u044f\u0432 \u0438\u0437 \u0432\u0438\u0434\u0430 \u0442\u043e\u0432\u0430\u0440\u0438\u0449\u0430, \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043d\u0438 \u043a \u043d\u0435\u0439 \u0438 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u043b\u0438\u0441\u044c.\r\n \r\n\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445: David M. Bourg, Glenn Seemann. AI for Game Developers .\r\n\u0418\u043d\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430: \u041c\u0430\u0439\u044f \u041c\u0430\u043b\u044c\u0433\u0438\u043d\u0430 \u0434\u043b\u044f Skillbox Media\r\n\r\n\u0415\u0441\u043b\u0438 \u0443\u0433\u043e\u043b \u043e\u0431\u0437\u043e\u0440\u0430 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0443\u0437\u043a\u0438\u043c, \u0442\u043e \u0432\u0441\u0435 \r\n\u0431\u043e\u0438\u0434\u044b \u0431\u0443\u0434\u0443\u0442 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043b\u0438\u0448\u044c \u0432\u043f\u0435\u0440\u0435\u0434\u0438 \u0438\u0434\u0443\u0449\u0435\u0433\u043e \u0441\u043e\u0441\u0435\u0434\u0430. \u0418 \u0432\u0441\u044f \u0441\u0442\u0430\u044f \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0441\u044f \u0432 \u0437\u043c\u0435\u0439\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0437\u0432\u0430\u043b\u0438\u0442\u0441\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u043c \u0436\u0435 \u0440\u0435\u0437\u043a\u043e\u043c \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0435, \u0432\u0435\u0434\u044c \u0442\u043e\u0433\u0434\u0430 \u0432\u043f\u0435\u0440\u0435\u0434\u0438 \u0438\u0434\u0443\u0449\u0438\u0439 \u0431\u043e\u0438\u0434 \u0438\u0441\u0447\u0435\u0437\u043d\u0435\u0442 \u0438\u0437 \u043f\u043e\u043b\u044f \u0437\u0440\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0438\u0445 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0410 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u0443\u0433\u043e\u043b \u043e\u0431\u0437\u043e\u0440\u0430 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0448\u0438\u0440\u043e\u043a\u0443\u044e \u0441\u0442\u0430\u044e, \u0447\u043b\u0435\u043d\u044b \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0443\u0442 \u043a\u0440\u0435\u043f\u043a\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433 \u0437\u0430 \u0434\u0440\u0443\u0433\u0430.\r\n \r\n\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445: David M. Bourg, Glenn Seemann. AI for Game Developers .\r\n\u0418\u043d\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430: \u041c\u0430\u0439\u044f \u041c\u0430\u043b\u044c\u0433\u0438\u043d\u0430 \u0434\u043b\u044f Skillbox Media\r\n\r\n\u0420\u0430\u0434\u0438\u0443\u0441 \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0443\u0433\u043e\u043b \u043e\u0431\u0437\u043e\u0440\u0430 \u0431\u043e\u0438\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \r\n\u0434\u0435\u043b\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0442\u0440\u0451\u0445 \u043f\u0440\u0430\u0432\u0438\u043b, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0432 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0432\u0438\u0434 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e, \u043c\u044b \u0432\u0437\u044f\u043b\u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043b\u044f Unity \u043e\u0442 \u0431\u043b\u043e\u0433\u0435\u0440\u0430 SuboptimalEng, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d \u043d\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 Boids. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043c\u044b \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u043b\u0438 \u0440\u0430\u0434\u0438\u0443\u0441 \u0434\u043b\u044f Separation, Alignment \u0438 Cohesion, \u0438 \u0431\u043e\u0438\u0434\u044b \u0441\u0440\u0430\u0437\u0443 \u043c\u0435\u043d\u044f\u043b\u0438 \u0441\u0432\u043e\u0451 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u043e\u0432\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439. \u0422\u043e \u043b\u0435\u0442\u0430\u043b\u0438 \u0445\u0430\u043e\u0442\u0438\u0447\u043d\u043e, \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u044f \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430, \u0442\u043e \u0432\u0434\u0440\u0443\u0433 \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u0432 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0433\u0440\u0443\u043f\u043f\u043a\u0438, \u0442\u043e \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u0434\u043b\u0438\u043d\u043d\u0443\u044e \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0438\u043b\u0438 \u0440\u0430\u0437\u043b\u0435\u0442\u0430\u043b\u0438\u0441\u044c \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0431\u044b\u0432 \u0434\u0440\u0443\u0433 \u043e \u0434\u0440\u0443\u0433\u0435.\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c Boids \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438. \u0421\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0434\u043b\u044f Unity \u0431\u043b\u043e\u0433\u0435\u0440\u043e\u043c SuboptimalEng [ https:\/\/www.youtube.com\/@SuboptimalEng ] \r\n\r\n\u041c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0439 \u0434\u043b\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 Boids \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \r\n\u0431\u0435\u0441\u0441\u0447\u0451\u0442\u043d\u043e\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e, \u0442\u0443\u0442 \u0432\u0441\u0451 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0438 \u0435\u0433\u043e \u0444\u0430\u043d\u0442\u0430\u0437\u0438\u0438. \u0414\u0435\u043b\u0430\u0435\u0442 \u043e\u043d \u0434\u0435\u043a\u043e\u0440\u0430\u0446\u0438\u044e \u0441 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0435\u0439 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0436\u0438\u0432\u043e\u0442\u043d\u044b\u0445 \u0432\u0434\u0430\u043b\u0435\u043a\u0435 \u0438\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0432\u043e\u0439\u0441\u043a \u0432 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438? \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432 \u0434\u0432\u0443\u0445\u043c\u0435\u0440\u043d\u043e\u043c \u0438\u043b\u0438 \u0432 \u0442\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435? \u0421\u0442\u0430\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043a\u0430\u043a\u0443\u044e-\u0442\u043e \u0435\u0449\u0451 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430\u043f\u0430\u0434\u0430\u044e\u0442 \u043d\u0430 \u0438\u0433\u0440\u043e\u043a\u0430?\r\n\r\n\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u043b\u043e\u0436\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \r\n\u0441\u0442\u0430\u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u0440\u0451\u043c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0435\u0442 \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u0431\u043e\u0438\u0434\u043e\u0432. \u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f, \u043a\u0430\u043a \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u0442\u0440\u044e\u043a \u043f\u0440\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u0433\u0440.\r\n\r\nHalf-Life\r\n\r\n\u0423\u0432\u0438\u0434\u0435\u0442\u044c \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0433\u043e \r\n\u041a\u0440\u0435\u0439\u0433\u043e\u043c \u0420\u0435\u0439\u043d\u043e\u043b\u044c\u0434\u0441\u043e\u043c, \u043c\u043e\u0436\u043d\u043e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0441\u0430\u043c\u043e\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 Half-Life 1998 \u0433\u043e\u0434\u0430 \u2014 \u0432 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0446\u0435\u043d\u0435, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 G-Man \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0413\u043e\u0440\u0434\u043e\u043d\u0443 \u0424\u0440\u0438\u043c\u0435\u043d\u0443 \u043e \u043a\u0430\u0440\u044c\u0435\u0440\u043d\u044b\u0445 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430\u0445 \u043d\u0430 \u043d\u043e\u0432\u043e\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043c\u0435\u0441\u0442\u0435. \u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u043b\u043e \u0432 \u043c\u0438\u0440\u0435 \u0417\u0435\u043d, \u0438, \u0435\u0441\u043b\u0438 \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u043f\u043e\u0437\u0430\u0434\u0438 G-Man\u2019\u0430 \u0432 \u044d\u0442\u043e\u0442 \u043c\u043e\u043c\u0435\u043d\u0442 \u043b\u0435\u0442\u0430\u043b\u0430 \u0441\u0442\u0430\u0439\u043a\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432, \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u043d\u0430 \u043f\u0442\u0438\u0446. \u0421\u0442\u0430\u0439\u043a\u0430 \u043a\u0430\u043a \u0440\u0430\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c Boids. \u0427\u0442\u043e \u0437\u0430\u0431\u0430\u0432\u043d\u043e, \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 \u0438\u0433\u0440\u044b \u043c\u043e\u0434\u0435\u043b\u0438 \u044d\u0442\u0438\u0445 \u043f\u0442\u0438\u0447\u0435\u043a \u0442\u0430\u043a \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u2014 Boid.\r\n \r\n\u0421\u0442\u0430\u0439\u043a\u0430 \u0438\u043d\u043e\u043f\u043b\u0430\u043d\u0435\u0442\u043d\u044b\u0445 \u043f\u0442\u0438\u0446 \u043f\u043e\u0437\u0430\u0434\u0438 G-Man\u2019\u0430, \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0449\u0430\u044f\u0441\u044f \u043b\u0438\u0448\u044c \u0432 \u044d\u0442\u043e\u0439 \u0441\u0446\u0435\u043d\u0435\r\n\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435: \u0438\u0433\u0440\u0430 Half-Life \/ Valve \/ MarphitimusBlackimus\r\n\r\n\u0410\u0432\u0442\u043e\u0440 \u044e\u0442\u0443\u0431-\u043a\u0430\u043d\u0430\u043b\u0430 MarphitimusBlackimus [ https:\/\/www.youtube.com\/watch?v=ucPLCf05VrI ] \r\n\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u044d\u0442\u0438 \u043f\u0442\u0438\u0447\u043a\u0438. \u0418\u0445 \u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0431\u044b\u043b\u043e \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0444\u0438\u0448\u0435\u043a, \u043f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0435\u0449\u0451 \u0432 \u0440\u0430\u043d\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u0433\u0440\u044b, Half-Life Alpha. \u041f\u0440\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043f\u0442\u0438\u0446\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u043b\u0438 \u0441\u0435\u0431\u0435 \u043b\u0438\u0434\u0435\u0440\u0430 \u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0438 \u0437\u0430 \u043d\u0438\u043c.\r\n\r\n\u0421\u0442\u0430\u044f \u0434\u0432\u0438\u0433\u0430\u043b\u0430\u0441\u044c \u043f\u043e \u043b\u043e\u043a\u0430\u0446\u0438\u0438 \u0431\u0435\u0437 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \r\n\u043f\u0440\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0443\u0442\u0438 \u0438 \u0438\u0437\u0431\u0435\u0433\u0430\u043b\u0430 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0438\u0439. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e \u0438\u043d\u043e\u043f\u043b\u0430\u043d\u0435\u0442\u043d\u044b\u0445 \u043f\u0442\u0438\u0446 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b\u043e \u0438 \u0442\u043e, \u0447\u0442\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d\u0438 \u043c\u0430\u0445\u0430\u043b\u0438 \u043a\u0440\u044b\u043b\u044c\u044f\u043c\u0438, \u0437\u0430\u0432\u0438\u0441\u0435\u043b\u0430 \u043e\u0442 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0438 \u043c\u0430\u043d\u0451\u0432\u0440\u043e\u0432 \u0441\u0442\u0430\u0438 \u043f\u0440\u0438 \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u0435.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Half-Life \/ Valve \/ MarphitimusBlackimus\r\n\r\n\u0415\u0441\u043b\u0438 \u043f\u0442\u0438\u0446\u0430-\u043b\u0438\u0434\u0435\u0440 \u043f\u043e\u0433\u0438\u0431\u0430\u043b\u0430, \u0442\u043e \u0441\u0442\u0430\u044f \u0432\u044b\u0431\u0438\u0440\u0430\u043b\u0430 \r\n\u0441\u0435\u0431\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043b\u0438\u0434\u0435\u0440\u0430 \u0438 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b\u0430 \u0443\u0436\u0435 \u0437\u0430 \u043d\u0438\u043c. \u0422\u0430\u043a\u0436\u0435 \u0432 \u043c\u043e\u043c\u0435\u043d\u0442 \u0433\u0438\u0431\u0435\u043b\u0438 \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u043f\u0442\u0438\u0446 \u0441\u0442\u0430\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u043b\u0430 \u0438\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0434\u0438\u0442\u044b\u0435 \u0437\u0432\u0443\u043a\u0438.\r\n\r\n\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0432 \u0438\u0433\u0440\u0435 \u044d\u0442\u0438 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \r\n\u043b\u0438\u0448\u044c \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0443 \u0438\u0433\u0440\u043e\u043a\u0430 \u043d\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0441 \u043d\u0438\u043c\u0438. \u041e\u043d\u0438 \u0438\u0433\u0440\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u043e\u043b\u044c \u0434\u0435\u043a\u043e\u0440\u0430\u0446\u0438\u0438. \u041d\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0434\u0432\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u043e\u043d\u0438 \u043a\u0430\u043a \u0437\u0430\u0445\u043e\u0442\u044f\u0442, \u0430 \u043d\u0435 \u043f\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0443, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0433\u0440\u043e\u043a, \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0439 Half-Life, \u0432\u0438\u0434\u0435\u043b \u0441\u0432\u043e\u044e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0438 \u043d\u0435\u043f\u043e\u0432\u0442\u043e\u0440\u0438\u043c\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043f\u043e\u043b\u0451\u0442\u0430 \u043f\u0442\u0438\u0447\u0435\u043a \u043f\u043e\u0437\u0430\u0434\u0438 G-Man\u2019\u0430.\r\n\r\nAssassin\u2019s Creed Unity\r\n\r\n\u0412\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u043c \u0443\u043b\u0438\u0447\u043d\u043e\u0439 \r\n\u0442\u043e\u043b\u043f\u044b \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438 Assassin\u2019s Creed Unity. \u0412 \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0433\u0440\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043b\u0438\u0448\u044c 120 NPC \u0441 \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0435\u0439. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442 \u0431\u0443\u0434\u0435\u0442 \u043b\u0438\u0448\u044c \u0443 40 \u0438\u0437 \u043d\u0438\u0445. \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u044d\u0442\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f, \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0434\u043e 10 \u0442\u044b\u0441\u044f\u0447 NPC, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437\u0434\u0430\u043b\u0435\u043a\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0438 \u0432\u0435\u0434\u0443\u0442 \u0441\u0435\u0431\u044f \u0442\u0430\u043a, \u0431\u0443\u0434\u0442\u043e \u0443 \u043d\u0438\u0445 \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0418\u0418 \u0438 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Assassin\u2019s Creed Unity \/ Ubisoft Montreal\r\n\r\n\u0412 \u0441\u0430\u043c\u043e\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0433\u0440\u0435 \u0441\u0435\u0440\u0438\u0438 \u0431\u044b\u043b\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \r\n\u0432 100 NPC [ https:\/\/youtu.be\/Rz2cNWVLncI?si=SBnPjzyrQNz86FyF&t=82 ] . \u0421\u044e\u0434\u0430 \u0432\u0445\u043e\u0434\u044f\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u0432\u0441\u0435 \u043b\u044e\u0434\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u044b \u0432\u0438\u0434\u0438\u0442\u0435 \u043d\u0430 \u0443\u043b\u0438\u0446\u0435, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0442\u0440\u0430\u0436\u043d\u0438\u043a\u043e\u0432 \u0438 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u0433\u0435\u0439\u043c\u043f\u043b\u0435\u044f. \u041f\u0440\u043e\u0441\u0442\u044b\u0445 \u0433\u043e\u0440\u043e\u0436\u0430\u043d-\u0441\u0442\u0430\u0442\u0438\u0441\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0434\u0443\u0442 \u043f\u043e \u0443\u043b\u0438\u0446\u0435, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044f \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c 20. \u0418\u0445 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u043c\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043f\u043e \u0443\u0440\u043e\u0432\u043d\u044e, \u0447\u0442\u043e\u0431\u044b \u0443\u043b\u0438\u0446\u044b \u043d\u0435 \u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043f\u0443\u0441\u0442\u044b\u043c\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u044f\u0434\u043e\u043c \u0441 \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u0433\u0435\u0440\u043e\u0435\u043c \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u0447\u0435\u0442\u044b\u0440\u0435 NPC. \u0423\u043b\u0438\u0446\u044b \u0441 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u0442\u043e\u043b\u043f\u043e\u0439 \u0432 \u0438\u0433\u0440\u0435 \u0442\u043e\u0436\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f, \u043d\u043e \u043b\u0438\u0448\u044c \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u043c\u0438\u0441\u0441\u0438\u044f\u0445, \u0433\u0434\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043c\u043e\u0433\u043b\u0438 \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043d\u0430 \u0435\u0451 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Assassin\u2019s Creed Unity \/ Ubisoft Montreal\r\n\r\n\u0412 Assassin\u2019s Creed 3 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0432\u043d\u0435\u0434\u0440\u0438\u043b\u0438 \r\n\u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0432\u0448\u0443\u044e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0442\u044b\u0441\u044f\u0447\u0438 \u0434\u0435\u0448\u0451\u0432\u044b\u0445 \u043c\u0435\u0448\u0435\u0439 (\u043d\u0438\u0437\u043a\u043e\u043f\u043e\u043b\u0438\u0433\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 3D-\u043c\u043e\u0434\u0435\u043b\u0435\u0439) \u0441 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0435\u0439. \u0415\u0451 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0434\u043b\u044f \u043a\u0440\u044b\u0441, \u043f\u0442\u0438\u0446, \u043a\u0440\u0430\u0431\u043e\u0432 \u0438 \u0434\u043b\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043c\u043d\u043e\u0433\u043e\u0442\u044b\u0441\u044f\u0447\u043d\u043e\u0439 \u0430\u0440\u043c\u0438\u0438 \u0432 \u0431\u0438\u0442\u0432\u0435 \u043f\u0440\u0438 \u0411\u0430\u043d\u043a\u0435\u0440-\u0425\u0438\u043b\u043b\u0435. \u041d\u043e \u0441\u043e\u043b\u0434\u0430\u0442\u044b, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044d\u0442\u0430 \u0430\u0440\u043c\u0438\u044f \u0441\u043e\u0441\u0442\u043e\u0438\u0442, \u0440\u0430\u0437\u0432\u0435 \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u2014 \u043f\u0440\u0438\u0433\u043d\u0443\u0442\u044c\u0441\u044f, \u043f\u0435\u0440\u0435\u0437\u0430\u0440\u044f\u0434\u0438\u0442\u044c \u043e\u0440\u0443\u0436\u0438\u0435\u2026 \u0418\u0433\u0440\u043e\u043a \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441 \u043d\u0438\u043c\u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Assassin\u2019s Creed Unity \/ Ubisoft Montreal\r\n\r\n\u042d\u0442\u0443 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u044b\u0445 \r\n\u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0432 Assassin\u2019s Creed Unity, \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0435\u0439 \u043e \u0412\u0435\u043b\u0438\u043a\u043e\u0439 \u0444\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u043e\u0439 \u0440\u0435\u0432\u043e\u043b\u044e\u0446\u0438\u0438. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 Bulk (\u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u0435 \u0441\u043b\u043e\u0432\u043e, \u0438\u043c\u0435\u044e\u0449\u0435\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u00ab\u043e\u0431\u044a\u0451\u043c\u00bb, \u00ab\u043c\u0430\u0441\u0441\u0430\u00bb). \u041a\u0430\u043a \u0432 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u041a\u0440\u0435\u0439\u0433\u0430 \u0420\u0435\u0439\u043d\u043e\u043b\u044c\u0434\u0441\u0430 Boids \u043a\u0430\u0436\u0434\u043e\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0430\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u043b\u043e\u0441\u044c Boid, \u0442\u0430\u043a \u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 Bulk \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e NPC \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u2026 Bulk.\r\n\r\n\u0421\u0443\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0442\u043e\u043b\u043f\u0430 \u043d\u0430 \u0443\u043b\u0438\u0446\u0430\u0445 \r\n\u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0433\u043e\u0440\u043e\u0436\u0430\u043d. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u0433\u0435\u0440\u043e\u0439 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u0435\u0442\u0441\u044f \u043a \u043d\u0438\u043c, \u0438\u0433\u0440\u0430 \u043d\u0435\u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0433\u043e\u0440\u043e\u0436\u0430\u043d\u0438\u043d\u0430 \u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0433\u043e.\r\n \r\n\u0423\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0433\u043e\u0440\u043e\u0436\u0430\u043d\u043a\u0438 \u0441 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0430\u0436\u0435 \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0435\u0439 \u043f\u0440\u0430\u0432\u0434\u043e\u043f\u043e\u0434\u043e\u0431\u043d\u043e \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0442\u0443\u043b\r\n\u041a\u0430\u0434\u0440: GDC [ https:\/\/www.youtube.com\/@Gdconf ] \/ YouTube\r\n\r\n\u0415\u0441\u043b\u0438 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e NPC \u0431\u043e\u043b\u044c\u0448\u0435 40 \u043c\u0435\u0442\u0440\u043e\u0432, \r\n\u0442\u043e \u0438\u0433\u0440\u043e\u043a \u0432\u0438\u0434\u0438\u0442 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 \u0438\u0437 2000 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u0432, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e 11 \u043a\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0440\u0435\u0430\u043a\u0446\u0438\u0438 \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f. \u041d\u0430 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043e\u0442 40 \u0434\u043e 12 \u043c\u0435\u0442\u0440\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u043e \u0443\u043f\u0440\u043e\u0449\u0451\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0433\u043e\u0440\u043e\u0436\u0430\u043d\u0438\u043d\u0430 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f NPC \u0441 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e, \u043d\u043e \u0443\u0440\u0435\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f, \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u043c\u0438 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0439 \u0441 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0438\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438. \u0410 \u0435\u0441\u043b\u0438 \u0434\u043e NPC \u043c\u0435\u043d\u044c\u0448\u0435 12 \u043c\u0435\u0442\u0440\u043e\u0432, \u0442\u043e \u043e\u043d \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u044c\u044e \u0438\u0437 20 000 \u043f\u043e\u043b\u0438\u0433\u043e\u043d\u043e\u0432 \u0441 300 \u043a\u043e\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438 \u0438 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u043e\u043c, \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u044e\u0449\u0438\u043c \u043d\u0430 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0438\u0433\u0440\u043e\u043a\u0430.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Assassin\u2019s Creed Unity \/ Ubisoft Montreal\r\n\r\n\u0414\u043b\u044f \u0438\u0433\u0440\u044b \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \r\n\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u0440\u043e\u0441\u0447\u0451\u0442\u0430 \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0439 NPC \u0432 \u0442\u043e\u043b\u043f\u0435, \u0432\u0435\u0434\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0445\u0438\u0442\u0431\u043e\u043a\u0441\u044b \u0434\u043b\u044f \u0442\u044b\u0441\u044f\u0447 \u0433\u043e\u0440\u043e\u0436\u0430\u043d \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043d\u0430\u043a\u043b\u0430\u0434\u043d\u043e.\r\n\r\n\r\n\r\n \r\n\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435: GDC [ https:\/\/www.youtube.com\/@Gdconf ] \/ YouTube\r\n\r\n\u0417\u0430 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442 \u0438 \u0437\u0430 \u0442\u043e, \r\n\u043a\u0430\u043a\u0443\u044e \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u00ab\u043f\u0430\u0441\u0442\u0443\u0445\u0438\u00bb \u2014 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442 \u0432\u043e\u043a\u0440\u0443\u0433 \u0441\u0435\u0431\u044f \u0442\u043e\u043b\u043f\u0443 \u0438 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u044f\u0442 \u0435\u044e. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043b\u0438 \u0443\u043b\u0438\u0446\u044b \u0438\u043c\u0435\u043d\u043d\u043e \u00ab\u043f\u0430\u0441\u0442\u0443\u0445\u0430\u043c\u0438\u00bb, \u0430 \u043d\u0435 \u0433\u043e\u0440\u043e\u0436\u0430\u043d\u0430\u043c\u0438, \u0438 \u0441 \u0438\u0445 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043c\u043e\u0433\u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u043b\u043f\u044b, \u0435\u0451 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u0438 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0443\u043b\u0438\u0446\u0435. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0431\u0443\u0434\u0443\u0442 NPC \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0433\u0443\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u0436\u0435 \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0442\u0438\u0432 \u0447\u0435\u0433\u043e-\u0442\u043e.\r\n \r\n\u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u0440\u0443\u0433 \u043e\u0442\u043c\u0435\u0447\u0430\u0435\u0442 \u0442\u043e\u043b\u043f\u0443, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u0443\u044e \u043e\u0434\u043d\u0438\u043c \u00ab\u043f\u0430\u0441\u0442\u0443\u0445\u043e\u043c\u00bb\r\n\u041a\u0430\u0434\u0440: GDC [ https:\/\/www.youtube.com\/@Gdconf ] \/ YouTube\r\n\r\n\u0422\u0430\u043a\u0436\u0435 \u0432 \u0438\u0433\u0440\u0435 \u0435\u0441\u0442\u044c \u00ab\u0431\u043b\u0443\u0436\u0434\u0430\u044e\u0449\u0438\u0435 \u043f\u0430\u0441\u0442\u0443\u0445\u0438\u00bb, \r\n\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u044e\u0442 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 NPC, \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0433\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u043f\u043e \u0443\u043b\u0438\u0446\u0430\u043c. \u041f\u043e \u0441\u0443\u0442\u0438, NPC \u0434\u0432\u0438\u0436\u0443\u0442\u0441\u044f \u043f\u043e \u043a\u0440\u0443\u0433\u0443 \u043f\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u043e\u043c\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0443. \u0415\u0441\u043b\u0438 \u0434\u043e\u043b\u0433\u043e \u0438\u0434\u0442\u0438 \u0437\u0430 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043f\u0435\u0448\u0435\u0445\u043e\u0434\u043e\u0432 \u043d\u0430 \u0443\u043b\u0438\u0446\u0435, \u0442\u043e \u043c\u0438\u043d\u0443\u0442 \u0447\u0435\u0440\u0435\u0437 \u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044c \u0432\u044b \u0441 \u043d\u0438\u043c \u0432\u0435\u0440\u043d\u0451\u0442\u0435\u0441\u044c \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443. \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u00ab\u0431\u043b\u0443\u0436\u0434\u0430\u044e\u0449\u0438\u0439 \u043f\u0430\u0441\u0442\u0443\u0445\u00bb \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0440\u0430\u0439\u043e\u043d\u0443 \u041f\u0430\u0440\u0438\u0436\u0430 \u0445\u043e\u0434\u0438\u043b\u0438 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u044b\u0435 \u0434\u043b\u044f \u043d\u0435\u0433\u043e \u0442\u0438\u043f\u0430\u0436\u0438.\r\n \r\n\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \u0437\u0430\u043a\u043e\u043b\u044c\u0446\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0434\u043b\u044f NPC \u043d\u0430 \u0443\u043b\u0438\u0446\u0430\u0445 \u041f\u0430\u0440\u0438\u0436\u0430\r\n\u041a\u0430\u0434\u0440: GDC [ https:\/\/www.youtube.com\/@Gdconf ] \/ YouTube\r\n\r\nA Plague Tale: Innocence\r\n\r\n\u0413\u043b\u0430\u0432\u043d\u043e\u0439 \u0444\u0438\u0448\u043a\u043e\u0439 A Plague Tale: Innocence \u0441\u0442\u0430\u043b\u0438 \u043f\u043e\u043b\u0447\u0438\u0449\u0430 \r\n\u043a\u0440\u044b\u0441. \u0421 \u0438\u0445 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0438\u0437 Asobo Studio \u0445\u043e\u0442\u0435\u043b\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \u0447\u0443\u043c\u044b \u0432\u043e \u0424\u0440\u0430\u043d\u0446\u0438\u0438 \u0432\u0440\u0435\u043c\u0451\u043d \u0421\u0442\u043e\u043b\u0435\u0442\u043d\u0435\u0439 \u0432\u043e\u0439\u043d\u044b.\r\n\r\n\r\n\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 A Plague Tale: Innocence \/ Asobo Studio\r\n\r\n\u0415\u0449\u0451 \u043d\u0430 \u0440\u0430\u043d\u043d\u0435\u043c \u044d\u0442\u0430\u043f\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 \u0441\u0442\u0443\u0434\u0438\u0438 \r\n\u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0431\u0435\u0433\u0430\u0442\u044c \u0434\u043e 5000 \u043e\u0441\u043e\u0431\u0435\u0439 (\u0432 \u0441\u0438\u043a\u0432\u0435\u043b\u0435 A Plague Tale: Requiem \u0438\u0445 \u0443\u0436\u0435 \u043e\u043a\u043e\u043b\u043e 300 000). \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0441\u0435 \u043a\u0440\u044b\u0441\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0432\u0435\u0441\u0442\u0438 \u0441\u0435\u0431\u044f \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443. \u041e\u0434\u043d\u0430 \u043f\u0440\u0435\u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0438\u0433\u0440\u043e\u043a\u0430, \u0434\u0440\u0443\u0433\u0430\u044f \u0431\u0440\u043e\u0441\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u0430\u0436\u043d\u0438\u043a\u043e\u0432. \u041a\u0430\u043a\u0430\u044f-\u0442\u043e \u0441\u043f\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u044f\u0440\u043a\u043e\u0433\u043e \u0441\u0432\u0435\u0442\u0430. \u0415\u0449\u0451 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0440\u043e\u0434\u0438\u0442 \u0432\u0434\u0430\u043b\u0435\u043a\u0435 \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u0435\u0434\u044b.\r\n\r\n\r\n\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 A Plague Tale: Innocence \/ Asobo Studio\r\n\r\n\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u043b\u0430\u0441\u044c \u0432 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \r\n\u043a\u0440\u044b\u0441, \u043f\u0440\u0435\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0438 \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u043e\u0442\u0430\u0433\u043e\u043d\u0438\u0441\u0442\u0430 \u0438 NPC. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0435 \u043c\u043e\u0433\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u0441\u043e\u0431\u0438 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043e \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430. \u041f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0437\u0430\u043a\u0438\u043f\u0435\u043b \u0431\u044b, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0442\u0430\u043a\u0438\u0435 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 5000 \u043a\u0440\u044b\u0441.\r\n\r\n\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0440\u0435\u0448\u0438\u043b\u0430 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442. \u041d\u0435 \u043a\u0440\u044b\u0441\u044b \r\n\u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442, \u043a\u0430\u043a \u0438\u043c \u0434\u043e\u0439\u0442\u0438 \u0434\u043e \u0446\u0435\u043b\u0438, \u0430, \u0443\u0441\u043b\u043e\u0432\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u0446\u0435\u043b\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043f\u043e \u043a\u0430\u043a\u0438\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c \u043a\u0440\u044b\u0441\u044b \u043c\u043e\u0433\u0443\u0442 \u043a \u043d\u0435\u0439 \u043f\u043e\u043f\u0430\u0441\u0442\u044c. \u0418\u0433\u0440\u0430 \u0441\u0442\u0440\u043e\u0438\u0442 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440\u043d\u044b\u0445 \u043b\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 \u0443\u0440\u043e\u0432\u043d\u044f \u0432\u0435\u0434\u0443\u0442 \u043f\u0440\u044f\u043c\u043e \u043a \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0443, \u0438 \u043a\u0440\u044b\u0441\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0431\u0435\u0433\u0443\u0442 \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c \u0434\u043b\u044f \u043d\u0438\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044f\u0441\u044c \u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c\u0443. \u041a\u043e\u0433\u0434\u0430 \u0446\u0435\u043b\u044c \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435, \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0434\u043b\u044f \u043a\u0440\u044b\u0441 \u043f\u0440\u043e\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0437\u0430\u043d\u043e\u0432\u043e. \u041f\u043e\u0434\u043e\u0431\u043d\u0430\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f flow field pathfinding.\r\n \r\nFlow field pathfinding \u043d\u0430 \u0421++ \u0432 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 Funneractic [ https:\/\/youtu.be\/TFk-fO3SWcg?si=0U_xUnbgza6Qy9Jg ] \r\n\u041a\u0430\u0434\u0440: Funneractic [ https:\/\/www.youtube.com\/@funneractic ] \/ YouTube\r\n\r\n\r\n\r\n \r\n\u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0435\u0442\u043a\u0430 \u043d\u0430 \u043f\u043e\u043b\u0443, \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0432\u0430\u0434\u0440\u0430\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u0434\u0430\u0451\u0442 \u043a\u0440\u044b\u0441\u0430\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043a \u0446\u0435\u043b\u0438\r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 A Plague Tale: Innocence \/ Asobo Studio \r\n\/ AI and Games [ https:\/\/youtu.be\/1R7W8LVvegk?si=ImDH4GrDiOSY_muh ] \r\n\r\n\u0427\u0442\u043e\u0431\u044b 5000 \u043a\u0440\u044b\u0441 \u043d\u0435 \u043d\u0430\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u043e\u0434\u043d\u0443 \r\n\u0446\u0435\u043b\u044c \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u0440\u0430\u0436\u043d\u0438\u043a\u0430 \u0438\u043b\u0438 \u0438\u0433\u0440\u043e\u043a\u0430 \u2014 \u0432\u0441\u0435\u043c \u0441\u043a\u043e\u043f\u043e\u043c, \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u043e\u0441\u043e\u0431\u0435\u0439 \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0438\u044f \u0430\u0442\u0430\u043a\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u043d\u0430 \u0441\u0442\u0440\u0430\u0436\u043d\u0438\u043a\u0430 \u043d\u0430\u043a\u0438\u043d\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043a\u0440\u044b\u0441, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u0436\u0435 \u043d\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u0433\u043e \u0432\u0442\u043e\u0440\u044b\u043c \u0438 \u0442\u0440\u0435\u0442\u044c\u0438\u043c \u0441\u043b\u043e\u0435\u043c.\r\n\r\n\u041a\u0441\u0442\u0430\u0442\u0438, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0441\u0442\u0440\u0430\u0436\u043d\u0438\u043a\u0438 \u043f\u0440\u0438 \u0432\u0438\u0434\u0435 \u043a\u0440\u044b\u0441 \r\n\u0443\u0441\u043f\u0435\u0432\u0430\u043b\u0438 \u0443\u0431\u0435\u0436\u0430\u0442\u044c, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0430\u0442\u0440\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043d\u0430 \u043d\u0438\u0445 \u0433\u0440\u044b\u0437\u0443\u043d\u043e\u0432 \u0431\u044b\u043b\u043e \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0441\u0445\u0438\u0442\u0440\u0438\u043b\u0438: \u043a\u043e\u0433\u0434\u0430 \u043a\u0440\u044b\u0441\u044b \u0430\u0442\u0430\u043a\u0443\u044e\u0442, \u0443 \u0441\u0442\u0440\u0430\u0436\u043d\u0438\u043a\u043e\u0432 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u044f, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u043d\u0430 \u0440\u0430\u0437\u0432\u043e\u0440\u043e\u0442. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043e\u043d\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0443\u0441\u043f\u0435\u0432\u0430\u044e\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u0438 \u0443\u0431\u0435\u0436\u0430\u0442\u044c.\r\n\r\n\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0430 \u0438 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e, \u043f\u0440\u0438 \r\n\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u0433\u0440\u043e\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0430\u043a\u0435\u043b\u0430 \u0437\u0430\u0433\u043e\u043d\u044f\u0435\u0442 \u0442\u043e\u043b\u043f\u0443 \u043a\u0440\u044b\u0441 \u0432 \u0443\u0433\u043e\u043b. \u0413\u0440\u044b\u0437\u0443\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435\u043a\u0443\u0434\u0430 \u043e\u0442\u0441\u0442\u0443\u043f\u0430\u0442\u044c, \u043f\u0440\u043e\u0441\u0442\u043e \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u0441\u0447\u0435\u0437\u0430\u044e\u0442, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0435\u0431\u044f \u0438\u0441\u043a\u0440\u044b. \u042d\u0442\u043e \u0441\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0439 \u043a\u043e\u0441\u0442\u044b\u043b\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u0445\u0438\u0442\u0440\u0438\u0442\u044c \u0438\u0433\u0440\u043e\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0442\u0430\u043d\u0443\u0442 \u0433\u043e\u043d\u044f\u0442\u044c \u043a\u0440\u044b\u0441 \u0444\u0430\u043a\u0435\u043b\u043e\u043c \u043f\u043e \u0443\u0440\u043e\u0432\u043d\u044e, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u00ab\u0441\u043b\u043e\u043c\u0430\u0442\u044c\u00bb \u0438\u0445.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 A Plague Tale: Innocence \/ Asobo Studio\r\n\r\n\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u0440\u044b\u0441\u044b \u043d\u0430 \u043a\u0440\u0430\u044e \u043e\u0441\u0432\u0435\u0449\u0451\u043d\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \r\n\u0431\u0440\u043e\u0441\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u0441\u0432\u0435\u0442, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043e\u0442\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043e\u0442 \u043d\u0435\u0433\u043e. \u042d\u0442\u043e \u043a\u0430\u043a \u0431\u044b \u0440\u0430\u0437\u043c\u044b\u0432\u0430\u0435\u0442 \u0434\u043b\u044f \u0438\u0433\u0440\u043e\u043a\u0430 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u043c\u0435\u0436\u0434\u0443 \u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0437\u043e\u043d\u0430\u043c\u0438. \u0425\u043e\u0442\u044f \u0443\u0440\u043e\u043d\u0430 \u0442\u0430\u043a\u0438\u0435 \u0431\u0440\u043e\u0441\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u043e\u0434\u0438\u043d\u043e\u0447\u043a\u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043d\u0435 \u043d\u0430\u043d\u043e\u0441\u044f\u0442, \u0442\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e, \u0441\u043a\u043e\u0440\u0435\u0435, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438\u0451\u043c.\r\n\r\n\u0414\u0440\u0443\u0433\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u2014 \u0437\u0430\u043c\u0435\u0442\u0438\u0432 \u043f\u0440\u043e\u0442\u0430\u0433\u043e\u043d\u0438\u0441\u0442\u0430, \r\n\u043a\u0440\u044b\u0441\u0430 \u0432\u0441\u0442\u0430\u0451\u0442 \u043d\u0430 \u0437\u0430\u0434\u043d\u0438\u0435 \u043b\u0430\u043f\u043a\u0438 \u0438 \u043f\u043e\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0433\u043e\u043b\u043e\u0432\u0443 \u0432 \u0435\u0433\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u0443. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u0436\u0435\u0441\u0442\u0443 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0432\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0440\u0430\u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043e\u043b\u043d\u043e\u0439 \u043f\u043e \u043e\u0440\u0434\u0435.\r\n\r\n\r\n\r\n \r\n\u0414\u0435\u0442\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0435 \u043a\u0440\u044b\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0434\u0443\u0442 \u0432 \u043f\u0435\u0440\u0432\u044b\u0445 \u0440\u044f\u0434\u0430\u0445 \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 A Plague Tale: Innocence \/ Asobo Studio\r\n \r\n\u041a\u0440\u044b\u0441\u044b-\u00ab\u043a\u0430\u0440\u0442\u043e\u0444\u0435\u043b\u0438\u043d\u044b\u00bb \u0432\u0434\u0430\u043b\u0435\u043a\u0435 \u043e\u0442 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 A Plague Tale: Innocence \/ Asobo Studio\r\n\r\nHitman: Absolution\r\n\r\n\u0412 Hitman: Blood Money \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0443\u044e \u0442\u043e\u043b\u043f\u0443 \u043f\u0435\u0448\u0435\u0445\u043e\u0434\u043e\u0432 \r\n\u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 The Murder of Crows, \u0433\u0434\u0435 \u043d\u0430 \u0443\u043b\u0438\u0446\u0430\u0445 \u041d\u043e\u0432\u043e\u0433\u043e \u041e\u0440\u043b\u0435\u0430\u043d\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0430\u0440\u0430\u0434. \u041f\u043e \u0431\u043e\u043b\u044c\u0448\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044d\u0442\u043e \u2014 \u0434\u0435\u043a\u043e\u0440\u0430\u0446\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0442\u043e\u043b\u043f\u0435 \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043f\u0440\u044f\u0442\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u043f\u0440\u0435\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u041b\u044e\u0434\u0435\u0439 \u0438\u0437 \u0442\u043e\u043b\u043f\u044b \u043d\u0435\u043b\u044c\u0437\u044f \u043d\u0438 \u0441\u043a\u0440\u044b\u0442\u043d\u043e \u0443\u0431\u0438\u0432\u0430\u0442\u044c, \u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0436\u0438\u0432\u043e\u0433\u043e \u0449\u0438\u0442\u0430. \u0410 \u0435\u0441\u043b\u0438 47-\u0439 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u0442\u0440\u0435\u043b\u044c\u0431\u0443 [ https:\/\/www.youtube.com\/watch?v=iNC2X9r0oGY&t=10s ] , \u043f\u0435\u0448\u0435\u0445\u043e\u0434\u044b \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0440\u0430\u0441\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u043f\u0440\u0438\u043a\u0440\u044b\u0432\u0430\u044f \u0433\u043e\u043b\u043e\u0432\u0443 \u0440\u0443\u043a\u0430\u043c\u0438, \u0430 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434 \u0437\u0430\u0431\u044b\u0432\u0430\u044e\u0442 \u043e\u0431\u043e \u0432\u0441\u0451\u043c \u0438 \u0441\u043d\u043e\u0432\u0430 \u0445\u043e\u0434\u044f\u0442 \u043f\u043e \u0443\u043b\u0438\u0446\u0435 \u043a\u0430\u043a \u043d\u0438 \u0432 \u0447\u0451\u043c \u043d\u0435 \u0431\u044b\u0432\u0430\u043b\u043e.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Hitman: Blood Money \/ IO Interactive\r\n\r\n\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0438\u0433\u0440\u0435 \u0441\u0435\u0440\u0438\u0438, Hitman: Absolution, \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \r\n\u0442\u043e\u043b\u043f\u044b \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438. \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0435\u0448\u0435\u0445\u043e\u0434\u043e\u0432 \u043a\u0430\u043a \u0436\u0438\u0432\u043e\u0439 \u0449\u0438\u0442, \u0430 \u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442\u0435 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0441\u0442\u043e\u044f\u0442\u044c \u0432 \u0442\u043e\u043b\u043f\u0435, \u0442\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a \u0432\u0430\u0441 \u043d\u0435 \u0437\u0430\u043c\u0435\u0442\u0438\u0442. \u041d\u0443 \u0430 \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u0435\u043b\u043a\u0430 \u0438\u043b\u0438 \u0432\u0437\u0440\u044b\u0432 \u043f\u0440\u0438\u0432\u0435\u0434\u0443\u0442 \u043a \u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e NPC: \u043e\u043d\u0438 \u0437\u0430\u043f\u0430\u043d\u0438\u043a\u0443\u044e\u0442 \u0438 \u0443\u0431\u0435\u0433\u0443\u0442 \u043a \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u043c\u0443 \u0432\u044b\u0445\u043e\u0434\u0443.\r\n\r\n\u0422\u043e\u043b\u043f\u0430 \u0432 Hitman: Absolution \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 1200 NPC \r\n\u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 500 \u0438\u0437 \u043d\u0438\u0445. \u0412\u0441\u0435 NPC \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u043b\u043e\u043a\u0430\u0446\u0438\u0438 \u043f\u043e \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u043c\u0443 \u043c\u0435\u0448\u0443 \u043f\u043e \u0442\u0430\u043a\u043e\u043c\u0443 \u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443, \u043a\u0430\u043a \u0432 A Plague Tale: Innocence: \u043f\u043e\u043b, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u0445\u043e\u0434\u044f\u0442 NPC, \u043f\u043e\u043a\u0440\u044b\u0442 \u0441\u0435\u0442\u043a\u043e\u0439 \u0438\u0437 \u043a\u043b\u0435\u0442\u043e\u043a, \u0438 \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043d\u0438\u0445 \u0445\u0440\u0430\u043d\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0443\u044e NPC \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0440\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u043d\u0430 \u044d\u0442\u0443 \u043a\u043b\u0435\u0442\u043a\u0443 \u0432\u0441\u0442\u0430\u0442\u044c \u0438 \u043a\u0442\u043e \u043d\u0430 \u043d\u0435\u0439 \u0443\u0436\u0435 \u0441\u0442\u043e\u0438\u0442.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Hitman: Absolution \/ IO Interactive\r\n\r\n\u041e\u0434\u043d\u0438 \u043a\u043b\u0435\u0442\u043a\u0438 \u043f\u043e\u043c\u0435\u0447\u0430\u044e\u0442 \u0437\u043e\u043d\u044b \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u043b\u043e\u043a\u0430\u0446\u0438\u0438, \r\n\u0432\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f NPC, \u0442\u0440\u0435\u0442\u044c\u0438 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 \u043c\u0435\u0441\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0443\u0436\u043d\u043e \u0438\u0437\u0431\u0435\u0433\u0430\u0442\u044c, \u0447\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442, \u043a\u0430\u043a\u0438\u0435 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u043d\u0430 \u043b\u043e\u043a\u0430\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0437\u0430\u043f\u0440\u0435\u0442\u043d\u044b\u043c\u0438, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0442\u0430\u0433\u043e\u043d\u0438\u0441\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u0435\u044f\u0442\u044c \u0432 \u0442\u043e\u043b\u043f\u0435 \u043f\u0430\u043d\u0438\u043a\u0443. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u043a \u0441\u0442\u0440\u0435\u043b\u044f\u044e\u0449\u0435\u043c\u0443 47-\u043c\u0443 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u0435\u0442\u0441\u044f.\r\n \r\n\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435: GDC Vault \r\n\r\n\u041f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e NPC \u0432 \u0442\u043e\u043b\u043f\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \r\n\u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u043c\u0430\u0448\u0438\u043d\u044b \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 (state machine). \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0418\u0418 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442 \u043e\u0434\u043d\u043e \u0438\u0437 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u043e\u044f\u0442\u044c, \u0436\u0434\u0430\u0442\u044c, \u0438\u0434\u0442\u0438, \u043d\u0430\u0441\u0442\u043e\u0440\u043e\u0436\u0438\u0442\u044c\u0441\u044f, \u0438\u0441\u043f\u0443\u0433\u0430\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u0443\u043c\u0435\u0440\u0435\u0442\u044c.\r\n\r\n\u0412 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u00ab\u0436\u0434\u0430\u0442\u044c\u00bb \u043f\u0435\u0448\u0435\u0445\u043e\u0434 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \r\n\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0432\u043e\u043a\u0440\u0443\u0433 \u0441\u0435\u0431\u044f \u043d\u0430 \u043f\u0440\u0435\u0433\u0440\u0430\u0434\u044b \u0432\u0440\u043e\u0434\u0435 \u0441\u0442\u0435\u043d \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0435\u0448\u0435\u0445\u043e\u0434\u043e\u0432 \u0438 \u0436\u0434\u0451\u0442, \u043f\u043e\u043a\u0430 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u043d\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u0441\u044f \u0434\u043e\u0440\u043e\u0433\u0430, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043c\u0435\u043d\u044f\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043d\u0430 \u00ab\u0438\u0434\u0442\u0438\u00bb. \u0423\u0436\u0435 \u0432 \u044d\u0442\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 NPC \u043f\u0440\u043e\u0441\u0442\u043e \u0445\u043e\u0434\u0438\u0442 \u043f\u043e \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044f\u043c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0431\u043b\u0443\u0436\u0434\u0430\u043d\u0438\u044f (wander steering behavior ), \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u044b\u0439 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u043c \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u041a\u0440\u0435\u0439\u0433\u043e\u043c \u0420\u0435\u0439\u043d\u043e\u043b\u044c\u0434\u0441\u043e\u043c.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Hitman: Absolution \/ IO Interactive\r\n\r\n\u042d\u0442\u043e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044d\u0444\u0444\u0435\u043a\u0442 \r\n\u0431\u043e\u043b\u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439, \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043a \u0441\u0442\u0440\u043e\u0433\u043e \u043f\u0440\u043e\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c \u0434\u043b\u044f \u043d\u0438\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0435\u043c\u0443 \u0443 \u0438\u0433\u0440\u043e\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435, \u0447\u0442\u043e NPC \u0438 \u043f\u0440\u0430\u0432\u0434\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0433\u0443\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u043b\u043e\u043a\u0430\u0446\u0438\u0438.\r\n\r\n\u0421\u0443\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0434\u0440 \u043a \u0432\u0435\u043a\u0442\u043e\u0440\u0443 \r\n\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436 \u043d\u0435 \u043c\u0435\u043d\u044f\u043b \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0440\u0435\u0437\u043a\u043e. \u0415\u0441\u043b\u0438 \u043e\u043d \u0434\u0432\u0438\u0433\u0430\u043b\u0441\u044f \u0432\u0432\u0435\u0440\u0445 \u0438 \u0432\u043f\u0440\u0430\u0432\u043e, \u0442\u043e \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043a\u0430\u0434\u0440\u0435 \u0431\u0443\u0434\u0435\u0442 \u0432\u0441\u0451 \u0442\u0430\u043a\u0436\u0435 \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0432\u0432\u0435\u0440\u0445 \u0438 \u0432\u043f\u0440\u0430\u0432\u043e, \u043d\u043e \u0447\u0443\u0442\u044c-\u0447\u0443\u0442\u044c \u043f\u043e\u0434 \u0434\u0440\u0443\u0433\u0438\u043c \u0443\u0433\u043b\u043e\u043c.\r\n \r\n\u041d\u0430 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u043e\u043c \u043a\u0440\u0443\u0433\u0435 \u043f\u0435\u0440\u0435\u0434 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f \u043a \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044e \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430. \u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0434\u0440 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u0432\u0435\u043b\u0438\u0447\u0438\u043d\u0443 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u043c \u043a\u0440\u0443\u0436\u043a\u043e\u043c. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445: \u0441\u0442\u0430\u0442\u044c\u044f Steering Behaviors For Autonomous Characters , Craig W. Reynolds \/ \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u041a\u0440\u0435\u0439\u0433\u0430 \u0420\u0435\u0439\u043d\u043e\u043b\u044c\u0434\u0441\u0430\r\n\u0418\u043d\u0444\u043e\u0433\u0440\u0430\u0444\u0438\u043a\u0430: \u041c\u0430\u0439\u044f \u041c\u0430\u043b\u044c\u0433\u0438\u043d\u0430 \u0434\u043b\u044f Skillbox Media\r\n\r\n\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0430\u043d\u0438\u043a\u0438 NPC \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0438\u0439 \r\n\u043f\u0443\u0442\u044c \u0434\u043e \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u043b\u043e\u043a\u0430\u0446\u0438\u0438. \u041f\u0443\u0442\u044c \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u0435\u0442\u043a\u0438 \u0438 \u043a\u043b\u0435\u0442\u043e\u043a, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u0445 \u0432\u044b\u0445\u043e\u0434, \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u043e\u0441\u044c \u0432\u044b\u0448\u0435. \u0415\u0441\u043b\u0438 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u0434\u0440\u0443\u0433\u0438\u0435 NPC \u043f\u0435\u0440\u0435\u0433\u043e\u0440\u043e\u0434\u0438\u043b\u0438 \u0434\u043e\u0440\u043e\u0433\u0443, \u0442\u043e \u0443\u0431\u0435\u0433\u0430\u044e\u0449\u0438\u0439 \u043f\u0435\u0448\u0435\u0445\u043e\u0434 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442, \u0432\u0435\u0434\u0443\u0449\u0438\u0439 \u043a \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u043a\u043b\u0435\u0442\u043a\u0435 \u0432\u044b\u0445\u043e\u0434\u0430. \u041e\u0442\u043c\u0435\u0442\u0438\u043c, \u0447\u0442\u043e \u043a\u043b\u0435\u0442\u043e\u043a \u0432\u044b\u0445\u043e\u0434\u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u043a \u043d\u0438\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 NPC, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0414\u0435\u0439\u043a\u0441\u0442\u0440\u044b [ https:\/\/ru.wikipedia.org\/wiki\/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%94%D0%B5%D0%B9%D0%BA%D1%81%D1%82%D1%80%D1%8B ] . \u041e\u043d \u043a\u0430\u043a \u0440\u0430\u0437 \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0438\u0435 \u043f\u0443\u0442\u0438 \u043c\u0435\u0436\u0434\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u044b\u043c\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0442\u043e\u0447\u043a\u0430\u043c\u0438.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Hitman: Absolution \/ IO Interactive\r\n\r\nLeft 4 Dead\r\n\r\n\u0422\u043e\u043b\u043f\u044b \u0436\u0438\u0432\u044b\u0445 \u043c\u0435\u0440\u0442\u0432\u0435\u0446\u043e\u0432, \u0433\u043e\u043d\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u0437\u0430 \u0438\u0433\u0440\u043e\u043a\u0430\u043c\u0438 \r\n\u0432 Left 4 Dead, \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0438 \u043e\u0442 \u0431\u043e\u0442\u043e\u0432 Counter-Strike: Source. \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u041c\u0430\u0439\u043a \u0411\u0443\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043b [ https:\/\/left4dead.fandom.com\/wiki\/Developer_Commentary_(Left_4_Dead)#:~:text=rooftop%20door%20%5D-,%5BMike%20Booth%5D,-While%20we%20were ] , \u0447\u0442\u043e, \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043e\u0434\u043d\u0430\u0436\u0434\u044b \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0430, \u0447\u0442\u043e \u043e\u0442\u0431\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0430\u043c\u0438 \u043e\u0442 30 \u0431\u043e\u0442\u043e\u0432, \u0432\u043e\u043e\u0440\u0443\u0436\u0451\u043d\u043d\u044b\u0445 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0436\u0430\u043c\u0438, \u043a\u0440\u0430\u0439\u043d\u0435 \u0432\u0435\u0441\u0435\u043b\u043e. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e Counter-Strike: Source \u0432\u044b\u0448\u043b\u0430, Valve \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u043d\u044f\u043b\u0430\u0441\u044c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u044d\u0442\u043e\u0439 \u0438\u0434\u0435\u0435\u0439. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0439 \u0438\u0433\u0440\u044b \u043e \u0437\u043e\u043c\u0431\u0438-\u0430\u043f\u043e\u043a\u0430\u043b\u0438\u043f\u0441\u0438\u0441\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0431\u043e\u0442\u043e\u0432 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Left 4 Dead \/ Valve\r\n\r\n\r\n\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Left 4 Dead \/ Valve\r\n\r\n\u0412\u0441\u0435 \u0443\u0440\u043e\u0432\u043d\u0438 \u0432 Left 4 Dead \u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0435. \u041d\u043e \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \r\n\u0438\u0437 \u043d\u0438\u0445 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u0439 \u0438 \u0437\u0430\u043a\u0443\u0442\u043a\u043e\u0432, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u0441\u043f\u0430\u0443\u043d\u0430 \u0436\u0438\u0432\u044b\u0445 \u043c\u0435\u0440\u0442\u0432\u0435\u0446\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0438\u043c \u0431\u044b\u043b\u043e \u043e\u0442\u043a\u0443\u0434\u0430 \u0432\u043d\u0435\u0437\u0430\u043f\u043d\u043e \u0432\u044b\u0431\u0435\u0436\u0430\u0442\u044c \u0442\u043e\u043b\u043f\u043e\u0439, \u0437\u0430\u0441\u0442\u0430\u0432 \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0432\u0440\u0430\u0441\u043f\u043b\u043e\u0445. \u0412 \u044d\u0442\u0438\u0445 \u043e\u0442\u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u043b\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0449\u0438\u0435\u0441\u044f \u0430\u043f\u0442\u0435\u0447\u043a\u0438, \u0431\u043e\u043c\u0431\u044b, \u043e\u0440\u0443\u0436\u0438\u0435 \u0438 \u0431\u0443\u0442\u044b\u043b\u043a\u0438 \u0441 \u0437\u0430\u0436\u0438\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u043c\u0435\u0441\u044c\u044e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043e\u0449\u0440\u044f\u0442\u044c \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0437\u0430 \u0441\u0442\u0440\u0435\u043c\u043b\u0435\u043d\u0438\u0435 \u0438\u0437\u0443\u0447\u0438\u0442\u044c \u043b\u043e\u043a\u0430\u0446\u0438\u044e.\r\n\r\n\r\n\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Left 4 Dead \/ Valve\r\n\r\n\u041f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0430\u0441\u044c \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c \r\n\u043d\u0430 \u043e\u0431\u044a\u0451\u043c \u0434\u0430\u043d\u043d\u044b\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u043c\u0443 \u0438\u0437 \u0438\u0433\u0440\u043e\u043a\u043e\u0432. \u0412 \u043c\u043d\u043e\u0433\u043e\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0438\u0433\u0440\u0430\u0445 \u0432\u0440\u043e\u0434\u0435 Counter-Strike \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e \u043e \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u0433\u0440\u043e\u043a\u0430\u0445, \u0438\u0445 \u043e\u0440\u0443\u0436\u0438\u0438 \u0438 \u043e \u0442\u043e\u043c, \u043a\u0443\u0434\u0430 \u043b\u0435\u0442\u044f\u0442 \u0438\u0445 \u043f\u0443\u043b\u0438. \u041d\u043e \u0432 Left 4 Dead \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0434\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043c\u0435\u0440\u0442\u0432\u0435\u0446\u043e\u0432.\r\n\r\n\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0439\u0442\u0438 \u043d\u0430 \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u044c. \r\n\u041d\u0430 \u043b\u043e\u043a\u0430\u0446\u0438\u044f\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0437 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u0439 \u0441 \u043f\u043b\u043e\u0441\u043a\u0438\u043c \u043f\u043e\u043b\u043e\u043c, \u043c\u0435\u0440\u0442\u0432\u0435\u0446\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u0441\u0432\u043e\u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043b\u0438\u0448\u044c \u043f\u043e \u043e\u0441\u044f\u043c X \u0438 Z. \u0410 \u0432\u043e\u0442 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u043f\u043e \u043e\u0441\u0438 Y \u043e\u043d\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e, \u043a\u043e\u0433\u0434\u0430 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u044b\u0441\u043e\u0442\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043c\u0435\u0440\u0442\u0432\u0435\u0446: \u0435\u0441\u043b\u0438 \u043e\u043d \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0438\u043b\u0438 \u0441\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043e\u0434\u0438\u043d \u044d\u0442\u0430\u0436, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Left 4 Dead \/ Valve\r\n\r\n\u0412 Left 4 Dead \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043b\u043e\u043a\u0430\u0446\u0438\u0439. \r\n\u0420\u0435\u0438\u0433\u0440\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0418\u0418-\u0440\u0435\u0436\u0438\u0441\u0441\u0451\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0441\u044f\u043a\u0438\u0439 \u0440\u0430\u0437 \u043d\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u043c\u0435\u0440\u0442\u0432\u0435\u0446\u0430\u043c\u0438 \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u0430\u0432\u044b\u043a\u043e\u0432 \u0438\u0433\u0440\u043e\u043a\u043e\u0432 (\u0445\u043e\u0442\u044f \u043f\u043e\u0437\u0436\u0435 \u043e\u0434\u0438\u043d \u0438\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0443\u0432\u0435\u0440\u044f\u043b, \u0447\u0442\u043e \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0418\u0418-\u0440\u0435\u0436\u0438\u0441\u0441\u0451\u0440\u0430 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 , \u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b).\r\n\r\n\r\n\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Days Gone \/ Bend Studio\r\n\r\n\u0427\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0438 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \r\n\u0434\u043e 500 \u043e\u0441\u043e\u0431\u0435\u0439, \u043f\u0440\u0438\u0447\u0451\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0438\u0445 \u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u043b\u043e\u043a\u0430\u0446\u0438\u044f\u043c. \u041a\u0430\u0436\u0434\u0430\u044f \u0441\u0442\u0430\u044f \u043f\u0440\u043e\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u0435\u043d\u044c \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0441\u0432\u043e\u0438\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044f\u043c.\r\n\r\n\r\n\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Days Gone \/ Bend Studio\r\n\r\n\u041d\u043e \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u043b\u043b\u044e\u0437\u0438\u044e, \r\n\u0431\u0443\u0434\u0442\u043e \u0442\u043e\u043b\u043f\u0430 \u0432 500 \u043e\u0441\u043e\u0431\u0435\u0439 \u043d\u0435 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0431\u043b\u0438\u0437\u043d\u0435\u0446\u043e\u0432? \u0423 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0431\u044b\u043b\u043e \u0432\u0441\u0435\u0433\u043e \u0432\u043e\u0441\u0435\u043c\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u043e\u0434\u0435\u043b\u0435\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438\u0433\u0440\u043e\u043a\u0438 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438 \u0431\u044b \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a\u043e\u0432, \u043a\u0430\u043a \u0434\u0432\u0435 \u043a\u0430\u043f\u043b\u0438 \u0432\u043e\u0434\u044b \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430. \u0427\u0442\u043e\u0431\u044b \u0432\u043d\u0435\u0441\u0442\u0438 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u0435, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u043b\u0438 \u0440\u0430\u0437\u043c\u0435\u0440 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u0440\u0438\u043a\u0435\u0440\u043e\u0432 \u0432 \u0442\u043e\u043b\u043f\u0435 \u2014 \u044d\u0442\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u043b\u043e \u0438 \u043d\u0430 \u0438\u0445 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f.\r\n\r\n\r\n\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Days Gone \/ Bend Studio\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u0432\u0441\u044f \u0442\u043e\u043b\u043f\u0430 \u043c\u043e\u043d\u0441\u0442\u0440\u043e\u0432 \u043e\u0434\u043d\u043e\u043c\u043e\u043c\u0435\u043d\u0442\u043d\u043e \r\n\u043d\u0435 \u0437\u0430\u0434\u0430\u0432\u0438\u043b\u0430 \u043f\u0440\u043e\u0442\u0430\u0433\u043e\u043d\u0438\u0441\u0442\u0430 \u0447\u0438\u0441\u043b\u043e\u043c, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0442\u0440\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043d\u0430 \u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u0438\u043a\u043e\u0432 \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e. \u0412\u043e\u043a\u0440\u0443\u0433 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u0433\u0435\u0440\u043e\u044f \u0435\u0441\u0442\u044c \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u0439 \u043a\u0440\u0443\u0433 \u2014 \u0435\u0441\u043b\u0438 \u0444\u0440\u0438\u043a\u0435\u0440 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u044d\u0442\u043e\u0433\u043e \u043a\u0440\u0443\u0433\u0430, \u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0431\u0435\u0436\u0430\u0442\u044c \u043a \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0443. \u041f\u043e \u0445\u043e\u0434\u0443 \u0431\u043e\u044f \u043a\u0440\u0443\u0433 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u0432 \u0438\u0442\u043e\u0433\u0435 \u043d\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0432\u0441\u044e \u043e\u0440\u0434\u0443, \u0447\u0442\u043e\u0431\u044b \u0434\u0430\u0436\u0435 \u043e\u0442\u0441\u0442\u0430\u0432\u0448\u0438\u0435 \u0437\u0430\u0440\u0430\u0436\u0451\u043d\u043d\u044b\u0435 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u043b\u0438 \u043f\u0440\u043e \u0438\u0433\u0440\u043e\u043a\u0430.\r\n\r\n\u0414\u0440\u0443\u0433\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0444\u0440\u0438\u043a\u0435\u0440\u044b, \u043f\u0440\u0435\u0441\u043b\u0435\u0434\u0443\u044f \r\n\u0433\u0435\u0440\u043e\u044f, \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u0432 \u0434\u043b\u0438\u043d\u043d\u0443\u044e \u043b\u0438\u043d\u0438\u044e, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043b\u0438 \u0438\u0434\u0442\u0438 \u043f\u043e \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u043c\u0443 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0443. \u042d\u0442\u043e \u043b\u0438\u0448\u0430\u043b\u043e \u0438\u0433\u0440\u0443 \u0442\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u044f: \u043c\u043e\u043d\u0441\u0442\u0440\u044b \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430 \u0443\u0431\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043e\u0440\u0443\u0436\u0438\u0435\u043c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0441\u043f\u043e\u0441\u043e\u0431, \u043a\u0430\u043a \u0440\u0430\u0441\u0441\u0435\u044f\u0442\u044c \u0442\u043e\u043b\u043f\u0443, \u0447\u0442\u043e\u0431\u044b \u0438\u0433\u0440\u043e\u043a\u0443 \u0431\u044b\u043b\u043e \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0432\u044b\u0431\u0440\u0430\u0442\u044c, \u0432 \u043a\u043e\u0433\u043e \u0441\u0442\u0440\u0435\u043b\u044f\u0442\u044c \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c (\u043d\u043e \u043e \u0441\u0430\u043c\u043e\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u0435 \u043e\u043d\u0438 \u0443\u043c\u043e\u043b\u0447\u0430\u043b\u0438).\r\n\r\nSubnautica\r\n\r\n\u0412 Subnautica, \u0438\u0433\u0440\u0435 \u043e\u0431 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f\u0445 \u0438\u043d\u043e\u043f\u043b\u0430\u043d\u0435\u0442\u043d\u043e\u0433\u043e \r\n\u043e\u043a\u0435\u0430\u043d\u0430, \u0440\u044b\u0431\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u043e\u0441\u043e\u0431\u043d\u044f\u043a\u043e\u043c. \u041a\u043e\u0441\u044f\u043a\u0430\u043c\u0438 \u043f\u043b\u0430\u0432\u0430\u044e\u0442 \u043b\u0438\u0448\u044c \u043c\u0435\u043b\u043a\u0438\u0435 \u0440\u044b\u0431\u0451\u0448\u043a\u0438.\u0412 \u043a\u043e\u043d\u0446\u0435 \u0440\u043e\u043b\u0438\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u043a\u0430\u043a \u043a\u043e\u0441\u044f\u043a \u0440\u044b\u0431 \u0443\u0448\u0451\u043b \u0432 \u0441\u043a\u0430\u043b\u0443\r\n\r\n\u0412 \u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u0430\u043a \u0431\u043e\u043b\u0435\u0435 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043e\u0441\u043e\u0431\u0435\u0439-\u043e\u0434\u0438\u043d\u043e\u0447\u0435\u043a \r\n\u0438\u0433\u0440\u043e\u043a \u043c\u043e\u0436\u0435\u0442 \u0434\u043e\u0431\u044b\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0441\u044a\u0435\u0441\u0442\u044c, \u043a\u043e\u0441\u044f\u043a\u0438 \u0438\u0433\u0440\u0430\u044e\u0442 \u0440\u043e\u043b\u044c \u0441\u043a\u043e\u0440\u0435\u0435 \u0434\u0435\u043a\u043e\u0440\u0430\u0446\u0438\u0438. \u0423 \u043d\u0438\u0445 \u043d\u0435\u0442 \u0445\u0438\u0442\u0431\u043e\u043a\u0441\u0430 [ https:\/\/subnautica.fandom.com\/wiki\/Shoal_of_Fish_(Subnautica)#:~:text=Shoals%20of%20fish%20do%20not%20have%20a%20hitbox ] , \u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u043f\u0440\u043e\u043f\u043b\u044b\u0442\u044c \u0441\u043a\u0432\u043e\u0437\u044c \u043d\u0438\u0445. \u0412 \u0442\u043e \u0436\u0435 \u0432\u0440\u0435\u043c\u044f \u0438 \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u043f\u0440\u043e\u043f\u043b\u044b\u0442\u044c \u0441\u043a\u0432\u043e\u0437\u044c \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e \u2014 \u0441\u043a\u0430\u043b\u044b, \u0434\u0440\u0443\u0433\u0438\u0445 \u0440\u044b\u0431, \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u044b\u0435 \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u044b \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0441\u0442\u0435\u043d\u044b \u0432\u0430\u0448\u0435\u0439 \u043f\u043e\u0434\u0432\u043e\u0434\u043d\u043e\u0439 \u0431\u0430\u0437\u044b.\r\n\r\n\u042d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0431\u0430\u0433\u043e\u0432 Subnautica \u2014 \r\n\u043a\u043e\u0441\u044f\u043a \u0440\u044b\u0431, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043b\u0435\u0442\u0430\u0435\u0442 \u043f\u043e \u0432\u0430\u0448\u0435\u043c\u0443 \u0443\u0431\u0435\u0436\u0438\u0449\u0443, \u0431\u0443\u0434\u0442\u043e \u043e\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0432\u043e\u0434\u043e\u0439.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Subnautica \/ Unknown Worlds Entertainment\r\n\r\n\u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043a\u043e\u0441\u044f\u043a \u0440\u044b\u0431 \u0432 Subnautica \u2014 \r\n\u044d\u0442\u043e \u043d\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0430 \u043e\u0434\u0438\u043d \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0441 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0447\u0430\u0441\u0442\u0438\u0446 \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e. \u041d\u0430 \u0442\u0430\u043a\u0443\u044e \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0439\u0442\u0438 \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438.\r\n\r\n\r\n\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 Subnautica \/ Unknown Worlds Entertainment\r\n\r\n* * *\r\n\r\n\u0421\u0442\u0430\u0438, \u043a\u043e\u0441\u044f\u043a\u0438, \u0442\u0430\u0431\u0443\u043d\u044b, \u0442\u043e\u043b\u043f\u044b, \u0440\u043e\u0438 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \r\n\u0433\u0440\u0443\u043f\u043f\u044b \u0441\u0443\u0449\u0435\u0441\u0442\u0432 \u0432 \u0438\u0433\u0440\u0435 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u044b, \u043d\u043e \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0435\u0441\u0442\u044c \u0438 \u0433\u0440\u0430\u043c\u043e\u0442\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b, \u0442\u043e \u044d\u0442\u043e \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442 \u0437\u0440\u0435\u043b\u0438\u0449\u043d\u043e\u0441\u0442\u0438 \u0438 \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0441\u0442\u0438. \u0412\u043e\u043f\u043b\u043e\u0442\u0438\u0442\u044c \u0432 \u0436\u0438\u0437\u043d\u044c \u0442\u0430\u043a\u043e\u0435 \u0441\u0442\u0430\u0439\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u0437\u0434\u0435\u0441\u044c \u2014 \u043d\u0435 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f\u043c\u0438.\r\n\r\n\u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043a\u0430\u043a \u0432 Subnautica, \u043c\u043e\u0436\u043d\u043e \r\n\u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0447\u0430\u0441\u0442\u0438\u0446. \u041d\u043e \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u0432\u0440\u043e\u0434\u0435 Assassin\u2019s Creed Unity, Left 4 Dead \u0438\u043b\u0438 Hitman: Absolution, \u0433\u0434\u0435 \u0442\u043e\u043b\u043f\u0430 \u2014 \u044d\u0442\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0433\u0440\u043e\u0432\u0430\u044f \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0430, \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c \u0445\u0438\u0442\u0440\u043e\u0441\u0442\u044f\u043c \u043c\u0435\u0441\u0442\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0451\u0442\u0441\u044f. \u041f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0435 \u043d\u0430\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0432 \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0438\u043d\u0434\u0443\u0441\u0442\u0440\u0438\u0438, \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c Boids \u041a\u0440\u0435\u0439\u0433\u0430 \u0420\u0435\u0439\u043d\u043e\u043b\u044c\u0434\u0441\u0430, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0435\u0449\u0451 \u0432 1980-\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0442\u043e\u043c \u0438\u043b\u0438 \u0438\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u0433\u0440\u0430\u0445 \u0438 \u043a\u0438\u043d\u043e.\r\n\r\n\r\n\r\n\r\n\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Symbolics \u0441\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0447\u0435\u0433\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u0442\u0435\u043c, \r\n\u0447\u0442\u043e \u043f\u0435\u0440\u0432\u043e\u0439 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0432 \u0437\u043e\u043d\u0435 .com.","author":{"@type":"Person","name":"\u0414\u0430\u043d\u0438\u043b \u0421\u0432\u0435\u0447\u043a\u043e\u0432","url":"https:\/\/skillbox.ru\/media\/authors\/danil-svechkov\/"},"publisher":{"@type":"Organization","name":"Skillbox","logo":{"@type":"ImageObject","url":"https:\/\/skillbox.ru\/static\/images\/skillbox.png"}},"mainEntityOfPage":{"@type":"WebPage","url":"https:\/\/skillbox.ru\/media\/gamedev\/stai-i-tolpy-v-igrakh-kak-programmiruyut-realistichnoe-staynoe-povedenie\/"},"datePublished":"2024-02-21T07:41:00Z","dateModified":"2024-03-07T13:33:02Z","image":{"@type":"ImageObject","url":["https:\/\/248006.selcdn.ru\/main\/iblock\/5f0\/5f07b3beb76ee9f18f1e62eb7a071303\/f1da30197f3d46612ff1c2e6d102de7b.png"]},"description":"\u0418\u0437\u0443\u0447\u0430\u0435\u043c, \u043d\u0430 \u043a\u0430\u043a\u0438\u0435 \u0443\u0445\u0438\u0449\u0440\u0435\u043d\u0438\u044f \u0448\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0441\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f NPC \u0438 \u0436\u0438\u0432\u043e\u0442\u043d\u044b\u0445 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e."}
</script><script data-skip-moving="true" id="FiMjZmipVK5U4ODg">if (window.relap) window.relap.ar('FiMjZmipVK5U4ODg');</script> </div>
<script>
window.Section_id = 18;
</script>
</div>
</main>
<footer class="without-buttons">
<div class="footer__wrapper container">
<div class="footer__firstgroup">
<section class="footer__contactbox">
<address class="footer__contacts">
<p class="footer__contacts-block">
<a class="footer__phone link" href="tel:+74951540915">8 (800) 500-05-22</a>
<span class="footer__phone-caption">Контактный центр</span>
</p>
<p class="footer__contacts-block">
<a class="footer__phone link" href="tel:+74952915987">+7(495) 291-59-87</a>
<span class="footer__phone-caption">Отдел заботы о пользователях</span>
</p>
<p class="footer__address"> Москва, Ленинский проспект, дом 6, строение 20</p>
</address>
<ul class="social-contacts footer__social">
<li>
<a class="social-contacts__item" href="https://vk.com/skillbox_education"
aria-label="Вконтакте">
<img src="/static/images/footer/soc_vk.svg"/>
</a>
</li>
<li>
<a class="social-contacts__item"
href="https://www.youtube.com/channel/UC2FJq-Rr7v4SlKAoM7x0ZhA" aria-label="YouTube">
<img src="/static/images/footer/soc_tube.svg"/>
</a>
</li>
<li>
<a class="social-contacts__item" href="tg://resolve?domain=skillboxru"
aria-label="Telegram">
<img src="/static/images/footer/soc_tg.svg"/>
</a>
</li>
</ul>
<div class="footer__age-limit">
16+
</div>
</section>
<section class="footer__rewardbox">
<ul class="rewards footer__rewards">
<li>
<span class="rewards__item">
<img src="/static/images/footer/footer_runet.svg" alt=""/>
<span>Премии Рунета</span>
<span>2018, 2019, 2020</span>
</span>
</li>
</ul>
</section>
</div>
<section class="footer__linksbox">
<ul class="links__list links__list--courses">
<li class="links__item links__item--header">Все направления</li>
<li class="links__item"><a href="/code/?utm_source=media&utm_medium=button&utm_campaign=footerlink_code&utm_term=footer">Программирование</a></li>
<li class="links__item"><a href="/design/?utm_source=media&utm_medium=button&utm_campaign=footerlink_design&utm_term=footer">Дизайн</a></li>
<li class="links__item"><a href="/marketing/?utm_source=media&utm_medium=button&utm_campaign=footerlink_marketing&utm_term=footer">Маркетинг</a></li>
<li class="links__item"><a href="/management/?utm_source=media&utm_medium=button&utm_campaign=footerlink_management&utm_term=footer">Управление</a></li>
<li class="links__item"><a href="/games/?utm_source=media&utm_medium=button&utm_campaign=footerlink_gamedev&utm_term=footer">Игры</a></li>
<li class="links__item"><a href="/multimedia/?utm_source=media&utm_medium=button&utm_campaign=footerlink_multimedia&utm_term=footer">Мультимедиа</a></li>
<li class="links__item"><a href="/psychology/?utm_source=media&utm_medium=button&utm_campaign=footerlink_psychology&utm_term=footer">Психология</a></li>
<li class="links__item"><a href="/general-development/?utm_source=media&utm_medium=button&utm_campaign=footerlink_general-development&utm_term=footer">Общее развитие</a></li>
<li class="links__item"><a href="/engineering/?utm_source=media&utm_medium=button&utm_campaign=footerlink_engineering&utm_term=footer">Инженерия</a></li>
<li class="links__item"><a href="/english/?utm_source=media&utm_medium=button&utm_campaign=footerlink_english&utm_term=footer">Английский язык</a></li>
<li class="links__item"><a href="/other/?utm_source=media&utm_medium=button&utm_campaign=footerlink_other&utm_term=footer">Другое</a></li>
</ul>
<ul class="links__list links__list--about">
<li class="links__item links__item--header">О Skillbox</li>
<li class="links__item"><a href="/company/?utm_source=media&utm_medium=button&utm_campaign=footerlink_aboutskillbox&utm_term=footer">О Платформе</a></li>
<li class="links__item"><a href="/career/?utm_source=media&utm_medium=button&utm_campaign=footerlink_careercentr&utm_term=footer"> Центр карьеры</a></li>
<li class="links__item"><a href="/otzyvy/?utm_source=media&utm_medium=button&utm_campaign=footerlink_testimonials&utm_term=footer">Отзывы</a></li>
<li class="links__item"><a href="/contacts/?utm_source=media&utm_medium=button&utm_campaign=footerlink_skillboxcontacts&utm_term=footer">Контакты</a></li>
<li class="links__item"><a href="/jobs/?utm_source=media&utm_medium=button&utm_campaign=footerlink_jobs&utm_term=footer">Вакансии</a></li>
<li class="links__item"><a href="/teachers/?utm_source=media&utm_medium=button&utm_campaign=footerlink_school&utm_term=footer">Школа кураторов</a></li>
<li class="links__item"><a href="/sale/free/?utm_source=media&utm_medium=button&utm_campaign=footerlink_free&utm_term=footer">Бесплатно</a></li>
<li class="links__item"><a href="/media/topic/tests/?utm_source=media&utm_medium=button&utm_campaign=footerlink_tests&utm_term=footer">Онлайн-тесты</a></li>
</ul>
<ul class="links__list links__list--webinar">
<li class="links__item links__item--header">Вебинары</li>
<li class="links__item"><a href="https://live.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_webinars&utm_term=footer" target="_blank" rel="noopener">Все вебинары</a></li>
<li class="links__item"><a href="https://live.skillbox.ru/playlists/?utm_source=media&utm_medium=button&utm_campaign=footerlink_playlists&utm_term=footer" target="_blank" rel="noopener">Плейлисты</a></li>
<li class="links__item"><a href="https://live.skillbox.ru/calendar/?utm_source=media&utm_medium=button&utm_campaign=footerlink_schedule&utm_term=footer" target="_blank" rel="noopener">Расписание</a></li>
</ul>
<ul class="links__list links__list--last">
<li class="links__item links__journal"><a href="/media/" target="_blank" rel="noopener">Медиа</a></li>
<li class="links__item"><a href="https://partners.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_partners&utm_term=footer" target="_blank" rel="noopener">Партнерская программа</a></li>
<li class="links__item"><a href="https://b2b.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_b2b&utm_term=footer" target="_blank" rel="noopener">Корпоративным клиентам</a></li>
<li class="links__item"><a href="https://career.skillbox.ru/?utm_source=media&utm_medium=button&utm_campaign=footerlink_employees&utm_term=footer" target="_blank" rel="noopener">Для работодателей</a></li>
</ul>
</section>
</div>
<div class="footer__underline container">
<span class="footer__copy">
© Skillbox, 2026 </span>
<div>
<span class="footer__oferta">
<a href="/oferta.pdf" target="_blank">Договор оферты</a>
</span>
<span class="footer__payment">
<a href="/payments/" target="_blank">Оплата</a>
</span>
<span class="footer__use-policy">
<a href="/terms_of_use.pdf" target="_blank">Правила пользования Платформой</a>
<a href="/privacy_policy.pdf" target="_blank">Политика конфиденциальности</a>
</span>
</div>
</div>
</footer>
<div class="cookies">
<p class="cookies__desc">
Пользуясь нашим сайтом, вы соглашаетесь с тем, что
<a href="https://skillbox.ru/privacy_policy.pdf" target="_blank" rel="noopener"
type="application/pdf">мы используем cookies</a> 🍪
</p>
<button type="button" class="cookies__button">
Окей
</button>
</div>
<div class="subscribe-popup subscribe">
<div class="subscribe-popup__spacer-mobile"></div>
<div class="subscribe-popup__row-content ">
<button class="subscribe__close"></button>
<div class="subscribe__content">
<div data-subscribe-popup-success class="hidden">
<h2 class="subscribe__header-success">Спасибо за подписку! Забирайте 5 бесплатных курсов:</h2>
<ul class="subscribe__list-block">
<li>Найти себя в IT за 5 дней</li>
<li>Как найти себя в дизайне в 2025 году</li>
<li>Интерьеры, мебель, ландшафт и декорирование</li>
<li>Интернет-маркетинг на практике</li>
<li>Бизнес-аналитик, продакт- и проджект-менеджер</li>
</ul>
<div class="subscribe__btns-el">
<a
target="_blank"
href="https://refer.id/?bot=skillbox_main_bot&platform=telegram&verbose_name=Skillbox&bot_avatar=https://designer.ftrcdn.com/uploads/bot_avatars/medium_54ab1ce8c393eb3df1474846ce0a0e2c.png&n=137050&c=9209&bc_number=890&?utm_source=media&utm_medium=&utm_campaign=all_all_media_banners_invite_sbornik-890_all_bot_skillbox"
class="subscribe__el-btn">Получить доступ</a>
</div>
</div>
<div data-subscribe-popup-content>
<h2 class="subscribe__header">У нас есть классные рассылки!</h2>
<form action="/media/gamedev/stai-i-tolpy-v-igrakh-kak-programmiruyut-realistichnoe-staynoe-povedenie/" class="newsletter-form page-subscription__form3" data-type="popup">
<input type="hidden" name="action" value="subscribe">
<div class="subscribe__checkboxes"></div>
<div class="subscribe__email email_popup">
<input class="subscribe-form__input" type="text" name="email" placeholder="Email" >
<span class="subscribe-form__label-name">Электронная почта</span>
<button type="submit" class="popup-btn-click">Подписаться</button>
<span class="email__error">Поле необходимо заполнить</span>
</div>
<div class="subscribe-popup__checkbox-end">
<div class="subscribe-popup__checkbox-item" data-checkbox-personal-data>
<div class="subscribe__checkbox">
<input type="checkbox" name="agreements[PERS]" id="isCheckTrue" value="1" data-checkbox-personal-data-input>
<label for="isCheckTrue"><span>Я согласен на <a target="_blank" href="https://skillbox.ru/legal-docs/chou/file/privacy_policy/version-290425.pdf">обработку персональных данных</a></span></label>
</div>
<span class="email__error">Нужно ваше согласие</span>
</div>
<div class="subscribe__bottom">
<span>Нажимая на кнопку, я соглашаюсь с <a target="_blank" href="https://skillbox.ru/legal-docs/skillbox/file/terms_of_use/version-300824.pdf">правилами пользования Платформой</a></span>
</div>
<div class="subscribe-popup__checkbox-item" data-checkbox-personal-data-two>
<div class="subscribe__checkbox subscribe__checkbox--end" >
<input type="checkbox" name="agreements[ADS]" id="isAdsCalls" value="1" checked="" data-checkbox-personal-data-input-two>
<label for="isAdsCalls">Я согласен <a target="_blank" href="https://skillbox.ru/legal-docs/chou/file/soglasie-na-poluchenie-reklamy.pdf">получать рекламу и звонки</a></label>
</div>
<span class="email__error">Нужно ваше согласие</span>
</div>
</div>
</form>
</div>
</div>
</div>
<!-- src="/static/images/articles/subscribe-popup-img.png" -->
</div>
<div class="bg-modal-overlay bg-modal-overlay--transparent"></div>
<script data-skip-moving="true" id="popup__data--formatted">
$(".popup-btn-click").on("click" , function (){
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
let input = $(this).closest(".subscribe__email").find(".subscribe-form__input");
let inputValue = input.val();
if(emailPattern.test(inputValue)) {
(window["rrApiOnReady"] = window["rrApiOnReady"] || []).push(function() { rrApi.setEmail(inputValue);});
}
});
/*
window.popupData = {
"8": {
header: 'У нас есть классные рассылки про дизайн!!!',
category: 'Дизайн',
checkboxes: [
'Лучшие статьи про Дизайн',
'«Типографика без боли»'
]
},
"10": {
header: 'У нас есть классные рассылки про код',
category: 'Код',
checkboxes: [
'Лучшие статьи про Код и Людей кода',
'«Жизнь без багов»'
]
},
"18": {
category: 'Геймдев',
checkboxes: []
},
"21": {
header: 'У нас есть классные рассылки про бизнес',
category: 'Бизнес',
checkboxes: [
'Лучшие статьи про Бизнес',
'«Цифровая жизнь»',
'«EdTech по полочкам»'
]
},
"9": {
header: 'У нас есть классные рассылки про бизнес',
category: 'Маркетинг',
checkboxes: [
'Лучшие статьи про Бизнес',
'«Цифровая жизнь»',
'«EdTech по полочкам»'
]
},
"11": {
header: 'У нас есть классные рассылки про бизнес',
category: 'Управление',
checkboxes: [
'Лучшие статьи про Бизнес',
'«Цифровая жизнь»',
'«EdTech по полочкам»'
]
},
"17": {
category: 'Развитие',
checkboxes: []
},
"22": {
header: 'У нас есть классные рассылки про образование',
category: 'Образование',
checkboxes: [
'Лучшие статьи про Образование',
'«EdTech по полочкам»',
'«Мой успешный онлайн-курс»'
]
},
}
*/
window.popupData = {"header":"\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 - \u043d\u0430 \u043f\u043e\u0447\u0442\u0443!\u003Cbr\/\u003E\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0442\u0435\u043c\u0443 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438\u003Cbr\/\u003E\u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 5 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u043a\u0443\u0440\u0441\u043e\u0432:","category":"\u0413\u0435\u0439\u043c\u0434\u0435\u0432","checkboxes":{"23":"\u041c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442","24":"\u041c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433","26":"\u041a\u043e\u0440\u043f. \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435","13":"\u0414\u0438\u0437\u0430\u0439\u043d","16":"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435","15":"\u041e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","17":"\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0438\u0433\u0440","18":"\u041f\u0441\u0438\u0445\u043e\u043b\u043e\u0433\u0438\u044f, \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e"},"code":"gamedev","scroll":true};
window.subscribePopupShow = 1;
</script>
<div class="copied">
<img src="/static/images/articles/done-circle.svg" alt="" class="copied__icon">
<p class="copied__text">
Ссылка скопирована
</p>
</div>
<!-- <style>@font-face{font-display:swap;font-family:Graphik;font-weight:500;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Medium.woff2) format("woff2")}@font-face{font-display:swap;font-family:Graphik;font-weight:700;font-style:normal;src:url(https://248006.selcdn.ru/Shared/fonts/GraphikLCTT-VA-Bold.woff2) format("woff2")}.universal-notice{box-sizing:border-box;text-decoration:none;display:none;min-height:48px;color:var(--banner-color);background-color:var(--banner-bg);overflow:hidden;font-family:Graphik,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:opacity .25s ease-in-out;transition:opacity .25s ease-in-out}.universal-notice *{box-sizing:inherit}.universal-notice.universal-notice--active{display:block}.universal-notice--bitrix{z-index:1000}.universal-notice__wrapper{position:relative;-webkit-box-pack:start;justify-content:flex-start;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;margin-left:12px;padding:4px 0}.universal-notice__title{position:relative;flex-shrink:0;width:132px;margin-right:27px;font-size:14px;line-height:20px;text-transform:uppercase}.universal-notice__timer{display:none;margin:0;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.universal-notice__button{flex-shrink:0;min-width:120px;padding:8px 12px;border-radius:25px;font-weight:500;font-size:12px;line-height:16px;color:#3925b7;text-align:center;text-transform:uppercase;background-color:#ffa6a6}@media (min-width:768px){.universal-notice{min-height:72px}.universal-notice__wrapper{-webkit-box-pack:center;justify-content:center;height:72px;margin:0}.universal-notice__title{width:252px;margin-right:32px;margin-left:20px;font-size:24px;line-height:32px}.universal-notice__button{min-width:200px;margin-right:20px;padding:14px 36px;font-size:16px;line-height:20px}}@media (min-width:768px) and (max-width:0px){.universal-notice{min-height:72px}.universal-notice__wrapper{-webkit-box-pack:center;justify-content:center;height:72px;margin:0}.universal-notice__title{width:252px;margin-right:32px;margin-left:20px;font-size:24px;line-height:32px}.universal-notice__button{min-width:200px;margin-right:20px;padding:14px 36px;font-size:16px;line-height:20px}}@media (min-width:1280px) and (max-width:0px){.universal-notice__wrapper{padding:0}.universal-notice__title{width:unset;margin-right:76px}.universal-notice__timer{flex-shrink:0;margin-right:32px;font-weight:700;font-size:24px;line-height:32px}.universal-notice__timer.js-universal-notice-active{display:-webkit-box;display:flex}.universal-notice__days{margin-right:5px}}@media (min-width:1280px){.universal-notice__wrapper{padding:0}.universal-notice__title{width:unset;margin-right:76px}.universal-notice__timer{flex-shrink:0;margin-right:32px;font-weight:700;font-size:24px;line-height:32px}.universal-notice__timer.js-universal-notice-active{display:-webkit-box;display:flex}.universal-notice__days{margin-right:5px}}</style>-->
</body>
</html>