Новые взрывы, старые взрывы, бомбы и RnD

Пара вещей по итогам [WiP] Explosions by volas · Pull Request #11256 · TauCetiStation/TauCetiClassic · GitHub, которые хотел бы объяснить.

Бомбкап

tl;dr Бомбкапа 51 не существует, вам всё это время врали.

Всегда существовавший у нас и на многих других серверах бомбкап - 14.

Пруф (из старого кода)

Откуда берется значение в РнД? Дело в том, что у взрывов есть три основных параметра:

  • Радиус легкого урона (в основном просто повреждает)
  • Радиус тяжелого урона (тоже повреждает, но часто с каким-то шансом разрушает/удаляет)
  • Радиус разрушительного урона (в основном разрушает/удаляет)

Каждое из этих значений - производная от оригинального капа в 14.
Легкий урон = кап * 1 = 14
Тяжелый урон = кап * 0.5 = 7
Разрушительный урон = кап * 0.25 = 3,5 = 3 после округления (в бьенде округление работает в меньшую сторону)

Откуда берется итоговое значение в РнД? В старой системе взрывов мы складывали все параметры взрывов с учетом их значительности и пропорций, получая какое-то абстрактное общее значение взрыва:

Формула

Т.е. берем 4 раза разрушительный (отдельно 2 раза, и 2 раза из каждого меньшего радиуса), 2 раза тяжелый (отдельно, и из легкого), и 1 раз легкий.
Итого 3 * 2 + 7 + 14 = 27 попугаев.

Кап, который видело РнД. Но постойте, это 27, а мы делали лимитки на 51!

Тут настало время обратить внимание на это изменение пару лет назад.

Этот ПР искусственно увеличивал кап и ломал устоявшиеся пропорции взрывов, и только у бомб ученых, делая их 12;13;14 для соответствующих типов урона. С учетом старых взрывов - так не должно было быть, для них пропорция важна, иначе радиус взрыва получается рандомным (скорее всего, даже больше 14, но это не так важно, потому что смотреть следующую главу). Даже если взять новые взрывы, работающие точно по радиусу - это просто не имеет смысла, что сила взрыва максимальна но затухает за 3 тайла.

Я убрал это изменение, потому что оно не имело смысла, но как последствие, у ученых измерения в попугаях изменились с 51 до более реальных 27. Чтоб ученые не грустили, мне пришлось увеличить в два раза их прирост очков (для лимиток очков стало даже чуть больше, чем было), но ученые всё равно смотрят на эти 27 попугая и впадают в депрессию…

Но ведь можно было просто увеличить кап? Ну, не совсем, если допустим взять кап 26 (6;13;26), что опять бы давало нам 51 попугая, то это уже довольно объемные взрывы, которые могут повидлить сервер. И, опять же, смотреть следующую главу.

На самом деле, старые взрывы почти никогда не работали

Там там было два серьезных бага:

  1. Взрывы рантаймили и переставали распространяться, дойдя до края экрана.
  2. И, более важное, из-за ошибки с массивами, взрывы всегда переписывались более новыми взрывами.

Можно было взорвать нюку, но стоило взрыву нюки дойти до ближайшего АПЦ - взрыв нюки прекращал обрабатываться, и всё, что оставалось - маленький взрыв батарейки из АПЦ.

Какие бы большие лимитки не взрывали на станции - рядом всегда был какой-нибудь АПЦ, который прерывал взрыв. Именно поэтому от взрывов обычно оставалась только пара полосок повреждений, и всё.

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

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

Квадратные взрывы

Связано это, во первых, с изменением алгоритма распространения взрыва. Наш старый алгоритм мог случайно обходить препятствия, не знаю насколько это реалистично. В то время как ТГшный работает строго от эпицентра взрыва. Можно к этому вопросу вернуться позже.

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

Оквадраченные взрывы из-за сопротивляемости стен
  • Ок
  • Не ок
0 проголосовавших

Бомбы, которые (не)взрывают другие бомбы

Для меня эта техника спидрана с взрывом 8 лимиток одновременно стала открытием. Даже не касаясь вопросов реализма, оно просто не должно было работать - бомбы удаляются от взрывов, первый обработанный взрыв не даст другим закончить реакцию и взорваться. Но из-за задержки и багов старой системы, оно стало возможно и вошло в гайды… И сломалось с новыми взрывами.

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

Я уже не буду этим заниматься, но буду рад, если кто-то что-то с этим сделает. Может быть сделать одновременные взрывы опять не возможными, или не имеющими смысла (можно вернуть удаление, может пусть у маячка будет КД после каждого зарегистрированного взрыва), но компенсировать это изменением прогрессии (больше очков за меньше бомб). Или что-то еще.

15 лайков

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

Я пофиксил что зарепортили и что быстро сам нашел, но если еще увидите такие проблемы - пишите на гитхаб.

1 лайк

А взрывы теперь стали смертельными? Или опять если взорвать фуелтанк руками можно встать и дойти до медбея?

Мины гибают. Если взорвать фуелтанк на человеке его гибнет. После взрывов остаются всегда разгермы. В общем взрывы были? Очень странными, но Волас их пофиксил. Сейчас должно быть норм.
Надеюсь фуелтанк все также кидает в слип.

Исторически фуелтанк всегда создавал разгерму, это не баг, а фича

1 лайк

Вкусно.

1 лайк