doom2d.org

Главная база плоских морпехов
It is currently 15 Jul 2025, 09:28

All times are UTC + 3 hours




Post new topic Reply to topic  [ 20 posts ] 
Author Message
PostPosted: 25 Jul 2024, 13:36 
Offline
Приколист
User avatar

Joined: 17 Oct 2009, 19:57
Posts: 4103
Location: Киров
Перестала работать система "Попадание по своим". Например ставлю "только снарядами", а снаряды тупо пролетают тиммейтов насквозь.

_________________
Давай, картечью демонов
Размажем по стене.
Давай, берсерком выпустим
Весь ливер сатане!

Сделайте нормальный огнемёт! :evil:


Top
 Profile  
 
PostPosted: 27 Jul 2024, 09:17 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7252
Location: Владивосток
У тебя осталась версия, где это ещё работало? Скажи номер коммита из лога или заголовка окна.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 27 Jul 2024, 10:08 
Offline
Шерлок Холмс
User avatar

Joined: 19 Jun 2019, 23:28
Posts: 463
Location: Equestrian Wasteland.
Сломано, начиная с коммита: https://repo.or.cz/d2df-sdl.git/commit/5a9d04dfb16b32c84964c0940031606e7454259d

_________________
aka TerminalHash.


Top
 Profile  
 
PostPosted: 27 Jul 2024, 20:01 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7252
Location: Владивосток
Почему-то не могу повторить. При всех комбинациях g_friendly_hit_projectile и g_friendly_absorb_damage поведение ожидаемое.
Скажи мне свои флаги. Вообще, g_friendly_absorb_damage 1 по смыслу (не по действию!) дублирует g_friendly_hit_projectile 1, так что это будет неплохо вообще переделать заодно.

Занятно, кстати, что через монстров огонь из стрелкового оружия пролетает всегда.
Так было и в оригинальном Doom2D, просто я раньше никогда не задумывался.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 27 Jul 2024, 23:38 
Offline
Шерлок Холмс
User avatar

Joined: 19 Jun 2019, 23:28
Posts: 463
Location: Equestrian Wasteland.
Чёрный Думер wrote:
Почему-то не могу повторить. При всех комбинациях g_friendly_hit_projectile и g_friendly_absorb_damage поведение ожидаемое.
Скажи мне свои флаги. Вообще, g_friendly_absorb_damage 1 по смыслу (не по действию!) дублирует g_friendly_hit_projectile 1, так что это будет неплохо вообще переделать заодно.

Подозреваю, твоё вмешательство путём изменения LongBool на что-то другое поломали ожидаемую смену поведения (впрочем, могу ошибаться, я изменения проверял не так досконально), потому что я даже через консоль не добивался изменений вообще, зато на предыдущем коммите всё стабильно отрабатывает. g_friendly_absorb_damage делает то, что в нём написано - включает поглощение урона, а не прохождение снарядов/хитскана, они по смыслу и названиям полностью разные. С прохождением хитскана и снарядов работал fgsfds, если что, не я, моих копыт дело только поглощение урона.

Проверялось следующим образом: запускалась "Своя игра", настройка перед запуском не трогалась, изменялось всё непосредственно во время игры. На предыдущем коммите всё работает как часики, с этого и после уже нет.

_________________
aka TerminalHash.


Top
 Profile  
 
PostPosted: 28 Jul 2024, 08:43 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7252
Location: Владивосток
FoxFromPripyat» Проверялось следующим образом: запускалась "Своя игра", настройка перед запуском не трогалась, изменялось всё непосредственно во время игры. На предыдущем коммите всё работает как часики, с этого и после уже нет.

Так ты флаги скажи-то, которые во время игры выставлял. И ожидаемое поведение.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 28 Jul 2024, 23:03 
Offline
Шерлок Холмс
User avatar

Joined: 19 Jun 2019, 23:28
Posts: 463
Location: Equestrian Wasteland.
Чёрный Думер wrote:
Так ты флаги скажи-то, которые во время игры выставлял. И ожидаемое поведение.

Почему каждый раз мне необходимо цитировать собственный мануал? Я же не для себя его писал в конце концов %)
Code:
g_friendly_hit_trace 1/0
       Включить или выключить прохождение хитскана (пули) через своих союзников.
g_friendly_hit_projectile 1/0
       Включить или выключить прохождение прожекттайлов (ракеты, снаряды БФГ или плазмы) через своих союзников.
Примечание: работает по следующему принципу: 1 - выключить (пули/снаряды будут сталкиваться с союзниками), 0 - включить (пули/снаряды
       будут проходить сквозь союзников).

_________________
aka TerminalHash.


Top
 Profile  
 
PostPosted: 29 Jul 2024, 05:16 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7252
Location: Владивосток
FoxFromPripyat wrote:
Почему каждый раз мне необходимо цитировать собственный мануал? Я же не для себя его писал в конце концов %)
Потому что ты не понимаешь вопроса. Я знаю флаги, потому что как бы тестировал их иначе по-твоему? Моя просьба в другом: скажи, что и как ты выставлял, опиши последовательность действий и скажи, к какому нежелательному результату она приводит и к какому должна была приводить. Прям нумерованным списком и как для тупых, чтобы думать не приходилось.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 29 Jul 2024, 15:48 
Offline
Шерлок Холмс
User avatar

Joined: 19 Jun 2019, 23:28
Posts: 463
Location: Equestrian Wasteland.
Исходя из переписки в дев-чате, эти две фичи были привязаны к Friendly Fire-опции, что и сломало ожидаемое поведение. Моё исследование кода это так же подтверждает.

Отмечу, какие опции за что отвечают:
g_friendlyfire - определяет, будут ли наносить союзники урон;
g_friendly_hit_trace - определяет, будут ли проходить пули сквозь союзников;
g_friendly_hit_projectile - определяет, будут ли снаряды проходить сквозь союзников;
g_friendly_absorb_damage - определяет, будут ли пройденные через союзников пули с уменьшенным в половину уроном или нет.

Исходя из этого, выходит следующее:
1. При включённом френдлифайере в коопе, союзники не смогут помогать как раньше (если он работает в коопе конечно). Например, нужно подкинуть кого-то при помощи БФГ - всё, нет этой возможности, только выключить прохождение снарядов через союзника, потому что если выключить это, то снаряд БФГ союзника убьёт и всё.
2. При выключенном френдлифайере регулировать, что же будет через союзника проходить, вообще невозможно, можно только выключить поглощение урона у пулек. В результате фичи включения прохождения снарядов и пуль становятся полностью бесполезными.

Абсолютно разные опции, но почему-то все привязаны к одной, которая полностью нивелирует эффект помощи в коопе и абсолютно странно смотрится такое переключение в ТДМ/ЦТФ, где, вообще-то, нанесение урона должно регулироваться отдельно всегда.

_________________
aka TerminalHash.


Top
 Profile  
 
PostPosted: 30 Jul 2024, 07:00 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7252
Location: Владивосток
Во, сейчас наконец-то ясно стало.

FoxFromPripyat» Исходя из переписки в дев-чате, эти две фичи были привязаны к Friendly Fire-опции, что и сломало ожидаемое поведение.
Наоборот: они не были привязаны, а стали привязаны. Смотри сам:
https://repo.or.cz/d2df-sdl.git/blobdiff/67d37ea1..5a9d04df:/src/game/g_weapons.pas
Именно исходя из того, что третья проверка заканчивалась = 0, а первые две нет, я и подумал, что здесь имеет место какой-то косяк. А поскольку не только названия настроек одинаково начинались с g_friendly*, но и соответствующие константы в коде начинались с GAME_OPTION_TEAM*, то я закономерно решил, что оно и должно быть привязано к friendlyfire. Хотя казалось бы, всего неточность в наименовании. Понимаешь теперь?

FoxFromPripyat» только выключить прохождение снарядов через союзника, потому что если выключить это, то снаряд БФГ союзника убьёт и всё
Тут где-то Ы лишняя, кажется.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 01 Aug 2024, 12:43 
Offline
Шерлок Холмс
User avatar

Joined: 19 Jun 2019, 23:28
Posts: 463
Location: Equestrian Wasteland.
Чёрный Думер wrote:
...то я закономерно решил, что оно и должно быть привязано к friendlyfire. Хотя казалось бы, всего неточность в наименовании. Понимаешь теперь?

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

А ещё другого префикса и не требовалось никак, опции вполне относятся к g_friendly* и GAME_OPTION_TEAM* чисто технически (потому что в FFA/LMS это вообще ни на что не влияет, только в командных режимах). Если прям колышит эта тема, префикс меняем в g_team* и тогда путаницы больше не будет ни у кого.

_________________
aka TerminalHash.


Top
 Profile  
 
PostPosted: 26 Sep 2024, 07:32 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7252
Location: Владивосток
Починил вроде бы: https://repo.or.cz/d2df-sdl.git/commit/15386cc3187d3839a46d2e3c26ad4c3081fc3834
Терминал - проверь, пожалуйста. Пока отмечаю как "В работе".

Заодно обнаружил, что параметр g_friendly_absorb_damage не записывался в файл конфигурации при сохранении. Это тоже поправил.
Ну и все три параметра теперь переименованы:
  • g_friendly_hit_trace — в g_team_hit_trace;
  • g_friendly_hit_projectile — в g_team_hit_projectile;
  • g_friendly_absorb_damage — в g_team_absorb_attacks.

И такое ощущение, что я именно этот баг сам лично упоминал в чате вообще ещё в феврале: https://t.me/doom2d/469027
Просто совсем забыл про это сообщение, а сейчас разбирал TODO и нашёл ссылку на него.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 26 Sep 2024, 10:18 
Offline

Joined: 27 Apr 2020, 20:02
Posts: 547
Если честно, я так и не смог разобраться в этих командах даже после просмотра
мануала. Я выставлял:

g_friendlyfire = 0;
g_friendly_hit_trace = 1;
g_friendly_hit_projectile = 1;
g_friendly_absorb_damage = 1;

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

_________________
В душе я тупорылый школьник-нарцисс, который всегда старается самоутвердиться за счёт других
ВНИМАНИЕ! Сообщение или часть сообщения генерируются с помощью усовершенствованной языковой модели искусственного интеллекта. Содержание, включая любые мнения, советы, заявления, услуги, предложения или другую информацию, выражено на дату, указанную выше, и может быть изменено без предварительного уведомления.⏎


Top
 Profile  
 
PostPosted: 26 Sep 2024, 10:26 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7252
Location: Владивосток
Макс» Но вроде бы боты как и пукали через других полным уроном, так и пукают
Если у тебя версия собрана после 13 ноября 2023 года, то об этом здесь и сообщили как раз. Попробуй пересобрать с последним коммитом.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 26 Sep 2024, 10:32 
Offline

Joined: 27 Apr 2020, 20:02
Posts: 547
Чёрный Думер wrote:
Макс» Но вроде бы боты как и пукали через других полным уроном, так и пукают
Если у тебя версия собрана после 13 ноября 2023 года, то об этом здесь и сообщили как раз. Попробуй пересобрать с последним коммитом.

Что именно было исправлено, сама логика? У меня файл настроек для дф пишется
скриптом активации системы, поэтому я не полагался на систему сохранения
настроек в игре

_________________
В душе я тупорылый школьник-нарцисс, который всегда старается самоутвердиться за счёт других
ВНИМАНИЕ! Сообщение или часть сообщения генерируются с помощью усовершенствованной языковой модели искусственного интеллекта. Содержание, включая любые мнения, советы, заявления, услуги, предложения или другую информацию, выражено на дату, указанную выше, и может быть изменено без предварительного уведомления.


Top
 Profile  
 
PostPosted: 26 Sep 2024, 10:46 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7252
Location: Владивосток
Макс» Что именно было исправлено, сама логика?
Да. Я там два if'а сломал нечаянно когда менял синтаксис кода работы с настройками с raw bitwise на set of.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 17 Oct 2024, 20:35 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7252
Location: Владивосток
Чёрный Думер wrote:
Починил вроде бы:
Дополнил этот коммит и обновил ссылку в сообщении.
Терминал сказал мне в тот раз, что снаряды починились, а стрелковое оружие нет - оно по-прежнему не отбрасывало игрока при hit_trace=1 если friendlyfire=0. И я целый месяц не мог понять, в чём же дело, потому что внешне всё выглядело правильно. А сегодня вчитался и наконец-таки обнаружил косяк: я сломал тогда не два if'а, а все три. Как в том анекдоте:

- Мастер, запорол! Все три запорол!
- Дубина, как три, я же две давал!
- Так я и образец запорол!

Ошибка вышла весьма нехарактерная. Изначально там было следующее условие:
Code:
if ((gGameSettings.Options and (GAME_OPTION_TEAMHITTRACE or GAME_OPTION_TEAMDAMAGE)) = 0) and

Когда я переделывал работу с флагами на операции с множествами, то заменил его на вот такое:
Code:
if (not ([TGameOption.TEAM_HIT_TRACE, TGameOption.FRIENDLY_FIRE] <= gGameSettings.Options)) and
И тут-то меня и коротнуло в моменте: я не понял, что противоположность высказыванию "все элементы из X присутствуют в Y" (оператор <=) - это "ОДИН ИЗ элементов НЕ присутствует", а не "все элементы отсутствуют".

К сожалению, во FreePascal нет операторов проверки на частичное пересечение, хотя было бы удобно. Поэтому пришлось сделать как и в остальных двух случаях - явным пересечением:
Code:
if (gGameSettings.Options * [TGameOption.TEAM_HIT_TRACE, TGameOption.FRIENDLY_FIRE] = []) and

Будет мне уроком. Терминал, проверь ещё раз, пожалуйста, если не затруднит.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 17 Oct 2024, 21:18 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7252
Location: Владивосток
Ага, сейчас заодно напоследок выяснил, что смысл у g_team_absorb_attacks и в самом деле был противоположным. То есть я не шизофреник.
Сразу же и поправил: https://repo.or.cz/d2df-sdl.git/commitdiff/3aa96968be1f35ec0cf32e36f25f27fc69f1dc27

В данном случае это не мой косяк - так и было с самого начала:
https://repo.or.cz/d2df-sdl.git/blobdiff/bacfe449..1e0f0d41:/src/game/g_weapons.pas

Зато теперь наконец-то стала ясна причина моей путаницы во всех этих настройках.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 17 Oct 2024, 21:35 
Offline
Шерлок Холмс
User avatar

Joined: 19 Jun 2019, 23:28
Posts: 463
Location: Equestrian Wasteland.
Проверил настройки после последних коммитов - работает как положено.

_________________
aka TerminalHash.


Top
 Profile  
 
PostPosted: 17 Oct 2024, 23:59 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7252
Location: Владивосток
FoxFromPripyat wrote:
Проверил настройки после последних коммитов - работает как положено.
Отлично, спасибо.
На всякий случай оставлю здесь свою таблицу, которая и помогла мне понять логику работы этих настроек и различия между ними.

Варианты последствий для игрока-союзника:
  1. получает урон?
  2. поглощает ли часть урона (но не весь!) собой, в том числе без ущерба для себя?
  3. простреливается насквозь?
  4. отбрасывает попадание по нему?

friendlyfire=0:

hit_trace absorb
0 0 - 1:нет, 2:нет, 3:да, 4:нет - не получает, не поглощает; простреливается, не отбрасывает
0 1 - 1:нет, 2:да, 3:да, 4:нет - не получает, поглощает; простреливается, не отбрасывает
1 0 - 1:нет, 2:нет, 3:нет, 4:да - не получает, не поглощает; не простреливается, отбрасывает
1 1 - 1:нет, 2:нет, 3:нет, 4:да - не получает, не поглощает; не простреливается, отбрасывает

hit_proj absorb
0 0 - 1:нет, 2:нет, 3:да, 4:нет - не получает, не поглощает; простреливается, не отбрасывает
0 1 - 1:нет, 2:нет, 3:да, 4:нет - не получает, не поглощает; простреливается, не отбрасывает
1 0 - 1:нет, 2:нет, 3:нет, 4:да - не получает, не поглощает; не простреливается, отбрасывает
1 1 - 1:нет, 2:нет, 3:нет, 4:да - не получает, не поглощает; не простреливается, отбрасывает

friendlyfire=1:

hit_trace absorb
0 0 - 1:да, 2:нет, 3:нет, 4:да - получает, не поглощает; не простреливается, отбрасывает
0 1 - 1:да, 2:нет, 3:нет, 4:да - получает, не поглощает; не простреливается, отбрасывает
1 0 - 1:да, 2:нет, 3:нет, 4:да - получает, не поглощает; не простреливается, отбрасывает
1 1 - 1:да, 2:нет, 3:нет, 4:да - получает, не поглощает; не простреливается, отбрасывает

hit_proj absorb
0 0 - 1:да, 2:нет, 3:нет, 4:да - получает, не поглощает; не простреливается, отбрасывает
0 1 - 1:да, 2:нет, 3:нет, 4:да - получает, не поглощает; не простреливается, отбрасывает
1 0 - 1:да, 2:нет, 3:нет, 4:да - получает, не поглощает; не простреливается, отбрасывает
1 1 - 1:да, 2:нет, 3:нет, 4:да - получает, не поглощает; не простреливается, отбрасывает

Что мне сейчас не нравится:

  1. У g_team_absorb_attacks отсутствует какое-либо влияние на снаряды. Хотя часть, скажем, того же сплеша от ракет можно было бы и поглощать.
  2. Включённый g_team_hit_trace нивелирует собой g_team_absorb_attacks, частично пересекающийся с ним по смыслу.
    Но это похоже на уже имеющую место ситуацию с g_allow_dropflag и g_throw_flag, а потому более-менее терпимо.
  3. Один лишь g_friendlyfire перекрывает собой все три настройки, тогда как ещё есть пространство для разнообразия.
    Самое очевидное - простреливать союзников насквозь при hit_trace=0, нанося им весь урон (при absorb=0) или только его поглощённую часть в порядке очерёдности (при absorb=1).
  4. Нет какого-либо внятного контроля сплеша от BFG.

Поэтому пока оставляю как "В работе". Будет настроение - доделаю.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 20 posts ] 

All times are UTC + 3 hours


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
doom2d.org, since 2007