Спасибо, но все-же как правильно это прописывается?
A_changeFlag прописывался в стейте после тиков, а здесь как?
<...>
// Если в стейтах, то так:
States {
Spawn:
TNT1 A 0 {
self.bSolid = false; // Decorate: "A_ChangeFlag( "SOLID", false )".
bShootable = true; // Аналогично "self.bShootable" в простых случаях.
if ( target ) target.bBright = true; // Если есть цель, то устанавливаем ей флаг "Bright".
}
TROO A 2 {
bBright = ( health < 20 ? 1 : 0 ); // Тоже пример. Устанавливаем этому актору Bright-флаг, если жизней у него < 20.
}
TROO BCD 10 {
bool hasTarget = false;
if ( target ) hasTarget = true; // Устанавливаем флаг, объявленный на предыдущей строке, если цель у данного актора есть.
self.bBright = hasTarget; // Bright-флаг в зависимости от переменной.
}
TROO BCD 10 {
self.bBright = ( target != NULL ); // То же самое, что и в предыдущей строке, только запись сильно короче.
}
}
<...>
У меня такой вопрос, создал картейку и хочется её выложить а вот не знаю как. В F.A.Q я нечего не увидел по тому как выложить свой wad-файл. Потом узнал что какие то рецензии нужны, кто-нибуть объяснит?
создал картейку и хочется её выложить а вот не знаю как.
Архив с ВАД-файлом льёте на файлообменик, ссылку вместе со скриншотами публикуете либо здесь, либо создаёте отдельную тему в мегавадах. Второе предпочтительно для полноценных работ. Вообще, к сведению, есть такой добрый совет, первый десяток своих карт никому не показывать. Иначе критика может отбить желание вообще заниматься маппингом дальше.
Чорд, в рот любился с дум два мап оф хаос вадом несколько дней, но так и не смог перевести в удмф
У кого есть уже переведённый, или кто знает ЕЩЁ способы перевода кроме классического, скиньте плиз)))
Revenant777 Сделай ещё один сектор, примыкающий к решётке и измени в этом секторе текстуру пола, высоту пола сектора или освещение. Тогда игра поймёт, что это 2 разных сектора. Вот небольшая карта-пример. Думаю, разберёшься.
Revenant777 По картинке выше — если это гздум/UDMF, то на линиях, которые уходят в пол, надо всегда ставить "clip middle texture". Тогда можно секторов не добавлять.
Если бум или хексен, то да, сектора вокруг.
ZZYZX Да, у карты game configuration - GZDoom:Doom 2(UDMF). Так если я сделаю 3D сектора(полы) то в каких портах кроме gzdoom моя карта будет работать?
Ни в каких. Только в напрямую родственных гздуму. Причём это гарантируется даже не 3D-полами, а самим фактом что карта UDMF — такие карты читает только гздум.
(ну ещё есть Eternity, но он читает крайне специфический формат UDMF in Doom, в котором базовый формат — Boom, а не Hexen, и я даже не уверен что гздб умеет с таким работать)
Именно. Но ими почти никто не пользуется, потому как первый — экспериментальный, а второй — устарел.
И ещё чуть-чуть Zandronum может (но до определённого предела, т.к. многие фичи UDMF появились позже той версии, которой он родственен — ZDoom 2.8).
эээ... сложный вопрос. Но если вкратце то сообщество поделено на три части по популярным портам. Аудитории пересекаются, но редко.
1. Передёргивающие на демки и ванильную достоверность. Они сидят в PrBoom(+). Мапперы во имя идола жертвуют временем, моддабельностью и графоном. Игрокам норм.
2. Передёргивающие на мультиплеер. Они сидят в Zandronum. Есть частичное пересечение с (1), тогда сидят в ZDaemon или даже (клиника) Odamex.
Мапперы во имя идола жертвуют моддабельностью и графоном, а игроки даже удобством игры.
3. Все остальные, которые сидят на GZDoom. Идола нет, ничем не жертвуют. Им норм.
Лично я почти всё делаю под гздум и делаю вид, что других портов не существует. И делаю я так с самого начала.
Иногда пару карт делал под бум, не понравилось, больше не делаю.
На самом деле есть поставляющийся в комплекте с prboom+'ом порт GLBoom+, который не отличается почти ничем (или совсем ничем) в геймплее, а графику подтягивает и сглаживает.
На самом деле преимущество бума мне видится, во-первых, в производительности (на относительно слабых компах карты даже с тоннами монстров и геометрии типа Sunder летают, чего нельзя сказать о (g)zdoom), а во-вторых, если карта в "ванильном" сеттинге плюс-минус лимит ремув и бум-фичи, то ничего не надо настраивать, все настройки ванильные и других в буме нет.
Invisible Warrior Я про графон, обеспечиваемый поддержкой шейдеров, моделей и кастомных анимаций. А не про накручивание фильтров на классические текстуры.
К слову, я писал больше с точки зрения маппера/моддера. Приписал к списку уточнение А так, если у тебя карта под прбум (Sunder), то её лучше всего играть именно под прбумом. И не только из-за производительности, к слову, но ещё и из-за специфической совместимости гздума с бумом.
Но если вкратце то сообщество поделено на три части по популярным портам. Аудитории пересекаются, но редко.
1. Передёргивающие на демки и ванильную достоверность. Они сидят в PrBoom(+). Мапперы во имя идола жертвуют временем, моддабельностью и графоном. Игрокам норм.
2. Передёргивающие на мультиплеер. Они сидят в Zandronum. Есть частичное пересечение с (1), тогда сидят в ZDaemon или даже (клиника) Odamex.
Мапперы во имя идола жертвуют моддабельностью и графоном, а игроки даже удобством игры.
3. Все остальные, которые сидят на GZDoom. Идола нет, ничем не жертвуют. Им норм.
Лично я почти всё делаю под гздум и делаю вид, что других портов не существует. И делаю я так с самого начала.
Иногда пару карт делал под бум, не понравилось, больше не делаю.
А так, если у тебя карта под прбум (Sunder), то её лучше всего играть именно под прбумом. И не только из-за производительности, к слову, но ещё и из-за специфической совместимости гздума с бумом.
Насколько сложно допилить гздум и гздб до адекватной бум-совместимости? Или это нереально в принципе?
Кстати, по какой причине гздум лагает в сандере, а прбум нет? Можешь вкратце пояснить, что там за reject table и имеет ли она к этому отношение? Заранее спасибо
Вот ты изначально сделал megaWAD для GZDoom под ZDoom ACS. Если захочется поиграть в co-op, то нужно будет портировать тот сам megaWAD для Zandronum, под его же ACS?
ZZYZX видимости - точно нет, я специально падал (под iddqd) в яму с лавой, откуда никого не видно, при этом было активно тысячи две монстров. Игра все равно тормозила.
А вот проверка существования акторов и их действий - это вполне возможно, на это намекает также то, что как-то я поставил на карту дофига бочек (бочек, КАРЛ!!) и ОНИ затормозили гздум наглухо. Такое впечатление что именно каждую бочку каждый тик проверяют, не взорвал ли ее кто (т.к. других действий, кроме как взорваться, бочка сделать не в состоянии )
Это нереально в принципе в связи с тем что оную совместимость вполне целенаправленно отпиливают (с целью облегчить код гздума).
вот это хреново. Хотя тогда появляется железобетонный аргумент на вопрос "зачем ты юзаешь бум" - чтобы играть в бум-совместимые вады.
но вообще я думал, что у гздума нет проблем с эмуляцией ванильного и околованильного поведения игры, просто отключаешь ненужные опции, не моддишь ничего, и вуаля...
upd: нам наверное стоило бы перейти в тему обсуждения сравнения портов...
видимости - точно нет, я специально падал (под iddqd) в яму с лавой, откуда никого не видно, при этом было активно тысячи две монстров. Игра все равно тормозила.
Я сейчас говорю о проверке видимости у каждого монстра. Которую он делает чтобы узнать, нападать на тебя или нет. Даже если не активен. А вот за бочки без понятия.
Вообще, я гздум не профилил, без понятия, на что именно тратится большая части времени исполнения при обработке акторов. Спамить неоправданными предположениями влом.
но вообще я думал, что у гздума нет проблем с эмуляцией ванильного и околованильного поведения игры
Остатки этой эмуляции, которые ещё есть, графом в приоритет не ставятся. Так сравнительно недавно отпилили "silent BFG", а воллран багнут (или не работает вообще) с тех пор как перешли с fixed'ов на double'ы.
Причём, в результате того же перехода с fixed'ов на double'ы теперь вообще не гарантируется одинаковость результата при одинаковом действии в буме и гздуме.
Остатки этой эмуляции, которые ещё есть, графом в приоритет не ставятся. Так сравнительно недавно отпилили "silent BFG", а воллран багнут (или не работает вообще) с тех пор как перешли с fixed'ов на double'ы.
LOL. Помнится, theleo_ua как раз рассказывал мне, что воллран работает как надо Видимо, работал раньше, теперь отвалился.
Я сейчас говорю о проверке видимости у каждого монстра. Которую он делает чтобы узнать, нападать на тебя или нет. Даже если не активен. А вот за бочки без понятия.
Вообще, я гздум не профилил, без понятия, на что именно тратится большая части времени исполнения при обработке акторов. Спамить неоправданными предположениями влом.
а, вот как. Ну тогда с заагренными монстрами понятно. С бочками загадка пока что.
Чувак, актор который никуда не двигается и ничего не отображает (особенно если +INVISIBLE), потребляет ноль ресурсов. Просто ноль. А вот его проверка на видимость очень даже может лагать.
На что санек разочаровано ответил мол что фпс поднялись где-то до 40, что вообще-то ДОХРЕНА по отношению к значениям фпс указанным ранее.
А теперь вспоминаем что такое NOINTERACTION - это NOBLOCKMAP+NOSECTOR в одном, причём исторически это было запилено именно для снижения лагов. Более того, NOINTERACTION гипотетически не мешает актору чекать видимость\дистанцию и даже быть активным агрессивным сорсом урона.
А теперь давайте вспомним что по умолчанию объединяет все "материальные" акторы, включая "безродные" (т. е. не итем\монстр\снаряд\пуфф)? Правильно, наличие блокмапы, и следовательно чек коллизий. Если моё предположение верно то это вполне объясняет причины тормозов от акторов-болванок типа бочек и даже TNT1NULLULLов.
Хотя сайт-чек тоже не нужно сбрасывать со счетов.
Бтв, есть ещё один показательный эксперимент (не уверен что именно на блокмапы но всё же). Если поставить таймфриз и начать поливать хитсканом из чейна или ССГ достаточно жирного моба типа Кибера, то в скором времени начнутся лаги интенсивность которых будет стремительно возрастать по мере увеличения ко-ва попаданий. Причём тормоза начнутся скорее всего значительно раньше нежели ко-во акторов "на теле" жертвы успеет достигнуть нескольких сотен.
Возвращаясь к нашим баранам портам, возникает риторический вопрос: мб. гозза и прбум по-разному в плане алгоритмов обрабатывают проверку коллизий?
объясняет причины тормозов от акторов-болванок типа бочек и даже TNT1NULLULLов.
Но не объясняет, почему при команде "freeze" (которая отключает AI, но не отключает коллизии) на nuts.wad (да даже в вадах торментора) внезапно поднимается фпс раз в 5.
Господа знатоки, внимание вопрос на миллион долларов.
Почему MageStaffFX2 (aka звезда Bloodscourge посоха) будучи ударенной Disc of Repulsion немедленно записывает игрока в свой трэйсерфилд и соответственно мгновенно перенацеливается на стрелка?
Есть какое-нибудь рациональное объяснение сему феномену или этот баг зарыт где-то глубже на уровне кода?
Но не объясняет, почему при команде "freeze" (которая отключает AI, но не отключает коллизии) на nuts.wad (да даже в вадах торментора) внезапно поднимается фпс раз в 5.
Как пикейный жилет могу лишь предположить что свойство никуда не девается, а вот сам чек коллизий со стороны чекающего актора происходит только пока его стэйт проигрывается, а у акторов у которых выставлен НО-ИНТЕРАКШН\БЛОКМАП эта проверка скипается автоматом не зависимо от (не)активности обладателя.
Кстати а что по поводу проверки хп? Здоровье также по умолчанию есть у каждого актора и тоже должно чекаться на каких-то этапах. Или этой проверкой можно пренебречь?
У меня такой вопрос, как сделать так чтобы активатором был монстр то есть что то активируется после смерти монстра.
У карты game configuration - GZDoom:Doom 2(UDMF)
Возможно вопрос поставлен неправильно
Кстати а что по поводу проверки хп? Здоровье также по умолчанию есть у каждого актора и тоже должно чекаться на каких-то этапах. Или этой проверкой можно пренебречь?
У меня такой вопрос, как сделать так чтобы активатором был монстр то есть что то активируется после смерти монстра.
Просто во вкладке Action у монстра проставь нужный экшн.
Для итемов которые подбираются (например, ключ) экшн будет вызван при подборе. У монстров при смерти. Ещё есть некоторые специальные акторы у которых условия отличаются, но тебе они пока не нужны )
any non-zero number is true, then this returns true: 4 && 3
Вопрос: можно ли в анон ф-ции записать чтобы
{
<...>
If ((GetDistance(1,AAPTR_TRACER)<=40&&-60<=GetAngle(GAF_RELATIVE|GAF_SWITCH,AAPTR_TRACER)<=60)==1) //Эта строка была TRUE ТОЛЬКО при совпадении значений в данных диапазонах, а не при возврате любых значений отличных от 0.
{
Return A_GiveInventory("Blinder",1,AAPTR_TRACER);
}
Else
{
Return state("");
}
}
Иными словами мне надо ввинтить в анон ф-цию эквивалент строки A_JumpIfInTargetLOS("Blind",120,JLOSF_PROJECTILE|JLOSF_DEADNOJUMP,40), т. е. чтобы игрок "слеп" только если поймает непосредственно в лицо снаряд с этой строкой.
Только несколькими проверками. "&&" (логический AND) возвращает TRUE, если операнды у него -- "TRUE" и "TRUE". Единственным числовым значением, которое считается эквивалентом "FALSE", является число "0".
Если ты сам нигде в коде ничего не напутал, то так будет работать: