Шестой день и 229 строк#

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

Что увидел игрок#

Игрок впервые вошёл в непрерывный мир на шестой день около 14:30. Первым ответом мира были 26 983 байта — 229 строк. В этих строках не сообщалось, какой сейчас день, и отличить актуальное от накопленного было нельзя. В мастерской Кузьмы лежали две одинаковые готовые партии болтов. В той же комнате предлагался заказ Кузьмы на вести о знахарке, но принять его не удалось: «Не вышло: заказ уже закрыт». Доска объявлений в трактире могла показать старые предложения из памяти персонажа, а не то, что было на ней сейчас. Яшка, пропустивший дирижабль в первый день, в последующие дни снова прятался в трактире — другой прописанной жизни у него не было.

Откуда взялась путаница#

Чтобы понять, как это получилось, достаточно одной цепочки. Стража расходует болты, запас подходит к концу, и она заказывает новую партию. Пахомов получает партию, Кузьма делает болты, готовые болты поступают на склад Стражи. Если заказ срывается, вместо него открывается оплачиваемая работа для всех, и её результат тоже попадает на склад.

В унаследованном знании было 118 почти одинаковых заметок о том, что кто-то работал над партией болтов. Каждая была подписана только временем суток, поэтому нельзя было понять, к какому дню она относится. Это были не повреждённые записи, а накопленные однодневные события без дат. Ещё 18 раз повторялось объявление о заказе Кузьмы на вести о знахарке. Среди записей были, например, такие:

В мастерской Кузьмы в 08:00 кто-то работал над партией болтов
В мастерской Кузьмы в 08:10 кто-то работал над партией болтов
В мастерской Кузьмы в 08:20 кто-то работал над партией болтов

Кузьма называл срок заказа Стражи «к 08:00», не уточняя день. Почти все назначенные сроки и всё видимое игроку время записывались только как часы и минуты. Внутри мир считал дни, но наружу их не показывал. Однодневные события, сведения, предложения и предметы не имели понятных правил для многодневного мира, поэтому копились и повторялись.

Партию болтов уже добавили в запас Стражи, но сама партия всё ещё оставалась у Пахомова. Одни и те же болты одновременно числились доставленными и лежали на прежнем месте.

Почему старые тесты этого не заметили#

Сервер не падал. Сохранение не было испорчено. Журнал воспроизводился точно. Накопленное прошлое нельзя было отличить от настоящего, а игроку не говорили, какой сегодня день. Прежние тесты показали, что мир может работать, сохранять состояние и повторяться. Шесть сценарных игроков присутствовали в них с первого дня. Они проверяли сохранность и повторяемость, а не читаемость мира для опоздавшего игрока. Тесты не проверяли, что увидит человек, впервые вошедший на шестой день: будет ли его картина ограниченной, актуальной и понятной.

Что осталось#

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