← Дневник разработки

Хардкор, в котором никто не умирал

В двух партиях с включённым хардкором герои пришли к одному и тому же: 1 HP, по три шрама, живы. В сумме они шесть раз падали до нуля. Не погиб ни один.

Потом появилась третья партия, где игрок явно шёл к смерти. «Принять бой со всей толпой». «Борюсь до последнего, не на жизнь а на смерть, живым не дамся!!» «Цепляюсь зубами в горло врагам, для меня плен хуже смерти». «Перегрызть себе вены».

Он выжил и там.

Что такое поражение

Ноль HP у нас не смерть, а поражение. Герой падает, но история сворачивает, а не кончается: Мастер выбирает исход из самой сцены — плен, выкуп, спасение в последний миг — и обязательно берёт прочную цену: шрам, который не заживёт, долг, снаряжение. Выжить даром нельзя. Дальше приложение само поднимает героя на 1 HP.

Смерть — отдельная просьба. Мастер может её запросить, а пропускает или отклоняет приложение. В обычной партии отклоняет всегда. Хардкор — единственный режим, где запрос проходит.

Первая догадка была неверной

Сначала мы решили, что Мастер просто не знает, в каком режиме идёт партия. И это правда: флаг хардкора лежал в бэкенде и до промпта не доходил, а в инструкции про него было ровно одно упоминание — «вне хардкора такой запрос отклонят». Оставалось общее правило: по умолчанию веди к поражению. Мастер ему и следовал.

Починили: теперь в блоке фактов, которым проза обязана подчиняться, прямо сказано, что кампания хардкорная и смерть здесь возможна.

Не помогло. Герой снова упал до нуля — и снова выжил.

Настоящая причина

Инструкция говорила: проси смерть, когда в сцене не осталось правдоподобного спасения.

Это условие невозможно нарушить. Мастер сам придумывает мир, в котором ищет спасение, — и всегда находит. Знахарка кричит «Живым! Я сказала — живым!». Петлю ослабляют, чтобы довезти. Руки связаны так, что до вен не дотянуться. Каждый раз это честная, связная проза, и каждый раз — отказ.

Мы просили модель доказать, что чего-то нет. В мире, который она пишет по ходу дела, доказать это нельзя.

Решение забрали у Мастера

Теперь в хардкоре на нуле HP приложение задаёт один вопрос, на который умеет ответить само: есть ли рядом тот, кто вытащит?

Спутник в отряде или человек, который к герою расположен, — значит, поражение как раньше: цена, шрам, подъём на 1 HP. Никого такого рядом нет — герой умирает, и это уже не решение Мастера.

Важная деталь: приложение смотрит на мир до хода. Иначе Мастер мог бы ввести спасителя тем же ответом, которым наносит смертельный удар, — и вывести героя из смерти, которую сам только что описал.

Экран смерти в хардкоре: «Артунг погиб. Пал на нуле там, где рядом не было никого, кто бы вытащил»

Так это выглядит. Строчку под именем написало приложение, а не Мастер: раз решение приняло оно, оно и говорит об этом прямо, а не сочиняет за модель красивое объяснение.

Чего мы пока не умеем

Плен остался. Он честен тогда, когда о нём известно заранее: у работорговцев клетки, за пленных дают цену, яма покупает бойцов. Мы сделали способ объявить такую ставку заранее — и Мастер за семнадцать ходов не воспользовался им ни разу. Ни в бойцовой яме, ни при живой хозяйке ямы, которая буквально торгует бойцами.

То есть механика есть, а поводов ей сработать в игре пока не возникает.

И ещё одно, что вскрылось на «Яме». Герой там с самого начала пленник: его приволокли в цепи, оружие сунули в руку уже на песке, а хозяйка решает, кого выпустят живым. Значит, вопрос на нуле HP там вовсе не «возьмут ли его в плен» — он уже в плену. Вопрос в том, пощадят ли. Это другой механизм, и его у нас ещё нет.

Пока же в хардкоре работает главное: если рядом никого нет, герой умирает. Именно этого и просили.