эээ... сложный вопрос. Но если вкратце то сообщество поделено на три части по популярным портам. Аудитории пересекаются, но редко.
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 гипотетически не мешает актору чекать видимость\дистанцию и даже быть активным агрессивным сорсом урона.
А теперь давайте вспомним что по умолчанию объединяет все "материальные" акторы, включая "безродные" (т. е. не итем\монстр\снаряд\пуфф)? Правильно, наличие блокмапы, и следовательно чек коллизий. Если моё предположение верно то это вполне объясняет причины тормозов от акторов-болванок типа бочек и даже TNT1\NULLов.
Хотя сайт-чек тоже не нужно сбрасывать со счетов.
Бтв, есть ещё один показательный эксперимент (не уверен что именно на блокмапы но всё же). Если поставить таймфриз и начать поливать хитсканом из чейна или ССГ достаточно жирного моба типа Кибера, то в скором времени начнутся лаги интенсивность которых будет стремительно возрастать по мере увеличения ко-ва попаданий. Причём тормоза начнутся скорее всего значительно раньше нежели ко-во акторов "на теле" жертвы успеет достигнуть нескольких сотен.
Возвращаясь к нашим баранам портам, возникает риторический вопрос: мб. гозза и прбум по-разному в плане алгоритмов обрабатывают проверку коллизий?
объясняет причины тормозов от акторов-болванок типа бочек и даже TNT1\NULLов.
Но не объясняет, почему при команде "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".
Если ты сам нигде в коде ничего не напутал, то так будет работать: