← Щоденник розробки

Коваль, якого не було в кімнаті

В одній із тестових партій герой стояв біля колодязя в селі Гнилий Брід і говорив із травницею. Поруч, на думку гри, був і коваль. Насправді коваль працював у себе в кузні — про нього просто згадали в розмові: «Староста, Прон. Коваль».

Майстер міг будь-якої миті звернутися до нього як до учасника сцени. Для гри, яка тримається на тому, що світ поводиться послідовно, це погано.

Звідки взялася зайва людина

Присутність ми ніде не зберігаємо. Вона обчислюється щоразу заново: персонаж у сцені, якщо герой із ним знайомий і або той іде разом із загоном, або стоїть у тому самому місці, що й герой.

Правило просте і, як з’ясувалося, цілком правильне. Зламалося не воно.

Активним місцем Майстер зробив усе село цілком. За всю партію герой не змінив місця жодного разу — жодного переміщення. Отже, кожен, з ким він у цьому селі познайомився, виявився позначений тим самим селом. А раз місце збігається — усі вони стоять поруч. Коваль біля горна, староста в себе, травниця біля колодязя: з погляду гри вони втрьох стояли впритул до героя.

Логіка відпрацювала рівно так, як задумано. Помилка була в масштабі місця.

Правило існувало. Перевірки не було

Найнеприємніше: потрібне правило було записане. У трьох місцях.

Воно було в проєктному документі. Воно було в описі самої моделі місця — «локація це найменша комірка, в якій має сенс питати „хто тут“; великий контейнер на кшталт міста — це батько, а не сцена». Воно було в описі інструмента, яким Майстер створює нові місця, і там же був готовий параметр для зазначення батька.

Ніщо з цього не перевірялося під час виконання. Правило було записане — і лишалося побажанням.

Майстер його не порушував на зло. Він просто не бачив різниці між «село» і «колодязь у селі»: і те й інше — місце, обидва створюються однаково, жодна відповідь не поверталася із запереченням.

Чому це не косметика

Якби річ була тільки в списку імен на екрані, ми б виправили відображення і забули.

Але незадовго до цього ми випустили механіку стосунків: Майстер може змінювати довіру персонажа до героя, записувати обіцянки, відзначати свідків смерті. Кожна з цих перевірок питає у гри одне й те саме — цей персонаж зараз тут?

За села замість сцени відповідь завжди була «так». Тобто можна було зіпсувати стосунки з ковалем, який вас не бачив, і записати обіцянку, якої ніхто не чув. Одна невірна деталь моделі світу тихо знецінила три захисти, поставлені поверх неї.

Що змінили

Правило стало перевіркою:

  • Місце, всередині якого є інші місця, більше не можна зробити сценою. Спроба повертається Майстрові з поясненням — не «не можна», а «поставте їх у конкретну точку всередині, а не в усе одразу».
  • Туди ж потрапили й персонажі: не можна помістити людину «в село», можна — до горна, до колодязя, в погріб.
  • Село при цьому нікуди не поділося. Воно стало батьком, а сценою став колодязь.
  • З’явилося друге коло: «поруч, але не тут». Травниця у своїй хаті за три двори — не в сцені, але й не зникла зі світу. Майстер про неї пам’ятає, і дійти до неї можна.
  • У місць з’явилися виходи, тож переміщення перестало бути телепортацією за назвою.

Що ми з цього винесли

Записане правило — це ще не правило. Поки ніхто не перевіряє його на виході, воно лишається побажанням, і рано чи пізно його порушать — не зі злого наміру, а тому що порушити виявилося простіше.

Особливо якщо виконавець — мовна модель. Вона чудово розуміє пояснення і цілком спокійно проходить повз нього, якщо за цим нічого не йде.

Тепер усе село сценою зробити не можна. Можна прийти до колодязя.