Непятничные эпиотические: решение вопроса рекурсии

Nov 06, 2018 18:13

Вопрос рекурсии для нашего повествования краеугольный: по прочтении Сказок сироты, текста неровного, но весьма познавательного в смысле инструментария нарратива, я твёрдо решил использовать принцип рекурсии, то есть сюжетной вложенности, истории в истории, в детективной (J)RPG по вселенной Тентаклиады. Осталась одна маленькая проблема: как реализовать сию многомерную драматургию средствами RPG Maker'а? На решение этой проблемы ушла приличная горсть времени, помимо чего я лишь немного успел освежить портреты персонажей и начал приводить в порядок большую новую локацию, которая пока ещё не готова увидеть свет. Поэтому сегодня я расскажу о художественной рекурсии, перемежая лицами в уже знакомых декорациях.




Как работает рекурсивный нарратив в игре? Предположим, героиня вступает в разговор со словоохотливым NPC, тот пускается в развёрнутые воспоминания, и действие игры переносится в эти самые воспоминания. Теперь мы управляем рассказчиком (или иными героями истории рассказчика) до тех пор, пока ему не надоест говорить, после чего игра возвращается к основному повествованию. Разумеется, хорошая рекурсия предполагает множественные уровни погружения: во «встроенной» истории кто-то опять заводит длинный рассказ, и мы уходим на третий уровень, а там ещё, и ещё, и так далее.




Но для начала будет достаточно простой, двухуровневой системы вложенности. Поменять действующего героя, перенестись в другую локацию, используя всяческие потемнения экрана и глубокомысленные прелюдии технически очень просто. Одна из принципиальных сложностей - это структурированный инвентарь RPG Maker'а. Очевидно, что, перейдя к воспоминаниям NPC, мы должны удалить из инвентаря все предметы, имеющиеся в распоряжении героини. А потом, когда вложенная сюжетная арка закончится, вернуть всё в целости и сохранности, чтобы арсенал был в точности как на момент начала разговора.




Как это сделать? На помощь мне пришёл плагин MrTS_SaveItems.js, позволяющий не только сохранять, удалять и восстанавливать предметы инвентаря целиком, но и по категориям (оружие, доспехи, ключевые предметы и т.д. - в зависимости от того, какие категории предметов в вашей игре заявлены и есть ли они вообще).




На первый взгляд, всё удалось с первого раза: инвентарь очищался при переходе к вложенному повествованию и вновь наполнялся ранее сохранённым при возврате к основной сюжетной линии. Но вот беда: я обнаружил, что два предмета не вернулись на свои места - снятый ради эксперимента доспех (в экипированном состоянии этот доспех сохранялся) и кусочек ГРАНА ПАРМЕДЖАНО, самого вкусного сыра во вселенной Тентаклиады, восстанавливающий 500 хитпоинтов! Все повторные тесты с незначительными вариациями подтвердили: возвращаются все сохранённые предметы, кроме этих двух.




В чем же дело? После длительных и мучительных копаний гуманитарного разума в настройках я, наконец, увидел корень бед. В типах RPG Maker'а все предметы оформлены в виде пронумерованных списков от одного до максимального. По какой-то (до сих пор мне неясной) причине при восстановлении инвентаря начисто исчезали все предметы, стоящие в списке под первым номером. Если в первую ячейку поставить другой предмет - исчезал он. Почему так, не имею представления. Но я вышел из положения как настоящий титан программирования с костылями и велосипедами: я просто убрал все предметы с первых строчек. И всё заработало!




Следующим шагом мне нужно будет понять, как быть с многоуровневой вложенностью: там ведь, возможно, придётся последовательно очищать и восстанавливать разные комплекты старательно накопленного скарба. Но это потом. Пока же - как-то так, симпатичнейшие, как-то так.

Эпиотика, gamedev, Тентаклиада, картинки

Previous post Next post
Up