Динамический текст в текстовой игре на реальном примере диалога. Часть 2.
Привет. Меня зовут Игорь. Я разработчик игры «Цена Истины».
Это текстовое приключение с захватывающим сюжетом о молодом ученом из Москвы, отправившемся в Амазонию на поиски таинственного артефакта.
Много лет он манит исследователей, но все, кто пытался его найти, бесследно исчезают, оставляя лишь обрывки дневников. Удастся ли Алексею разгадать загадку и достичь своей цели?
Мы плавно подходим к концу диалога. Но и тут есть чем удивить внимательного игрока. Если "упарываться" с динамическим текстом, так по полной.
Посмотрим на нашу блок схему дальше..
Далее нам надо проверить баланс карты.
В начале я писал, что звонок супруге равен 20 единицам телефонной карты.
Это рождает следующие ситуации:
- Игрок купил карту на 10. Диалог прервался, он сходил купил ещё карту на 10 единиц. Баланс к концу разговора будет нулевой.
- Игрок купил карту на 20 единиц. Разговор не прерывался. Но в данный момент мы должны получить уведомление о том, что карточка заканчивается. По окончанию диалога у нас будет нулевой баланс на карте.
- Игрок купил карту на 10. Диалог прервался, он сходил купил ещё карту номиналом более 10 (мы не знаем, какую точно). Но факт в том, что это уже вторая карта, с которой он звонит. Баланс к концу разговора будет зависеть от того, насколько единиц у него вторая карта. Карточка точно не закончится.
- Игрок купил карту на 30 или 50 единиц и совершил звонок супруге. Тогда у нас не прерывался звонок, и мы заканчиваем телефонный разговор с балансом в 10 или 30 единиц на карте.
Рассмотрим все эти ситуации и сравним, что поменяется в тексте.
Итак, рассматриваем первый вариант. Карточка 10 + 10:
Мы слышим звуковой сигнал об окончании баланса. Алексей видит на экране, как он стремительно уменьшается. Он говорит об этом Лене.
Мы слышим звуковой сигнал об окончании баланса. Алексей видит на экране, как он стремительно уменьшается. Он говорит об этом Лене.
Но в тексте мы чётко видим: карточка снова заканчивается. То есть это уже не первая карточка.
Давайте рассмотрим второй вариант. Карточка на 20.
Тут почти нет отличий. Так же звуковой сигнал, так же заканчивается баланс. Отличие только во фразе «Лена, карточка заканчивается». Уже без «снова».
Третий и четвёртый варианты в данном случае ничем не отличаются, так как баланс на карте у нас больше, чем нужно для звонка. Поэтому нет звукового сигнала, и Алексей ничего не говорит про карту.
Есть ещё последняя сцена в этом диалоге. Алексей кладёт трубку.
Смотрим блок-схему.
Напоминаю. Это ветка второй части диалога с женой. Ключевым условием попадания в эту ветку является вставленная карта в таксофон равна стоимости второй части звонка (10 единицам).
Ключевые условия. Разговор либо прерывался, либо нет.
Тут возможны только 2 сценария, которые попадут под это условие:
- Карточка 10+10. Звонок прерывался.
- Карточка на 20. Звонок не прерывался. Т. к. перед началом второй части диалога у нас уже спишется с карты 10 единиц кредитов. Баланс к началу второго диалога будет равняться 10. То есть подходит под условия этой ветки.
И так, первый вариант.
Баланс заканчивается. Мы видим довольно резкую реакцию: «Проклятые два нуля». Что говорит о том, что мы их видим уже не в первый раз. В подтверждение этому — слово «очередной». Мы ведь действительно потратили две карточки по 10 единиц. Всё это отражено в текущем тексте.
Второй вариант. Карточка 20.
Здесь мы тоже видим сообщение о том, что на дисплее отразились два нуля, но уже менее агрессивное. Игра просто говорит нам о том, что пора избавляться от телефонной карты. Т. к. это наша первая использованная карточка в игре.
Есть и третий, так сказать, дефолтный вариант, при котором на момент разговора баланс больше нуля. В нашем случае он самый скучный.
Динамическое изменение текста — очень мощный инструмент для создания дополнительного погружения игрока в историю. Текст становится живой и насыщенный деталями, которые четко отражают действия игрока. История будто оживает, заставляя игрока чувствовать связь между своими действиями и историей, разворачивающейся на экране. Текст, как хороший напарник, следует за действиями игрока, отражая все нюансы. Внимательных к деталям людей такой подход определённо порадует.
Но у этого есть обратная сторона. Как разработчику, мне приходится уделять дополнительное внимание к таким деталям, прописывать множество дополнительных условий, отражать в переменных игры ключевые действия, на которые можно будет сослаться в коде игры.
Дополнительной сложностью является и работа в тексте с движком Ren'Py. Приходится проверять на всех вариантах разметку текста на экране. Где-то что-то может поползти, и придётся дробить текст таким образом, чтобы он не выходил за рамки размеченного под текст экрана.
Но все эти сложности в результате окупаются интересной подачей, которую, я надеюсь, игроки обязательно заметят и оценят.
Всем спасибо за внимание. Подписывайтесь, если вам нравится следить за разработкой моей игры.