Psychological states

There are 3 psychological states of a unit in DO (and another 4 Steady sub-states):

  • Steady - unit is controllable by Player and can normally fight and follow orders 
    • in melee - player can only give retreat order
    • being charged - player can only give retreat order
    • charging - unit is uncontrollable
    • chasing fleeing enemy - unit is uncontrollable
  • fleeing - unit is uncontrollable 
  • routing - unit is uncontrollable and permanently leaving battlefield 

Psychology states flowchart


 Click here to expand...

 discussions in Slack (Russian)

devast3d [Apr 14th at 22:10]
ок, давай сделаем так
evgen
я бы сделал тест на раут, только при получение вундов (на схеме вместо _unit is hit?_ unit is wounded?)
А в случае unit is hit? - yes, пропускать авто-тест на рали в этом раунде, т.е. на схеме возвращаемся к fleeing state.
При этом абилки вызывающие тест на рали работают всегда и в любой момент
https://darkomen.slack.com/archives/D2KP4BKE1/p1555185492018000
Direct MessageApr 14thView conversation
99 replies

evgen [12 days ago]
@devast3d давай тогда для теста на раут не просто unit is wounded?, а unit is wounded for > 25% of models number at this round start?

evgen [12 days ago]
и тоже ограничение на прохождение *этого* теста раз за раунд.

devast3d [12 days ago]
Из ДО не ясно как они сделали кстати?

evgen [12 days ago]
Итого, убегающий юнит может пройти до 2 раз тест на раут за один меле раунд:
- если потери превысили 25% моделей от количества в начале раунда
- если у него осталось менее 25% моделей от базового количества в юнита

devast3d [12 days ago]
Меле раунд очень долгий, мне кажется на него не завязывались

evgen [12 days ago]
>Из ДО не ясно как они сделали кстати?
Не знаю (edited)

evgen [12 days ago]
По ощущениям, в ДО тест на брейк только привязан к меле раунду. Остальные могут произойти в любой момент. Но как часто они роляются у меня нет идей как проверить

evgen [11 days ago]
@devast3d Утром провел коротенький плей-тест на раут.
*Кейс 1* два юнита которые не могут навредить друг другу (t больше s на 4+). У убегающего юнита Ld 1
*Кейс 2* те же статы, только у убегающего юнита Ld 10

В первом кейсе юнит раутился заметно быстрее, чем во втором (потерь ни у кого не было)

Это наводит на мысли, что:
- пока убегающий юнит "утюжит" догоняющий он проходит множественные тесты на раут и вряд-ли раз в 24 секунды
- юнит с меньшей Лидой быстрее переходит в раут, или потому что у него меньше шансов рольнуть нужное значение, или у него меньший трешхолд на получение попаданий для срабатывания прохождения теста на раут (втрое менее вероятно, имхо)

devast3d [11 days ago]
Насколько быстро юнит с лд 1 раутился?

devast3d [11 days ago]
Лд 1 тест это фейл почти всегда

evgen [11 days ago]
пару тестов всего провести успел. Быстро (2-5 сек) после получения попаданий

evgen [11 days ago]
да в Вики это выделено что в ДО нужен хит а не вунд для срабатывания теста (edited)

devast3d [11 days ago]
Т.е. даже хит а не вунд

evgen [11 days ago]
что мне и не нравится

devast3d [11 days ago]
Если несколько проверишь то с большой долей вероятности мы выясним таймер

devast3d [11 days ago]
Если там таймер

evgen [11 days ago]
какие то пезанты погнать могут элитных рыцарей в латах

devast3d [11 days ago]
То страшные немытые пезанты :laughing:

devast3d [11 days ago]
Мне интересно есть ли зависимость от времени фли и шанса раута

devast3d [11 days ago]
Мне кажется что есть

devast3d [11 days ago]
Чем дольше фли тем больше шансов на раут

devast3d [11 days ago]
Вообще раут тест достаточно жёсткий тест, если делать его очень часто , то у юнитов с низким лд нет никаких шансов (ибо они должны ролить каждый из тестов )

evgen [11 days ago]
>Мне интересно есть ли зависимость от времени фли и шанса раута
Не знаю. Если есть идея тест-кейса как проверить - скидывай проверю )

evgen [11 days ago]
а лучше давай подумаем, в принципе нравится ли тебе такое правило
>Чем дольше фли тем больше шансов на раут

evgen [11 days ago]
может и тестить не надо

evgen [11 days ago]
фли - это фаново(это драма! как побежали!? Деритесь Сцыкуны!!!) , а вот раут целехонького юнита, что-то не фаново совсем мне (edited)

evgen [11 days ago]
поэтому, два условия теста на раут:
1. х вундов за y времени
2. моделей < y% базового значения моделей

пожалуй достаточно, имхо (edited)

devast3d [10 days ago]
Тоесть фли юнит не может раутить без получения дамага?

devast3d [10 days ago]
Для фли два типа тестов должно быть: когда есть урон и когда нет

devast3d [10 days ago]
Когда есть может быть более жестким

devast3d [10 days ago]
У меня есть идея кидать рандом в зависимости от количества моделей

devast3d [10 days ago]
Чтобы не вводить хард зависимость определенной цифровой порога моделей

devast3d [10 days ago]
Правда это не отвечает на вопрос как переключать в раут и стеди

devast3d [10 days ago]
Когда нет дамага, тест может оставить фли, перейти в раут, перейти в стеди

devast3d [10 days ago]
Тест имхо надо делать один, просто понять на что он влияет

evgen [9 days ago]
ещё раз, в текущем предложении механика работает так:
- если дамаг есть, фли юнит проходит тест на раут. В случае успеха остаётся во фли дальше
- если дамага нет, фли юнит проходит тест на рали. В случае успеха переходит в стеди
- если дамага нет, но есть попадания, фли юнит не проходит никаких тестов (раут, рали) и остается во фли дальше

если мало моделей осталось, то фли юнит всегда проходит тест на раут. Если прошел успешно и нет дамага или попаданий, то проходит тест на рали

>Тоесть фли юнит не может раутить без получения дамага?
Нет, юнит может раутить без получения дамага, если мало моделей осталось (edited)

evgen [9 days ago]
как я понимаю, ты предлагаешь рассмотреть совершенно другой подход, где у фли юнита всего есть один тест, но на что он бросается (раут, рали) выбирается рендомно?

evgen [9 days ago]
PS
Похоже если в треде упоминание не поставить @devast3d то оповещения о новом сообщении нет :/

devast3d [9 days ago]
в моем понимании раут тест это сильная штука и часто его вызывать (т.е. 2 раза за цикл подряд, как в случае с текущей схемой при отсутствии дмг) не хочется

devast3d [9 days ago]
также смущает вполне конкретный порог в 25%

devast3d [9 days ago]
пропадает элемент рандома, который всегда присутствовал в ДО

devast3d [9 days ago]
поэтому я предлагаю (при отсутствии дмг) проводить ОДИН лд тест, иметь два контекста для него - положительный и отрицательный. В случае положительного контекста успех переводит в стеди, провал оставляет в фли. В случае отрицательного - успех оставляет в фли, провал переводит в раут.

devast3d [9 days ago]
Теперь остается - как понять какой контекст? На это может влиять - количество моделей, наличие рядом врагов, что-то еще

devast3d [9 days ago]
делать эту проверку не очень часто, н-р раз в 10 секунд

devast3d [9 days ago]
функция определения контекста может быть четкой или иметь момент рандома тоже

devast3d [9 days ago]
может стоит сделать контекст цифрой от -1 до +1 и чтобы эта цифра также влияла на исход теста

devast3d [9 days ago]
(что делать когда наносится дмг я пока не рассматриваю, это отдельный кейс)

devast3d [9 days ago]
почему я настаиваю на учитывание наличия врагов рядом - очень странно если юнит будучи во фли стейте перейдет в стеди, когда перед ним тусуется куча зомбей каких-нибудь

devast3d [9 days ago]
или - когда юнит преследуется кем-то (т.е. по сути в коротком радиусе есть юнит), то он не может перейти в стеди ну вообще никак

evgen [8 days ago]
@devast3d Окей, давай рассмотрим вариант с одним тестом, контекст которого (тест на раут или рали) определяется условиями или даже с элементом рендома

evgen [8 days ago]
наличие рядом врагов очень даже норм условие для определения контекста теста. В ДО оно судя по тестам есть, но иногда не срабатывает(есть видео), вероятно из-за наличия критических ролов как в ТТ, когда выпадает 1+1 или 6+6

evgen [8 days ago]
>может стоит сделать контекст цифрой от -1 до +1 и чтобы эта цифра также влияла на исход теста
Вот это не совсем понял как работает. Типа d3 ролл и если 1 контекст раут, если 2 ничего не происходит, 3 контекст рали? (edited)

devast3d [8 days ago]
не, контекст это как раз функция от параметров типа количество моделей, враги рядом, которая маппится на -1..1

devast3d [8 days ago]
и ее результат влияет на тест тоже, типа -1 является отягчающим фактором негативного теста

devast3d [8 days ago]
но это всего лишь идея

devast3d [8 days ago]
можно для начала попробовать просто делать тест с контекстом

evgen [8 days ago]
хорошо, давай пока рассмотрим без рендома с отягощающими/облегчающими факторами. Просто сами параметры (условия) которые влияют на контекст проходимого теста

evgen [8 days ago]
>в моем понимании раут тест это сильная штука и часто его вызывать (т.е. 2 раза за цикл подряд, как в случае с текущей схемой при отсутствии дмг) не хочется.
Согласен, что раут сильная штука т.к. может сразу вывести относительно целый юнит из игры. Поэтому параметр "наличие рядом врагов" как по мне слишковато для прохождения теста на раут(хоть это тру для ДО) (edited)

evgen [8 days ago]
может достаточно, если этот параметр "наличие врагов рядом" не будет давать рали? Или же есть вероятность рали, но очень маленькая (две 6 надо выбросить)? (edited)

evgen [8 days ago]
с "малое кол-во моделей" аналогично. Не тупо выбирать контекст на раут всегда, а чтоб с какого кол-ва или раут/или рали ролялся, и чем меньше моделей, тем больше вероятность что рольнится раут?

devast3d [7 days ago]
Не давать ралли при врагах рядом это Гут идея

devast3d [7 days ago]
Как привязать 6+6 к лд тесту?

devast3d [7 days ago]
Когда рядом враги, то провал контекст. Если лд тест сфейлился то раут. Но при этом 6+6 из лд теста это ралли?

devast3d [7 days ago]
Если лд не провал и не 6+6 то остаёмся фли. Я правильно понял?

devast3d [7 days ago]
Про малое количество моделей не понял (edited)

evgen [5 days ago]
@devast3d давай пока без критичных ролов, а просто определимся при каком контексте рали и раут должны срабатывать и чтоб один тест за раз был (edited)

evgen [5 days ago]
http://prntscr.com/nf41cf
Lightshot
Screenshot
Captured with Lightshot

evgen [5 days ago]
1. За раунд (х времени) может быть только один тест
2. Два возможных рали теста из-за абилки (магический рог). Иначе был бы один
3. когда остается мало моделей формулу не продумал, пока просто 50 на 50

evgen [5 days ago]
согласно этой схемы, условия такие:
- пока юнит под обстрелом(его бьют), или рядом враги он остается во фли стейте
- если юнит дамажат он проходит тест на раут, или остается во фли
- если у юнита мало осталось моделей *есть вероятность*, что он зараутится, перейдет в стеди, или останется во фли как и был.
- если ни одно из вышеперечесиленных событий, юнит может перейти в стеди или остаться во фли (edited)

evgen [5 days ago]
пиши если какие условия не нравятся, и как лучше переделать (edited)

devast3d [5 days ago]
если мало моделей, то тест на наличие врагов рядом не производится, это так задумано?

devast3d [5 days ago]
по идее когда мало моделей, то тест должен быть еще жестче

devast3d [5 days ago]
предлагаю 50/50 как раз заменить на "есть ли рядом враги". Если есть, то проваленный тест будет раутом

devast3d [5 days ago]
а вот если врагов рядом нет и моделей мало, то тест на ралли возможно должен быть сложнее, чем когда моделей много

devast3d [5 days ago]
можно как раз сюда запихнуть 50/50, тем самым уменьшив шанс на ралли в 2 раза, все честно (edited)

evgen [5 days ago]
>если мало моделей, то тест на наличие врагов рядом не производится, это так задумано?
Нет, это я ошибся и если моделей мало и выпало 1, то должен идти чек на врага рядом (а я неверно на рали тест сразу указал)

devast3d [5 days ago]
посмотри я скинул код

devast3d [5 days ago]
там все с коментами

devast3d [5 days ago]
(пока игнорируется наличие хитов)

devast3d [5 days ago]
пока что мне нравится

devast3d [5 days ago]
в текущей схеме (без учета хитов) юнит с большим количеством моделей просто так с поля не свалит, что хорошо

devast3d [5 days ago]
давай уберем хит и оставим тольком вундед, у меня нет регистарции хитов, ибо модель получить дмг только тогда когда все зарезолвилось, про хит попытку она не узнает, не хочется все перековыривать

devast3d [5 days ago]
т.е. если был вунд, что следующий лд тест не может включать ралли

devast3d [5 days ago]
а вот надо придумать какое условие если был вунд? ты предлагал учитывать определенное количество вундов - предлагаю что-то похожее на help us тест

devast3d [5 days ago]
если слишком много вундов, то делаем лд тест, если фейл, то раут и досвидос

devast3d [5 days ago]
таким образом мы все через один тест резовлим+контекст! (edited)

evgen [5 days ago]
вроде все здорово выглядит, позже ещё раз переварю и помоделирую ситуации "на бумаге"

evgen [5 days ago]
т.е проверку на попадания полностью игнорим? Мол бьют, но не больно, а значит можно пройти тест на рали. Вроде логично (но не канонично ДО :)) (edited)

devast3d [5 days ago]
ну если это меле дамаг, то будет провален тест на "рядом враг"

devast3d [5 days ago]
а если это ранж, то считай, что за щитом укрылся :smile:

devast3d [5 days ago]
так что хит убираем, оставляем только вунд

evgen [5 days ago]
Окей

evgen [5 days ago]
Ты скрин последний удалял с туду?

devast3d [5 days ago]
да, ща я подправлю

devast3d [5 days ago]
ничо не подправил, там все верно было xD

devast3d [5 days ago]
но тест на вунд не должен уж совсем простым быть,ибо в этом случае мы игнорим все остальные проверки

devast3d [5 days ago]
(т.е. малое количество модейлей, хотя можно сказать, что юнит в этом раунде был храбр и пофиг)

evgen [5 days ago]
>но тест на вунд не должен уж совсем простым быть,ибо в этом случае мы игнорим все остальные проверки
кроме тригера > y вундов на протяжении х времени, ничего пока не придумывается для него


devast3d [5 days ago]
Давай если до вечера ничего нового не придумаешь, то запилю это условие