#статьи
Разбираем особенности движка и создаём собственную игру.
Иллюстрация: SC2VN / Over The Hills And Far Away / Highway Blossoms / Steam / Colowgee для Skillbox Media
Считает игры произведениями искусства и старается донести эту идею до широких масс. В свободное время стримит, рисует и часами зависает в фоторежимах.
Ren’Py — один из самых популярных инструментов для разработки интерактивных историй. И если вы загорелись идеей создать визуальную новеллу, но вас останавливают сложности в изучении языков программирования и игровых движков, тогда, возможно, стоит обратить внимание именно на эту технологию.
В этом материале редакция «Геймдев» Skillbox Media разобрала особенности и основные функции конструктора на примере собственной интерактивной истории.
У нас есть телеграм-канал «Чекпоинт», где мы собираем полезные материалы для начинающих разработчиков. Там и статьи о геймдизайне, и гайды по софту, и даже интервью с теми, кто уже выпустил собственную игру. Подписывайтесь!
Ren’Py — это бесплатный игровой движок для визуальных новелл. С его помощью можно создать полноценную интерактивную историю с 2D-графикой, звуковым и музыкальным сопровождением и даже видеороликами.
Конструктор работает на языке Python, который поддерживает интеграцию большого количества диалогов, нелинейных ответвлений, систему параметров, характерную для симуляторов жизни, и даже мини-игры. Не говоря уже о том, что в каждом созданном проекте по умолчанию есть главное меню, система сохранений и встроенный просмотр истории диалогов.
Готовую игру можно выпустить на операционных системах для ПК (Windows, Linux, macOS) и на мобильных устройствах (iOS и Android). Сама технология существует уже почти 20 лет. На текущий момент актуальная версия Ren’Py — 8.1.3 (Where No One Has Gone Before) от 18 сентября 2023 года.
Если начинающий пользователь откроет скрипт визуальной новеллы, его наверняка смутит огромное количество строк кода и непонятных, на первый взгляд, команд. На самом деле разработка простой игры на Ren’Py не требует углублённого знания Python. К тому же большинство функций подробно описаны в официальной документации. Порой программирование фактически сводится к процессу «копировать — вставить» с изменением некоторых значений.
С другой стороны, за счёт продвинутых знаний в области Python в проект можно добавить дополнительные функции — от спецэффектов в виде тряски экрана до продвинутой системы взаимодействия с персонажами. При желании можно даже подключить полноценный инвентарь. Но и для интеграции подобных расширений не всегда потребуется помощь профессионального программиста, ведь готовые решения можно найти в сообществах Ren’Py, которые есть во многих соцсетях, в частности во «ВКонтакте».
Кажется, что у работы с Ren’Py довольно низкий порог вхождения. Почему же тогда проекты на этом движке, известные широкой аудитории, можно пересчитать по пальцам?
Многие игроки знакомы только с популярными представителями игр на нём — Doki Doki Literature Club!, «Бесконечное лето» (Everlasting Summer), «Зайчик» (Tiny Bunny), Katawa Shoujo, Milk Inside a Bag of Milk Inside a Bag of Milk… А ведь существуют тысячи других игр, в том числе от начинающих разработчиков. Но они известны в лучшем случае в тематических кругах.
Скриншот: игра «Зайчик» / SaikonoRen’Py действительно прост в освоении, но у этого преимущества есть и обратная сторона. Поняв, что это самый доступный способ сделать собственный проект на коммерческой основе, многие начинающие разработчики не задумываются о качестве внутриигрового контента (например, в отношении арта), равно как и о программной составляющей. В итоге на форумах нередко возникают дискуссии о том, что в большинстве игр на Ren’Py отмечается большое количество багов, а также о том, что в целом хороших проектов на этом движке единицы.
Масла в огонь подливает и то, что многие визуальные новеллы делают ставку на «взрослый» контент. В совокупности это формирует своеобразный ореол негатива, а в профильных медиа то и дело встречаются высказывания о том, что многие игроки в принципе не считают визуальные новеллы играми. Но вдруг именно ваше будущее творение на этом движке разрушит стереотипы?
Рассмотрим функции конструктора на практике.
Авторы Ren’Py рекомендуют установить самую последнюю, восьмую версию движка, так она поддерживает Python 3. На странице клиента выбираем любой удобный формат архива и распаковываем клиент движка на жёсткий диск. Далее запускаем файл renpy.exe, указываем язык приложения и знакомимся с интерфейсом лаунчера.
В этом приложении проводят все манипуляции с проектами, созданными на движке.
Интерфейс Ren’Py
Скриншот: Ren’Py / Tom RothamelСлева находится меню Проекты (Projects). По умолчанию в Ren’Py уже есть два готовых шаблона-истории: «Обучение» (Tutorial) и «Вопрос» (The Question). При желании можно выбрать любой из них и нажать Запустить проект (Launch Project). Например, в «Обучении» героиня рассказывает об основных функциях движка. А проект «Вопрос» демонстрирует самую простую модель нелинейной романтической истории.
Скриншот: игра «Обучение» / Tom RothamelСкриншот: игра «Вопрос» / Tom RothamelЕсли выбрать проект в лаунчере Ren’Py, справа отобразится несколько сегментов меню. Разберём их подробнее.
«Открыть Папку» (Open Directory) — открывает проводник с содержимым той или иной папки:
-
game — содержит весь игровой контент;
-
base — основная папка с клиентом игры;
-
images — контент с визуальной составляющей игры (фоны, аватары персонажей, видеоролики и так далее);
-
gui (аббревиатура от graphical user interface) — ещё одна папка с изображениями, но уже предназначенными для интерфейса игры;
-
audio — звуки и музыка.
Забегая вперёд, стоит отметить, что Ren’Py генерирует все эти папки по умолчанию при создании проекта. Поэтому, если посмотреть в проводнике содержимое любой визуальной новеллы на этом движке, в нём отобразятся те же самые директории.
В разделе «Редактировать Файл» (Edit File) можно просмотреть все файлы с расширением .rpy, которые содержат код различных сегментов игры. Если вы запустили Ren’Py в первый раз, то при переходе в этот раздел конструктор предложит на выбор несколько программ для редактирования скриптов.
Сами разработчики отмечают, что предпочтительный вариант — использовать Visual Studio Code. Движок автоматически установит выбранный текстовый редактор. После установки нужно нажать на название редактора скриптов и таким образом задать его в настройках.
Меню выбора редактора скриптов и отображение выбора редактора в настройках
Скриншоты: Ren’Py / Tom RothamelМеню выбора редактора скриптов и отображение выбора редактора в настройках
Скриншоты: Ren’Py / Tom RothamelПосле того как текстовый редактор выбран, при открытии файла с расширением .rpy автоматически запустится приложение для редактирования скриптов. В этом примере — Visual Studio Code.
Так выглядит часть кода тестовой новеллы «Вопрос»
Скриншот: Visual Studio Code / MicrosoftВернёмся к интерфейсу. Раздел «Действия с Проектом» (Actions) содержит различные опции для работы с кодом проекта.
-
Навигация по сценарию (Navigate Script). Редактирование и упорядочивание уже существующих сегментов.
-
«Проверить скрипт (Check script). Проверка кода на наличие возможных ошибок с помощью инструмента Lint. Стоит отметить, что Lint автоматически проверяет проект на наличие критических ошибок при запуске.
-
«Изменить/Обновить GUI» (Change/Update GUI). Перезапись настроек графического интерфейса.
-
«Очистить постоянные» (Delete Persistent). Удаление повторяющихся данных. Например, не показывать каждый раз пролог истории при запуске.
-
«Перекомпилировать проект» (Force Recompile). Принудительная перекомпиляция кода.
Справа находится список опций, которые потребуются на финальной стадии проекта.
-
«Построить дистрибутивы» (Build distributions). Открывается окно, где можно выбрать десктопную платформу и сгенерировать ZIP-архив билда игры, который можно запустить самостоятельно.
-
Android, iOS, Web (Beta). Создание порта для указанных платформ. Потребует установки дополнительных программ для компиляции.
-
«Создать переводы» (Generate Translations). Функция для создания локализации, если разработчик желает выпустить игру на нескольких языках.
-
«Извлечь диалог» (Extract Dialogue). Экспорт диалогов из игры в формате TAB или TXT.
И наконец, в настройках лаунчера (Launcher Preferences) в правом нижнем углу находятся общие функции редактора: выбор папки для проекта, выбор текстового редактора скриптов, различные функции навигации и вывода информации в лаунчере, настройка темы, установка библиотек (в том числе для поддержки Steam) и базовые операции с проектом.
Разобравшись с основами интерфейса клиента Ren’Py, перейдём к изучению основ.
Для начала создадим проект в Ren’Py. Нажимаем «+ Добавить новый проект» (+Create New Project). Конструктор предупредит, что по умолчанию в проекте будет указан язык, который выбран в настройках лаунчера. В нашем проекте выбран русский язык, но при этом реплики можно писать и на латинице.
Нажимаем «Продолжить» (Continue). Далее вводим название будущего проекта, а затем указываем его разрешение. В нашем примере выбран универсальный вариант для десктопного приложения — 1920×1080.
Затем Ren’Py предложит выбрать цветовую схему будущего графического интерфейса. Её можно примерить в реальном времени. Тёмный или серый цвет используется как основа, а дополнительный цвет подчёркивает акценты. Цветовую гамму можно изменить позже в настройках, выбрав ранее упомянутый пункт «Изменить/Обновить GUI» (Change/Update GUI). В том же окне выбора цветовой схемы можно выбрать настройки режима экрана и указать скорость вывода текста.
Интерфейс предварительных настроек графического интерфейса проекта
Скриншоты: Ren’Py / Tom RothamelЕсли до создания проекта в настройках лаунчера пользователь не указал расположение будущего билда, при следующем шаге движок предложит выбрать папку, в которой будут находиться файлы проекта.
После завершения этапа предварительных настроек в лаунчере появится новый проект. Его даже можно открыть, нажав «Запустить проект» (Launch Project). Загрузится сгенерированное главное меню, из которого можно начать новую игру. После загрузки персонаж-пустышка скажет нам пару фраз, и игра закончится.
Скриншот: Ren’Py / Tom RothamelТеперь, имея основу для будущего проекта, мы можем кардинально изменить содержимое под свои задачи.
Выделив название созданного проекта в лаунчере Ren’Py, открываем script.rpy в категории «Редактировать файл» (Edit File). В этом файле содержится весь основной код проекта. Обратите внимание, что строки, которые начинаются с символа #, — это обычные комментарии, которые можно оставлять в скрипте. Эти данные можно удалить, а можно оставить в качестве шпаргалки. Их наличие никак не повлияет на проект в целом.
Так по умолчанию выглядит скрипт нашей будущей игры в Visual Studio Code
Скриншот: Visual Studio Code / MicrosoftУдалим все данные, которые идут после начала игрового сегмента (label start), и рассмотрим, как сделать самый простой элемент — повествование на тёмном экране. Этот приём можно использовать в начале игры или в других сегментах истории — например, когда главный герой заходит в тёмное помещение и ещё не включил свет.
Чтобы вывести текст на тёмном экране, просто прописываем строки повествования, обособляя их кавычками. В Visual Studio Code кавычки генерируются автоматически после нажатия кнопки “. При написании текста помните, что всё содержимое одной строки отобразится на экране за один раз. Поэтому, если фрагмент очень большой, разбиваем его на логические сегменты (то есть так, словно персонаж проговаривает это в реальной жизни) и прописываем их с новой строки; при этом не забываем о синтаксисе — ставим Tab в начале каждой новой фразы. Сохраняем и смотрим, что получилось.
Так выглядит текст в коде
Скриншот: Visual Studio Code / MicrosoftА так он воспроизводится в игреЕсли нам нужно указать, от чьего лица ведётся повествование, перед фразой следует указать в кавычках имя рассказчика.
label start:
"Автор" "Once there was an explosion."
return
Скриншот: Ren’Py / Tom RothamelОбратите внимание, что для имени конструктор по умолчанию использует цветовую гамму, которая ранее была указана в настройках GUI. Напишем скрипт, определяющий цвет для конкретного персонажа по образцу, который уже есть в скрипте для персонажа-пустышки, и меняем значение 'Эйлин' на 'Автор'.
define au = Character('Автор', color="#71c7e9")
- Команда define указывает, что нужно определить.
- au — это переменная, которую мы задали для конкретного персонажа (здесь может быть любое сочетание букв).
- Character — класс, определяющий персонажа.
- В скобках указаны характеристики персонажа. В данном случае — имя, отображаемое в игре, и цвет (последний легко подобрать, наведя на значок в Visual Studio Code).
Теперь нам не нужно каждый раз писать в кавычках имя данного персонажа перед его репликой.
au "Once there was an explosion."
Скриншот: Ren’Py / Tom RothamelСтоит отметить, что это далеко не все манипуляции, которые можно произвести с внутриигровым текстом. Более подробно о форматировании диалогов можно прочесть в официальной документации.
Примечание
Чтобы обособить слово или словосочетание кавычками в реплике, нужно добавить к кавычкам символ \ по образцу ниже.
au "Once there was an \"explosion\"."
Фрагменты текста, написанные нами ранее, больше не нужны, удаляем их. Теперь попробуем создать небольшую визуальную новеллу от первого лица, в которой будет мини-вступление, несколько сцен и выборов, а также пара персонажей, не считая рассказчика.
Большим плюсом при начале сборки визуальной новеллы будет наличие готового сценария, хотя бы основных ассетов (изображения с фонами, персонажами, звук, музыка и так далее) и прототипа, который можно собрать заранее в Twine, чтобы понимать, как распределить текст в сцене и какими медиафайлами его сопроводить. Подробнее о Twine и работе в этой программе можно прочитать в нашем материале.
Для начала переместим ассеты, созданные для будущего проекта в соответствующие директории. В разделе «Открыть Папку» (Open Directory) открываем папки и перемещаем в них готовый контент. В папку audio — все звуковые и музыкальные ассеты, в images — фоны и аватары и так далее.
Обратите внимание, что во избежание путаницы при написании скриптов и выборе ассетов для сцен необходимо указывать в названиях файлов полное описание содержания картинки, придерживаясь определённой иерархии. Примеры наименований ассетов можно посмотреть в обучающих проектах Ren’Py, которые упоминались ранее.
Так, если открыть папку images проекта «Вопрос» (The Question), можно увидеть, что у каждого изображения есть свой тег и атрибуты. Например, в названиях изображений, предназначенных для оформления фона, сначала идёт общий тег (bg — то есть background), а затем наименование локации. Таким образом, файлам присваиваются имена bg club, bg lecturehall, bg meadow и так далее. А названия ассетов с героиней содержат имя персонажа, цвет одежды (так как героиня меняет образы по ходу истории) и её состояние: стандартное (sylvie blue normal), хихиканье (sylvie blue giggle), удивление (sylvie blue surprised) и другие эмоции.
Для персонажей используются только файлы с прозрачным фоном и в формате PNG или WEBP. Если персонажей много, их аватары можно рассортировать по отдельным подкаталогам — главное, чтобы они оставались в папке images. При этом гиперссылки не нужны: конструктор автоматически найдёт путь ко всем файлам.
Если у вас пока нет в наличии собственных ассетов, можно скачать плейсхолдеры c itch.io. По ссылке можно найти огромное количество бесплатных или условно-бесплатных аватаров персонажей, фонов и даже музыкальные семплы.
В данном примере мы будем использовать рендеры 3D-моделей и сцен. А в качестве основного музыкального сопровождения возьмём композицию Leaving The World Behind — Koala Vert по лицензии CC BY 4.0.
По задумке после закадрового текста на чёрном фоне появляется картинка с фоном и музыкой. Это можно прописать следующим образом.
label start:
"Я долго шёл по тёмному туннелю, и вот наконец-то вдалеке замаячил свет."
"Сделав ещё несколько шагов, я оказался в необычном месте."
play music "bg music.mp3"
scene bg road
with fade
Расшифруем, что у нас получилось на данном этапе.
-
Строки, обособленные кавычками, — наше вступление.
- Play — команда для проигрывания медиафайла, в данном случае музыкальной композиции (music) из папки audio. Название файла должно быть указано в кавычках и с указанием расширения.
- Scene — запуск сцены, то есть загрузка фона, в примере это файл bg road. Расширение файлов изображений указывать не нужно.
- With — сопровождение чем-либо. В данном случае fade — плавная загрузка картинки продолжительностью в 0,5 секунды. Эта опция не обязательна, но с ней смена сцены смотрится более эффектно.
Если запустить проект сейчас — он моментально завершится после старта сцены, поэтому лучше добавить ещё хотя бы одну строчку повествования. Вот что получилось в итоге.
С помощью нескольких строк кода нам уже удалось задать атмосферу игры. Далее начинается самое интересное — этап с глобальным сюжетным выбором, который создаётся командой menu. В Visual Studio Code есть возможность сразу сгенерировать все необходимые опции: если мы вручную начнём набирать слово menu, появится всплывающая вкладка. В ней можно выбрать пункт, отмеченный как Choice Menu.
После этого редактор автоматически сгенерирует следующие строки кода:
menu optional_name:
"Say Statement"
"Choice 1":
#block of code to run
"Choice 2":
#block of code to run
- optional_name — название выбора, заполняем на усмотрение.
- "Say Statement" — вписываем фразу (можно и не одну), которая станет предпосылкой к выбору. В нашем случае мы можем добавить вопрос "Куда же мне отправиться?".
- "Choice 1" и "Choice 2" — названия выборов, например "Да."/"Нет."
После каждой строки с выбором нам нужно прописать действия, которые приведут нас к какому-то результату. Допустим, если рассказчик не станет отклоняться от курса, игра закончится. А если он выберет тропинку — загрузится следующая сцена.
Для переноса игрока на определённый этап потребуется ключевое слово jump и название контрольной точки. Таким образом игрок перейдёт в следующий сегмент сцены после того, как сделает выбор.
Пока пропишем всё, что мы усвоили на текущий момент. На коллаже ниже показано, как строки кода, отмеченные выше, визуализированы в игре.
Сбоку показаны строки кода, которые отвечают за событие на экране
Скриншот: Ren’Py / Tom RothamelТеперь нам нужно прописать последствия того или иного выбора по очереди. Для этого после строк с операцией выбора укажем новые контрольные точки для программы (label), то есть новые сегменты игры.
Ранее мы уже решили, что если рассказчик не свернёт с пути, то игра закончится. А если он пойдёт по тропинке, то запустится новая сцена и повествование будет развиваться дальше. Вот как это будет выглядеть в коде.
label path:
scene bg wood
with fade
"С приходом осени это место стало только краше."
"Пожалуй, стоит осмотреться."
play sound "rustle.mp3"
"(шелест листвы и треск веток)"
"Здесь кто-то есть..."
label road:
"Я решил не отвлекаться по мелочам, хотя в глубине души мне кажется, что я упустил что-то важное..."
return
Если после этого запустить игру и выбрать второй вариант с тропинкой, запустится новая сцена, прописанная для этого пути. Но так как у этого сегмента пока нет логического финала, после отыгрыша начнётся воспроизведение ранее не выбранного сегмента, а затем игра закончится, так как в конце скрипта есть команда return. Она всегда вызывает конец игры, если находится в конце сегмента label.
Продолжим развивать идею эпизода с тропинкой и попутно интегрируем персонажа. Чтобы добавить изображение с ним, в новой строке набираем show <название файла персонажа>. По умолчанию герой появляется в центре, но при желании его можно переместить в любую часть экрана — например, at left (слева), at right (справа) и так далее. В Visual Studio Code все доступные варианты всплывают автоматически после набранного слова at.
Если в процессе разговора персонаж проявляет различные эмоции, то перед каждой репликой, сопровождаемой определённой реакцией, мы прописываем новое изображение. Ниже можно посмотреть, как это выглядит в коде и геймплее. Буква o перед началом реплики — это переменная персонажа, которую мы задали по образцу, описанному в предыдущей главе.
show oakley normal
o "Привет! Я Окли. А ты, видимо, тоже вышел из того туннеля?"
"Откуда ты знаешь?"
o "Это единственное место, откуда можно сюда попасть."
show oakley think
o "По правде говоря, мне кажется, что я сплю."
show oakley normal
o "Впрочем, неважно. Можешь помочь мне найти воспоминания?"
"...?"
o "Да ладно тебе! Пойдём, поднимемся со мной на холм."
Если игрок встречает персонажа в первый раз, для лучшей иммерсивности не указывайте его имя сразу, а добавьте новое выражение, например define unknwn = Character('Таинственный незнакомец', color="#xxxxxx". И только когда герой представится, прописывайте реплики от его настоящего имени.
Продолжаем развивать повествование и переходим в третью локацию. В этой сцене у нас появится ещё один герой. Технически Ren’Py может разместить сразу несколько NPC на экране, однако для этого необходимо соблюдать несколько правил.
- Каждый раз, когда на экране одновременно появляется сразу несколько действующих лиц, их нужно прописывать одного за другим.
- Персонажи не должны появляться в одном и том же месте — например, оба справа (at right) или оба в центре (at center). В противном случае один из них заменится другим.
- Их файлы изображений не должны начинаться одинаково — например, character a и character b. Иначе движок может посчитать их одним и тем же объектом.
Поэтому, если в новой сцене первый персонаж будет находиться справа, а затем слева появится второй, накладки не произойдёт. В коде это выглядит следующим образом:
scene bg mountain
with fade
"Очень странно, но подниматься наверх было совсем не тяжело. Что же это за воспоминания, которые ищет Окли?"
show oakley look at right
o "Смотри, как красиво!"
play sound "rustle.mp3"
"(шелест листвы и треск веток)"
show new oakley normal at left
show oakley look at right
of "О, я вижу все в сборе."
show new oakley dialogue at left
show oakley think at right
o "А ты ещё кто? И почему ты выглядишь почти как я?"
of "Не беспокойся, я часть твоих воспоминаний. Давай я помогу тебе найти остальные, не задерживай этого странника."
o "Но он вроде бы и не против."
show oakley normal at right
show new oakley look at left
o "Ведь так?"
Финальную дилемму мы пропишем по аналогии с выбором в начале игры. Но так как история закончится, нужно добавить ещё один вариант концовки — на случай, если игрок ответит утвердительно.
В случае отрицательного ответа мы вновь прописываем переход на вариант, где действующее лицо собирается идти по дороге, не сворачивая. Этот сегмент станет условной плохой концовкой.
На скриншоте ниже отмечено распределение нелинейных сегментов. В скрипте также задействовано форматирование {b}{/b} — этот скрипт выделяет слова жирным шрифтом, что также можно использовать для подсказок.
Скриншот: Visual Studio Code / MicrosoftИ напоследок посмотрим, как выглядят все сюжетные развилки в игре.
Если работа над проектом закончена, его можно скомпилировать в билд с помощью функции «Построить дистрибутивы» (Build distributions). В итоге будет сгенерирован архив с приложением, которое можно запустить уже независимо от лаунчера.
Используя самый простой синтаксис Python, мы создали короткую историю на движке Ren’Py со звуковым и музыкальным сопровождением, уникальными ассетами и даже сюжетными развилками.
Конечно, эту мини-игру можно доработать с точки зрения функций и кода. Ведь итоговый результат — это всего лишь малая часть потенциала Ren’Py. Например, можно добавить иллюзию GIF-анимаций (с помощью скрипта с покадровым выводом изображения), усовершенствовать интерфейс, в частности главное меню игры, добавить мини-портреты к диалогам, а при более развёрнутом сюжете можно прописать флаги — переменные, с помощью которых можно изменять ход событий или отношение персонажей к игроку за счёт отслеживания некоторых значений в коде. Но чтобы окончательно понять, подходит вам этот движок или нет, нужно рассмотреть его достоинства и недостатки.
-
Легко освоить. В том числе тем, кто не только незнаком с Python, но и не знает основ программирования в целом. Технология даёт шанс людям без технических навыков сделать собственную игру.
-
Большое количество справочных материалов. В Сети есть множество уроков по движку, в том числе в формате видео.
- Возможность издавать игру на десктопных и мобильных платформах.
-
Ограниченный набор жанров. В основном Ren’Py рассчитан на визуальные новеллы, point-and-click-игры и симуляторы жизни.
- Чем дальше проект выходит за рамки стандартной визуальной новеллы, тем углублённее придётся изучать Python.
-
Огромная конкуренция на рынке визуальных новелл. Также не стоит забывать, что большинство игроков склонны к обесцениванию данного жанра. Чтобы доказать обратное, придётся приложить максимум усилий.
-
Официальная документация Ren’Py. Огромная база данных обо всех функциях движка. Могут возникнуть трудности при поиске определённой функции.
-
Форум Lemma Soft. Сообщество разработчиков визуальных новелл, где можно найти много полезной информации. Так как форум существует довольно давно, некоторые решения для скриптов Ren’Py, описанные в темах, опубликованы несколько лет назад и уже устарели. Поэтому во время чтения следует обращать внимание на дату публикации. А чтобы получить более оперативную информацию, желательно присоединиться к каналу форума в Discord.
-
Feniks Development. Взгляд на Ren’Py с точки зрения программиста. Ресурс содержит большое количество информации по движку, в том числе глоссарий, полезные инструменты и уроки.
-
Плейлист с уроками по созданию визуальной новеллы для начинающих от ютуб-канала Zeil Learnings. Также на канале можно найти много другой полезной информации по Ren’Py, в том числе для продвинутых пользователей. Ресурс Feniks Development отмечает, что в некоторых уроках допущены ошибки в коде, но они не столь критичны.
Не забывайте, что Ren’Py — это прежде всего инструмент, предназначенный для упрощения визуализаций готовых историй, а не для написания их с нуля. Визуальные новеллы — сложные произведения с комплексной структурой, и порой объём текста в них достигает более чем 100 тысяч слов. В конце концов, передача захватывающего повествования с помощью писательских навыков и статичных изображений требует особого мастерства.
Курс с трудоустройством: «Профессия Геймдизайнер с нуля до PRO»
Узнать о курсе
<!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/vsye-o-renpy-konstruktore-dlya-razrabotki-vizualnykh-novell/">
<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>Что такое Ren’Py: обзор технологии для создания визуальных новелл и урок по разработке собственной игры на движке / Skillbox Media</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="keywords" content="ren’py, ren’py обзор, ren’py уроки, ренпай" />
<meta name="description" content="Всё о движке Ren’Py: обзор технологии, гайд по работе с движком и уроки по созданию визуальной новеллы." />
<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':'1771657558','USER_TZ_OFFSET':'0','USER_TZ_AUTO':'Y','bitrix_sessid':'acef71bf1d4ae04ff54ea8dfd7b16d56'});</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="Всё о Ren’Py — конструкторе для разработки визуальных новелл" />
<meta property="og:description" content="Разбираем особенности движка и создаём собственную игру." />
<meta property="og:url" content="https://skillbox.ru/media/gamedev/vsye-o-renpy-konstruktore-dlya-razrabotki-vizualnykh-novell/" />
<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/723/723eb9c8debe536d080f3ee3024d01c4/ae35180b0587484253d20672945d1e43.jpg" />
<meta name="relap-image" content="https://248006.selcdn.ru/main/iblock/723/723eb9c8debe536d080f3ee3024d01c4/ae35180b0587484253d20672945d1e43.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/723/723eb9c8debe536d080f3ee3024d01c4/ae35180b0587484253d20672945d1e43.jpg" />
<meta property="vk:image" content="https://248006.selcdn.ru/main/iblock/b80/b80f0e9693f16f71be906c8593685d4f/03a7730bc303f992667406e5c4c097ec.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="217164" 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="Что такое Ren’Py: обзор технологии для создания визуальных новелл и урок по разработке собственной игры на движке / 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="#">2 ноя 2023</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">Всё о Ren’Py — конструкторе для разработки визуальных новелл</h1>
<p class="article-preview__description">Разбираем особенности движка и создаём собственную игру.</p>
</div>
</div>
</div>
</div>
</section>
<section data-article-text
data-articleId="217164"
data-courseId="3504"
>
<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/e75/e75f74c386deaf0f5ee5dd9071637a88/42651912be483663ed9a480b616ad3d1.png" itemprop='image' class='hidden-xs' />
</picture> <picture >
<img src="https://248006.selcdn.ru/main/iblock/e75/e75f74c386deaf0f5ee5dd9071637a88/42651912be483663ed9a480b616ad3d1.png" itemprop='image' class='visible-xs' />
</picture> </div>
<noindex>
<p class="article-poster-text" data-nosnippet>
Иллюстрация: SC2VN / Over The Hills And Far Away / Highway Blossoms / Steam / 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/leon-balbery/">
<img src="https://248006.selcdn.ru/main/iblock/f23/f230dea241ed7086de355ea43ccc5877/4b00e3feece0eb21334db424451cf51e.png" alt="Леон Балбери">
</a>
</div>
<div class="article-author__info">
<div class="article-author__name">
Леон Балбери </div>
<div class="article-author__description">
Считает игры произведениями искусства и старается донести эту идею до широких масс. В свободное время стримит, рисует и часами зависает в фоторежимах. </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":66119,"alt":"","caption":""},{"id":66118,"alt":"","caption":""},{"id":66117,"alt":"","caption":""},{"id":66116,"alt":"","caption":""},{"id":65834,"alt":"","caption":""},{"id":65833,"alt":"","caption":""},{"id":65832,"alt":"","caption":""},{"id":65831,"alt":"","caption":""},{"id":65830,"alt":"","caption":""},{"id":65829,"alt":"","caption":""},{"id":65825,"alt":"","caption":""},{"id":65824,"alt":"","caption":""},{"id":65823,"alt":"","caption":""},{"id":65819,"alt":"","caption":""},{"id":65818,"alt":"","caption":""},{"id":65817,"alt":"","caption":""},{"id":65816,"alt":"","caption":""},{"id":65815,"alt":"","caption":""},{"id":65814,"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">Ren’Py — один из самых популярных инструментов для разработки интерактивных историй. И если вы загорелись идеей создать визуальную новеллу, но вас останавливают сложности в изучении языков программирования и игровых движков, тогда, возможно, стоит обратить внимание именно на эту технологию.</p><p class="stk-reset" data-ce-tag="paragraph">В этом материале редакция «Геймдев» Skillbox Media разобрала особенности и основные функции конструктора на примере собственной интерактивной истории.</p><div class="stk-grid stk-grid__layout_columns" data-stk-css="stkSRDKt" 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" data-ce-tag="paragraph" data-stk-css="stkrIKsT">У нас есть <strong class="stk-reset">телеграм-канал «Чекпоинт»</strong>, где мы собираем полезные материалы для начинающих разработчиков. Там и статьи о геймдизайне, и гайды по софту, и даже интервью с теми, кто уже выпустил собственную игру. <a href="https://t.me/skillbox_media_gamedev" target="_blank" class="stk-reset">Подписывайтесь</a>!</p></div></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-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph">Что такое Ren’Py</h2><p class="stk-reset" data-ce-tag="paragraph"><a href="https://www.renpy.org/" target="_blank" class="stk-reset">Ren’Py</a> — это бесплатный игровой движок для визуальных новелл. С его помощью можно создать полноценную интерактивную историю с 2D-графикой, звуковым и музыкальным сопровождением и даже видеороликами.</p><p class="stk-reset" data-ce-tag="paragraph">Конструктор работает на языке Python, который поддерживает интеграцию большого количества диалогов, нелинейных ответвлений, систему параметров, характерную для симуляторов жизни, и даже мини-игры. Не говоря уже о том, что в каждом созданном проекте по умолчанию есть главное меню, система сохранений и встроенный просмотр истории диалогов.</p><p class="stk-reset" data-ce-tag="paragraph">Готовую игру можно выпустить на операционных системах для ПК (Windows, Linux, macOS) и на мобильных устройствах (iOS и Android). Сама технология существует уже почти 20 лет. На текущий момент актуальная версия Ren’Py — <a href="https://www.renpy.org/latest.html" target="_blank" class="stk-reset">8.1.3</a> (Where No One Has Gone Before) от 18 сентября 2023 года.</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-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph">Обязательно ли изучать Python, чтобы делать игры на Ren’Py</h2><p class="stk-reset" data-ce-tag="paragraph">Если начинающий пользователь откроет скрипт визуальной новеллы, его наверняка смутит огромное количество строк кода и непонятных, на первый взгляд, команд. На самом деле разработка простой игры на Ren’Py не требует углублённого знания Python. К тому же большинство функций подробно описаны в <a href="https://www.renpy.org/doc/html/quickstart.html" target="_blank" class="stk-reset" data-gtm-vis-has-fired10171822_255="1">официальной документации</a>. Порой программирование фактически сводится к процессу «копировать — вставить» с изменением некоторых значений.</p><p class="stk-reset" data-ce-tag="paragraph">С другой стороны, за счёт продвинутых знаний в области Python в проект можно добавить дополнительные функции — от спецэффектов в виде тряски экрана до продвинутой системы взаимодействия с персонажами. При желании можно даже подключить полноценный инвентарь. Но и для интеграции подобных расширений не всегда потребуется помощь профессионального программиста, ведь готовые решения можно найти в сообществах Ren’Py, которые есть во многих соцсетях, в частности во «<a href="https://vk.com/renpy" target="_blank" class="stk-reset" data-gtm-vis-has-fired10171822_255="1">ВКонтакте</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-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph">Обратная сторона Ren’Py</h2><p class="stk-reset" data-ce-tag="paragraph">Кажется, что у работы с Ren’Py довольно низкий порог вхождения. Почему же тогда проекты на этом движке, известные широкой аудитории, можно пересчитать по пальцам?</p><p class="stk-reset" data-ce-tag="paragraph">Многие игроки знакомы только с популярными представителями игр на нём — <a class="stk-reset" data-gtm-vis-has-fired10171822_255="1" href="https://store.steampowered.com/app/698780/Doki_Doki_Literature_Club/" target="_blank">Doki Doki Literature Club!</a>, «<a class="stk-reset" data-gtm-vis-has-fired10171822_255="1" href="https://store.steampowered.com/app/331470/Everlasting_Summer/" target="_blank">Бесконечное лето</a>» (Everlasting Summer), «<a class="stk-reset" data-gtm-vis-has-fired10171822_255="1" href="https://store.steampowered.com/app/1421250/Tiny_Bunny/" target="_blank">Зайчик</a>» (Tiny Bunny), <a class="stk-reset" data-gtm-vis-has-fired10171822_255="1" href="https://www.katawa-shoujo.com/" target="_blank">Katawa Shoujo</a>, <a class="stk-reset" data-gtm-vis-has-fired10171822_255="1" href="https://store.steampowered.com/app/1392820/Milk_inside_a_bag_of_milk_inside_a_bag_of_milk/" target="_blank">Milk Inside a Bag of Milk Inside a Bag of Milk</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/11574001112023_a99761cae8b7c6700f6f32e64ee18adc249bbcb4.jpg" data-image-id="65814" data-image-name="01.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">Скриншот: игра «Зайчик» / Saikono</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Ren’Py действительно прост в освоении, но у этого преимущества есть и обратная сторона. Поняв, что это самый доступный способ сделать собственный проект на коммерческой основе, многие начинающие разработчики не задумываются о качестве внутриигрового контента (например, в отношении арта), равно как и о программной составляющей. В итоге на форумах нередко возникают <a href="https://f95zone.to/threads/why-are-renpy-games-often-so-broken.76372/" target="_blank" class="stk-reset">дискуссии</a> о том, что в большинстве игр на Ren’Py отмечается большое количество багов, а также о том, что в целом хороших проектов на этом движке единицы.</p><p class="stk-reset" data-ce-tag="paragraph">Масла в огонь подливает и то, что многие визуальные новеллы делают ставку на «взрослый» контент. В совокупности это формирует своеобразный ореол негатива, а в профильных медиа то и дело встречаются <a href="https://www.igromania.ru/article/31304/15_vizualnyh_novell_kotorye_dolzhen_proyti_kazhdyy.html#:~:text=%D0%9C%D0%BD%D0%BE%D0%B3%D0%B8%D0%B5%20%D0%B8%D0%B3%D1%80%D0%BE%D0%BA%D0%B8%20%D0%B4%D0%B0%D0%B6%D0%B5%20%D0%BD%D0%B5%20%D1%81%D1%87%D0%B8%D1%82%D0%B0%D1%8E%D1%82%20%D0%B2%D0%B8%D0%B7%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%BD%D0%BE%D0%B2%D0%B5%D0%BB%D0%BB%D1%8B%20%D0%B7%D0%B0%20%D0%B8%D0%B3%D1%80%D1%8B." target="_blank" class="stk-reset" data-gtm-vis-has-fired10171822_255="1">высказывания</a> о том, что многие игроки в принципе не считают визуальные новеллы играми. Но вдруг именно ваше будущее творение на этом движке разрушит стереотипы?</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-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph">Установка и интерфейс Ren’Py</h2><p class="stk-reset" data-ce-tag="paragraph">Авторы Ren’Py рекомендуют установить самую последнюю, восьмую версию движка, так она поддерживает Python 3. На <a class="stk-reset" href="https://www.renpy.org/#:~:text=it%27s%20the%20first%20version%20of%20Ren%27Py%20that%20supports%20Python%203" target="_blank" data-gtm-vis-has-fired10171822_255="1">странице</a> клиента выбираем любой удобный формат архива и распаковываем клиент движка на жёсткий диск. Далее запускаем файл renpy.exe, указываем язык приложения и знакомимся с интерфейсом лаунчера.</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/11590601112023_b629b7dc02fe6f5723da7d5f3dd63eb28fb5f3e4.jpg" data-image-id="65815" 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">Интерфейс Ren’Py<br><em class="stk-reset">Скриншот: Ren’Py / Tom Rothamel</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Слева находится меню <strong class="stk-reset">Проекты</strong> (Projects). По умолчанию в Ren’Py уже есть два готовых шаблона-истории: <strong class="stk-reset">«Обучение»</strong> (Tutorial) и <strong class="stk-reset">«Вопрос»</strong> (The Question). При желании можно выбрать любой из них и нажать <strong class="stk-reset">Запустить проект</strong> (Launch Project). Например, в «Обучении» героиня рассказывает об основных функциях движка. А проект «Вопрос» демонстрирует самую простую модель нелинейной романтической истории.</p><div class="stk-gallery 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/10175907112023_181cbb31e4238c1c11b385d01e6dcc075479973d.jpg" data-image-id="66116" data-image-name="03.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">Скриншот: игра «Обучение» / Tom Rothamel</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/10181107112023_aadc6dada1c2b47a57ee8a782537d4bcc1e79599.jpg" data-image-id="66117" data-image-name="04.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">Скриншот: игра «Вопрос» / Tom Rothamel</em></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">Если выбрать проект в лаунчере Ren’Py, справа отобразится несколько сегментов меню. Разберём их подробнее.</p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph"><strong class="stk-reset">«Открыть Папку»</strong> (Open Directory) — открывает проводник с содержимым той или иной папки:</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">game</strong> — содержит весь игровой контент;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">base</strong> — основная папка с клиентом игры;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">images</strong> — контент с визуальной составляющей игры (фоны, аватары персонажей, видеоролики и так далее);</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1">gui </strong>(аббревиатура от graphical user interface) — ещё одна папка с изображениями, но уже предназначенными для интерфейса игры;</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">audio</strong> — звуки и музыка.</li></ul><p class="stk-reset" data-ce-tag="paragraph">Забегая вперёд, стоит отметить, что Ren’Py генерирует все эти папки по умолчанию при создании проекта. Поэтому, если посмотреть в проводнике содержимое любой визуальной новеллы на этом движке, в нём отобразятся те же самые директории.</p><p class="stk-reset" data-ce-tag="paragraph">В разделе <strong class="stk-reset">«Редактировать Файл»</strong> (Edit File) можно просмотреть все файлы с расширением <strong class="stk-reset">.rpy</strong>, которые содержат код различных сегментов игры. Если вы запустили Ren’Py в первый раз, то при переходе в этот раздел конструктор предложит на выбор несколько программ для редактирования скриптов.</p><p class="stk-reset" data-ce-tag="paragraph">Сами разработчики <a href="https://twitter.com/renpytom/status/1541085476936978432" target="_blank" class="stk-reset">отмечают</a>, что предпочтительный вариант — использовать Visual Studio Code. Движок автоматически установит выбранный текстовый редактор. После установки нужно нажать на название редактора скриптов и таким образом задать его в настройках.</p><div class="stk-gallery 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/10190407112023_a86e563dc7e0f6133f4cd6d4fccf4445661a370d.jpg" data-image-id="66118" data-image-name="05(1).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">Скриншоты: Ren’Py / Tom Rothamel</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/10191507112023_c3be5de2dec83ac68077ec12cfd156d508a2f961.jpg" data-image-id="66119" data-image-name="05(2).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">Скриншоты: Ren’Py / Tom Rothamel</em></figcaption></figure></div><p class="stk-reset" data-ce-tag="paragraph">После того как текстовый редактор выбран, при открытии файла с расширением <strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1">.rpy</strong> автоматически запустится приложение для редактирования скриптов. В этом примере — Visual Studio Code.</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/12080401112023_a21449561049939422c6ccf788bc0c1c90d933e0.jpg" data-image-id="65823" data-image-name="06.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">Так выглядит часть кода тестовой новеллы «Вопрос»<br><em class="stk-reset">Скриншот: Visual Studio Code / Microsoft</em></figcaption></figure><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Вернёмся к интерфейсу. Раздел <strong class="stk-reset">«Действия с Проектом»</strong> (Actions) содержит различные опции для работы с кодом проекта.</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">Навигация по сценарию</strong> (Navigate Script). Редактирование и упорядочивание уже существующих сегментов.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">«Проверить скрипт</strong> (Check script). Проверка кода на наличие возможных ошибок с помощью инструмента <a class="stk-reset" href="https://www.renpy.org/doc/html/developer_tools.html#:~:text=True%20to%20operate.-,Lint,-link" target="_blank">Lint</a>. Стоит отметить, что Lint автоматически проверяет проект на наличие критических ошибок при запуске.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">«Изменить/Обновить GUI»</strong> (Change/Update GUI). Перезапись настроек графического интерфейса.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">«Очистить постоянные»</strong> (Delete Persistent). Удаление повторяющихся данных. Например, не показывать каждый раз пролог истории при запуске.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">«Перекомпилировать проект»</strong> (Force Recompile). Принудительная перекомпиляция кода.</li></ul><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Справа находится список опций, которые потребуются на финальной стадии проекта.</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">«Построить дистрибутивы»</strong> (Build distributions). Открывается окно, где можно выбрать десктопную платформу и сгенерировать ZIP-архив билда игры, который можно запустить самостоятельно.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">Android, iOS, Web (Beta).</strong> Создание порта для указанных платформ. Потребует установки дополнительных программ для компиляции.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">«Создать переводы»</strong> (Generate Translations). Функция для создания локализации, если разработчик желает выпустить игру на нескольких языках.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">«Извлечь диалог»</strong> (Extract Dialogue). Экспорт диалогов из игры в формате TAB или TXT.</li></ul><p class="stk-reset" data-ce-tag="paragraph">И наконец, в <strong class="stk-reset">настройках лаунчера</strong> (Launcher Preferences) в правом нижнем углу находятся общие функции редактора: выбор папки для проекта, выбор текстового редактора скриптов, различные функции навигации и вывода информации в лаунчере, настройка темы, установка библиотек (в том числе для поддержки Steam) и базовые операции с проектом.</p><p class="stk-reset" data-ce-tag="paragraph">Разобравшись с основами интерфейса клиента Ren’Py, перейдём к изучению основ.</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-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph">Первые шаги</h2><p class="stk-reset" data-ce-tag="paragraph">Для начала создадим проект в Ren’Py. Нажимаем <strong class="stk-reset">«</strong><strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1">+ Добавить новый проект»</strong> (+Create New Project). Конструктор предупредит, что по умолчанию в проекте будет указан язык, который выбран в настройках лаунчера. В нашем проекте выбран русский язык, но при этом реплики можно писать и на латинице.</p><p class="stk-reset" data-ce-tag="paragraph">Нажимаем <strong class="stk-reset">«Продолжить»</strong> (Continue). Далее вводим название будущего проекта, а затем указываем его разрешение. В нашем примере выбран универсальный вариант для десктопного приложения — 1920×1080.</p><p class="stk-reset" data-ce-tag="paragraph">Затем Ren’Py предложит выбрать цветовую схему будущего графического интерфейса. Её можно примерить в реальном времени. Тёмный или серый цвет используется как основа, а дополнительный цвет подчёркивает акценты. Цветовую гамму можно изменить позже в настройках, выбрав ранее упомянутый пункт <strong class="stk-reset">«Изменить/Обновить GUI»</strong> (Change/Update GUI). В том же окне выбора цветовой схемы можно выбрать настройки режима экрана и указать скорость вывода текста.</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/12115501112023_67e34c602f3338613896d5e163d290f14fdaa52e.jpg" data-image-id="65824" data-image-name="07.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">Скриншоты: Ren’Py / Tom Rothamel</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Если до создания проекта в настройках лаунчера пользователь не указал расположение будущего билда, при следующем шаге движок предложит выбрать папку, в которой будут находиться файлы проекта.</p><p class="stk-reset" data-ce-tag="paragraph">После завершения этапа предварительных настроек в лаунчере появится новый проект. Его даже можно открыть, нажав <strong class="stk-reset">«Запустить проект»</strong> (Launch Project). Загрузится сгенерированное главное меню, из которого можно начать новую игру. После загрузки персонаж-пустышка скажет нам пару фраз, и игра закончится.</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/12122301112023_4bee5bc7607f7bd29ea700220550e2abce458536.jpg" data-image-id="65825" data-image-name="08.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">Скриншот: Ren’Py / Tom Rothamel</em></figcaption></figure><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">Вывод текста</h2><p class="stk-reset" data-ce-tag="paragraph">Выделив название созданного проекта в лаунчере Ren’Py, открываем script.rpy в категории <strong class="stk-reset">«Редактировать файл»</strong> (Edit File). В этом файле содержится весь основной код проекта. Обратите внимание, что строки, которые начинаются с символа <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/12244301112023_a3b94f39d302de69071e0ddb4b99c14337af80c2.jpg" data-image-id="65829" data-image-name="09.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">Так по умолчанию выглядит скрипт нашей будущей игры в Visual Studio Code<br><em class="stk-reset">Скриншот: Visual Studio Code / Microsoft</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Удалим все данные, которые идут после начала игрового сегмента (<strong class="stk-reset">label start</strong>), и рассмотрим, как сделать самый простой элемент — повествование на тёмном экране. Этот приём можно использовать в начале игры или в других сегментах истории — например, когда главный герой заходит в тёмное помещение и ещё не включил свет.</p><p class="stk-reset" data-ce-tag="paragraph">Чтобы вывести текст на тёмном экране, просто прописываем строки повествования, обособляя их кавычками. В Visual Studio Code кавычки генерируются автоматически после нажатия кнопки <strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1"><u class="stk-reset">“</u></strong>. При написании текста помните, что всё содержимое одной строки отобразится на экране за один раз. Поэтому, если фрагмент очень большой, разбиваем его на логические сегменты (то есть так, словно персонаж проговаривает это в реальной жизни) и прописываем их с новой строки; при этом не забываем о синтаксисе — ставим Tab в начале каждой новой фразы. Сохраняем и смотрим, что получилось.</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/12250501112023_cece785eb92cd643f5e788e5f37e3d933a76f56c.jpg" data-image-id="65830" 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">Так выглядит текст в коде<br><em class="stk-reset">Скриншот: Visual Studio Code / Microsoft</em></figcaption></figure><figure class="stk-code_keep-ratio stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:56.25%"><iframe width="560" height="315" src="https://www.youtube.com/embed/mZcGDJUTV0o?loop=1&autoplay=1&controls=0&mute=1&playlist=mZcGDJUTV0o" frameborder="0" allowfullscreen=""></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description"><em class="stk-reset">А так он воспроизводится в игре</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Если нам нужно указать, от чьего лица ведётся повествование, перед фразой следует указать в кавычках имя рассказчика.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);">label <span class="hljs-keyword" style="color: rgb(150, 203, 254);">star</span><span class="hljs-variable" style="color: rgb(198, 197, 254);">t:</span>
<span class="hljs-string" style="color: rgb(168, 255, 96);">"Автор"</span> <span class="hljs-string" style="color: rgb(168, 255, 96);">"Once there was an explosion."</span>
<span class="hljs-keyword" style="color: rgb(150, 203, 254);">return</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></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/12263401112023_2229e417950c39bd1ac90259b6c781a232a40430.jpg" data-image-id="65831" 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">Скриншот: Ren’Py / Tom Rothamel</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Обратите внимание, что для имени конструктор по умолчанию использует цветовую гамму, которая ранее была указана в настройках GUI. Напишем скрипт, определяющий цвет для конкретного персонажа по образцу, который уже есть в скрипте для персонажа-пустышки, и меняем значение <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">'Эйлин'</u> на <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">'Автор'</u>.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-keyword" style="color: rgb(150, 203, 254);">define</span> <span class="hljs-section" style="color: rgb(255, 255, 182);">au</span> = Character(<span class="hljs-string" style="color: rgb(168, 255, 96);">'Автор'</span>, color=<span class="hljs-string" style="color: rgb(168, 255, 96);">"#71c7e9"</span>)</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item">Команда <u class="stk-reset">define</u> указывает, <em class="stk-reset">что</em> нужно определить.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset">au</u> — это переменная, которую мы задали для конкретного персонажа (здесь может быть любое сочетание букв).</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset">Character</u> — класс, определяющий персонажа.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">В скобках указаны характеристики персонажа. В данном случае — имя, отображаемое в игре, и цвет (последний легко подобрать, наведя на значок в Visual Studio Code).</li></ul><p class="stk-reset" data-ce-tag="paragraph">Теперь нам не нужно каждый раз писать в кавычках имя данного персонажа перед его репликой.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"> au <span class="hljs-comment" style="color: rgb(124, 124, 124);">"Once there was an explosion."</span>
</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></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/12280901112023_71b97f3681cfd481f98f8279e17d064ae63ea66a.jpg" data-image-id="65832" 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">Скриншот: Ren’Py / Tom Rothamel</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Стоит отметить, что это далеко не все манипуляции, которые можно произвести с внутриигровым текстом. Более подробно о форматировании диалогов можно прочесть в <a href="https://www.renpy.org/doc/html/dialogue.html" target="_blank" class="stk-reset">официальной документации</a>.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkZb12g"><div data-col-width="12" 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_small_text" data-ce-tag="paragraph"><strong class="stk-reset">Примечание</strong></p><p class="stk-reset" data-ce-tag="paragraph">Чтобы обособить слово или словосочетание кавычками в реплике, нужно добавить к кавычкам символ <strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1"><u class="stk-reset">\</u></strong> по образцу ниже.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"> au <span class="hljs-comment" style="color: rgb(124, 124, 124);">"Once there was an \"</span>explosion\<span class="hljs-comment" style="color: rgb(124, 124, 124);">"."</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div></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">Разработка визуальной новеллы</h2><p class="stk-reset" data-ce-tag="paragraph">Фрагменты текста, написанные нами ранее, больше не нужны, удаляем их. Теперь попробуем создать небольшую визуальную новеллу от первого лица, в которой будет мини-вступление, несколько сцен и выборов, а также пара персонажей, не считая рассказчика.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkpj1Iz"><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">Большим плюсом при начале сборки визуальной новеллы будет наличие готового сценария, хотя бы основных ассетов (изображения с фонами, персонажами, звук, музыка и так далее) и прототипа, который можно собрать заранее в Twine, чтобы понимать, как распределить текст в сцене и какими медиафайлами его сопроводить. Подробнее о Twine и работе в этой программе можно прочитать в нашем <a href="https://skillbox.ru/media/gamedev/vsye-o-twine-instrumente-dlya-sozdaniya-nelineynogo-interaktivnogo-povestvovaniya/" target="_blank" class="stk-reset" data-gtm-vis-has-fired10171822_255="1">материале</a>.</p></div></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">Подготовка ассетов</h2><p class="stk-reset" data-ce-tag="paragraph">Для начала переместим ассеты, созданные для будущего проекта в соответствующие директории. В разделе <strong class="stk-reset">«<strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1">Открыть Папку</strong>»</strong> (Open Directory) открываем папки и перемещаем в них готовый контент. В папку <strong class="stk-reset">audio</strong> — все звуковые и музыкальные ассеты, в <strong class="stk-reset">images</strong> — фоны и аватары и так далее.</p><p class="stk-reset" data-ce-tag="paragraph">Обратите внимание, что во избежание путаницы при написании скриптов и выборе ассетов для сцен необходимо указывать в названиях файлов полное описание содержания картинки, придерживаясь определённой иерархии. Примеры наименований ассетов можно посмотреть в обучающих проектах Ren’Py, которые упоминались ранее.</p><p class="stk-reset" data-ce-tag="paragraph">Так, если открыть папку <strong class="stk-reset">images</strong> проекта <strong class="stk-reset">«Вопрос»</strong> (The Question), можно увидеть, что у каждого изображения есть свой тег и атрибуты. Например, в названиях изображений, предназначенных для оформления фона, сначала идёт общий тег (bg — то есть background), а затем наименование локации. Таким образом, файлам присваиваются имена bg club, bg lecturehall, bg meadow и так далее. А названия ассетов с героиней содержат имя персонажа, цвет одежды (так как героиня меняет образы по ходу истории) и её состояние: стандартное (sylvie blue normal), хихиканье (sylvie blue giggle), удивление (sylvie blue surprised) и другие эмоции.</p><p class="stk-reset" data-ce-tag="paragraph">Для персонажей используются только файлы с прозрачным фоном и в формате <strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1">PNG</strong> или <strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1">WEBP</strong>. Если персонажей много, их аватары можно рассортировать по отдельным подкаталогам — главное, чтобы они оставались в папке images. При этом гиперссылки не нужны: конструктор автоматически найдёт путь ко всем файлам.</p><div class="stk-grid" data-ce-tag="grid" data-stk-css="stkqtYsc"><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">Если у вас пока нет в наличии собственных ассетов, можно скачать плейсхолдеры c <a href="https://itch.io/game-assets/free/genre-visual-novel" target="_blank" class="stk-reset">itch.io</a>. По ссылке можно найти огромное количество бесплатных или условно-бесплатных аватаров персонажей, фонов и даже музыкальные семплы.</p></div></div><p class="stk-reset" data-ce-tag="paragraph">В данном примере мы будем использовать рендеры 3D-моделей и сцен. А в качестве основного музыкального сопровождения возьмём композицию <a href="https://filmmusic.io/song/11805-leaving-the-world-behind" target="_blank" class="stk-reset">Leaving The World Behind — Koala Vert</a> по лицензии <a href="https://filmmusic.io/standard-license" target="_blank" class="stk-reset">CC BY 4.0</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-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph">Проработка вступления</h2><p class="stk-reset" data-ce-tag="paragraph">По задумке после закадрового текста на чёрном фоне появляется картинка с фоном и музыкой. Это можно прописать следующим образом.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-built_in">label</span> start:
<span class="hljs-string" style="color: rgb(168, 255, 96);">"Я долго шёл по тёмному туннелю, и вот наконец-то вдалеке замаячил свет."</span>
<span class="hljs-string" style="color: rgb(168, 255, 96);">"Сделав ещё несколько шагов, я оказался в необычном месте."</span>
play music <span class="hljs-string" style="color: rgb(168, 255, 96);">"bg music.mp3"</span>
<span class="hljs-built_in">scene</span> bg road
with fade
</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Расшифруем, что у нас получилось на данном этапе.</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">Строки, обособленные кавычками</strong>, — наше вступление.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset">Play</u> — команда для проигрывания медиафайла, в данном случае музыкальной композиции (music) из папки audio. Название файла должно быть указано в кавычках и с указанием расширения.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset">Scene</u> — запуск сцены, то есть загрузка фона, в примере это файл bg road. Расширение файлов изображений указывать не нужно.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">With</u> — сопровождение чем-либо. В данном случае <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">fade</u> — плавная загрузка картинки продолжительностью в 0,5 секунды. Эта опция не обязательна, но с ней смена сцены смотрится более эффектно.</li></ul><p class="stk-reset" data-ce-tag="paragraph">Если запустить проект сейчас — он моментально завершится после старта сцены, поэтому лучше добавить ещё хотя бы одну строчку повествования. Вот что получилось в итоге.</p><figure class="stk-code_keep-ratio stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:56.25%"><iframe width="560" height="315" src="https://www.youtube.com/embed/qeogmi-QALo?loop=1&autoplay=1&controls=0&mute=1&playlist=qeogmi-QALo" frameborder="0" allowfullscreen=""></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></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-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph">Создание первого выбора</h2><p class="stk-reset" data-ce-tag="paragraph">С помощью нескольких строк кода нам уже удалось задать атмосферу игры. Далее начинается самое интересное — этап с глобальным сюжетным выбором, который создаётся командой menu. В Visual Studio Code есть возможность сразу сгенерировать все необходимые опции: если мы вручную начнём набирать слово <u class="stk-reset">menu</u>, появится всплывающая вкладка. В ней можно выбрать пункт, отмеченный как Choice Menu.</p><p class="stk-reset" data-ce-tag="paragraph">После этого редактор автоматически сгенерирует следующие строки кода:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-selector-tag" style="color: rgb(150, 203, 254);">menu</span> optional_name:
<span class="hljs-string" style="color: rgb(168, 255, 96);">"Say Statement"</span>
<span class="hljs-string" style="color: rgb(168, 255, 96);">"Choice 1"</span>:
<span class="hljs-selector-id" style="color: rgb(255, 255, 182);">#block</span> of <span class="hljs-selector-tag" style="color: rgb(150, 203, 254);">code</span> to run
<span class="hljs-string" style="color: rgb(168, 255, 96);">"Choice 2"</span>:
<span class="hljs-selector-id" style="color: rgb(255, 255, 182);">#block</span> of <span class="hljs-selector-tag" style="color: rgb(150, 203, 254);">code</span> to run
</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset">optional_name</u> — название выбора, заполняем на усмотрение.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">"Say Statement"</u> — вписываем фразу (можно и не одну), которая станет предпосылкой к выбору. В нашем случае мы можем добавить вопрос <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">"Куда же мне отправиться?"</u>.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">"Choice 1"</u> и <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">"Choice 2"</u> — названия выборов, например <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">"Да."/"Нет."</u></li></ul><p class="stk-reset" data-ce-tag="paragraph">После каждой строки с выбором нам нужно прописать действия, которые приведут нас к какому-то результату. Допустим, если рассказчик не станет отклоняться от курса, игра закончится. А если он выберет тропинку — загрузится следующая сцена.</p><p class="stk-reset" data-ce-tag="paragraph">Для переноса игрока на определённый этап потребуется ключевое слово <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">jump</u> и название контрольной точки. Таким образом игрок перейдёт в следующий сегмент сцены после того, как сделает выбор.</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/12431801112023_b96f49b701f581862428f9c58e1a46c731d0aa89.jpg" data-image-id="65833" 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">Сбоку показаны строки кода, которые отвечают за событие на экране<br><em class="stk-reset">Скриншот: Ren’Py / Tom Rothamel</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Теперь нам нужно прописать последствия того или иного выбора по очереди. Для этого после строк с операцией выбора укажем новые контрольные точки для программы (<u class="stk-reset">label</u>), то есть новые сегменты игры.</p><p class="stk-reset" data-ce-tag="paragraph">Ранее мы уже решили, что если рассказчик не свернёт с пути, то игра закончится. А если он пойдёт по тропинке, то запустится новая сцена и повествование будет развиваться дальше. Вот как это будет выглядеть в коде.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-built_in">label</span> path:
<span class="hljs-built_in">scene</span> bg wood
with fade
<span class="hljs-string" style="color: rgb(168, 255, 96);">"С приходом осени это место стало только краше."</span>
<span class="hljs-string" style="color: rgb(168, 255, 96);">"Пожалуй, стоит осмотреться."</span>
play sound <span class="hljs-string" style="color: rgb(168, 255, 96);">"rustle.mp3"</span>
<span class="hljs-string" style="color: rgb(168, 255, 96);">"(шелест листвы и треск веток)"</span>
<span class="hljs-string" style="color: rgb(168, 255, 96);">"Здесь кто-то есть..."</span>
<span class="hljs-built_in">label</span> road:
<span class="hljs-string" style="color: rgb(168, 255, 96);">"Я решил не отвлекаться по мелочам, хотя в глубине души мне кажется, что я упустил что-то важное..."</span>
<span class="hljs-built_in">return</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Если после этого запустить игру и выбрать второй вариант с тропинкой, запустится новая сцена, прописанная для этого пути. Но так как у этого сегмента пока нет логического финала, после отыгрыша начнётся воспроизведение ранее не выбранного сегмента, а затем игра закончится, так как в конце скрипта есть команда <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">return</u>. Она всегда вызывает конец игры, если находится в конце сегмента <u class="stk-reset">label</u>.</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-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph">Добавляем изображения NPC</h2><p class="stk-reset" data-ce-tag="paragraph">Продолжим развивать идею эпизода с тропинкой и попутно интегрируем персонажа. Чтобы добавить изображение с ним, в новой строке набираем <u class="stk-reset">show <название файла персонажа></u>. По умолчанию герой появляется в центре, но при желании его можно переместить в любую часть экрана — например, <u class="stk-reset">at left</u> (слева), <u class="stk-reset">at right</u> (справа) и так далее. В Visual Studio Code все доступные варианты всплывают автоматически после набранного слова <strong class="stk-reset">at</strong>.</p><p class="stk-reset" data-ce-tag="paragraph">Если в процессе разговора персонаж проявляет различные эмоции, то перед каждой репликой, сопровождаемой определённой реакцией, мы прописываем новое изображение. Ниже можно посмотреть, как это выглядит в коде и геймплее. Буква <strong class="stk-reset">o</strong> перед началом реплики — это переменная персонажа, которую мы задали по образцу, описанному в предыдущей главе.</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);"><span class="hljs-literal" style="color: rgb(198, 197, 254);">show</span> oakley <span class="hljs-literal" style="color: rgb(198, 197, 254);">normal</span>
o <span class="hljs-string" style="color: rgb(168, 255, 96);">"Привет! Я Окли. А ты, видимо, тоже вышел из того туннеля?"</span>
<span class="hljs-string" style="color: rgb(168, 255, 96);">"Откуда ты знаешь?"</span>
o <span class="hljs-string" style="color: rgb(168, 255, 96);">"Это единственное место, откуда можно сюда попасть."</span>
<span class="hljs-literal" style="color: rgb(198, 197, 254);">show</span> oakley think
o <span class="hljs-string" style="color: rgb(168, 255, 96);">"По правде говоря, мне кажется, что я сплю."</span>
<span class="hljs-literal" style="color: rgb(198, 197, 254);">show</span> oakley <span class="hljs-literal" style="color: rgb(198, 197, 254);">normal</span>
o <span class="hljs-string" style="color: rgb(168, 255, 96);">"Впрочем, неважно. Можешь помочь мне найти воспоминания?"</span>
<span class="hljs-string" style="color: rgb(168, 255, 96);">"...?"</span>
o <span class="hljs-string" style="color: rgb(168, 255, 96);">"Да ладно тебе! Пойдём, поднимемся со мной на холм."</span></pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><figure class="stk-code_keep-ratio stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:56.25%"><iframe width="560" height="315" src="https://www.youtube.com/embed/i_pSB2sosP8?loop=1&autoplay=1&controls=0&mute=1&playlist=i_pSB2sosP8" frameborder="0" allowfullscreen=""></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure></div></div><p class="stk-reset" data-ce-tag="paragraph">Если игрок встречает персонажа в первый раз, для лучшей иммерсивности не указывайте его имя сразу, а добавьте новое выражение, например <u class="stk-reset">define unknwn = Character('Таинственный незнакомец', color="#xxxxxx"</u>. И только когда герой представится, прописывайте реплики от его настоящего имени.</p><p class="stk-theme_26309__mb_05 stk-reset" data-ce-tag="paragraph">Продолжаем развивать повествование и переходим в третью локацию. В этой сцене у нас появится ещё один герой. Технически Ren’Py может разместить сразу несколько NPC на экране, однако для этого необходимо соблюдать несколько правил.</p><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item">Каждый раз, когда на экране одновременно появляется сразу несколько действующих лиц, их нужно прописывать одного за другим.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">Персонажи не должны появляться в одном и том же месте — например, оба справа (at right) или оба в центре (at center). В противном случае один из них заменится другим.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item">Их файлы изображений не должны начинаться одинаково — например, character a и character b. Иначе движок может посчитать их одним и тем же объектом.</li></ul><p class="stk-reset" data-ce-tag="paragraph">Поэтому, если в новой сцене первый персонаж будет находиться справа, а затем слева появится второй, накладки не произойдёт. В коде это выглядит следующим образом:</p><figure class="stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code"><pre class="hljs" style="display: block; overflow-x: auto; padding: 0.5em; background: rgb(0, 0, 0); color: rgb(248, 248, 248);">scene bg mountain
with fade
"Очень странно, но подниматься наверх было совсем не тяжело. Что же это за воспоминания, которые ищет Окли?"
<span class="hljs-keyword" style="color: rgb(150, 203, 254);">show</span> oakley look <span class="hljs-keyword" style="color: rgb(150, 203, 254);">at</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">right</span>
o <span class="hljs-string" style="color: rgb(168, 255, 96);">"Смотри, как красиво!"</span>
play sound <span class="hljs-string" style="color: rgb(168, 255, 96);">"rustle.mp3"</span>
<span class="hljs-string" style="color: rgb(168, 255, 96);">"(шелест листвы и треск веток)"</span>
<span class="hljs-keyword" style="color: rgb(150, 203, 254);">show</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">new</span> oakley <span class="hljs-keyword" style="color: rgb(150, 203, 254);">normal</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">at</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">left</span>
<span class="hljs-keyword" style="color: rgb(150, 203, 254);">show</span> oakley look <span class="hljs-keyword" style="color: rgb(150, 203, 254);">at</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">right</span>
<span class="hljs-keyword" style="color: rgb(150, 203, 254);">of</span> <span class="hljs-string" style="color: rgb(168, 255, 96);">"О, я вижу все в сборе."</span>
<span class="hljs-keyword" style="color: rgb(150, 203, 254);">show</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">new</span> oakley dialogue <span class="hljs-keyword" style="color: rgb(150, 203, 254);">at</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">left</span>
<span class="hljs-keyword" style="color: rgb(150, 203, 254);">show</span> oakley think <span class="hljs-keyword" style="color: rgb(150, 203, 254);">at</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">right</span>
o <span class="hljs-string" style="color: rgb(168, 255, 96);">"А ты ещё кто? И почему ты выглядишь почти как я?"</span>
<span class="hljs-keyword" style="color: rgb(150, 203, 254);">of</span> <span class="hljs-string" style="color: rgb(168, 255, 96);">"Не беспокойся, я часть твоих воспоминаний. Давай я помогу тебе найти остальные, не задерживай этого странника."</span>
o <span class="hljs-string" style="color: rgb(168, 255, 96);">"Но он вроде бы и не против."</span>
<span class="hljs-keyword" style="color: rgb(150, 203, 254);">show</span> oakley <span class="hljs-keyword" style="color: rgb(150, 203, 254);">normal</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">at</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">right</span>
<span class="hljs-keyword" style="color: rgb(150, 203, 254);">show</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">new</span> oakley look <span class="hljs-keyword" style="color: rgb(150, 203, 254);">at</span> <span class="hljs-keyword" style="color: rgb(150, 203, 254);">left</span>
o <span class="hljs-string" style="color: rgb(168, 255, 96);">"Ведь так?"</span>
</pre></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><figure class="stk-code_keep-ratio stk-theme_26309__mb_15 stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:56.25%"><iframe width="560" height="315" src="https://www.youtube.com/embed/577knI95s8I?loop=1&autoplay=1&controls=0&mute=1&playlist=577knI95s8I" frameborder="0" allowfullscreen=""></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><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-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph">Дорабатываем концовку</h2><p class="stk-reset" data-ce-tag="paragraph">Финальную дилемму мы пропишем по аналогии с выбором в начале игры. Но так как история закончится, нужно добавить ещё один вариант концовки — на случай, если игрок ответит утвердительно.</p><p class="stk-reset" data-ce-tag="paragraph">В случае отрицательного ответа мы вновь прописываем переход на вариант, где действующее лицо собирается идти по дороге, не сворачивая. Этот сегмент станет условной плохой концовкой.</p><p class="stk-reset" data-ce-tag="paragraph">На скриншоте ниже отмечено распределение нелинейных сегментов. В скрипте также задействовано форматирование <u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">{b}{/b}</u> — этот скрипт выделяет слова жирным шрифтом, что также можно использовать для подсказок.</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/12502501112023_d75dd4921f9f5ca9dc828e1efafbd5a21dfa9c5d.jpg" data-image-id="65834" data-image-name="14.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">Скриншот: Visual Studio Code / Microsoft</em></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">И напоследок посмотрим, как выглядят все сюжетные развилки в игре.</p><figure class="stk-code_keep-ratio stk-reset stk-embed_rendered" data-ce-tag="embed"><code class="stk-code" style="--stk-embed-height-ratio:56.25%"><iframe width="560" height="315" src="https://www.youtube.com/embed/kmfDzDbtHBE?loop=1&autoplay=1&controls=0&mute=1&playlist=kmfDzDbtHBE" frameborder="0" allowfullscreen=""></iframe></code><figcaption class="stk-reset stk-description" data-ce-tag="description"></figcaption></figure><p class="stk-reset" data-ce-tag="paragraph">Если работа над проектом закончена, его можно скомпилировать в билд с помощью функции <strong class="stk-reset">«</strong><strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1">Построить дистрибутивы»</strong> (<u class="stk-reset" data-gtm-vis-has-fired10171822_255="1">Build distributions</u>). В итоге будет сгенерирован архив с приложением, которое можно запустить уже независимо от лаунчера.</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-theme_26309__style_large_header stk-reset" data-ce-tag="paragraph">Итог</h2><p class="stk-reset" data-ce-tag="paragraph">Используя самый простой синтаксис Python, мы создали короткую историю на движке Ren’Py со звуковым и музыкальным сопровождением, уникальными ассетами и даже сюжетными развилками.</p><p class="stk-reset" data-ce-tag="paragraph">Конечно, эту мини-игру можно доработать с точки зрения функций и кода. Ведь итоговый результат — это всего лишь малая часть потенциала Ren’Py. Например, можно добавить иллюзию GIF-анимаций (с помощью скрипта с покадровым выводом изображения), усовершенствовать интерфейс, в частности главное меню игры, добавить мини-портреты к диалогам, а при более развёрнутом сюжете можно прописать флаги — переменные, с помощью которых можно изменять ход событий или отношение персонажей к игроку за счёт отслеживания некоторых значений в коде. Но чтобы окончательно понять, подходит вам этот движок или нет, нужно рассмотреть его достоинства и недостатки.</p><h4 class="stk-theme_26309__mb_05 stk-reset stk-theme_26309__style_small_header" data-ce-tag="paragraph">Плюсы Ren’Py</h4><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1">Легко освоить. </strong>В том числе тем, кто не только незнаком с Python, но и не знает основ программирования в целом. Технология даёт шанс людям без технических навыков сделать собственную игру.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">Большое количество справочных материалов.</strong> В Сети есть множество уроков по движку, в том числе в формате видео.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">Возможность издавать игру на десктопных и мобильных платформах.</strong></li></ul><h4 class="stk-theme_26309__mb_05 stk-reset stk-theme_26309__style_small_header" data-ce-tag="paragraph">Минусы Ren’Py</h4><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">Ограниченный набор жанров.</strong> В основном Ren’Py рассчитан на визуальные новеллы, point-and-click-игры и симуляторы жизни.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset">Чем дальше проект выходит за рамки стандартной визуальной новеллы, тем углублённее придётся изучать Python.</strong></li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1">Огромная конкуренция на рынке визуальных новелл.</strong> Также не стоит забывать, что большинство игроков склонны к обесцениванию данного жанра. Чтобы доказать обратное, придётся приложить максимум усилий.</li></ul></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"><h4 class="stk-reset stk-theme_26309__style_small_header stk-theme_26309__mb_05" data-ce-tag="paragraph">Полезные ссылки</h4><ul class="stk-theme_26309__pad_hor_1 stk-reset" data-ce-tag="list"><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://www.renpy.org/doc/html/" target="_blank" class="stk-reset" data-gtm-vis-has-fired10171822_255="1"><strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1">Официальная документация Ren’Py</strong></a><strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1">.</strong> Огромная база данных обо всех функциях движка. Могут возникнуть трудности при поиске определённой функции.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://lemmasoft.renai.us/forums/" target="_blank" class="stk-reset" data-gtm-vis-has-fired10171822_255="1"><strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1">Форум Lemma Soft</strong></a><strong class="stk-reset" data-gtm-vis-has-fired10171822_255="1">.</strong> Сообщество разработчиков визуальных новелл, где можно найти много полезной информации. Так как форум существует довольно давно, некоторые решения для скриптов Ren’Py, описанные в темах, опубликованы несколько лет назад и уже устарели. Поэтому во время чтения следует обращать внимание на дату публикации. А чтобы получить более оперативную информацию, желательно присоединиться к <a href="https://discord.com/invite/6ckxWYm" target="_blank" class="stk-reset" data-gtm-vis-has-fired10171822_255="1">каналу</a> форума в Discord.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a href="https://feniksdev.com/" target="_blank" class="stk-reset"><strong class="stk-reset">Feniks Development</strong></a><strong class="stk-reset">.</strong> Взгляд на Ren’Py с точки зрения программиста. Ресурс содержит большое количество информации по движку, в том числе глоссарий, полезные инструменты и уроки.</li><li class="stk-reset stk-list-item" data-ce-tag="list-item"><a class="stk-reset" href="https://www.youtube.com/playlist?list=PLlZCSNfSKux2hXoo46rbBIVzl-7pZFRQh" target="_blank"><strong class="stk-reset">Плейлист с уроками по созданию визуальной новеллы для начинающих</strong></a><strong class="stk-reset"> от ютуб-канала Zeil Learnings.</strong> Также на канале можно найти много другой полезной информации по Ren’Py, в том числе для продвинутых пользователей. Ресурс Feniks Development <a class="stk-reset" href="https://feniksdev.com/resources/#:~:text=coding%20with%20Ren%E2%80%99Py-,Notes,-%3A%20The%20Create%20a" target="_blank">отмечает</a>, что в некоторых уроках допущены ошибки в коде, но они не столь критичны.<br></li></ul><p class="stk-reset" data-ce-tag="paragraph">Не забывайте, что Ren’Py — это прежде всего инструмент, предназначенный <em class="stk-reset" data-gtm-vis-has-fired10171822_255="1">для упрощения</em> визуализаций готовых историй, а не для написания их с нуля. Визуальные новеллы — сложные произведения с комплексной структурой, и порой объём текста в них достигает более чем 100 тысяч слов. В конце концов, передача захватывающего повествования с помощью писательских навыков и статичных изображений требует особого мастерства.</p></div></div><style data-stk-css="stkSRDKt" class="" media="all">
[data-stk-css="stkSRDKt"]: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="stkrIKsT" class="" media="all">
[data-stk-css="stkrIKsT"]: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="stkqtYsc" media="all" class="">
[data-stk-css="stkqtYsc"]: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="stkpj1Iz" media="all" class="">
[data-stk-css="stkpj1Iz"]: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="stkZb12g" media="all" class="">
[data-stk-css="stkZb12g"]:not(#stk):not(#stk):not(style) {
border-left: 4px solid #f5a74f;
padding: 20px;
background-color: rgba(254, 245, 224, 1)
}
</style></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="223768" data-source="217164" data-format="horizontal">
<section class="container inset" data-format="horizontal">
<div class="row">
<div class="col-lg-8 col-sm-12">
<a data-source="217164" data-banner="223768" target="_blank" href="https://skillbox.ru/course/profession-gamedesigner/" class="article-advert-banner__link courseLink" data-format="horizontal" data-type="horizontal" data-courseid="3504">
<div class="inset__wrapper" style="background-color: #E3FEBB;">
<div class="inset__content">
<h2 class="inset__header">Курс</h2>
<p class="inset__description">
Профессия Геймдизайнер с нуля до PRO </p>
<p class="inset__text">
Геймдизайнер создаёт структуру игры. Он продумывает идею, правила, игровой процесс и решает, какие эмоции вызовет сюжет у игроков. <br>Вы с нуля освоите принципы геймдизайна и научитесь работать с популярными движками Unity и Unreal Engine. Узнаете, как удерживать интерес игроков и монетизировать игры. А мы поможем вам начать карьеру в игровой индустрии. </p>
<p class="inset__button article-advert-banner__link"> Узнать про курс</p>
</div>
<div class="inset__image">
<img src="https://skillbox.ru/upload/setka_images/marketplace.png" width="145" height="145" alt="">
</div>
</div>
</a>
</div>
</div>
</section>
</section>
</section>
<div class="article-banner" data-banner="222801" data-source="217164" data-format="vertical" data-type="vertical">
<div class="row">
<div class="col-sm-4 col-sm-12">
<a data-source="217164" data-banner="222801" href="https://skillbox.ru/course/profession-gamedesigner/" class="inset__wrapper" style="background-color: #141414; display: block; text-decoration: none; color: inherit;" target="_blank">
<div class="inset__content">
<div class="inset__image" style="text-align: center;">
<img width="250" src="https://cdn.skillbox.pro/landgen/blocks/advantages/319908/xl/c896742e-98a3-47c7-a6ec-9a53312297f9-2x.webp" height="135" alt="">
</div>
<p class="inset__description" style="color:#fff!important; padding-bottom:13px;">
Профессия Геймдизайнер с нуля до PRO
</p>
<div class="inset__content" style="color:#fff!important; padding-bottom:6px;">
Создавайте игры без кода:
</div>
<ul class="inset__text" style="color:#E0E0E0!important; list-style:'\2022 ' outside; margin-left:13px;">
<li style="list-style:'\2022 '; padding-left:2px; margin-bottom:6px">
8 реальных проектов в портфолио;
</li>
<li style="list-style:'\2022 '; padding-left:2px; margin-bottom:6px">
шанс попасть на стажировку в GameBox;
</li>
<li style="list-style:'\2022 '; padding-left:2px; margin-bottom:6px">
домашние задания в игровом формате.
</li>
</ul>
<div class="inset__button article-advert-banner__link" style="color:#fff; background-color:#EE4339; margin-bottom:6px; display: inline-block;">Учиться</div>
</div>
</a>
</div>
</div> </div>
<a data-source="217164" data-banner="223289" target="_blank" href="https://skillbox.ru/course/profession-gamedesigner/" class="article-banner article-advert-banner__link courseLink" style="background-color: #E9E9F5;" data-format="top" data-type="top" data-courseid="3522">
<div class="article-banner__img">
<img src="https://248006.selcdn.ru/main/iblock/784/7841e1b8423c3b054b66fea194f12ae0/e74213787bd6749d1c5ff00f62ed03f7.png" alt="">
</div>
<span class="article-banner__title">Курс с трудоустройством: «<u>Профессия Геймдизайнер с нуля до PRO</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/vsye-o-renpy-konstruktore-dlya-razrabotki-vizualnykh-novell/"
class="question__btn js-modalLink" data-mfp-src="#modalAuth">Да</a>
</div>
</div>
</div>
</div>
<span
data-area="article-bottom"
data-current-url="/media/gamedev/vsye-o-renpy-konstruktore-dlya-razrabotki-vizualnykh-novell/"
data-id="217164">
</span>
</div>
<script type="application/ld+json">
{"@context":"http:\/\/schema.org","@type":"Article","url":"https:\/\/skillbox.ru\/media\/gamedev\/vsye-o-renpy-konstruktore-dlya-razrabotki-vizualnykh-novell\/","headline":"\u0412\u0441\u0451 \u043e\u00a0Ren\u2019Py\u00a0\u2014 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435\u00a0\u0434\u043b\u044f\u00a0\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u043e\u0432\u0435\u043b\u043b","articleSection":"\u0413\u0435\u0439\u043c\u0434\u0435\u0432","articleBody":"Ren\u2019Py \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \r\n\u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0440\u0438\u0439. \u0418 \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0433\u043e\u0440\u0435\u043b\u0438\u0441\u044c \u0438\u0434\u0435\u0435\u0439 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043d\u043e\u0432\u0435\u043b\u043b\u0443, \u043d\u043e \u0432\u0430\u0441 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u044e\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0432 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u0434\u0432\u0438\u0436\u043a\u043e\u0432, \u0442\u043e\u0433\u0434\u0430, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044e.\r\n\r\n\u0412 \u044d\u0442\u043e\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 \u0440\u0435\u0434\u0430\u043a\u0446\u0438\u044f \u00ab\u0413\u0435\u0439\u043c\u0434\u0435\u0432\u00bb \r\nSkillbox Media \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438.\r\n\r\n \r\n\r\n \r\n\r\n\r\n\u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c-\u043a\u0430\u043d\u0430\u043b \u00ab\u0427\u0435\u043a\u043f\u043e\u0438\u043d\u0442\u00bb, \u0433\u0434\u0435 \r\n\u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u0422\u0430\u043c \u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e \u0433\u0435\u0439\u043c\u0434\u0438\u0437\u0430\u0439\u043d\u0435, \u0438 \u0433\u0430\u0439\u0434\u044b \u043f\u043e \u0441\u043e\u0444\u0442\u0443, \u0438 \u0434\u0430\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e \u0441 \u0442\u0435\u043c\u0438, \u043a\u0442\u043e \u0443\u0436\u0435 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0438\u0433\u0440\u0443. \u041f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435\u0441\u044c !\r\n\r\n\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Ren\u2019Py\r\n\r\nRen\u2019Py \u2014 \u044d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \r\n\u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u0434\u0432\u0438\u0436\u043e\u043a \u0434\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u043e\u0432\u0435\u043b\u043b. \u0421 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0443\u044e \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u0443\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0441 2D-\u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0439, \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u043c \u0438 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u0435\u043c \u0438 \u0434\u0430\u0436\u0435 \u0432\u0438\u0434\u0435\u043e\u0440\u043e\u043b\u0438\u043a\u0430\u043c\u0438.\r\n\r\n\u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 Python, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \r\n\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432, \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445 \u043e\u0442\u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0439, \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u0443\u044e \u0434\u043b\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0436\u0438\u0437\u043d\u0438, \u0438 \u0434\u0430\u0436\u0435 \u043c\u0438\u043d\u0438-\u0438\u0433\u0440\u044b. \u041d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u0443\u0436\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0435\u0441\u0442\u044c \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0439 \u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432.\r\n\r\n\u0413\u043e\u0442\u043e\u0432\u0443\u044e \u0438\u0433\u0440\u0443 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \r\n\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445 \u0434\u043b\u044f \u041f\u041a (Windows, Linux, macOS) \u0438 \u043d\u0430 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 (iOS \u0438 Android). \u0421\u0430\u043c\u0430 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0443\u0436\u0435 \u043f\u043e\u0447\u0442\u0438 20 \u043b\u0435\u0442. \u041d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f Ren\u2019Py \u2014 8.1.3 (Where No One Has Gone Before) \u043e\u0442 18 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f 2023 \u0433\u043e\u0434\u0430.\r\n\r\n\u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0438 \u0438\u0437\u0443\u0447\u0430\u0442\u044c Python, \u0447\u0442\u043e\u0431\u044b \u0434\u0435\u043b\u0430\u0442\u044c \r\n\u0438\u0433\u0440\u044b \u043d\u0430 Ren\u2019Py\r\n\r\n\u0415\u0441\u043b\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0442\u043a\u0440\u043e\u0435\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \r\n\u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u043e\u0432\u0435\u043b\u043b\u044b, \u0435\u0433\u043e \u043d\u0430\u0432\u0435\u0440\u043d\u044f\u043a\u0430 \u0441\u043c\u0443\u0442\u0438\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u0438 \u043d\u0435\u043f\u043e\u043d\u044f\u0442\u043d\u044b\u0445, \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043a\u043e\u043c\u0430\u043d\u0434. \u041d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u0433\u0440\u044b \u043d\u0430 Ren\u2019Py \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0443\u0433\u043b\u0443\u0431\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0437\u043d\u0430\u043d\u0438\u044f Python. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 . \u041f\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 \u00ab\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u2014 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c\u00bb \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.\r\n\r\n\u0421 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0437\u0430 \u0441\u0447\u0451\u0442 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445 \r\n\u0437\u043d\u0430\u043d\u0438\u0439 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 Python \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u2014 \u043e\u0442 \u0441\u043f\u0435\u0446\u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u0432 \u0432\u0438\u0434\u0435 \u0442\u0440\u044f\u0441\u043a\u0438 \u044d\u043a\u0440\u0430\u043d\u0430 \u0434\u043e \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430\u043c\u0438. \u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0436\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u044c. \u041d\u043e \u0438 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u043c\u043e\u0449\u044c \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430, \u0432\u0435\u0434\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430\u0445 Ren\u2019Py, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0441\u0442\u044c \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u043e\u0446\u0441\u0435\u0442\u044f\u0445, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0432\u043e \u00ab\u0412\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u0435 \u00bb.\r\n\r\n\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 Ren\u2019Py\r\n\r\n\u041a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0443 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Ren\u2019Py \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \r\n\u043d\u0438\u0437\u043a\u0438\u0439 \u043f\u043e\u0440\u043e\u0433 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f. \u041f\u043e\u0447\u0435\u043c\u0443 \u0436\u0435 \u0442\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u044b \u043d\u0430 \u044d\u0442\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435, \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u0448\u0438\u0440\u043e\u043a\u043e\u0439 \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u0438, \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u043e \u043f\u0430\u043b\u044c\u0446\u0430\u043c?\r\n\r\n\u041c\u043d\u043e\u0433\u0438\u0435 \u0438\u0433\u0440\u043e\u043a\u0438 \u0437\u043d\u0430\u043a\u043e\u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u043c\u0438 \r\n\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u0435\u043b\u044f\u043c\u0438 \u0438\u0433\u0440 \u043d\u0430 \u043d\u0451\u043c \u2014 Doki Doki Literature Club! , \u00ab\u0411\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u043b\u0435\u0442\u043e \u00bb (Everlasting Summer), \u00ab\u0417\u0430\u0439\u0447\u0438\u043a \u00bb (Tiny Bunny), Katawa Shoujo , Milk Inside a Bag of Milk Inside a Bag of Milk \u2026 \u0410 \u0432\u0435\u0434\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0442\u044b\u0441\u044f\u0447\u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u0433\u0440, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043e\u0442 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432. \u041d\u043e \u043e\u043d\u0438 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b \u0432 \u043b\u0443\u0447\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043a\u0440\u0443\u0433\u0430\u0445.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 \u00ab\u0417\u0430\u0439\u0447\u0438\u043a\u00bb \/ Saikono\r\n\r\nRen\u2019Py \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442 \u0432 \u043e\u0441\u0432\u043e\u0435\u043d\u0438\u0438, \r\n\u043d\u043e \u0443 \u044d\u0442\u043e\u0433\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0435\u0441\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430. \u041f\u043e\u043d\u044f\u0432, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u0435, \u043c\u043d\u043e\u0433\u0438\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0435 \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043e \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u043d\u0443\u0442\u0440\u0438\u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438 \u0430\u0440\u0442\u0430), \u0440\u0430\u0432\u043d\u043e \u043a\u0430\u043a \u0438 \u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0439 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043d\u0430 \u0444\u043e\u0440\u0443\u043c\u0430\u0445 \u043d\u0435\u0440\u0435\u0434\u043a\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u0438 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0438\u0433\u0440 \u043d\u0430 Ren\u2019Py \u043e\u0442\u043c\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0430\u0433\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u0446\u0435\u043b\u043e\u043c \u0445\u043e\u0440\u043e\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u043d\u0430 \u044d\u0442\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435 \u0435\u0434\u0438\u043d\u0438\u0446\u044b.\r\n\r\n\u041c\u0430\u0441\u043b\u0430 \u0432 \u043e\u0433\u043e\u043d\u044c \u043f\u043e\u0434\u043b\u0438\u0432\u0430\u0435\u0442 \u0438 \u0442\u043e, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \r\n\u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u043e\u0432\u0435\u043b\u043b\u044b \u0434\u0435\u043b\u0430\u044e\u0442 \u0441\u0442\u0430\u0432\u043a\u0443 \u043d\u0430 \u00ab\u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0439\u00bb \u043a\u043e\u043d\u0442\u0435\u043d\u0442. \u0412 \u0441\u043e\u0432\u043e\u043a\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0441\u0432\u043e\u0435\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0439 \u043e\u0440\u0435\u043e\u043b \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u0430, \u0430 \u0432 \u043f\u0440\u043e\u0444\u0438\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0434\u0438\u0430 \u0442\u043e \u0438 \u0434\u0435\u043b\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0432\u044b\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043d\u0438\u044f [ https:\/\/www.igromania.ru\/article\/31304\/15_vizualnyh_novell_kotorye_dolzhen_proyti_kazhdyy.html#:~:text=%D0%9C%D0%BD%D0%BE%D0%B3%D0%B8%D0%B5%20%D0%B8%D0%B3%D1%80%D0%BE%D0%BA%D0%B8%20%D0%B4%D0%B0%D0%B6%D0%B5%20%D0%BD%D0%B5%20%D1%81%D1%87%D0%B8%D1%82%D0%B0%D1%8E%D1%82%20%D0%B2%D0%B8%D0%B7%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D0%BD%D0%BE%D0%B2%D0%B5%D0%BB%D0%BB%D1%8B%20%D0%B7%D0%B0%20%D0%B8%D0%B3%D1%80%D1%8B. ] \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0433\u0440\u043e\u043a\u0438 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u043e\u0432\u0435\u043b\u043b\u044b \u0438\u0433\u0440\u0430\u043c\u0438. \u041d\u043e \u0432\u0434\u0440\u0443\u0433 \u0438\u043c\u0435\u043d\u043d\u043e \u0432\u0430\u0448\u0435 \u0431\u0443\u0434\u0443\u0449\u0435\u0435 \u0442\u0432\u043e\u0440\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u0442\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435 \u0440\u0430\u0437\u0440\u0443\u0448\u0438\u0442 \u0441\u0442\u0435\u0440\u0435\u043e\u0442\u0438\u043f\u044b?\r\n\r\n\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435.\r\n\r\n\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Ren\u2019Py\r\n\r\n\u0410\u0432\u0442\u043e\u0440\u044b Ren\u2019Py \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0430\u043c\u0443\u044e \r\n\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e, \u0432\u043e\u0441\u044c\u043c\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0434\u0432\u0438\u0436\u043a\u0430, \u0442\u0430\u043a \u043e\u043d\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Python 3. \u041d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 [ https:\/\/www.renpy.org\/#:~:text=it%27s%20the%20first%20version%20of%20Ren%27Py%20that%20supports%20Python%203 ] \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043b\u044e\u0431\u043e\u0439 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0430\u0440\u0445\u0438\u0432\u0430 \u0438 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u043c \u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u0432\u0438\u0436\u043a\u0430 \u043d\u0430 \u0436\u0451\u0441\u0442\u043a\u0438\u0439 \u0434\u0438\u0441\u043a. \u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0444\u0430\u0439\u043b renpy.exe, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u044f\u0437\u044b\u043a \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0441 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c \u043b\u0430\u0443\u043d\u0447\u0435\u0440\u0430.\r\n\r\n\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0432\u043e\u0434\u044f\u0442 \u0432\u0441\u0435 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \r\n\u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u0434\u0432\u0438\u0436\u043a\u0435.\r\n \r\n\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Ren\u2019Py\r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Ren\u2019Py \/ Tom Rothamel\r\n\r\n\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043c\u0435\u043d\u044e \u041f\u0440\u043e\u0435\u043a\u0442\u044b (Projects). \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \r\n\u0432 Ren\u2019Py \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0434\u0432\u0430 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u0430-\u0438\u0441\u0442\u043e\u0440\u0438\u0438: \u00ab\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u00bb (Tutorial) \u0438 \u00ab\u0412\u043e\u043f\u0440\u043e\u0441\u00bb (The Question). \u041f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 \u0438 \u043d\u0430\u0436\u0430\u0442\u044c \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 (Launch Project). \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u00ab\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0438\u00bb \u0433\u0435\u0440\u043e\u0438\u043d\u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0431 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0434\u0432\u0438\u0436\u043a\u0430. \u0410 \u043f\u0440\u043e\u0435\u043a\u0442 \u00ab\u0412\u043e\u043f\u0440\u043e\u0441\u00bb \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u0430\u043c\u0443\u044e \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438.\r\n\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 \u00ab\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435\u00bb \/ Tom Rothamel\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: \u0438\u0433\u0440\u0430 \u00ab\u0412\u043e\u043f\u0440\u043e\u0441\u00bb \/ Tom Rothamel\r\n\r\n\u0415\u0441\u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 \u043b\u0430\u0443\u043d\u0447\u0435\u0440\u0435 Ren\u2019Py, \r\n\u0441\u043f\u0440\u0430\u0432\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0435\u043d\u044e. \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0438\u0445 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435.\r\n\r\n\u00ab\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u041f\u0430\u043f\u043a\u0443\u00bb (Open Directory) \u2014 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \r\n\u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a \u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u0442\u043e\u0439 \u0438\u043b\u0438 \u0438\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0438:\r\n\r\n- game \u2014 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0435\u0441\u044c \u0438\u0433\u0440\u043e\u0432\u043e\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442;\r\n- base \u2014 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043f\u0430\u043f\u043a\u0430 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u0438\u0433\u0440\u044b;\r\n- images \u2014 \u043a\u043e\u043d\u0442\u0435\u043d\u0442 \u0441 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439 \r\n\u0438\u0433\u0440\u044b (\u0444\u043e\u043d\u044b, \u0430\u0432\u0430\u0442\u0430\u0440\u044b \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439, \u0432\u0438\u0434\u0435\u043e\u0440\u043e\u043b\u0438\u043a\u0438 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435);\r\n- gui (\u0430\u0431\u0431\u0440\u0435\u0432\u0438\u0430\u0442\u0443\u0440\u0430 \u043e\u0442 graphical user interface) \u2014 \r\n\u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u043f\u0430\u043f\u043a\u0430 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438, \u043d\u043e \u0443\u0436\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0438\u0433\u0440\u044b;\r\n- audio \u2014 \u0437\u0432\u0443\u043a\u0438 \u0438 \u043c\u0443\u0437\u044b\u043a\u0430.\r\n\r\n\u0417\u0430\u0431\u0435\u0433\u0430\u044f \u0432\u043f\u0435\u0440\u0451\u0434, \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e Ren\u2019Py \r\n\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0432\u0441\u0435 \u044d\u0442\u0438 \u043f\u0430\u043f\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u0438\u043a\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043b\u044e\u0431\u043e\u0439 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u043e\u0432\u0435\u043b\u043b\u044b \u043d\u0430 \u044d\u0442\u043e\u043c \u0434\u0432\u0438\u0436\u043a\u0435, \u0432 \u043d\u0451\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u044f\u0442\u0441\u044f \u0442\u0435 \u0436\u0435 \u0441\u0430\u043c\u044b\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.\r\n\r\n\u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0424\u0430\u0439\u043b\u00bb (Edit File) \r\n\u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c .rpy, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043a\u043e\u0434 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0433\u0440\u044b. \u0415\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0438 Ren\u2019Py \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437, \u0442\u043e \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u0432 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u0434\u0435\u043b \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u043d\u0430 \u0432\u044b\u0431\u043e\u0440 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432.\r\n\r\n\u0421\u0430\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043e\u0442\u043c\u0435\u0447\u0430\u044e\u0442 \r\n, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c Visual Studio Code. \u0414\u0432\u0438\u0436\u043e\u043a \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0436\u0430\u0442\u044c \u043d\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0438 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0437\u0430\u0434\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445.\r\n\r\n \r\n\u041c\u0435\u043d\u044e \u0432\u044b\u0431\u043e\u0440\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445\r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b: Ren\u2019Py \/ Tom Rothamel\r\n \r\n\u041c\u0435\u043d\u044e \u0432\u044b\u0431\u043e\u0440\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445\r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b: Ren\u2019Py \/ Tom Rothamel\r\n\r\n\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0432\u044b\u0431\u0440\u0430\u043d, \r\n\u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u0444\u0430\u0439\u043b\u0430 \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c .rpy \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432. \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u2014 Visual Studio Code.\r\n \r\n\u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0447\u0430\u0441\u0442\u044c \u043a\u043e\u0434\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0439 \u043d\u043e\u0432\u0435\u043b\u043b\u044b \u00ab\u0412\u043e\u043f\u0440\u043e\u0441\u00bb\r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Visual Studio Code \/ Microsoft\r\n\r\n\u0412\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0443. \u0420\u0430\u0437\u0434\u0435\u043b \u00ab\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f \r\n\u0441 \u041f\u0440\u043e\u0435\u043a\u0442\u043e\u043c\u00bb (Actions) \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u043e\u043f\u0446\u0438\u0438 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043e\u0434\u043e\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0430.\r\n\r\n- \u041d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044f \u043f\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044e (Navigate Script). \u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \r\n\u0438 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u0435 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432.\r\n- \u00ab\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 (Check script). \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u043e\u0434\u0430 \r\n\u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 Lint [ https:\/\/www.renpy.org\/doc\/html\/developer_tools.html#:~:text=True%20to%20operate.-,Lint,-link ] . \u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e Lint \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435.\r\n- \u00ab\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c\/\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c GUI\u00bb (Change\/Update GUI). \u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u044c \r\n\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430.\r\n- \u00ab\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0435\u00bb (Delete Persistent). \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \r\n\u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0445\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0440\u043e\u043b\u043e\u0433 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435.\r\n- \u00ab\u041f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u00bb (Force Recompile). \r\n\u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u043a\u043e\u0434\u0430.\r\n\r\n\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u043f\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \r\n\u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u043d\u0430 \u0444\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0434\u0438\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430.\r\n\r\n- \u00ab\u041f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b\u00bb (Build distributions). \r\n\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u043a\u043d\u043e, \u0433\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c ZIP-\u0430\u0440\u0445\u0438\u0432 \u0431\u0438\u043b\u0434\u0430 \u0438\u0433\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e.\r\n- Android, iOS, Web (Beta). \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u0430 \u0434\u043b\u044f \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \r\n\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c. \u041f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438.\r\n- \u00ab\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u044b\u00bb (Generate Translations). \u0424\u0443\u043d\u043a\u0446\u0438\u044f \r\n\u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438, \u0435\u0441\u043b\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0436\u0435\u043b\u0430\u0435\u0442 \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u0433\u0440\u0443 \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445.\r\n- \u00ab\u0418\u0437\u0432\u043b\u0435\u0447\u044c \u0434\u0438\u0430\u043b\u043e\u0433\u00bb (Extract Dialogue). \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432 \r\n\u0438\u0437 \u0438\u0433\u0440\u044b \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 TAB \u0438\u043b\u0438 TXT.\r\n\r\n\u0418 \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043b\u0430\u0443\u043d\u0447\u0435\u0440\u0430 (Launcher \r\nPreferences) \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u043d\u0438\u0436\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043e\u0431\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430: \u0432\u044b\u0431\u043e\u0440 \u043f\u0430\u043f\u043a\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0432\u044b\u0431\u043e\u0440 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432, \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432 \u043b\u0430\u0443\u043d\u0447\u0435\u0440\u0435, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0442\u0435\u043c\u044b, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a (\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 Steam) \u0438 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c.\r\n\r\n\u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0432\u0448\u0438\u0441\u044c \u0441 \u043e\u0441\u043d\u043e\u0432\u0430\u043c\u0438 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \r\n\u043a\u043b\u0438\u0435\u043d\u0442\u0430 Ren\u2019Py, \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044e \u043e\u0441\u043d\u043e\u0432.\r\n\r\n\u041f\u0435\u0440\u0432\u044b\u0435 \u0448\u0430\u0433\u0438\r\n\r\n\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 Ren\u2019Py. \u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \r\n\u00ab+ \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u00bb (+Create New Project). \u041a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0434\u0438\u0442, \u0447\u0442\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u043d \u044f\u0437\u044b\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u0431\u0440\u0430\u043d \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043b\u0430\u0443\u043d\u0447\u0435\u0440\u0430. \u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0432\u044b\u0431\u0440\u0430\u043d \u0440\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a, \u043d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0438 \u043d\u0430 \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u0435.\r\n\r\n\u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u00ab\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c\u00bb (Continue). \u0414\u0430\u043b\u0435\u0435 \u0432\u0432\u043e\u0434\u0438\u043c \r\n\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0430 \u0437\u0430\u0442\u0435\u043c \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u0412 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0432\u044b\u0431\u0440\u0430\u043d \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0434\u043b\u044f \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2014 1920\u00d71080.\r\n\r\n\u0417\u0430\u0442\u0435\u043c Ren\u2019Py \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0446\u0432\u0435\u0442\u043e\u0432\u0443\u044e \r\n\u0441\u0445\u0435\u043c\u0443 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u0415\u0451 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0438\u0442\u044c \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0422\u0451\u043c\u043d\u044b\u0439 \u0438\u043b\u0438 \u0441\u0435\u0440\u044b\u0439 \u0446\u0432\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0441\u043d\u043e\u0432\u0430, \u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u0435\u0442 \u0430\u043a\u0446\u0435\u043d\u0442\u044b. \u0426\u0432\u0435\u0442\u043e\u0432\u0443\u044e \u0433\u0430\u043c\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u0437\u0436\u0435 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445, \u0432\u044b\u0431\u0440\u0430\u0432 \u0440\u0430\u043d\u0435\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0439 \u043f\u0443\u043d\u043a\u0442 \u00ab\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c\/\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c GUI\u00bb (Change\/Update GUI). \u0412 \u0442\u043e\u043c \u0436\u0435 \u043e\u043a\u043d\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u0441\u0445\u0435\u043c\u044b \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0440\u0435\u0436\u0438\u043c\u0430 \u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0432\u044b\u0432\u043e\u0434\u0430 \u0442\u0435\u043a\u0441\u0442\u0430.\r\n \r\n\u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b: Ren\u2019Py \/ Tom Rothamel\r\n\r\n\u0415\u0441\u043b\u0438 \u0434\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \r\n\u043b\u0430\u0443\u043d\u0447\u0435\u0440\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0443\u043a\u0430\u0437\u0430\u043b \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u0431\u0438\u043b\u0434\u0430, \u043f\u0440\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0448\u0430\u0433\u0435 \u0434\u0432\u0438\u0436\u043e\u043a \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0430\u043f\u043a\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0444\u0430\u0439\u043b\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0430.\r\n\r\n\u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u0430\u043f\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \r\n\u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0432 \u043b\u0430\u0443\u043d\u0447\u0435\u0440\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442. \u0415\u0433\u043e \u0434\u0430\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044c, \u043d\u0430\u0436\u0430\u0432 \u00ab\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442\u00bb (Launch Project). \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0447\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u0438\u0433\u0440\u0443. \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436-\u043f\u0443\u0441\u0442\u044b\u0448\u043a\u0430 \u0441\u043a\u0430\u0436\u0435\u0442 \u043d\u0430\u043c \u043f\u0430\u0440\u0443 \u0444\u0440\u0430\u0437, \u0438 \u0438\u0433\u0440\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Ren\u2019Py \/ Tom Rothamel\r\n\r\n\u0422\u0435\u043f\u0435\u0440\u044c, \u0438\u043c\u0435\u044f \u043e\u0441\u043d\u043e\u0432\u0443 \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \r\n\u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043a\u0430\u0440\u0434\u0438\u043d\u0430\u043b\u044c\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043f\u043e\u0434 \u0441\u0432\u043e\u0438 \u0437\u0430\u0434\u0430\u0447\u0438.\r\n\r\n\u0412\u044b\u0432\u043e\u0434 \u0442\u0435\u043a\u0441\u0442\u0430\r\n\r\n\u0412\u044b\u0434\u0435\u043b\u0438\u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u043b\u0430\u0443\u043d\u0447\u0435\u0440\u0435 \r\nRen\u2019Py, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c script.rpy \u0432 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u00ab\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u00bb (Edit File). \u0412 \u044d\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432\u0435\u0441\u044c \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 #, \u2014 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435. \u042d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c, \u0430 \u043c\u043e\u0436\u043d\u043e \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0448\u043f\u0430\u0440\u0433\u0430\u043b\u043a\u0438. \u0418\u0445 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 \u0446\u0435\u043b\u043e\u043c.\r\n \r\n\u0422\u0430\u043a \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430\u0448\u0435\u0439 \u0431\u0443\u0434\u0443\u0449\u0435\u0439 \u0438\u0433\u0440\u044b \u0432 Visual Studio Code\r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Visual Studio Code \/ Microsoft\r\n\r\n\u0423\u0434\u0430\u043b\u0438\u043c \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0434\u0443\u0442 \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0447\u0430\u043b\u0430 \r\n\u0438\u0433\u0440\u043e\u0432\u043e\u0433\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 (label start), \u0438 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u2014 \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0451\u043c\u043d\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435. \u042d\u0442\u043e\u0442 \u043f\u0440\u0438\u0451\u043c \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0438\u0433\u0440\u044b \u0438\u043b\u0438 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0445 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0433\u0435\u0440\u043e\u0439 \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u0432 \u0442\u0451\u043c\u043d\u043e\u0435 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u0435 \u0438 \u0435\u0449\u0451 \u043d\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u043b \u0441\u0432\u0435\u0442.\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0442\u0435\u043a\u0441\u0442 \u043d\u0430 \u0442\u0451\u043c\u043d\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0435, \r\n\u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f, \u043e\u0431\u043e\u0441\u043e\u0431\u043b\u044f\u044f \u0438\u0445 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u043c\u0438. \u0412 Visual Studio Code \u043a\u0430\u0432\u044b\u0447\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f \u043a\u043d\u043e\u043f\u043a\u0438 \u201c. \u041f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u043f\u043e\u043c\u043d\u0438\u0442\u0435, \u0447\u0442\u043e \u0432\u0441\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0441\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0437\u0430 \u043e\u0434\u0438\u043d \u0440\u0430\u0437. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u043e\u0447\u0435\u043d\u044c \u0431\u043e\u043b\u044c\u0448\u043e\u0439, \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u043d\u0430 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b (\u0442\u043e \u0435\u0441\u0442\u044c \u0442\u0430\u043a, \u0441\u043b\u043e\u0432\u043d\u043e \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436 \u043f\u0440\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0435\u0442 \u044d\u0442\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0436\u0438\u0437\u043d\u0438) \u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0438\u0445 \u0441 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438; \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435 \u2014 \u0441\u0442\u0430\u0432\u0438\u043c Tab \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u043d\u043e\u0432\u043e\u0439 \u0444\u0440\u0430\u0437\u044b. \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0438 \u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c.\r\n \r\n\u0422\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0435\u043a\u0441\u0442 \u0432 \u043a\u043e\u0434\u0435\r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Visual Studio Code \/ Microsoft\u0410 \u0442\u0430\u043a \u043e\u043d \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \r\n\u0432 \u0438\u0433\u0440\u0435\r\n\r\n\u0415\u0441\u043b\u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c, \u043e\u0442 \u0447\u044c\u0435\u0433\u043e \u043b\u0438\u0446\u0430 \r\n\u0432\u0435\u0434\u0451\u0442\u0441\u044f \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435, \u043f\u0435\u0440\u0435\u0434 \u0444\u0440\u0430\u0437\u043e\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0432 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u0445 \u0438\u043c\u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0447\u0438\u043a\u0430.\r\n\r\nlabel start: \"\u0410\u0432\u0442\u043e\u0440\" \"Once there was an explosion.\" return\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Ren\u2019Py \/ Tom Rothamel\r\n\r\n\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0434\u043b\u044f \u0438\u043c\u0435\u043d\u0438 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \r\n\u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0446\u0432\u0435\u0442\u043e\u0432\u0443\u044e \u0433\u0430\u043c\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u043d\u0435\u0435 \u0431\u044b\u043b\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 GUI. \u041d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439 \u0446\u0432\u0435\u0442 \u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 \u043f\u043e \u043e\u0431\u0440\u0430\u0437\u0446\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u0434\u043b\u044f \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430-\u043f\u0443\u0441\u0442\u044b\u0448\u043a\u0438, \u0438 \u043c\u0435\u043d\u044f\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 '\u042d\u0439\u043b\u0438\u043d' \u043d\u0430 '\u0410\u0432\u0442\u043e\u0440'.\r\n\r\ndefine au = Character('\u0410\u0432\u0442\u043e\u0440', color=\"#71c7e9\")\r\n\r\n- \u041a\u043e\u043c\u0430\u043d\u0434\u0430 define \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c.\r\n- au \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0437\u0430\u0434\u0430\u043b\u0438 \r\n\u0434\u043b\u044f \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 (\u0437\u0434\u0435\u0441\u044c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u0431\u0443\u043a\u0432).\r\n- Character \u2014 \u043a\u043b\u0430\u0441\u0441, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u0439 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430.\r\n- \u0412 \u0441\u043a\u043e\u0431\u043a\u0430\u0445 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430. \r\n\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u0438\u043c\u044f, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0432 \u0438\u0433\u0440\u0435, \u0438 \u0446\u0432\u0435\u0442 (\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c, \u043d\u0430\u0432\u0435\u0434\u044f \u043d\u0430 \u0437\u043d\u0430\u0447\u043e\u043a \u0432 Visual Studio Code).\r\n\r\n\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u043f\u0438\u0441\u0430\u0442\u044c \r\n\u0432 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u0445 \u0438\u043c\u044f \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 \u043f\u0435\u0440\u0435\u0434 \u0435\u0433\u043e \u0440\u0435\u043f\u043b\u0438\u043a\u043e\u0439.\r\n\r\nau \"Once there was an explosion.\" \r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Ren\u2019Py \/ Tom Rothamel\r\n\r\n\u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \r\n\u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u0441 \u0432\u043d\u0443\u0442\u0440\u0438\u0438\u0433\u0440\u043e\u0432\u044b\u043c \u0442\u0435\u043a\u0441\u0442\u043e\u043c. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0435\u0441\u0442\u044c \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 .\r\n\r\n\r\n\r\n\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435\r\n\r\n\u0427\u0442\u043e\u0431\u044b \u043e\u0431\u043e\u0441\u043e\u0431\u0438\u0442\u044c \u0441\u043b\u043e\u0432\u043e \u0438\u043b\u0438 \u0441\u043b\u043e\u0432\u043e\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \r\n\u043a\u0430\u0432\u044b\u0447\u043a\u0430\u043c\u0438 \u0432 \u0440\u0435\u043f\u043b\u0438\u043a\u0435, \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043a \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u043c \u0441\u0438\u043c\u0432\u043e\u043b \\ \u043f\u043e \u043e\u0431\u0440\u0430\u0437\u0446\u0443 \u043d\u0438\u0436\u0435.\r\n\r\nau \"Once there was an \\\"explosion\\\".\"\r\n\r\n\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u043e\u0432\u0435\u043b\u043b\u044b\r\n\r\n\u0424\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b \u0442\u0435\u043a\u0441\u0442\u0430, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u043d\u0430\u043c\u0438 \u0440\u0430\u043d\u0435\u0435, \r\n\u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b, \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0438\u0445. \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043d\u043e\u0432\u0435\u043b\u043b\u0443 \u043e\u0442 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043b\u0438\u0446\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0431\u0443\u0434\u0435\u0442 \u043c\u0438\u043d\u0438-\u0432\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435, \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0446\u0435\u043d \u0438 \u0432\u044b\u0431\u043e\u0440\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0430\u0440\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439, \u043d\u0435 \u0441\u0447\u0438\u0442\u0430\u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0447\u0438\u043a\u0430.\r\n\r\n\r\n\r\n\u0411\u043e\u043b\u044c\u0448\u0438\u043c \u043f\u043b\u044e\u0441\u043e\u043c \u043f\u0440\u0438 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \r\n\u043d\u043e\u0432\u0435\u043b\u043b\u044b \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f, \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0430\u0441\u0441\u0435\u0442\u043e\u0432 (\u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0441 \u0444\u043e\u043d\u0430\u043c\u0438, \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430\u043c\u0438, \u0437\u0432\u0443\u043a, \u043c\u0443\u0437\u044b\u043a\u0430 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435) \u0438 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0432 Twine, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u043a\u0430\u043a \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u0432 \u0441\u0446\u0435\u043d\u0435 \u0438 \u043a\u0430\u043a\u0438\u043c\u0438 \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u0430\u043c\u0438 \u0435\u0433\u043e \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442\u044c. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e Twine \u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0432 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 \u043d\u0430\u0448\u0435\u043c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0435 .\r\n\r\n\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0430\u0441\u0441\u0435\u0442\u043e\u0432\r\n\r\n\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u043c \u0430\u0441\u0441\u0435\u0442\u044b, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \r\n\u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438. \u0412 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u041f\u0430\u043f\u043a\u0443\u00bb (Open Directory) \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043f\u0430\u043f\u043a\u0438 \u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u043c \u0432 \u043d\u0438\u0445 \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u043d\u0442. \u0412 \u043f\u0430\u043f\u043a\u0443 audio \u2014 \u0432\u0441\u0435 \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u0435 \u0438 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u0441\u0441\u0435\u0442\u044b, \u0432 images \u2014 \u0444\u043e\u043d\u044b \u0438 \u0430\u0432\u0430\u0442\u0430\u0440\u044b \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.\r\n\r\n\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0432\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u0435 \r\n\u043f\u0443\u0442\u0430\u043d\u0438\u0446\u044b \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u0430\u0441\u0441\u0435\u0442\u043e\u0432 \u0434\u043b\u044f \u0441\u0446\u0435\u043d \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u043f\u043e\u043b\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438, \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044f\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0438\u0435\u0440\u0430\u0440\u0445\u0438\u0438. \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0439 \u0430\u0441\u0441\u0435\u0442\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445 Ren\u2019Py, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u0438\u0441\u044c \u0440\u0430\u043d\u0435\u0435.\r\n\r\n\u0422\u0430\u043a, \u0435\u0441\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u0430\u043f\u043a\u0443 images \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u00ab\u0412\u043e\u043f\u0440\u043e\u0441\u00bb \r\n(The Question), \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0439 \u0442\u0435\u0433 \u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u044f \u0444\u043e\u043d\u0430, \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0434\u0451\u0442 \u043e\u0431\u0449\u0438\u0439 \u0442\u0435\u0433 (bg \u2014 \u0442\u043e \u0435\u0441\u0442\u044c background), \u0430 \u0437\u0430\u0442\u0435\u043c \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u0446\u0438\u0438. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0444\u0430\u0439\u043b\u0430\u043c \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0438\u043c\u0435\u043d\u0430 bg club, bg lecturehall, bg meadow \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0410 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0430\u0441\u0441\u0435\u0442\u043e\u0432 \u0441 \u0433\u0435\u0440\u043e\u0438\u043d\u0435\u0439 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0438\u043c\u044f \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430, \u0446\u0432\u0435\u0442 \u043e\u0434\u0435\u0436\u0434\u044b (\u0442\u0430\u043a \u043a\u0430\u043a \u0433\u0435\u0440\u043e\u0438\u043d\u044f \u043c\u0435\u043d\u044f\u0435\u0442 \u043e\u0431\u0440\u0430\u0437\u044b \u043f\u043e \u0445\u043e\u0434\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u0438) \u0438 \u0435\u0451 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435: \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435 (sylvie blue normal), \u0445\u0438\u0445\u0438\u043a\u0430\u043d\u044c\u0435 (sylvie blue giggle), \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435 (sylvie blue surprised) \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u044d\u043c\u043e\u0446\u0438\u0438.\r\n\r\n\u0414\u043b\u044f \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0444\u0430\u0439\u043b\u044b \r\n\u0441 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u044b\u043c \u0444\u043e\u043d\u043e\u043c \u0438 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 PNG \u0438\u043b\u0438 WEBP. \u0415\u0441\u043b\u0438 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439 \u043c\u043d\u043e\u0433\u043e, \u0438\u0445 \u0430\u0432\u0430\u0442\u0430\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043e\u0434\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\u043c \u2014 \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0438 \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u043f\u0430\u043f\u043a\u0435 images. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0433\u0438\u043f\u0435\u0440\u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b: \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0430\u0439\u0434\u0451\u0442 \u043f\u0443\u0442\u044c \u043a\u043e \u0432\u0441\u0435\u043c \u0444\u0430\u0439\u043b\u0430\u043c.\r\n\r\n\r\n\r\n\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043f\u043e\u043a\u0430 \u043d\u0435\u0442 \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \r\n\u0430\u0441\u0441\u0435\u0442\u043e\u0432, \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u0430\u0447\u0430\u0442\u044c \u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440\u044b c itch.io . \u041f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u0438\u043b\u0438 \u0443\u0441\u043b\u043e\u0432\u043d\u043e-\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u0430\u0432\u0430\u0442\u0430\u0440\u043e\u0432 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439, \u0444\u043e\u043d\u043e\u0432 \u0438 \u0434\u0430\u0436\u0435 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u043c\u043f\u043b\u044b.\r\n\r\n\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \r\n\u0440\u0435\u043d\u0434\u0435\u0440\u044b 3D-\u043c\u043e\u0434\u0435\u043b\u0435\u0439 \u0438 \u0441\u0446\u0435\u043d. \u0410 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u044e Leaving The World Behind \u2014 Koala Vert \u043f\u043e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 CC BY 4.0 .\r\n\r\n\u041f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f\r\n\r\n\u041f\u043e \u0437\u0430\u0434\u0443\u043c\u043a\u0435 \u043f\u043e\u0441\u043b\u0435 \u0437\u0430\u043a\u0430\u0434\u0440\u043e\u0432\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \r\n\u043d\u0430 \u0447\u0451\u0440\u043d\u043e\u043c \u0444\u043e\u043d\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0441 \u0444\u043e\u043d\u043e\u043c \u0438 \u043c\u0443\u0437\u044b\u043a\u043e\u0439. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.\r\n\r\nlabel start: \"\u042f \u0434\u043e\u043b\u0433\u043e \u0448\u0451\u043b \u043f\u043e \u0442\u0451\u043c\u043d\u043e\u043c\u0443 \u0442\u0443\u043d\u043d\u0435\u043b\u044e, \r\n\u0438 \u0432\u043e\u0442 \u043d\u0430\u043a\u043e\u043d\u0435\u0446-\u0442\u043e \u0432\u0434\u0430\u043b\u0435\u043a\u0435 \u0437\u0430\u043c\u0430\u044f\u0447\u0438\u043b \u0441\u0432\u0435\u0442.\" \"\u0421\u0434\u0435\u043b\u0430\u0432 \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0448\u0430\u0433\u043e\u0432, \u044f \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0432 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435.\" play music \"bg music.mp3\" scene bg road with fade \r\n\r\n\u0420\u0430\u0441\u0448\u0438\u0444\u0440\u0443\u0435\u043c, \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \r\n\u044d\u0442\u0430\u043f\u0435.\r\n\r\n- \u0421\u0442\u0440\u043e\u043a\u0438, \u043e\u0431\u043e\u0441\u043e\u0431\u043b\u0435\u043d\u043d\u044b\u0435 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u043c\u0438, \u2014 \u043d\u0430\u0448\u0435 \r\n\u0432\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435.\r\n- Play \u2014 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0434\u0438\u0430\u0444\u0430\u0439\u043b\u0430, \r\n\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u0437\u0438\u0446\u0438\u0438 (music) \u0438\u0437 \u043f\u0430\u043f\u043a\u0438 audio. \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0443\u043a\u0430\u0437\u0430\u043d\u043e \u0432 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u0445 \u0438 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f.\r\n- Scene \u2014 \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u0446\u0435\u043d\u044b, \u0442\u043e \u0435\u0441\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \r\n\u0444\u043e\u043d\u0430, \u0432 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u044d\u0442\u043e \u0444\u0430\u0439\u043b bg road. \u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e.\r\n- With \u2014 \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0447\u0435\u043c-\u043b\u0438\u0431\u043e. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \r\n\u0441\u043b\u0443\u0447\u0430\u0435 fade \u2014 \u043f\u043b\u0430\u0432\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0432 0,5 \u0441\u0435\u043a\u0443\u043d\u0434\u044b. \u042d\u0442\u0430 \u043e\u043f\u0446\u0438\u044f \u043d\u0435 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430, \u043d\u043e \u0441 \u043d\u0435\u0439 \u0441\u043c\u0435\u043d\u0430 \u0441\u0446\u0435\u043d\u044b \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u043d\u043e.\r\n\r\n\u0415\u0441\u043b\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u0435\u0439\u0447\u0430\u0441 \u2014 \u043e\u043d \u043c\u043e\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u043e \r\n\u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0441\u0442\u0430\u0440\u0442\u0430 \u0441\u0446\u0435\u043d\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043b\u0443\u0447\u0448\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u0447\u043a\u0443 \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f. \u0412\u043e\u0442 \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432 \u0438\u0442\u043e\u0433\u0435.\r\n\r\n\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u0430\r\n\r\n\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u043d\u0430\u043c \r\n\u0443\u0436\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0434\u0430\u0442\u044c \u0430\u0442\u043c\u043e\u0441\u0444\u0435\u0440\u0443 \u0438\u0433\u0440\u044b. \u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u2014 \u044d\u0442\u0430\u043f \u0441 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u044e\u0436\u0435\u0442\u043d\u044b\u043c \u0432\u044b\u0431\u043e\u0440\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 menu. \u0412 Visual Studio Code \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043e\u043f\u0446\u0438\u0438: \u0435\u0441\u043b\u0438 \u043c\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043d\u0430\u0447\u043d\u0451\u043c \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c \u0441\u043b\u043e\u0432\u043e menu, \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0432\u043a\u043b\u0430\u0434\u043a\u0430. \u0412 \u043d\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0443\u043d\u043a\u0442, \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0439 \u043a\u0430\u043a Choice Menu.\r\n\r\n\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \r\n\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0434\u0430:\r\n\r\nmenu optional_name: \"Say Statement\" \"Choice 1\": #block of code to run \"Choice \r\n2\": #block of code to run \r\n\r\n- optional_name \u2014 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u0431\u043e\u0440\u0430, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \r\n\u043d\u0430 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435.\r\n- \"Say Statement\" \u2014 \u0432\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0444\u0440\u0430\u0437\u0443 (\u043c\u043e\u0436\u043d\u043e \u0438 \u043d\u0435 \u043e\u0434\u043d\u0443), \r\n\u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u0430\u043d\u0435\u0442 \u043f\u0440\u0435\u0434\u043f\u043e\u0441\u044b\u043b\u043a\u043e\u0439 \u043a \u0432\u044b\u0431\u043e\u0440\u0443. \u0412 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0441 \"\u041a\u0443\u0434\u0430 \u0436\u0435 \u043c\u043d\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c\u0441\u044f?\".\r\n- \"Choice 1\" \u0438 \"Choice 2\" \u2014 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0431\u043e\u0440\u043e\u0432, \r\n\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \"\u0414\u0430.\"\/\"\u041d\u0435\u0442.\"\r\n\r\n\u041f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0441 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \r\n\u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0443\u0442 \u043d\u0430\u0441 \u043a \u043a\u0430\u043a\u043e\u043c\u0443-\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0443. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0447\u0438\u043a \u043d\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0442\u044c\u0441\u044f \u043e\u0442 \u043a\u0443\u0440\u0441\u0430, \u0438\u0433\u0440\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f. \u0410 \u0435\u0441\u043b\u0438 \u043e\u043d \u0432\u044b\u0431\u0435\u0440\u0435\u0442 \u0442\u0440\u043e\u043f\u0438\u043d\u043a\u0443 \u2014 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0430\u044f \u0441\u0446\u0435\u043d\u0430.\r\n\r\n\u0414\u043b\u044f \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0438\u0433\u0440\u043e\u043a\u0430 \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \r\n\u044d\u0442\u0430\u043f \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e jump \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u0433\u0440\u043e\u043a \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0441\u0446\u0435\u043d\u044b \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u044b\u0431\u043e\u0440.\r\n\r\n\u041f\u043e\u043a\u0430 \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u043c \u0432\u0441\u0451, \u0447\u0442\u043e \u043c\u044b \u0443\u0441\u0432\u043e\u0438\u043b\u0438 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \r\n\u043c\u043e\u043c\u0435\u043d\u0442. \u041d\u0430 \u043a\u043e\u043b\u043b\u0430\u0436\u0435 \u043d\u0438\u0436\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e, \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0434\u0430, \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0435 \u0432\u044b\u0448\u0435, \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u0438\u0433\u0440\u0435.\r\n \r\n\u0421\u0431\u043e\u043a\u0443 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0441\u0442\u0440\u043e\u043a\u0438 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u0437\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435\r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Ren\u2019Py \/ Tom Rothamel\r\n\r\n\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u044f \r\n\u0442\u043e\u0433\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u0432\u044b\u0431\u043e\u0440\u0430 \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u0441\u0442\u0440\u043e\u043a \u0441 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u0432\u044b\u0431\u043e\u0440\u0430 \u0443\u043a\u0430\u0436\u0435\u043c \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u044b\u0435 \u0442\u043e\u0447\u043a\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b (label), \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b \u0438\u0433\u0440\u044b.\r\n\r\n\u0420\u0430\u043d\u0435\u0435 \u043c\u044b \u0443\u0436\u0435 \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0447\u0438\u043a \r\n\u043d\u0435 \u0441\u0432\u0435\u0440\u043d\u0451\u0442 \u0441 \u043f\u0443\u0442\u0438, \u0442\u043e \u0438\u0433\u0440\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f. \u0410 \u0435\u0441\u043b\u0438 \u043e\u043d \u043f\u043e\u0439\u0434\u0451\u0442 \u043f\u043e \u0442\u0440\u043e\u043f\u0438\u043d\u043a\u0435, \u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u0441\u0446\u0435\u043d\u0430 \u0438 \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435. \u0412\u043e\u0442 \u043a\u0430\u043a \u044d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432 \u043a\u043e\u0434\u0435.\r\n\r\nlabel path: scene bg wood with fade \"\u0421 \u043f\u0440\u0438\u0445\u043e\u0434\u043e\u043c \u043e\u0441\u0435\u043d\u0438 \u044d\u0442\u043e \r\n\u043c\u0435\u0441\u0442\u043e \u0441\u0442\u0430\u043b\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0440\u0430\u0448\u0435.\" \"\u041f\u043e\u0436\u0430\u043b\u0443\u0439, \u0441\u0442\u043e\u0438\u0442 \u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c\u0441\u044f.\" play sound \"rustle.mp3\" \"(\u0448\u0435\u043b\u0435\u0441\u0442 \u043b\u0438\u0441\u0442\u0432\u044b \u0438 \u0442\u0440\u0435\u0441\u043a \u0432\u0435\u0442\u043e\u043a)\" \"\u0417\u0434\u0435\u0441\u044c \u043a\u0442\u043e-\u0442\u043e \u0435\u0441\u0442\u044c...\" label road: \"\u042f \u0440\u0435\u0448\u0438\u043b \u043d\u0435 \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043c\u0435\u043b\u043e\u0447\u0430\u043c, \u0445\u043e\u0442\u044f \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0435 \u0434\u0443\u0448\u0438 \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u044f \u0443\u043f\u0443\u0441\u0442\u0438\u043b \u0447\u0442\u043e-\u0442\u043e \u0432\u0430\u0436\u043d\u043e\u0435...\" return\r\n\r\n\u0415\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0438\u0433\u0440\u0443 \u0438 \u0432\u044b\u0431\u0440\u0430\u0442\u044c \r\n\u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441 \u0442\u0440\u043e\u043f\u0438\u043d\u043a\u043e\u0439, \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u0441\u0446\u0435\u043d\u0430, \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u0443\u0442\u0438. \u041d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u0443 \u044d\u0442\u043e\u0433\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u043a\u0430 \u043d\u0435\u0442 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0444\u0438\u043d\u0430\u043b\u0430, \u043f\u043e\u0441\u043b\u0435 \u043e\u0442\u044b\u0433\u0440\u044b\u0448\u0430 \u043d\u0430\u0447\u043d\u0451\u0442\u0441\u044f \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0440\u0430\u043d\u0435\u0435 \u043d\u0435 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430, \u0430 \u0437\u0430\u0442\u0435\u043c \u0438\u0433\u0440\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0435\u0441\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0430 return. \u041e\u043d\u0430 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0435\u0446 \u0438\u0433\u0440\u044b, \u0435\u0441\u043b\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430 label.\r\n\r\n\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f NPC\r\n\r\n\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u0438\u0434\u0435\u044e \u044d\u043f\u0438\u0437\u043e\u0434\u0430 \u0441 \u0442\u0440\u043e\u043f\u0438\u043d\u043a\u043e\u0439 \r\n\u0438 \u043f\u043e\u043f\u0443\u0442\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u043c \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430. \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u043d\u0438\u043c, \u0432 \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0430\u0431\u0438\u0440\u0430\u0435\u043c show <\u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430>. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0433\u0435\u0440\u043e\u0439 \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0446\u0435\u043d\u0442\u0440\u0435, \u043d\u043e \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0432 \u043b\u044e\u0431\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u044d\u043a\u0440\u0430\u043d\u0430 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, at left (\u0441\u043b\u0435\u0432\u0430), at right (\u0441\u043f\u0440\u0430\u0432\u0430) \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0412 Visual Studio Code \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0432\u0441\u043f\u043b\u044b\u0432\u0430\u044e\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0441\u043b\u0435 \u043d\u0430\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 at.\r\n\r\n\u0415\u0441\u043b\u0438 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436 \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442 \r\n\u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u044d\u043c\u043e\u0446\u0438\u0438, \u0442\u043e \u043f\u0435\u0440\u0435\u0434 \u043a\u0430\u0436\u0434\u043e\u0439 \u0440\u0435\u043f\u043b\u0438\u043a\u043e\u0439, \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0430\u0435\u043c\u043e\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043a\u0446\u0438\u0435\u0439, \u043c\u044b \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435. \u041d\u0438\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u043a\u043e\u0434\u0435 \u0438 \u0433\u0435\u0439\u043c\u043f\u043b\u0435\u0435. \u0411\u0443\u043a\u0432\u0430 o \u043f\u0435\u0440\u0435\u0434 \u043d\u0430\u0447\u0430\u043b\u043e\u043c \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u2014 \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u0437\u0430\u0434\u0430\u043b\u0438 \u043f\u043e \u043e\u0431\u0440\u0430\u0437\u0446\u0443, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435.\r\n\r\nshow oakley normal o \"\u041f\u0440\u0438\u0432\u0435\u0442! \u042f \u041e\u043a\u043b\u0438. \u0410 \u0442\u044b, \u0432\u0438\u0434\u0438\u043c\u043e, \r\n\u0442\u043e\u0436\u0435 \u0432\u044b\u0448\u0435\u043b \u0438\u0437 \u0442\u043e\u0433\u043e \u0442\u0443\u043d\u043d\u0435\u043b\u044f?\" \"\u041e\u0442\u043a\u0443\u0434\u0430 \u0442\u044b \u0437\u043d\u0430\u0435\u0448\u044c?\" o \"\u042d\u0442\u043e \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043c\u0435\u0441\u0442\u043e, \u043e\u0442\u043a\u0443\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u044e\u0434\u0430 \u043f\u043e\u043f\u0430\u0441\u0442\u044c.\" show oakley think o \"\u041f\u043e \u043f\u0440\u0430\u0432\u0434\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u044f \u0441\u043f\u043b\u044e.\" show oakley normal o \"\u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u043d\u0435\u0432\u0430\u0436\u043d\u043e. \u041c\u043e\u0436\u0435\u0448\u044c \u043f\u043e\u043c\u043e\u0447\u044c \u043c\u043d\u0435 \u043d\u0430\u0439\u0442\u0438 \u0432\u043e\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f?\" \"...?\" o \"\u0414\u0430 \u043b\u0430\u0434\u043d\u043e \u0442\u0435\u0431\u0435! \u041f\u043e\u0439\u0434\u0451\u043c, \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u043c\u0441\u044f \u0441\u043e \u043c\u043d\u043e\u0439 \u043d\u0430 \u0445\u043e\u043b\u043c.\"\r\n\r\n\u0415\u0441\u043b\u0438 \u0438\u0433\u0440\u043e\u043a \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \r\n\u0440\u0430\u0437, \u0434\u043b\u044f \u043b\u0443\u0447\u0448\u0435\u0439 \u0438\u043c\u043c\u0435\u0440\u0441\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0439\u0442\u0435 \u0435\u0433\u043e \u0438\u043c\u044f \u0441\u0440\u0430\u0437\u0443, \u0430 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043d\u043e\u0432\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 define unknwn = Character('\u0422\u0430\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043d\u0435\u0437\u043d\u0430\u043a\u043e\u043c\u0435\u0446', color=\"#xxxxxx\". \u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u0433\u0434\u0430 \u0433\u0435\u0440\u043e\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f, \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435 \u0440\u0435\u043f\u043b\u0438\u043a\u0438 \u043e\u0442 \u0435\u0433\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0433\u043e \u0438\u043c\u0435\u043d\u0438.\r\n\r\n\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \r\n\u0432 \u0442\u0440\u0435\u0442\u044c\u044e \u043b\u043e\u043a\u0430\u0446\u0438\u044e. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0446\u0435\u043d\u0435 \u0443 \u043d\u0430\u0441 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0433\u0435\u0440\u043e\u0439. \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 Ren\u2019Py \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e NPC \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435, \u043e\u0434\u043d\u0430\u043a\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043e\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0430\u0432\u0438\u043b.\r\n\r\n- \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \r\n\u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043b\u0438\u0446, \u0438\u0445 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043e\u0434\u043d\u043e\u0433\u043e \u0437\u0430 \u0434\u0440\u0443\u0433\u0438\u043c.\r\n- \u041f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \r\n\u0438 \u0442\u043e\u043c \u0436\u0435 \u043c\u0435\u0441\u0442\u0435 \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0431\u0430 \u0441\u043f\u0440\u0430\u0432\u0430 (at right) \u0438\u043b\u0438 \u043e\u0431\u0430 \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 (at center). \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445 \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c.\r\n- \u0418\u0445 \u0444\u0430\u0439\u043b\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \r\n\u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, character a \u0438 character b. \u0418\u043d\u0430\u0447\u0435 \u0434\u0432\u0438\u0436\u043e\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0438\u0445 \u043e\u0434\u043d\u0438\u043c \u0438 \u0442\u0435\u043c \u0436\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c.\r\n\r\n\u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0432 \u043d\u043e\u0432\u043e\u0439 \u0441\u0446\u0435\u043d\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436 \r\n\u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0441\u043f\u0440\u0430\u0432\u0430, \u0430 \u0437\u0430\u0442\u0435\u043c \u0441\u043b\u0435\u0432\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432\u0442\u043e\u0440\u043e\u0439, \u043d\u0430\u043a\u043b\u0430\u0434\u043a\u0438 \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442. \u0412 \u043a\u043e\u0434\u0435 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:\r\n\r\nscene bg mountain with fade \"\u041e\u0447\u0435\u043d\u044c \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u043d\u043e \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c\u0441\u044f \r\n\u043d\u0430\u0432\u0435\u0440\u0445 \u0431\u044b\u043b\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u0442\u044f\u0436\u0435\u043b\u043e. \u0427\u0442\u043e \u0436\u0435 \u044d\u0442\u043e \u0437\u0430 \u0432\u043e\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0449\u0435\u0442 \u041e\u043a\u043b\u0438?\" show oakley look at right o \"\u0421\u043c\u043e\u0442\u0440\u0438, \u043a\u0430\u043a \u043a\u0440\u0430\u0441\u0438\u0432\u043e!\" play sound \"rustle.mp3\" \"(\u0448\u0435\u043b\u0435\u0441\u0442 \u043b\u0438\u0441\u0442\u0432\u044b \u0438 \u0442\u0440\u0435\u0441\u043a \u0432\u0435\u0442\u043e\u043a)\" show new oakley normal at left show oakley look at right of \"\u041e, \u044f \u0432\u0438\u0436\u0443 \u0432\u0441\u0435 \u0432 \u0441\u0431\u043e\u0440\u0435.\" show new oakley dialogue at left show oakley think at right o \"\u0410 \u0442\u044b \u0435\u0449\u0451 \u043a\u0442\u043e? \u0418 \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0448\u044c \u043f\u043e\u0447\u0442\u0438 \u043a\u0430\u043a \u044f?\" of \"\u041d\u0435 \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0439\u0441\u044f, \u044f \u0447\u0430\u0441\u0442\u044c \u0442\u0432\u043e\u0438\u0445 \u0432\u043e\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0439. \u0414\u0430\u0432\u0430\u0439 \u044f \u043f\u043e\u043c\u043e\u0433\u0443 \u0442\u0435\u0431\u0435 \u043d\u0430\u0439\u0442\u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435, \u043d\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0439 \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u0440\u0430\u043d\u043d\u0438\u043a\u0430.\" o \"\u041d\u043e \u043e\u043d \u0432\u0440\u043e\u0434\u0435 \u0431\u044b \u0438 \u043d\u0435 \u043f\u0440\u043e\u0442\u0438\u0432.\" show oakley normal at right show new oakley look at left o \"\u0412\u0435\u0434\u044c \u0442\u0430\u043a?\" \r\n\r\n\u0414\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0446\u043e\u0432\u043a\u0443\r\n\r\n\u0424\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0434\u0438\u043b\u0435\u043c\u043c\u0443 \u043c\u044b \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u043c \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \r\n\u0441 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0438\u0433\u0440\u044b. \u041d\u043e \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u0441\u044f, \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043a\u043e\u043d\u0446\u043e\u0432\u043a\u0438 \u2014 \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u0438\u0433\u0440\u043e\u043a \u043e\u0442\u0432\u0435\u0442\u0438\u0442 \u0443\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e.\r\n\r\n\u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u0440\u0438\u0446\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0442\u0432\u0435\u0442\u0430 \u043c\u044b \u0432\u043d\u043e\u0432\u044c \r\n\u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0433\u0434\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0435 \u043b\u0438\u0446\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0438\u0434\u0442\u0438 \u043f\u043e \u0434\u043e\u0440\u043e\u0433\u0435, \u043d\u0435 \u0441\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044f. \u042d\u0442\u043e\u0442 \u0441\u0435\u0433\u043c\u0435\u043d\u0442 \u0441\u0442\u0430\u043d\u0435\u0442 \u0443\u0441\u043b\u043e\u0432\u043d\u043e\u0439 \u043f\u043b\u043e\u0445\u043e\u0439 \u043a\u043e\u043d\u0446\u043e\u0432\u043a\u043e\u0439.\r\n\r\n\u041d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 \u043d\u0438\u0436\u0435 \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \r\n\u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0445 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u043e\u0432. \u0412 \u0441\u043a\u0440\u0438\u043f\u0442\u0435 \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 {b}{\/b} \u2014 \u044d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u043b\u043e\u0432\u0430 \u0436\u0438\u0440\u043d\u044b\u043c \u0448\u0440\u0438\u0444\u0442\u043e\u043c, \u0447\u0442\u043e \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a.\r\n \r\n\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442: Visual Studio Code \/ Microsoft\r\n\r\n\u0418 \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u0442 \r\n\u0432\u0441\u0435 \u0441\u044e\u0436\u0435\u0442\u043d\u044b\u0435 \u0440\u0430\u0437\u0432\u0438\u043b\u043a\u0438 \u0432 \u0438\u0433\u0440\u0435.\r\n\r\n\u0415\u0441\u043b\u0438 \u0440\u0430\u0431\u043e\u0442\u0430 \u043d\u0430\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c \u0437\u0430\u043a\u043e\u043d\u0447\u0435\u043d\u0430, \u0435\u0433\u043e \r\n\u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0431\u0438\u043b\u0434 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u00ab\u041f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u044b\u00bb (Build distributions). \u0412 \u0438\u0442\u043e\u0433\u0435 \u0431\u0443\u0434\u0435\u0442 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0430\u0440\u0445\u0438\u0432 \u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0443\u0436\u0435 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043b\u0430\u0443\u043d\u0447\u0435\u0440\u0430.\r\n\r\n\u0418\u0442\u043e\u0433\r\n\r\n\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 Python, \r\n\u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u043a\u043e\u0440\u043e\u0442\u043a\u0443\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u043d\u0430 \u0434\u0432\u0438\u0436\u043a\u0435 Ren\u2019Py \u0441\u043e \u0437\u0432\u0443\u043a\u043e\u0432\u044b\u043c \u0438 \u043c\u0443\u0437\u044b\u043a\u0430\u043b\u044c\u043d\u044b\u043c \u0441\u043e\u043f\u0440\u043e\u0432\u043e\u0436\u0434\u0435\u043d\u0438\u0435\u043c, \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u0430\u0441\u0441\u0435\u0442\u0430\u043c\u0438 \u0438 \u0434\u0430\u0436\u0435 \u0441\u044e\u0436\u0435\u0442\u043d\u044b\u043c\u0438 \u0440\u0430\u0437\u0432\u0438\u043b\u043a\u0430\u043c\u0438.\r\n\r\n\u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u044d\u0442\u0443 \u043c\u0438\u043d\u0438-\u0438\u0433\u0440\u0443 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \r\n\u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438 \u043a\u043e\u0434\u0430. \u0412\u0435\u0434\u044c \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u2014 \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043c\u0430\u043b\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u0430 Ren\u2019Py. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u043b\u043b\u044e\u0437\u0438\u044e GIF-\u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0439 (\u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0441 \u043f\u043e\u043a\u0430\u0434\u0440\u043e\u0432\u044b\u043c \u0432\u044b\u0432\u043e\u0434\u043e\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f), \u0443\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e \u0438\u0433\u0440\u044b, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043c\u0438\u043d\u0438-\u043f\u043e\u0440\u0442\u0440\u0435\u0442\u044b \u043a \u0434\u0438\u0430\u043b\u043e\u0433\u0430\u043c, \u0430 \u043f\u0440\u0438 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0437\u0432\u0451\u0440\u043d\u0443\u0442\u043e\u043c \u0441\u044e\u0436\u0435\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0444\u043b\u0430\u0433\u0438 \u2014 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0445\u043e\u0434 \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u0438\u043b\u0438 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439 \u043a \u0438\u0433\u0440\u043e\u043a\u0443 \u0437\u0430 \u0441\u0447\u0451\u0442 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0432 \u043a\u043e\u0434\u0435. \u041d\u043e \u0447\u0442\u043e\u0431\u044b \u043e\u043a\u043e\u043d\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0432\u0430\u043c \u044d\u0442\u043e\u0442 \u0434\u0432\u0438\u0436\u043e\u043a \u0438\u043b\u0438 \u043d\u0435\u0442, \u043d\u0443\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0435\u0433\u043e \u0434\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u0430 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438.\u041f\u043b\u044e\u0441\u044b Ren\u2019Py\r\n\r\n- \u041b\u0435\u0433\u043a\u043e \u043e\u0441\u0432\u043e\u0438\u0442\u044c. \u0412 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0442\u0435\u043c, \u043a\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \r\n\u043d\u0435\u0437\u043d\u0430\u043a\u043e\u043c \u0441 Python, \u043d\u043e \u0438 \u043d\u0435 \u0437\u043d\u0430\u0435\u0442 \u043e\u0441\u043d\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0446\u0435\u043b\u043e\u043c. \u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u0434\u0430\u0451\u0442 \u0448\u0430\u043d\u0441 \u043b\u044e\u0434\u044f\u043c \u0431\u0435\u0437 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043d\u0430\u0432\u044b\u043a\u043e\u0432 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0438\u0433\u0440\u0443.\r\n- \u0411\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432. \r\n\u0412 \u0421\u0435\u0442\u0438 \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0443\u0440\u043e\u043a\u043e\u0432 \u043f\u043e \u0434\u0432\u0438\u0436\u043a\u0443, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0432\u0438\u0434\u0435\u043e.\r\n- \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438\u0433\u0440\u0443 \u043d\u0430 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u043d\u044b\u0445 \r\n\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445.\u041c\u0438\u043d\u0443\u0441\u044b Ren\u2019Py\r\n\r\n- \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0436\u0430\u043d\u0440\u043e\u0432. \u0412 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \r\nRen\u2019Py \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d \u043d\u0430 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u043e\u0432\u0435\u043b\u043b\u044b, point-and-click-\u0438\u0433\u0440\u044b \u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u044b \u0436\u0438\u0437\u043d\u0438.\r\n- \u0427\u0435\u043c \u0434\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 \r\n\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u043e\u0432\u0435\u043b\u043b\u044b, \u0442\u0435\u043c \u0443\u0433\u043b\u0443\u0431\u043b\u0451\u043d\u043d\u0435\u0435 \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u0438\u0437\u0443\u0447\u0430\u0442\u044c Python.\r\n- \u041e\u0433\u0440\u043e\u043c\u043d\u0430\u044f \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u044f \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \r\n\u043d\u043e\u0432\u0435\u043b\u043b. \u0422\u0430\u043a\u0436\u0435 \u043d\u0435 \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0438\u0433\u0440\u043e\u043a\u043e\u0432 \u0441\u043a\u043b\u043e\u043d\u043d\u044b \u043a \u043e\u0431\u0435\u0441\u0446\u0435\u043d\u0438\u0432\u0430\u043d\u0438\u044e \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0436\u0430\u043d\u0440\u0430. \u0427\u0442\u043e\u0431\u044b \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435, \u043f\u0440\u0438\u0434\u0451\u0442\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0438\u0442\u044c \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u0443\u0441\u0438\u043b\u0438\u0439.\r\n\r\n\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0441\u044b\u043b\u043a\u0438\r\n\r\n- \u041e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f Ren\u2019Py \r\n. \u041e\u0433\u0440\u043e\u043c\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e\u0431\u043e \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u0445 \u0434\u0432\u0438\u0436\u043a\u0430. \u041c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.\r\n- \u0424\u043e\u0440\u0443\u043c Lemma Soft . \u0421\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \r\n\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043d\u043e\u0432\u0435\u043b\u043b, \u0433\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u0422\u0430\u043a \u043a\u0430\u043a \u0444\u043e\u0440\u0443\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u0430\u0432\u043d\u043e, \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 Ren\u2019Py, \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432 \u0442\u0435\u043c\u0430\u0445, \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043b\u0435\u0442 \u043d\u0430\u0437\u0430\u0434 \u0438 \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u0447\u0442\u0435\u043d\u0438\u044f \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0430\u0442\u0443 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438. \u0410 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u043a \u043a\u0430\u043d\u0430\u043b\u0443 \u0444\u043e\u0440\u0443\u043c\u0430 \u0432 Discord.\r\n- Feniks Development . \u0412\u0437\u0433\u043b\u044f\u0434 \u043d\u0430 Ren\u2019Py \r\n\u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430. \u0420\u0435\u0441\u0443\u0440\u0441 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e \u0434\u0432\u0438\u0436\u043a\u0443, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0433\u043b\u043e\u0441\u0441\u0430\u0440\u0438\u0439, \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0438 \u0443\u0440\u043e\u043a\u0438.\r\n- \u041f\u043b\u0435\u0439\u043b\u0438\u0441\u0442 \u0441 \u0443\u0440\u043e\u043a\u0430\u043c\u0438 \u043f\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \r\n\u043d\u043e\u0432\u0435\u043b\u043b\u044b \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 [ https:\/\/www.youtube.com\/playlist?list=PLlZCSNfSKux2hXoo46rbBIVzl-7pZFRQh ] \u043e\u0442 \u044e\u0442\u0443\u0431-\u043a\u0430\u043d\u0430\u043b\u0430 Zeil Learnings. \u0422\u0430\u043a\u0436\u0435 \u043d\u0430 \u043a\u0430\u043d\u0430\u043b\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043c\u043d\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043f\u043e Ren\u2019Py, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0434\u043b\u044f \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0420\u0435\u0441\u0443\u0440\u0441 Feniks Development \u043e\u0442\u043c\u0435\u0447\u0430\u0435\u0442 [ https:\/\/feniksdev.com\/resources\/#:~:text=coding%20with%20Ren%E2%80%99Py-,Notes,-%3A%20The%20Create%20a ] , \u0447\u0442\u043e \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u0440\u043e\u043a\u0430\u0445 \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u044b \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043a\u043e\u0434\u0435, \u043d\u043e \u043e\u043d\u0438 \u043d\u0435 \u0441\u0442\u043e\u043b\u044c \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b.\r\n\r\n\r\n\u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435, \u0447\u0442\u043e Ren\u2019Py \u2014 \u044d\u0442\u043e \u043f\u0440\u0435\u0436\u0434\u0435 \r\n\u0432\u0441\u0435\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044b\u0439 \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0438\u0441\u0442\u043e\u0440\u0438\u0439, \u0430 \u043d\u0435 \u0434\u043b\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0438\u0445 \u0441 \u043d\u0443\u043b\u044f. \u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u043e\u0432\u0435\u043b\u043b\u044b \u2014 \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441 \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439, \u0438 \u043f\u043e\u0440\u043e\u0439 \u043e\u0431\u044a\u0451\u043c \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043d\u0438\u0445 \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c 100 \u0442\u044b\u0441\u044f\u0447 \u0441\u043b\u043e\u0432. \u0412 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432, \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0430 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u043f\u043e\u0432\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0438\u0441\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u043d\u0430\u0432\u044b\u043a\u043e\u0432 \u0438 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0445 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0441\u043e\u0431\u043e\u0433\u043e \u043c\u0430\u0441\u0442\u0435\u0440\u0441\u0442\u0432\u0430.","author":{"@type":"Person","name":"\u041b\u0435\u043e\u043d \u0411\u0430\u043b\u0431\u0435\u0440\u0438","url":"https:\/\/skillbox.ru\/media\/authors\/leon-balbery\/"},"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\/vsye-o-renpy-konstruktore-dlya-razrabotki-vizualnykh-novell\/"},"datePublished":"2023-11-02T07:30:00Z","dateModified":"2025-02-28T10:49:42Z","image":{"@type":"ImageObject","url":["https:\/\/248006.selcdn.ru\/main\/iblock\/250\/25043357133072b7e808ec372314a429\/50678483f9e41afda6d8a41bb47ee407.png"]},"description":"\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0434\u0432\u0438\u0436\u043a\u0430 \u0438 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0438\u0433\u0440\u0443."}
</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/vsye-o-renpy-konstruktore-dlya-razrabotki-vizualnykh-novell/" 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>