Welcome to U.A.C. [O.S.A.]
login / register
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Тема для новичков. Вопросы по маппингу/моддингу - любые! Пред.  1, 2, 3 ... 329, 330, 331 ... 350, 351, 352  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!Ответить
АвторСообщение
c4tnt
= 1st Lieutenant =
Next rank: - Captain - after 211 points
1879

Doom Rate: 1.92
Ссылка на пост №6581 Отправлено: 28.03.15 09:27:16

Вот именно. Править исходник - это wrong way, почти всегда.


В целом - да, но при одном условии. Лезть в исходники это плохая идея только если движок предоставляет API для моддинга. Если такого не случилось, то просто нет вариантов. К сожалению в гоззе смешались люди, кони и всё прочее - в норме эта система выглядит примерно так: Есть сами исходники в которые никто не лезет (движок), есть модули с логикой игры ( если хочется радикальной смены геймплея, то вам сюда ), есть глобальные скрипты (добавить нового монстра или итем, подрихтовать ИИ и всякое такое ), и есть редактор карт плюс локальные скрипты ( для мапперов ).

У гоззы эти уровни расположились примерно так:

0. Движог = исходники
1. Mod API = исходники
2. Глобальные скрипты = ACS + DECORATE + ещё_дофига_lump-ов
3. Локальные скрипты = ACS

Как итог все желающие перейти с уровня 2 на уровень 1 сразу вынуждены проваливаться на уровень 0

А ещё народ ищет грааль под названием DoomScript, только ищет не там
Скрытый текст:


void follower::getCloser() {
   entity leader;

   leader = getTalkTarget();
   if ( !leader ) {
      leader = $player1;
   }
   setTalkTarget( $null_entity );
   run = false;
   moveToEntity( leader );
   while( !AI_DEST_UNREACHABLE && !AI_MOVE_DONE && ( distanceTo( leader ) > FOLLOW_MINDIST ) ) {
      lookAt( leader, 0.1 );
      if ( distanceTo( leader ) > FOLLOW_RUNDIST ) {
         run = true;
      }
      if ( distanceTo( leader ) < FOLLOW_MAXDIST ) {
         run = false;
      }
      if ( AI_TALK ) {
         setState( "state_Idle" );
      }
         
      waitFrame();
   }
   stopMove();
}

Обычный дум3 скрипт

1 1
Shadowman
= UAC Commissar =
Next rank: - UAC Marshal - after 297 points
6603

Doom Rate: 2.46
Ссылка на пост №6582 Отправлено: 28.03.15 12:30:45
c4tnt :
А ещё народ ищет грааль под названием DoomScript, только ищет не там

А как с ним вообще дело обстоит? И что такого особенного может дать дум скрипт по сравнению с обычным ACS?
Скрытый текст:

В ACS невозможно нормально закодировать нелетальные атаки. Например, отравление (монстра), паралич, оглушение, безумие, безмолвие и т.п., чем богаты все РПГ. Как итог, приходится ограничиваться стандартными поверапами, которые не всегда позволяют реализовать задуманное.

1 6 2
c4tnt
= 1st Lieutenant =
Next rank: - Captain - after 211 points
1879

Doom Rate: 1.92
Ссылка на пост №6583 Отправлено: 28.03.15 14:41:11
У ACS-а самая главная беда в том, что там нет типов данных (он тупо игнорирует, да). Ещё там нет классов для энтити (это как раз в д3 есть), нормальных строк и референсов на экторы в уровне.

Тут немного теории:

1. Что даёт класс для разных видов акторов. Вот, например, есть у нас имп обыкновенный. В ACS у импа какого-то специального класса нет, поэтому самим поведением импа управляет движок, и максимум можно через системные функции этому импу порекомендовать что-нибудь сделать. Что происходит когда класс есть: в скрипте будет описание внутренних данных этого импа - эти данные будут храниться отдельно в каждом экземпляре импа, их можно будет менять из скрипта и всё такое прочее. Кроме того у класса есть функции, и движковое AI может их вызывать (по крайней мере некоторый стандартный набор). То есть в д3 то самое добавление новых флагов или команд в половине случаев просто соответствует дописыванию в класс новых переменных. В ACS такое нельзя вообще.

2. Что дают типы объектов: Doom3 знает, какого типа объект пытаются использовать, а ACS - нет. Соответственно в D3 нельзя "открыть" импа как дверь или "убить" дверь. Впрочем, в ACS нет указателей на объекты и там нельзя сделать ничего из вышеперечисленного ни в каких комбинациях.

3. Указатели на объекты vs. ACS: В ACS есть один "невидимый" указатель на объект (действительно указатель) - это Activator. В D3 их можно создавать в произвольных количествах, заполнять, копировать и так далее. Конечно, в ACS есть доступ через TID, но он фактически не позволяет найти объект у которого нет TID (по разным причинам). Например, довольно затруднительно найти импов, которые смотрят на тебя (теоретически можно, но получится дикая конструкция из прожектайлов, скриптов и декотрейта ). Из за того, что в ACS нет указателей там нет и функций, которые бы эти указатели могли возвращать - трассировка по прямой от точки до точки с целью найти энтити, поиск энтити в закрытом объёме, просто перебрать по отдельности все энтити с некоторым тидом (именно по отдельности, например, их суммарный health посчитать).

4. Строки в ACS и боль: костыль, они, конечно, сделали. Но строки длительного хранения всё ещё вызывают тысячи вопросов. Равно как и ремаппящиеся вникуда числа в ACS библиотеках.

5. Аргументы энтити в D3 vs гозза: В Doom3 реализован ровно такой же набор аргументов для энтити как сейчас в UDMF в гоззе. Но там скрипты позволяют делать с этими аргументами по ходу игры всё что угодно. В гоззе UDMF аргументы работают только на UDMF картах, что очень доставляет. (А так то скрипты могли бы хранить в них свои данные)

6. Во fraggle script были хотяб поинтеры, но кто-то добрый всё испортил.
1 1
Thirteen
Lieutenant Colonel
Next rank: - Colonel - after 188 points
3852

Doom Rate: 1.93
Ссылка на пост №6584 Отправлено: 28.03.15 15:01:27
Наверное, так сложилось исторически. В Doom не было разделения игровой логики и движка, и от этого принципа до сих пор никак до конца не избавятся, несмотря на наличие положительных примеров (от Квейка и новее).

Есть ещё такой момент, что радикальная смена архитектуры движка скорее всего сломает к чертям совместимость с модами, созданными в условиях существующего бардака из фич. Поэтому у создателей популярных движков типа гоззы нет особого выбора в развитии их проектов, кроме как постепенно нанизывать костыли на костыли.
1
c4tnt
= 1st Lieutenant =
Next rank: - Captain - after 211 points
1879

Doom Rate: 1.92
Ссылка на пост №6585 Отправлено: 28.03.15 15:31:27
В принципе, судя по тому, что там творит граф, это гоззу уже убило. А способ давно известен. Предположим, захотелось кому-то радикально переделать гоззу на более современный лад, но не убить моды. Берём и переписываем основную часть без лишних заморочек, а всё старое должно просто загружаться специальным слоем конвертеров, которые будут читать тот же ACS\декор и заменять его адекватным скриптом.
1 1
alekv
= 2nd Lieutenant =
Next rank: - 1st Lieutenant - after 184 points
1456

Doom Rate: 1.68
Ссылка на пост №6586 Отправлено: 28.03.15 15:36:54
ZZYZX :
Не секрет. http://forum.zdoom.org/viewtopic.php?f=34&t=46916
http://forum.zdoom.org/viewtopic.php?f=34&t=46916
Правда оно полузаброшенное щас.

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

ZZYZX :
Это не мод, это игра. Aliens vs Predator 2. И кстати взлом там не у хищника, а у людей. Взглянуть — утяни с торрента и начни кампанию за хуманов, в первой же миссии всё будет. Правда сама игра за хуманов мне там не нравится, стрёмненький хоррор какой-то.

Спасибо, посмотрю, а то я нагородил чепухи выше =)

c4tnt :
В гоззе UDMF аргументы работают только на UDMF картах, что очень доставляет.

Интересно почитать, я как-то пробовал что-то сделать с 3д полом на udmf карте через acs, ничего не получилось так и забросил затею ..

[quote="Shadowman"]В ACS невозможно нормально закодировать нелетальные атаки. Например, отравление (монстра), паралич, оглушение, безумие, безмолвие и т.п., чем богаты все РПГ. Как итог, приходится ограничиваться стандартными поверапами, которые не всегда позволяют реализовать задуманное.
А почему не получилось сделать отравление монстра? Ведь монстру можно давать инвентори итем, и если она у него есть дамажить его по чуть? Оглушение это же frozen только для монстра, что мешает переключить монстра на стейт оглушения в котором он ничего не делает?
Или такие варианты не подходят?

А вообще хотелось бы темку в которой можно было бы размышлять по поводу реализации каких бы то нибыло фич, заметил что часто мне в голову приходят идеи когда что-то пытаюсь описать...
1
c4tnt
= 1st Lieutenant =
Next rank: - Captain - after 211 points
1879

Doom Rate: 1.92
Ссылка на пост №6587 Отправлено: 28.03.15 15:52:46
Так есть же: http://i.iddqd.ru/viewtopic.php?t=7360&start=260
1 1
alekv
= 2nd Lieutenant =
Next rank: - 1st Lieutenant - after 184 points
1456

Doom Rate: 1.68
Ссылка на пост №6588 Отправлено: 28.03.15 15:57:51
c4tnt
Омг, забыл про нее =)
А вариант взлома замка тот что описал на прошлой странице совсем не то? Я к сожалению не могу скачать игру прям щас, но по скринам примерно понял как оно взламывает, и мне кажется что тот способ мог бы справиться с такой задачей.
1
c4tnt
= 1st Lieutenant =
Next rank: - Captain - after 211 points
1879

Doom Rate: 1.92
Ссылка на пост №6589 Отправлено: 28.03.15 16:01:01
Не, я же писал, что это должно работать со стандартными дверями и кнопками, потому как никто вады под мод переделывать скорее всего не станет.
1 1
alekv
= 2nd Lieutenant =
Next rank: - 1st Lieutenant - after 184 points
1456

Doom Rate: 1.68
Ссылка на пост №6590 Отправлено: 28.03.15 16:16:28
c4tnt :
Не, я же писал, что это должно работать со стандартными дверями и кнопками, потому как никто вады под мод переделывать скорее всего не станет

А вот оно что, ну тогда да.. довольно сложно. Хотя ради такой фичи\возможности думаю не составило бы труда для автора мода расставить такие SwitchableDecoration у дверей которые можно взламывать.. иначе что же это за модер такой который уже готовую систему замков в мод не добавит и свою не сделает.. =)
Вот есть же мод платформы ну или точнее код, так-же с помощью SwitchableDecoration сделано и ничего, кому надо тот добавлял в мод.
1
c4tnt
= 1st Lieutenant =
Next rank: - Captain - after 211 points
1879

Doom Rate: 1.92
Ссылка на пост №6591 Отправлено: 28.03.15 16:22:52
Это как предложить готовить к бруталу вады специально - можно, но смысла мало.
1 1
Shadowman
= UAC Commissar =
Next rank: - UAC Marshal - after 297 points
6603

Doom Rate: 2.46
Ссылка на пост №6592 Отправлено: 28.03.15 17:41:51
alekv :
Или такие варианты не подходят?

Такие варианты требуют написания кучи скриптов и выверения связки "декорэйт"-ацс. Плюс нужно еще учитывать возможные плюшки, навешенные на игрока или монстров (за них отвечают уже другие скрипты) и всю такую комбинацию. FROZEN вроде делает имунным к урону, а в случае оглушения-парализации урон должен наноситься, только монстр не может реагировать. Опять же сам принцип "оглушения" будет завязан на прожектайлы, которые должны еще и попасть в цель (оглушить всех в радиусе зрения игрока - такого гозза не предусматривает, надо все равно чем-то выстрелить сначала).
Средствами одного только декорэйта такие вещи не делаются, а жаль.
Короче, трудозатраты начнут возрастать в геометрической прогрессии...
1 6 2
c4tnt
= 1st Lieutenant =
Next rank: - Captain - after 211 points
1879

Doom Rate: 1.92
Ссылка на пост №6593 Отправлено: 28.03.15 19:26:37
Shadowman
Достаточно неплохой вариант - использовать ACS функции с возвращаемым значением в декорейте. Это значение можно подставлять прямо в декорейте куда следует, да и вообще хорошая вещь.
1 1
alekv
= 2nd Lieutenant =
Next rank: - 1st Lieutenant - after 184 points
1456

Doom Rate: 1.68
Ссылка на пост №6594 Отправлено: 28.03.15 23:54:47
Shadowman :
Такие варианты требуют написания кучи скриптов и выверения связки "декорэйт"-ацс.

Так вся сложность в том что надо юзать acs? Или что нет таких проперти как DamageThingPoison, DamageThingCurse и т.д.? Вообще да, не помешало бы иметь такое по дефолту, но и самому можно замутить..
Вобщем вот мини пример, сделан за мин. 15-20, грубо не отесано, но работает... Ссыль
Слева пушка белая "глушитель моба", справа зеленая "ядометатель" в принципе так прикинул, можно и без acs обойтись, но зачем?
Если получше подумать, можно сделать 1 большой скрипт который будет следить за такими дебафами и выполнять действия такие как если моб отравлен забирает оз, если он отравлен и оглушен, то забирает оз и моб не двигается при этом можно навесить иконки дебафа сверху монстра или в цвет другой перекрасить ну это дело вкуса.
Прожектайлы не юзал.. вариант c4tnt помоему еще лучше.
1
ZZYZX
UAC Sergeant Major
Next rank: Chief Petty Officer after 29 points
821

Doom Rate: 1.38
Ссылка на пост №6595 Отправлено: 29.03.15 16:20:12
Кстати кастомный AI так-то можно тоже с ацс запилить... просто долго, и геморройно. Я как-то ради эксперимента накодил скрипт, который спавнит BFGBall, который летает вокруг, старается держаться подальше от игрока (дабы не сдохнуть, т.к. класс BFGBall я не трогал, он по прежнему был проджектайлом), периодически стреляет ракетами и уворачивается от ракет игрока (да, пришлось делать собственный декорейт класс от Rocket, чтобы на Spawn направление движения в скрипт отправлялось)

Но вот если бы в ацс был способ по акторам проходить списком, было бы куда проще, да.
Минимум изменений, кстати. Для моддинга на первое время хватило бы 4 функций винапи-стайл:
int search_handle = FirstActor();
while ((int actor_id = NextActor(search_handle)) > 0)
{
    SetActivatorToActor(actor_id);
    /* ... */
    // (actor_id можно вынести отсюда и юзать в другом месте)
}
EndSearch(search_handle); // ну и если прогер не закрыл хендл, то делать это при закрытии скрипта
По стенам и прочему итерироваться не надо, всегда есть SetActorPosition чтобы проверить можно идти или нет. И SetActorPosition в цикле чтобы проверить линию огня между двумя точками.

Я даже об этом как-то говорил девелоперам зандра, например, но получил ответ в духе "ацс не для этого".
1
c4tnt
= 1st Lieutenant =
Next rank: - Captain - after 211 points
1879

Doom Rate: 1.92
Ссылка на пост №6596 Отправлено: 29.03.15 19:32:05
По стенам может итерироваться и не очень то нужно, но какой-нибудь id-доступ нужен всяко. Плюс во всех адекватных домах уже давно есть Hit test, для которого не нужно никуда акторов таскать. То есть та история с телепортом лост-соулов в д3 бы выражалась одним вызовом с получением в ответ точного расстояния до ближайшей стены. Ну и заодно с нормалью столкновения - в ACS при ихнем подходе даже если нормаль захотят отдать, то каким макаром - не ясно.
1 1
MasterMind
- 1st Lieutenant -
Next rank: = 1st Lieutenant = after 51 points
1789

Doom Rate: 1.92
Ссылка на пост №6597 Отправлено: 31.03.15 15:55:31
alekv :
А вот оно что, ну тогда да.. довольно сложно. Хотя ради такой фичи\возможности думаю не составило бы труда для автора мода расставить такие SwitchableDecoration у дверей которые можно взламывать.. иначе что же это за модер такой который уже готовую систему замков в мод не добавит и свою не сделает..

Вот есть же мод платформы ну или точнее код, так-же с помощью SwitchableDecoration сделано и ничего, кому надо тот добавлял в мод.


Щас покажу вам магию....

1.Делаем PK3 файл, в нем создаем папку xlat, создаем там текстовый файл с любым названием
2.В текстовом фале пишем include "xlat/doom.txt" (может и что другое можно написать, я не пробовал).
3.Открываем этим же редактором (G)ZDOOM.PK3, ищем xlat/base.txt.
4.С помощью этого файла находим нужные нам номера. Пример:
Скрытый текст:

 32 = USE|MONST,   Door_LockedRaise (0, D_SLOW, 0, BCard | CardIsSkull, tag)
 33 = USE|MONST,   Door_LockedRaise (0, D_SLOW, 0, RCard | CardIsSkull, tag)
 34 = USE|MONST,   Door_LockedRaise (0, D_SLOW, 0, YCard | CardIsSkull, tag)


5.В нашем файле прописываем такие строки:
Скрытый текст:

32 = USE|MONST, ACS_Execute (blablabla)
33 = USE|MONST, ACS_Execute (blablabla)
34= USE|MONST, ACS_Execute (blablabla)


Примечание: параметр MONST можно и убрать, ХЗ зачем разрабы здума дали монстрам возможность щупать закрытые двери. Также неуверен, может быть можно прописать USE|SHOOT (чтобы дверь реагировала на выстрелы и на тыканье).
5.Теперь вместо ванильных функций (открыть дверь какого-то там цвета) будет активироваться наш скрипт. Я в этом не мастер, извините. Мне пока такое было не нужно. Желаю удачи!
1 3
c4tnt
= 1st Lieutenant =
Next rank: - Captain - after 211 points
1879

Doom Rate: 1.92
Ссылка на пост №6598 Отправлено: 01.04.15 03:39:02
Магия однозначно зачётная, да. Может даже сработает, нужно попробовать будет.
1 1
alekv
= 2nd Lieutenant =
Next rank: - 1st Lieutenant - after 184 points
1456

Doom Rate: 1.68
Ссылка на пост №6599 Отправлено: 01.04.15 19:04:42
Скажите такое как Set, Get и Unset можно прописывать только в alias_aх KEYKONF ? Прочитал CVAR control
, но так и не понял где еще можно это применять.. в CVarInfo не работает =( этот лумп как понял вообще нужен только что бы пользователь мог записать свою команду и значение по умолчанию.
Так же интересует, как работает exec "<file> Executes a series of commands stored in the script-file as if they had been typed in at the console directly." читал там же.. CVAR control
Правильно ли я понимаю что можно записать в тхт файл команды, положить в pk3 архив, и с помощью keykonf alias применить эти команды когда игрок нажмет кнопку?

Еще интересует чего такое iwadinfo.txt, можно ли из него извлечь пользу для своего мода.. любую?

MasterMind :
Щас покажу вам магию....

Буду иметь ввиду, спасибо.

Добавлено спустя 1 час 32 минуты 4 секунды:

Забыл, еще меня интересует что можно загрузить с помощью lumpa GAMEINFO?
LOAD = "<file1>"[, "<file2>"[, "<file3>"[, ...]]] Пробовал тут прописать загрузку своего тхт файла, в котором были -command, в консоле написало что не нашло такого тхт файла.

Добавлено спустя 6 часов 8 минут 25 секунд:

Ну и еще вопрос, захотел я добавить STARTUP (типо ENDOOM только из HEXEN), при загрузке мода он показывается только если подключить мод к Hexen, если запустить с Doom, 0 реацкии, собс-но в этом и вопрос.. как STARTUP заставить работать с DOOM если это возможно и как его изменить(судя по всему это не простая картинка)?
1
TesaQ
= Lance Corporal =
Next rank: - Master Corporal - after 22 points
178

Doom Rate: 1.87
Ссылка на пост №6600 Отправлено: 02.04.15 03:01:15
Вопрос по DoomBuilder'у, что делает функция BlockSound и Upper/lower unpegged на лайндефах?
Страница 330 из 352Перейти наверх Пред.  1, 2, 3 ... 329, 330, 331 ... 350, 351, 352  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!