Techlog #5. Обычный набор вопросов для всех персонажей [ru]
Added 2023-09-04 21:00:00 +0000 UTC
Как вы могли заметить, в роадмапе на обновление есть пункт о Common questions poll. Сейчас попытаюсь рассказать что это, и как я это реализовал. Совсем ничего не сложного, но вероятно этого придётся убрать из обновления, так как выйдет сыро :c
Это код, который генерирует обычные вопросы (menu) в диалоге. Сам класс SequenceStep довольно примитивный. Он ничего особо не умеет. Просто чтобы не писать кучи куда в самом диалоге - я решил собрать это таким образом. Вот так выглядит бойлерплейт для инициализации диалога с каждым персонажем в игре. Секвенции бывает основные (те что сюжетные), бывают второстепенные (типа занятия у Мирины), и теперь ещё есть common.
Для программного вывода этих вариантов в меню - используется конструкция из документации RenPy.
$sequence_menu_line = search_sequence(astra_main_sequences, astra_sequence_step) - по сути просто проходится по массиву и забирает секвенции которые доступны для персонажа (по полю requirments из класса SequenceStep).
Для того чтобы персонажи описывали внешний вид героя - я ориентируюсь на тэги, которые я заранее прописывал для одежды. Тэги - просто лист из названий. Например: кроптоп у персонажа имеет тэги ["casual", "femine"].
Чтобы узнать, сколько каких тэгов по количеству у героя - написал следующую функцию.
Сначала превращаем предметы на нашем персонаже в лист. Потом записываем все значения tags в другой лист и после делаем этот лист плоским. Возвращаем словарь (dictionary) значений. Получаем примерно такой результат. На основе этих значений - пишу диалоги для каждого персонажа. Но понял, что кажется - это довольно большое количество диалогов. Поэтому не уверен на 100%, стоит ли из-за этого задерживать релиз ещё.