Glavniy.Dusnhila

Glavniy.Dusnhila
Не Душнила

Пикабушник
28К рейтинг 10 подписчиков 20 подписок 33 поста 8 в горячем
Награды:
5 лет на Пикабу
40

Фреймворк и визуальный редактор для квестов на Ren'Py

Привет, Лига!
Появилось свободное время и захотелось мне воплотить давнюю мечту - перенести один из моих придуманных сюжетов в игру. История мрачная, жуткая, отлично подходящая под жанр триллер, а может даже немного и хоррор. Активных действий в ней не так много, зато диалогов и размышлений - тьма. Поэтому было решено взять Ren'Py, вооружиться ИИшками, чтобы были заглушки, на которых можно все тестировать, и начать изучать доселе невиданный мир разработки видеоигр. Нужно оговориться, что бэкграунд у меня довольно посредственный, я бэк-разработчик на питухоне, игрушки раньше не делал, но все бывает в первый раз.

В какой-то момент я задумался. что в рамках новеллы мне тесно, и мне вспомнилась одна из моих любимых игр - The 7th Guest. Квест с видом от первого лица, в котором можно было передвигаться по объемным экранам-сценам, кликать на различные предметы, декорации и головоломки. Затем мне вспомнилась другая не менее значимая ля меня игра - Zero Escape. Визуальная новелла с квестовыми сегментами аля "выберись из комнаты". "Вот оно!" - подумалось мне, буду делать визуальную новеллу с квест сегментами. Геймплей интереснее, история и персонажи все еще во главе всего. Но вот проблема, Ren'Py не поддерживает такого из коробки. Надо было что-то придумать.

И я придумал! Вместо того, чтобы насиловать не предназначенный для этого движок, я начал писать фреймворк на его основе. Ren'Py сам по себе все еще отвечает за визуальную новеллу, а фреймворк отвечает за квестовые сегменты. Разделяй и властвуй! Смысл всего затеянного был в удобстве и универсальности написания квестовых комнат для любого разработчика, именно из этого я исходил, когда начинал его писать. Но давайте от описаний к другим описаниям :D

Главные плюсы:
1) Распределение обязанностей. Для построения квестов существуют такие сущности: квест - это весь сегмент от точки входа до точки выхода(коих может быть много). Комната - это часть квеста, которая олицетворяет собой одно замкнутое(хотя это необязательно) помещение. Сцена - это часть комнаты. Один из экранов, которые могут быть показаны в комнате. Это могут быть и отдельные виды камер, например, на каждую из стен в квадратной комнате, приближение чего-либо или сцена отдельной головоломки. К сцене так же крепятся другие сущности: хотспот - зона взаимодействия мира и мыши, а так же объект - чаще всего пнг-картинка, которая представляет из себя какую-то зону интереса, может быть отображена или скрыта. А к этому всему(хотспотам, объектам, сценам и комнатам) могут быть применены условия и события. Еще два ключевых элемента управления квестом. Пока не устали? Дальше интереснее.
2) Универсальность. Благодаря внутренней структуре разработчики могут писать свои расширения(extension). По умолчанию есть несколько основных условий и несколько основных событий. Например, перейти на другую сцену, добавить предмет в инвентарь, сделать хотспот кликабельным - это примеры базовых событий. А значение флага(еще одного ключевого элемента), выбран ли предмет в руке - это примеры базовых условий. И события, и условия, и даже какие-то новые ключевые элементы разработчик может добавлять с помощью расширений. Достаточно лишь описать его по шаблону в json файле и прописать логику на примитивном пайтоне. Таким образом можно добавить различные поведения для игры: таймеры, счетчики, систему репутации, здоровье, рассудок и прочее-прочее, на что хватит фантазии.
3) Визуальный редактор. Это отдельная гордость. Не нужно больше по несколько часов настраивать квесты с помощью кода, достаточно лишь открыть редактор, сделать все необходимое в нем, сохранить и продолжить писать код новеллы на сценарном языке Ren'Py.

И именно на редакторе хотелось бы остановиться поподробнее и наконец показать, что это, и с чем это едят.

Главное окно редактора

Главное окно редактора

Я ведь говорил про универсальность? Редактор сам по себе является отдельным приложением, написанном на пайтоне с использованием PySide6. Изначально редактор был прямо внутри игры, назывался Developer Mode, но Ren'Py так плохо рендерил большое количество изменяемых объектов, что было принято решение сделать редактор выносным. Открываете редактор - выбираете любой проект, хоть уже существующий, хоть пустой, работаем со всем, что есть. А затем нужно всего лишь уcтановить фреймворк. Как? Очень просто, это уже встроенно в редактор.

При открытии проекта нас встречает экран первоначальной настройки

При открытии проекта нас встречает экран первоначальной настройки

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

Окно установки фреймворка

Окно установки фреймворка

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

Главный экран приложения с подгруженным демо-стендом

Главный экран приложения с подгруженным демо-стендом

И вот мы приступаем к работе. Красные выделены хотспоты, синим - выбранный в данный момент объект. Все хотспоты подписаны, не потеряемся. Разберем кратко интерфейс. К сожалению, менюшек слишком много, а я не UI\UX-дизайнер, чтобы сделать это максимально красиво, поэтому как видим, есть ползунки, менюшки просто листаются вниз-вверх.

Начнем с левого блока:
1) Список квестов
2) Список комнат
3) Список сцен
4)Список флагов(неких состояний, на которых завязаны условия и события)

Правый блок:
5) Инспектор, показывающий нам свойства выбранного хотспота или объекта
6) Список объектов, находящихся на выбранной сцене с возможностью добавлять\редактировать\дублировать и ставить один объект выше другого(какой из них на каком плане находится)
7) Список хотспотов с возможностью переименования, удаления или добавления вершин. Да, забыл упомянуть, хотспот - это некий полигон, состоящий из соединенных вершин.

Продолжение правого блока

Продолжение правого блока

8) Настройка условий активности(кликабельности) и видимости хотспота и только видимости у объекта. Сами объекты не являются кликабельными.
9) Настройка взаимодействия хотспота - главная магия алгоритмов.

Переключим сцену на table_closeup, то есть "Стол крупным планом". В самой игре это работает по нажатию на огромный хотспот, расположенный по всему столу.

А вот и ключик

А вот и ключик

Здесь мы видим два хотспота: back - вернуться на сцену main(Общий вид), и key_hotspot, который отвечает за подбор ключа в инвентарь. Сам ключ - это пнг-изображение, а в рамках фреймворка - объект. Объект сам по себе не кликабельным, с ним нельзя взаимодействовать, это просто изображение, которое можно вертеть по своей оси и которому можно изменить размер. Поэтому рисуем вокруг него хотспот и задаем правила в поле, которое чуть раньше я описывал в правом блоке под номером 9

А вот и простой алгоритм

А вот и простой алгоритм

Настраивается все довольно просто, все флаги, события, условия - это выпадающие списки, не нужно ничего особо запоминать, все сделано для удобства. В данном случае алгоритм очень простой и понятный:
Условие: Если флаг key_taken = false, то происходят 4 действия в заданном порядке:
1) Выводится сообщение: "Вы взяли ключ",
2) Ключ добавляется в инвентарь как предмет,
3) Флагу key_taken присваивается значение True
4) Совершается переход на сцену main

В игре ключика бы уже не было на столе

В игре ключика бы уже не было на столе

Флаг visible_when, существующий у всех объектов, становится равен false, то есть ключ перестает быть видимым, если флаг key_taken перестанет быть false. Все просто и лаконично.

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

Спасибо за ваше внимание, собратья игроделы!

И напоследок демонстрация, как этот квест выглядит внутри самой игры.

Показать полностью 8 1
41

Мужчина ищет родственную душу с похожими интересам(Москва и северо-запад МО)

Бобрового бремени уток!

Мне 29 лет, я большой и упитанный все еще молодой человек, который недавно вышел из длительных отношений и наконец-то смог понять, чего именно ему хочется от отношений и от близкого человека.
А хочется вот чего:
1) Разделять интересы и хобби(видеоигры, кулинария, фильмы\сериалы\аниме). Это самое основное, что я понял за все время отношений - хотя бы какие-то интересы должны совпадать и вам должно быть интересно вместе. Приготовить что-нибудь вкусное, а затем засесть за World of Warcraft, Split Fiction или какой-нибудь сериал за ТВ - это отличный вечер.
2) Уметь общаться напрямую и без намеков(с ними тоже можно, но без перебора)
3) Грамотно излагать мысли и уметь поддержать беседу о чем-угодно. Разговор о World of Warcraft может плавно перетечь в обсуждение экономических проблем Ночного Дозора, а затем и вообще перерасти в постель. Такие нынче времена)
4) Иметь представление о life-work balance. Да, работать по 12 часов в день - это прикольно, пока не начнешь замечать, что крыша понемногу съезжает, а это не есть хорошо.
5) Пуритане и прочие блюстители морали отвернитесь. Быть открытой и раскрепощенной к разнообразным экспериментам в сексе. Да, мне все еще интересны различные практики в различных областях. Без пограничных извращений, конечно, но хотя бы про БДСМ в разных ролях не забываем, на лицо присаживаемся, на нем вполне удобно.

Ну и теперь, когда отсеялись почти все девушки и несколько мужчин(мы все же очень любопытные) могу рассказать о себе:
Здесь и в дальнейшем можно звать меня Бэмби, такое прозвище закрепилось за мной в разных тематических чатах и группах, а мне и понравилось. Мне 29 лет, я довольно большой - 180см рост и 130кг вес, постепенно пытаюсь похудеть, есть тату, когда-то давно был пирсинг, ношу очки. Курю, пью, ругаюсь матом. Если ты тоже - хорошо. Если нет, то что-то из этого я могу и поменять, т.к. это не основа моей жизни, разве что кроме мата, очень уж он звучный. Работаю программистом со всеми вытекающими: душнила, любитель техники, перфекцехуист и где-то даже немного педант, но у этого есть и свои плюсы - аккуратность, чистоплотность, умение выстраивать свою жизнь так, как хочется и нужно.
Я довольно открытый к разному человек, в том числе и к отношениям, последние 6 лет были открытые отношения, и в целом это неплохой опыт. Хотелось бы вернуться к моногамии, но чем черт не шутит, рассмотрим любые ваши предложения)
Считаю важным заметить: у меня прекрасные отношения с родителями и старшей сестрой, хорошие отношения с несколькими бывшими(мы все же расставались друзьями без криков и ругани) и в целом у меня нет бед с головой и сопутствующих войн с родственниками и окружающими, чего ожидаю и от девушки.

А сейчас, когда осталась только парочка читающих - мои предпочтения:
1) пол - женский
2) рост - не важен
3) вес - желательно не больше моего, но фетиш на полненьких девушек у меня есть, да
4) возраст - от 22 до 32, хотя опять же, чем черт не шутит
5) тату, пирсинг и прочее - положительно
6) голова не забита бредом вроде радикального феминизма, астрологии, таро и прочего(да, я за феминизм, но против радикального отношения к чему-угодно, и да, у меня есть несколько наборов карт таро, но я в них не верю, они просто прикольные)

Для связи можно использовать тг: @lucifervalenstein или тут в комментариях, если тг не удобен.

Всех обнял-приподнял

UPD:

Как выяснилось из комментариев и сообщений в тг, не все понимают, что значат мои интересы. Это буквально основа моей жизни и ищу я человека близкого к этому. Проводить все свободное время за игрушками, ездить на игровые фесты, засиживаться в настолки допоздна, обсуждать самые мелкие детали в играх\сериалах или наоборот смотреть громкие трейлеры на выставках вроде Summer's game fest - вот этого я ищу в партнере, чтобы нам никогда не было скучно.

Показать полностью
2

И продолжаем тему халяля


Tornado, сука, russian! Энергетический напиток, содержащий ПАВ, оказывается, халяль. Здрасьте, приехали. Когда свинину маркировать начнете? Деньги же не пахнут.

Показать полностью 2

Парадокс Монти Холла или стоит ли менять свой выбор

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

Парадокс Монти Холла или стоит ли менять свой выбор


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

И как я уже говорил, мне нравится именно такой формат. Рассказать о парадоксе, чтобы каждый человек сам мог подумать над его решением(если оно есть), причем желательно без участия гугла.

Показать полностью
84

Ответ на пост «Какие кулинарные привычки мешают вкусно готовить»2

Есть, конечно и дельные советы, но есть и полный бред.

5. В соусе пасту и доготавливают. И да, итальянцы так и делают, вспомнить даже их стандартные карбонару, альфредро.

9. Тефлон используют крайне редко, сейчас есть кучи других антипригарных поверхностей. Более того, некоторые созданы для того, что использовать с ними металлические приборы.

12. Бред собачий, просто нужна сковорода с нормальным покрытием, толстыми стенками и дном. Чугун, нержавейка и прочее - это дешевый заменитель качественных современных сковород.

14. Да, да, и еще раз да. Тупые ножи непредсказуемы и в любой момент могут съехать с продукта в любом направлении. Острый нож режет по заданной траектории, поэтому он безопаснее.

Ну и лично от меня:

1. Слишком строгое следование рецепту и слишком большое отхождение от рецепта, если только учишься готовить. Строгое следование рецепту не научит готовить самостоятельно, слишком большое отхождение превратит еду в мусор(если, конечно, готовит не гений).

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

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

4. Наваристые костные бульоны варятся долго. Для курицы это 1.5-3 часа, для свинины или говядины - 4-5 часов, для рыбы(головы, хребты, хвосты) - 1-2 часа. Можно, конечно же, варить и меньше, но насыщенности будет так же меньше. Бульон же составляет львиную долю вкуса в супе или соусе. P.S. Это если мы не говорим о условных раменах, в которых бульоны могут вариться и по 10-12 часов.

5. Жарить или запекать мясо по времени, а не по температуре. Куски чаще всего разные, внутренняя температура тоже. Использование термощупа невероятно сильно облегчает готовку цельных кусков мяса.

6. Молотые приправы из пакетика в магазине и свежемолотые дома - две разные приправы с разным результатом блюда. Когда-то нужны свежие, когда-то пакетированные.

Показать полностью

А пикабу как всегда

Повылазили десятки постов про "А кто такой тот Паша Техник?", "Да я не знал, что он жил, зато теперь знаю, что он умер". Ну молодец, возьми член с полки и засунь себе поглубже в глотку. Лицемерны пикабу как всегда. Умер Вэл Килмер - все вокруг плачут, умер Паша Техник - все вокруг пишут про него хуйню. Хотя оба развлекали своих зрителей, причем тот же Килмер абсолютно бесталанно. Из-за наркотиков? Так того же Горшка вспоминают с таким уважением, хотя тот еще нарик был, который от наркотиков же и загнулся. Пикабу как всегда...

Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества