doom2d.org

Главная база плоских морпехов
It is currently 29 Nov 2023, 02:38

All times are UTC + 3 hours




Post new topic Reply to topic  [ 20 posts ] 
Author Message
PostPosted: 17 Aug 2019, 20:43 
Offline
Приколист
User avatar

Joined: 04 Feb 2010, 14:42
Posts: 837
Location: Equestria
Изначально все триггеры - это кнопки. Почему-то это не было учтено для новых триггеров и они объединяют в себя две разные штуки: область активации и область воздействия (которой не должно быть только для триггеров глобального воздействия). Триггеры Play Sound и Effect включают такие настройки, которые было бы логично разделить на несколько триггеров. Некоторые триггеры могут щёлкать, а некоторые - нет. И подобные проблемы.

В общем хотелось бы переделать структуру в более регулярную, обобщённую и удобную.

1. Разделить Play Sound на Play Local Sound и Play Global Sound.
2. Play Local Sound:
  • Добавить область действия, где звук и будет звучать.
  • Добавить параметр Затухание(Дистанция?). Единицы в процентах(пикселях?), направление снаружи внутрь(так лучше, да)
  • Удалить параметр Pan
  • Удалить параметр Local
4. Разделить Effect на Particle Effect и Animated Effect.
3. Play Global Sound:
  • Удалить параметр Local
5. Particle Effect:
  • Добавить область действия, где и будут создаваться частицы.
  • Удалить параметр Effect type
  • Удалить параметр Trigger center (можно оставить на уровне гуя редактора)
  • Переименовать Effect subtype в Effect type
6.1. Animated Effect (Вариант 1):
  • Добавить область действия
  • Добавить флаг Silent effect (в коде есть, но в структурах данных нету, сейчас всегда True)
  • Удалить параметры Effect type, Effect color, Скорости
  • Удалить параметр Trigger center (можно оставить на уровне гуя редактора)
  • Переименовать Effect subtype в Effect type
6.2. Animated Effect (Вариант 2):
  • Добавить область действия
  • Добавить выбор анимации
  • Добавить выбор звука
  • Удалить параметры Effect type, Effect subtype, Effect color
  • Удалить параметр Trigger center (можно оставить на уровне гуя редактора)
  • Удалить параметры скорости (кроме Vertical/Horizontal Speed)
7. Push, Damage, Healter:
  • Добавить область действия (квад)
8. Объеденить Enable Trigger, Disable Trigger и Trigger Toggle в Trigger Switch:
  • Удалить область воздействия
  • Добавить список воздействия
  • Добавить пратметр Тип (вкл/выкл/перекл/рандом)
9. Добавить звук щёлкания для всех триггеров где нету.
  • Вместо параметра Silent дать возможность выбрать свой звук?
10. Я ничего не пропустил? Где ещё есть странная/переусложнённая структура? Каких-то параметров не хватает для обобщения?
11. Extender:
  • Удалить область воздействия
  • Добавить список воздействия
12. Объеденить Open Door, Close Door, Door, Door (5 sec), Close Trap, Trap в один триггер Door:
  • Добавить параметр Тип (откр/закр/перекл)
  • Добавить параметр Время действия (сек, если не ноль то по истечению таймера сделать обратное действие)
  • Добавить параметр Ловушка (да/нет)
  • Добавить выбор звука открытия/закрытия двери
  • Добавить возможность влиять на любые типы панелей, а не только двери
13. Объеденить Turn stream up/left, Turn stream down/right, Revert stream с обощением?
14. В добавок к областям воздействия добавить списки воздействия где это имеет смысл.

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

Пункты помеченные жёлтым требуют обсуждения.




Старое сообщение(17-19 авг):

Изначально все триггеры - это кнопки. Почему-то это не было учтено для новых триггеров и они объеденяют в себя две разные штуки: облать активации и область воздействия(которой не должно быть только для триггеров глобального воздействия). Триггеры Play Sound и Effect включают такие настройки, которые было бы логично разделить на несколько триггеров. Некоторые триггеры могут щёлкать, а некоторые - нет. И подобные проблемы.

В общем хотелось бы переделать структуру в более регулярную, обобщённую и удобную.

1. Разделить Play Sound на Play Local Sound и Play Global Sound, а Effect на Particle Effect и Animated Effect.
2. Play Local Sound:
  • Добавить область действия (квад)
  • Добавить параметр для установки границы затухания звука (длина в пикселях от области воздействия наружу)? Как обозвать?
  • Удалить параметр Pan
  • Удалить параметр Local
3. Play Global Sound:
  • Удалить параметр Local
5. Particle Effect:
  • Добавить область действия (квад)
  • Удалить параметр Effect type
  • Удалить параметр Trigger center
6. Animated Effect:
  • Добавить область действия (квад)
  • Добавить флаг Silent effect? (в коде есть, но в структурах данных нету, сейчас всегда True)
  • Удалить параметр Effect type
  • Удалить параметр Effect color
  • Удалить параметр Trigger center
  • Удалить параметры скорости
  • Для наркомании добавить возможность установки кастомной анимации и звука? Возможно с вынесением текущих захардкоженных анимаций и звуков в standart.wad
7. Push, Damage, Healter
  • Добавить область действия (квад)
8. Enable Trigger, Disable Trigger, Trigger Toggle
  • Объединить в один триггер с добавлением соответствующего поля с выбором режима воздействия? Как обозвать?
9. Добавить всем триггерам флаг Silent, где нету. Может и сразу заменить выбором кастомного звука щелчка(кто-то такое уже хотел).
10. Я ничего не пропустил? Где ещё есть странная/переусложнённая структура? Каких ещё параметров не хватает для обобщения?

Длля обратной совместимости оставить старые триггеры как есть, но при загрузке конвертировать в новый формат, а в редакторе скрыть c глаз долой.

Пункты помеченные жёлтым требуют обсуждения.



Top
 Profile  
 
PostPosted: 17 Aug 2019, 23:25 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7468
Location: \\HULK
Версионирование у нас вроде как есть.

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

Про триггеры напишу подробно утром, сейчас сильно устал.

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 18 Aug 2019, 01:07 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 6590
Location: Владивосток
Помнится ketmar ещё предлагал нафиг избавиться от понятия "зона активации", заменив его на "список активации". Преимущества очевидны, думаю.

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


Top
 Profile  
 
PostPosted: 18 Aug 2019, 10:13 
Offline
Приколист
User avatar

Joined: 04 Feb 2010, 14:42
Posts: 837
Location: Equestria
Что такое этот "список активации"? Я что-то слабо представляю как можно убрать зоны активации.


Top
 Profile  
 
PostPosted: 18 Aug 2019, 18:19 
Offline
Приколист

Joined: 18 Oct 2009, 12:00
Posts: 1252
Location: Подмосковье
В расширителе и т.п. лист триггеров которые он активирует вместо боундинг бокса зоны активации. Можно даже зону активации оставить в редакторе, а в карту писать список того что в ней находится. За формат карты 2.0 у нас текстокарты, которые можно любой хитрозакрученной жопой расширить через мапдеф. Еще один бинарный ИМХО не нужен.

_________________
aka PrimuS


Top
 Profile  
 
PostPosted: 18 Aug 2019, 20:30 
Offline
Приколист
User avatar

Joined: 04 Feb 2010, 14:42
Posts: 837
Location: Equestria
Так всё таки область воздействия(action area). Я под областью активации понимаю то, куда жмёт игрок.
Собственно только для расширителя и enable/disable/toggle trigger имеет смысл делать списком, на какие триггеры они должны воздействовать. Для остального область воздействия нужна.

Насколько имеет смысл делать список воздействия в дополнение к области воздействия? Т.е. выбирать конкретных монстров/игроков, на которые будет воздействие независимо от их расположения на карте.


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

Joined: 18 Oct 2009, 04:01
Posts: 6590
Location: Владивосток
DeaDDooMER wrote:
Насколько имеет смысл делать список воздействия в дополнение к области воздействия?
Даже не знаю. С другой стороны, можно генерировать таковые списки при загрузке карты.

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


Top
 Profile  
 
PostPosted: 18 Aug 2019, 20:39 
Offline
Приколист

Joined: 18 Oct 2009, 12:00
Posts: 1252
Location: Подмосковье
До недавних пор я думал что оно так и происходит. Так как у нас триггеры не двигаются, то почему бы и нет.

_________________
aka PrimuS


Top
 Profile  
 
PostPosted: 18 Aug 2019, 21:04 
Offline
Приколист
User avatar

Joined: 04 Feb 2010, 14:42
Posts: 837
Location: Equestria
Черный Думер wrote:
DeaDDooMER wrote:
Насколько имеет смысл делать список воздействия в дополнение к области воздействия?
Даже не знаю. С другой стороны, можно генерировать таковые списки при загрузке карты.
Либо я плохо написал, либо ты не дочитал. Такое сгенерировать не получится. Представь список вместо области воздейтвия для триггера damage. Область воздействует динамически (заранее не известно кто и когда в неё станет), а список - статически (выбиаются конкретные монстры).


Top
 Profile  
 
PostPosted: 18 Aug 2019, 21:52 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7468
Location: \\HULK
» 1. Разделить Play Sound на Play Local Sound и Play Global Sound, а Effect на Particle Effect и Animated Effect.
Если плодить триггеры, то надо их в редакторе вместо одного безумно длинного списка разделить по кнопочкам.
В принципе ок, но у нас еще есть не очень полезный и сыроватый триггер Музыка - про него тоже надо подумать.

» 2. Play Local Sound
    » Добавить область действия (квад)
      Не вижу большого смысла, подробнее - ниже.
    » Добавить параметр для установки границы затухания звука (длина в пикселях от области воздействия наружу)? Как обозвать?
      Хорошая годная идея. "Затухание"? "Дистанция слышимости"? Просто "Дистанция"?

» 5. Particle Effect:
    » Удалить параметр Effect type
      Скорее переименовать "Подтип эффекта" в "Тип эффекта". Оставить там пресеты - для крови, воды, искр и тд
    » Удалить параметр Trigger center
      Плохая идея. Иногда надо, чтобы все летело из единой точки (фонтанчик искр от проводки), иногда нужен рект (падающий снег).
» 6. Animated Effect:
    » Удалить параметр Trigger center
    » Удалить параметры скорости
      Тоже нужный параметр, для тонкой настройки эффекта. Правда,не уверен, что он сейчас работает
    » Для наркомании добавить возможность установки кастомной анимации и звука? Возможно с вынесением текущих захардкоженных анимаций и звуков в standart.wad
      Ооо дааааа... Хотеть! А то приходится на всякие взрывы панели с анимтекстурами колхозить

Кстати, дым (предположим, он у нас выделен в триггер есть и идет вверх) - это в твоей концепции партикли или анимация?

» 8. Enable Trigger, Disable Trigger, Trigger Toggle
    » Объединить в один триггер с добавлением соответствующего поля с выбором режима воздействия? Как обозвать?
      Нелогично. У нас, например, "Открыть дверь", "Закрыть дверь", "Дверь" разные - значит, энаблеры и дизаблеры должны по той же логике работать. А вот "Дверь 5 сек" можно, в принципе, низвести до атрибута "Двери".

Сслабо понимаю, для чего нужны отдельные области действия Push, Damage, Healer и тд, хотя осбо не возражаю. Важно только, чтобы если область действия не указана, она равнялась координатам и размеру триггера (для совместимости).

У нас в любом случае есть триггеры с вынесенными областями действия и с областью действия, совмещенной с кнопкой.
Где, например, будет область действия у триггера "Начислить очки" или "Выход"? Зачем плодить лишние сущности?

Еще имеет смысл:
  • сделать всем триггерам параметр "Кулдаун". Как перезарядка у "Турели".
  • добавить "Лифт стоп" (при этом лифт "открывается", как дверь и никак не влияет на снаряды и игрока) и разделить "Лифт вверх/поток влево" и "Лифт вниз/поток вправо". Объединить эти типы оказалось скверной идея, я сменил концепт и попросил переделать, но у внедрявшего потоки Прима кончилась пепяка и потоки так и осталось недоделанными. Ссылка на реквест про потоки
  • научить "Открыть дверь", "Закрыть дверь", "Дверь" и тд "открывать" панель любого типа по ID, а не только двери. Например, спустить воду из бассейна, налить лавы в вулкан, динамически управлять блокмоном.

DeaDDooMER» Насколько имеет смысл делать список воздействия в дополнение к области воздействия? Т.е. выбирать конкретных монстров/игроков, на которые будет воздействие независимо от их расположения на карте.
    Может оказаться полезным.

Prostovitalik» Можно даже зону активации оставить в редакторе, а в карту писать список того что в ней находится.
    Непременно оставить. Потому что это удобнее в редакторе.

P.S. И еще. Это, конечно, норкомания, но для задела на будущее имеет смысл сделать триггеры так, чтобы они не ломались, если их двигать по карте, например, меняя координаты скриптом или привязав их к платформе.

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 18 Aug 2019, 22:41 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 6590
Location: Владивосток
DeaDDooMER wrote:
Либо я плохо написал, либо ты не дочитал. Такое сгенерировать не получится. Представь список вместо области воздейтвия для триггера damage. Область воздействует динамически (заранее не известно кто и когда в неё станет), а список - статически (выбиаются конкретные монстры).
Я имел в виду списки активации статичных объектов из области воздействия (например триггеров), конечно же.

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


Top
 Profile  
 
PostPosted: 18 Aug 2019, 22:50 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7468
Location: \\HULK
Чуть не забыл, еще, если добавить в дамаг и лечилку область воздействия, не получится дамажить и лечить себя выстрелом по какому-то объекту на карте.
А сейчас это возможно.

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 19 Aug 2019, 02:05 
Offline
Приколист
User avatar

Joined: 04 Feb 2010, 14:42
Posts: 837
Location: Equestria
» 5. Particle Effect:
    » Удалить параметр Trigger center
      » Плохая идея. Иногда надо, чтобы все летело из единой точки (фонтанчик искр от проводки), иногда нужен рект (падающий снег).
        Сейчас наличие этого параметра - костыль вытекающий из-за того что нет области воздействия. Делаем выносную область воздействия размером с пуксель и получаем тот же результат. Для удобства можно оставить только в гуе. См далее зачем вообще разделять область активации и область воздействия.

» 6. Animated Effect:
    » Удалить параметры скорости
      » Тоже нужный параметр, для тонкой настройки эффекта. Правда,не уверен, что он сейчас работает
        Сейчас для этих эффектов данные параметры полностью игнорируются, да. Потому и предлагаю разделить на несколько триггеров и удалить кучу лишних полей, которые только путают.
» Кстати, дым (предположим, он у нас выделен в триггер есть и идет вверх) - это в твоей концепции партикли или анимация?
    У нас в коде партикли всегда были и имеют форму летающих пукселей, подчинящихся гравитации. Так что скорее анимации.
    Для обощённого варианта (свои текстура+звук) как раз можно вернуть пару скоростей.

» 8. Enable Trigger, Disable Trigger, Trigger Toggle
    » Объединить в один триггер с добавлением соответствующего поля с выбором режима воздействия? Как обозвать?
      » Нелогично. У нас, например, "Открыть дверь", "Закрыть дверь", "Дверь" разные - значит, энаблеры и дизаблеры должны по той же логике работать. А вот "Дверь 5 сек" можно, в принципе, низвести до атрибута "Двери".
        Ещё как логично. Эта пачка триггеров затрагивает ровно один параметр триггера, только по разным формулам:
        Enable: Enabled := True;
        Disable: Enabled := False;
        Toggle: Enabled := not Enabled;
        Я бы ещё добавил вариант Random.
        Двери, кстати, туда же. Их наверно тоже можно обощить. Но не уверен как хранится состояние панели в внутри игры.

» Сслабо понимаю, для чего нужны отдельные области действия Push, Damage, Healer и тд, хотя осбо не возражаю. Важно только, чтобы если область действия не указана, она равнялась координатам и размеру триггера (для совместимости).
    То что сейчас область воздействия размещается по тому же кваду, что и область активации - частный случай.
    О профитах:
    Кейс 1. Есть два игрока в разных комнатах, в комнате у первого есть кнопка "лечить второго игрока". Такая простая вещь делается очень просто.
    Кейс 2. Есть два игрока в разных комнатах, в комнате у первого есть кнопка "подбросить(push) второго игрока на платформу". Аналогично.
    Кейс 3. Есть кнопка "покусать монстров в трёх отдалённых точках карты". С областью действия такая более слжная конструкция делается даже проще. Потому что не надо накидывать три расширителя, которые активируют ещё три дамага размазанных по карте.
    Кейс 4. Напомню, что на данный момент использование расширителей очень длительная операция и напрямую зависит от количесва триггеров по всей карте, а не только в области воздействия. Примеры выше не только исключают использование расширителей, но и уменьшают количество триггеров, а для текущего дефолтного кейса использования вообще ничего не изменится.

» Где, например, будет область действия у триггера "Начислить очки" или "Выход"? Зачем плодить лишние сущности?
    Нигде. Не было речи о добавлении области воздействия на всё подряд. Я перечаслил только те триггеры, которые хочу поменять. Я об этом написал в самом начале: есть триггеры глобального и локального воздействия. Первые как раз воздействуют на глобальное сотояние игры (выход, музыка, счёт игроков, сообщения, etc). Вторые воздействуют на объекты на карте (панели, монстры, etc).

» P.S. И еще. Это, конечно, норкомания, но для задела на будущее имеет смысл сделать триггеры так, чтобы они не ломались, если их двигать по карте, например, меняя координаты скриптом или привязав их к платформе.
    Это как раз к идее о списках воздействия для триггеров.
    + опциональня привязка координат всех типов сущностей (панели, предметы, области спавна, триггеры и области воздействия) относительно заданной группы/панели. Но это когда появятся двигающиеся панели.

» Чуть не забыл, еще, если добавить в дамаг и лечилку область воздействия, не получится дамажить и лечить себя выстрелом по какому-то объекту на карте.
А сейчас это возможно.

    С чего ты взял что будет не возможно? У нас где-то запрещено ставить область воздействия по тем же координатам что и область активации?


Top
 Profile  
 
PostPosted: 19 Aug 2019, 19:44 
Offline
Приколист
User avatar

Joined: 04 Feb 2010, 14:42
Posts: 837
Location: Equestria
Обновил первопост.

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


Top
 Profile  
 
PostPosted: 22 Mar 2021, 14:59 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7468
Location: \\HULK
Так, про области действия ты меня убедил.

DeaDDooMER» 5. Particle Effect: Удалить параметр Trigger center
Ок, убедил.

DeaDDooMER» 6. Animated Effect
Вот над этим триггером мне надо помедитировать еще.

DeaDDooMER» Enable Trigger, Disable Trigger, Trigger Toggle: Объединить в один триггер с добавлением соответствующего поля с выбором режима воздействия
Точно не надо, это неудобно. Потому что сейчас, чтобы поставить такой триггер, ты делаешь одно действие - ставишь триггер. А так придется делать два - ставить триггер и выбрать его тип.

DeaDDooMER» А что с ним не так? (с триггером музыка)
Можно сделать его частным случаем триггера ГлобалСаунд, с той разницей, чтобы его громкость управлялась ползунком от музыки.

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 23 Feb 2023, 09:19 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 6590
Location: Владивосток
Понял всю важность этого реквеста когда думал, отклонять ли вот эти идеи:
https://doom2d.org/forum/viewtopic.php?f=41&t=2217
https://doom2d.org/forum/viewtopic.php?f=41&t=1497
https://doom2d.org/forum/viewtopic.php?f=41&t=1732

Во-первых, прежде всего надо обдумать, чем вообще являются наши триггеры и чем они отличаются от обычного рафинированного скриптования в вакууме.
Другими словами, нужно понять вычислительную модель: что у нас является программой (машиной состояний), и что в ней является детерминированными аспектами, а что нет.
Сейчас мне видятся три основных понятия: зона срабатывания, область воздействия, типы активации. Нужно чётко их определить и отделить друг от друга.

То есть в подобной модели триггер "Звук", например, не надо разделять на "Глобальный звук" и "Локальный звук".
Ему просто надо добавить параметр "точка воспроизведения" в качестве области воздействия, подобно "точке назначения" в телепорте.
А глобальными считать звуки, у которых она не выставлена.

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

В-третьих, нужно упростить программирование триггерами и сделать его более наглядным.
Скажем, добавить окошко для просмотра графа потока управления, где точками входа в "программу" считать триггеры с типами активации.

Кроме того, у нас сейчас есть заметная проблема с необходимостью накладывать несколько триггеров друг на друга ради совершения действий одновременно.
Чтобы это преодолеть, я бы предложил разделить понятие "триггер" на "зона срабатывания" и "выполняемые действия". У одной зоны есть список действий.
Нынешние триггеры в таком случае следует понимать как зону, у которой в списке содержится только одно действие.

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

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


Top
 Profile  
 
PostPosted: 23 Feb 2023, 15:38 
Offline
Приколист
User avatar

Joined: 04 Feb 2010, 14:42
Posts: 837
Location: Equestria
Давно тут записывал мысли, я потом ещё раскидывал мозгами. В чатах когда-то рассказывал.

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

Что-то похожее что смог загуглить, названия программ с которыми имел дело не помню.
Attachment:
1.png
1.png [ 19.45 KiB | Viewed 1312 times ]

Attachment:
3.png
3.png [ 4.41 KiB | Viewed 1312 times ]

Attachment:
4.png
4.png [ 19.91 KiB | Viewed 1312 times ]

Attachment:
5.png
5.png [ 65.92 KiB | Viewed 1312 times ]


Черный Думер wrote:
Наличие у триггера только одной области активации и необходимость располагать активируемые ею триггеры в топографической близости друг от друга, как ни странно, хорошо ограничивают сложность логики и принуждают к её структурированию.
Списки нужны. Генерировать программой оптимальные триггерные конструкции очень тяжко, если оставлять так как сейчас. К тому же для лучшего структурирования было бы неплохо давать мапперу создавать свои блоки действий, комбинируя стандартные и другие пользовательские блоки. Это было бы что-то вроде подпрограмм/процедур/функций во взрослых языках. Может быть даже разрешать делать сложные триггерные конструкции исключительно в пользовательских блоках.

И есть ещё идея, что структуру в таких пользовательских блоках рисовать на чём-то вроде timeline из редакторов анимации.
Чем блок правее, тем дольше будет задержка перед его активацией (вместо того что бы задержку выставлять цифрами в свойствах триггера).
Тогда с самого левого края рисовать входы (точки подключения кнопок или выходов блоков), слева-на-право-сверху-вниз программа выполняется, а с левого края рисовать выходы (точки подключения входов блоков или областей воздействия).

Attachment:
6.png
6.png [ 79.3 KiB | Viewed 1312 times ]


Ну и можно за идеями сходить поглядеть как подобное сделано в других движках. Насколько помню, в unity и unreal engine есть визуальные языки программирования. Наверняка и в других есть.


Top
 Profile  
 
PostPosted: 23 Feb 2023, 18:41 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 6590
Location: Владивосток
DeaDDooMER» Генерировать программой оптимальные триггерные конструкции очень тяжко, если оставлять так как сейчас.
Здесь не понял. Зачем их генерировать? Самый максимум, что нужно, на мой взгляд - при загрузке карты пробегаться по всем зонам активации и запоминать, какие триггеры они охватывают, чтобы не делать этого же каждый раз при срабатывании расширителя, например.

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


Top
 Profile  
 
PostPosted: 23 Feb 2023, 18:49 
Offline
User avatar

Joined: 27 Apr 2020, 20:02
Posts: 209
Вы изобретаете Метапрог


Top
 Profile  
 
PostPosted: 23 Feb 2023, 19:49 
Offline
Приколист
User avatar

Joined: 04 Feb 2010, 14:42
Posts: 837
Location: Equestria
Черный Думер wrote:
DeaDDooMER» Генерировать программой оптимальные триггерные конструкции очень тяжко, если оставлять так как сейчас.
Здесь не понял. Зачем их генерировать? Самый максимум, что нужно, на мой взгляд - при загрузке карты пробегаться по всем зонам активации и запоминать, какие триггеры они охватывают, чтобы не делать этого же каждый раз при срабатывании расширителя, например.
За тем что программы тоже могут создавать карты, а не только мясные человеки. Я на несколько штук забил именно из-за того что триггеры надо привязывать к геометрии, это создает проблемы с очень сложными конструкциями.


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 1 guest


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