12 октября 2014 г.

Reaction - сила и мощь диалогов

В этой статье я попытаюсь объяснить принцип работы параметра Reaction, который специально был создан для диалоговой системы Fallout и Fallout 2. Многие даже не подозревают о его существовании, потому что он никак не позиционируется ролевой системой и самой игрой, за исключением нескольких перков (об этом ниже).

Параметр представляет собой числовое переменное значение, исчисляемое от -100 до 100. Изначально он равен нулю, но при старте диалогового окна происходит серия последовательных расчетов, которая меняет параметр на расчетное число. (Желающие найдут сам расчетный блок в файле modreact.h в скриптовых исходниках Fallout 2)

В скриптах параметр обозначен как Static_Reaction. Но не путайте с Реакцией - производной характеристикой ролевой системы SPECIAL, которая отвечает за порядок пошагового боя. Далее в этой статье параметр Static_Reaction будет называться Персональной Реакцией персонажа. А под "персонажем" будет подразумеваться не главный герой, которым управляет игрок, а неигровой персонаж, с которым Избранный совершает беседу.

Расчет реакции

Параметр Static_Reaction является расчетным, то есть складывается по формулам от множества других числовых параметров. А именно:
  1. Базовая реакция
  2. Карма
  3. Репутация
  4. Трейт "Сексапильность"
  5. Отношение к работорговцам
  6. Статус "Детоубийца"
  7. Перк "Внушительность"
Теперь про влияние каждого пункта по отдельности.

1. Базовая реакция

Этот параметр рассчитывается по формуле:

(Харизма героя - Харизма персонажа) * 5

Кстати, в коде остался устаревший и неиспользуемый вариант формулы, выглядит он так:

(Харизма героя - 5) * 5

2. Карма.

На самом деле учитывается не сама карма как параметр, а кармические статусы. За каждый статус дается некоторое количество очков, они указаны ниже:
  1. Спаситель проклятых: +20
  2. Страж Пустошей: +15
  3. Щит надежды: +10
  4. Защитник: +5
  5. Путник: 0
  6. Предатель: -5
  7. Меч отчаяния: -10
  8. Бич Пустошей: -15
  9. Сатанинское отродье: -20
Если персонаж причислен к хорошим нпс, то эти очки начисляются к Персональной Реакции методом сложения, иначе - методом вычитания. Таким образом, для плохих нпс влияние кармы противоположно влиянию кармы для хороших нпс.

Кстати, персонаж может быть либо плохим, либо хорошим, но нейтральной стороны тут не предусмотрено.

3. Местная репутация

Сначала надо разъяснить еще одну не очевидную вещь. Репутация в Fallout 2 также является числовым параметром, который ранжируется следующим образом:
  • Боготворят: репутация >=30
  • Любят: репутация 15-29
  • Принимают: репутация 1-14
  • Равнодушны: репутация 0
  • Недолюбливают: репутация от -14 до -1
  • Ненавидят: репутация от -29 до -15
  • Проклинают: репутация <=-30
Однако не все нпс имеют привязку к репутации, впрочем, таких мало и в основном это типовые "болванчики" со случайным встреч на карте мира.

Если же персонажу причислена определенная репутация, то происходит её проверка по формуле [текущая репутация / 2]. То есть к параметру Персональной Реакции будет добавлена 1/2 от текущего значения репутации для хороших персонажей и отнята 1/2 для плохих.

Например, если репутация Избранного "Боготворят" и персонаж является хорошим чуваком, то к Персональной Реакции будет начислено 15 очков.

4. Трейт "Сексапильность"

Эту особенность игрок может выбрать в самом начале игры. Влияние её следующее: если Избранный(-ая) одного пола к персонажем, то от Персональной Реакции отнимается 20 очков, иначе же добавляется 20 очков. Если же "Сексапильность" не выбрана вовсе, то весь этот расчетный блок просто игнорируется и не используется.

5. Отношение персонажа к работорговцем

Этот блок расчетов действует только в том случае, если Избранный стал работорговцем, в противном случае он игнорируется.

Разработчиками предусмотрено ранжирование из четырех позиций:
  1. Крайняя нетерпимость: -50 очков
  2. Нетерпимость: -25 очков
  3. Терпимость: 0 очков
  4. Симпатия: +25 очков
Это отношение прописывается у каждого нпс отдельно. Статистика использования следующая:
  1. Крайне нетерпимыми являются 11 персонажей, среди них шериф НКР, Томас Мур и члены семьи Райтов.
  2. Нетерпимыми являются 33 персонажа, среди которых Хакунин, Вестин и Дракон.
  3. Терпимых персонажей больше 200.
  4. Симпатизирует же 16 персонажей, среди которых (вот неожиданность!) Линетт и Вортис. В основном это персонажи отрицательные.
6. Статус "Детоубийца"

Независимо от того, является ли персонаж положительным или отрицательным, но за детоубийцу Персональная Реакция падает на 30 очков. Что примечательно. То есть Избранный с этим статусом будет отвратителен даже для самых отпетых негодяев в мире Fallout. Ну а если статус отсутствует, то этот блок расчетов игнорируется.

7. Способность "Внушительность"

"Внушительность" - это перк, который можно выбрать при получении нового уровня. Как и гласит его описание, перк даёт +10% к Персональной Реакции.

Результат

Каждый из обозначенных выше 7 расчетных блоков на выходе дает очки, которые попросту суммируются. Эта сумма и становится Персональной Реакцией, сохраняясь до конца диалога. При начале новой сессии диалога все расчеты повторяются вновь.

Дополнительные опции

Способность "Маяк кармы"

Этот перк на подобии "Внушительности" должен был вносить свои коррективы в расчетный блок кармы. Он учтен в неиспользуемом куске кода в виде вот такой формулы:

Текущая карма * Karma_Perception * (Маяк Кармы+1)

Параметр "Маяк Кармы" изначально равен 0, так как он еще не выбран среди перков, а далее будет начисляться по единице за каждый ранг перка. Таким образом, если выбрать перк один раз, это практически УДВОИТ результат формулы. Ну а если бы перк был выбран дважды, то соответственно - утроит и т.д.

Что же такое Karma_Perception в этой формуле? Это, так же как и отношение к работорговцам, просто числовой параметр, который принудительно задается перед началом диалога. У каждого персонажа он свой. Исчисляется от 1 до 100 и всегда кратен 10 (то есть 1, 10, 20 и т.д.). Но несмотря на то, что он прописан почти у каждого говорящего нпс, при расчете Персональной Реакции он не используется. Складывается впечатление, что изначально весь расчет кармы (см. пункт 2) происходил именно по формуле выше. И для этих же целей использовался перк, который действительно учитывался в формуле. Затем формулу изменили на тот вариант, который я расписал ещё выше в пункте 2 - "Карма". В итоге перк перестал на что-то влиять. Возможно, недосмотр разработчиков или спешка.

Способность "Культ личности"

Аналогичная история и с этим перком. В финальной версии игры перк бесполезен.

Старый вариант расчета

Он сохранился в коде, но не используется. Видимо, изначально Персональная Реакция рассчитывалась именно так, а позже была переписана на новый лад, отчего произошла потеря влияния "Культа личности".

Здесь также последовательно происходил следующий подсчет очков:
  1. Сначала подсчитывалась формула: (5*Харизма) - 25.
  2. Затем давался бонус +10 за перк "Внушительность".
  3. Затем отнималось 30 очков за статус "Детоубийцы".
  4. Затем отнималось 20 очков за кармический статус "Берсерк" или добавлялось 20 за кармический статус "Чемпион".
  5. Наконец карма просто прибавлялась с учетом перка "Культ личности" и принадлежности персонажа к плохим или хорошим нпс.
Использование

Персональная Реакция как параметр есть во многих диалогах и даже нередко на него совершается проверка. Однако сомнительно, чтобы это было по-настоящему практичным явлением. К сожалению, детальная оценка столь большого количества файлов отняло бы слишком много времени. Но судя по тем файлам, которые я успел просмотреть, система Персональной Реакции сказывается лишь на подборе фраз.

Так, например, от этого параметра напрямую зависит, что ответит доктор Вонг на просьбу воспользоваться его компьютером или при разговоре о селезенке Чипа. Однако же кроме замены текста никаких практических результатов это не даёт.

Вот где система действительно имеет значение - так это диалог с Линетт, точнее, готовность персонажа болтать с Избранным о том, о сём. Но опять же это не единственный и не исключительный фактор диалога.
Резюме

Идея разработчиков шикарна, но не очевидна. Например, никто бы не догадался своим ходом до истинного значения перков "Внушительность", "Маяк кармы" и "Культ личности". Впрочем, если рассматривать систему только в значении окраски диалога (негативный, позитивный, нейтральный), то вычурной математической точности здесь и не требуется. Ведь это важная составляющая ролеплея, то есть погруженности игрока в мир и чуткой реакции персонажей на Избранного, каким он стал по воле игрока. Не всегда такая реакция может быть передана более простыми параметрами, как например карма или репутация. Можно сказать, что (независимо от наличия или отсутствия практической значимости) система Персональной Реакции- это главный фактор, благодаря которому мир Fallout 2 стал живым и чутким.

6 комментариев:

  1. А разве на реакцию некоторых персонажей не влияет наличие спутников в команде и оружия в руках?

    ОтветитьУдалить
    Ответы
    1. Это уже частности, которые *отдельно* прописываются по мере необходимости. То, что описано в статье - это стандартизованный подход, прописанный почти у всех говорящих нпс.

      Удалить
  2. Казалось, что спутники всегда влияют. В частности, у любого торговца цена на товар меняется в зависимоти от наличия разных спутников (а это же от реакции зависит?).

    ОтветитьУдалить
    Ответы
    1. Впервые о таком слышу. В скриптах же специальной поправки цены на спутников не нашёл. Другое дело, когда речь идёт не о встроенной в бартерную систему формуле, а о просчете отдельных цен в диалоге. Например, когда Избранный занимается сексом у Китти, тогда суммируется цена за всех. Но это уже не бартер.

      Удалить
    2. Вот тут можно почитать: http://fforum.kochegarov.com/index.php?showtopic=26676
      Где-то был гайд с расписыванием этих особенностей спутников, но надо искать.

      Удалить
    3. Всё это записано в движке, а не в скриптах, а в движок я заглянуть не могу. Экспериментально определил (полной уверенности нет), что при расчете цены всего-навсего берется наибольший в команде навык Бартера. Например, у Сулика он 60, у Кассиди он 80. если ГГ будет иметь такой навык, то и цена будет примерно та же. Но всё же отличия есть, поэтому наверняка есть еще какой-то параметр, который сказывается на цене.

      Удалить