Welcome to U.A.C.
login / register 
Status: Guest
Архивы форума | iddqd.ru
Wolf 3D
ПравилаПравила ПоискПоиск
18+
Тема для новичков. Вопросы по маппингу/моддингу - любые!-2 Пред.  1, 2, 3 ... 22, 23, 24 ... 36, 37, 38  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!-2Ответить
АвторСообщение
Michael63
Lieutenant Colonel
Next rank: - Colonel - after 138 points
3902

Doom Rate: 1.98

Posts quality: +892
Ссылка на пост №881 Отправлено: 25.08.22 11:03:20
lafoxxx [B0S], а можно чуть поподробнее, что такое незаюзанные ресурсы Дума и как их использовать? Вообще, меня вроде устраивает, когда вода, кислота, кровь, слизь и лава нарисованы в одном стиле (как то, что сейчас я использую). Но если есть какая-то более правильная вода, то было бы любопытно взглянуть.
1 1 2
lafoxxx [B0S]
- Captain -
Next rank: = Captain = after 154 points
2186

Doom Rate: 1.4

Posts quality: +1002
Ссылка на пост №882 Отправлено: 25.08.22 11:53:11
Michael63
Несколько лет назад Ромеро вроде выкладывал в общий доступ незаюзанные и WIP-спрайты/текстуры, ну и музыку ещё тоже (лет 10+ назад). Но недавно Беспезде это надоело и они решили, что с ним пора кончать, но он вроде всё самое важное выложить успел.
Вода там была вот такая:

Рейтинг сообщения: +5, отметил(и): theleo_ua, RastaManGames, Kirov-13, Michael63, camper
2 3 4
RastaManGames
= 2nd Lieutenant =
Next rank: - 1st Lieutenant - after 34 points
1606

Doom Rate: 2.08

Posts quality: +832
Ссылка на пост №883 Отправлено: 25.08.22 21:54:33
@lafoxxx[B0S], а есть где репозиторий с вообще всеми слитыми ресурсами? У меня есть одна небольшая папка, но эту воду я вижу впервые. Хотелось бы всю коллекцию собрать...

Рейтинг сообщения: +2, отметил(и): YURA_111, Michael63
1 4 1
GALUAS1122
Recruit
Next rank: Recruit after 6 points
4

Doom Rate: 2

Ссылка на пост №884 Отправлено: 03.10.22 18:14:39
Всем привет. Как сделать чтоб на моей карте появлялось оружие с мода project brutality 3.0 и монстры?
BeeWen
Lieutenant Colonel
Next rank: - Colonel - after 375 pointsСупермодератор форума
3665

Doom Rate: 1.59

Posts quality: +984
Ссылка на пост №885 Отправлено: 03.10.22 22:58:41
GALUAS1122 пишет:
Как сделать чтоб на моей карте появлялось оружие с мода project brutality 3.0 и монстры?

Как вариант положить в архив с модом ВАД со своей картой и запустить через ГЗДум-порт.
1 1 1
GALUAS1122
Recruit
Next rank: Recruit after 6 points
4

Doom Rate: 2

Ссылка на пост №886 Отправлено: 04.10.22 12:27:45
Спасибо. Вы имете ввиду запустить одновременно с Гз портом? Или именно через слайдер запаковать? На картах Maps of Chaos постоянно появляеться оружие под разные слоты мода project brutality 3.0 и монстры. Но отдельных элементов в Maps of Chaos нет под это. Я как понял мод project brutality 3.0 сам преобразует их, но как этот процесс регулировать?
BeeWen
Lieutenant Colonel
Next rank: - Colonel - after 375 pointsСупермодератор форума
3665

Doom Rate: 1.59

Posts quality: +984
Ссылка на пост №887 Отправлено: 04.10.22 17:46:54
GALUAS1122 пишет:
Вы имете ввиду запустить одновременно с Гз портом?

Именно так. В файл архива с модом РК3 поместить свою карту и запустить игру. В настройках порта в меню назначения клавиш должны быть дополнительные строки конкретно для данного мода.
1 1 1
Mud
- Warrant Officer -
Next rank: = Warrant Officer = after 56 points
1084

Doom Rate: 1.97

Posts quality: +701
Ссылка на пост №888 Отправлено: 05.10.22 15:41:04
RastaManGames
Ссылка

Рейтинг сообщения: +1, отметил(и): RastaManGames
3 1
Артём
UAC Sergeant Major
Next rank: UAC Sergeant Major after 49 points
711

Doom Rate: 1.7

Posts quality: +265
Ссылка на пост №889 Отправлено: 29.10.22 22:07:32
Всем привет! У меня возник небольшой вопрос.

Допустим, что в одном ваде есть класс игрока, с которым что-то происходит после смерти, а в другом - любой оружейный пак для этого игрока. Вопрос: можно ли объединить оба вада так, чтобы класс игрока имел доступное из второго вада вооружение и при этом имел свой собственный Death State?
1 1
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 2.27

Posts quality: +789
Ссылка на пост №890 Отправлено: 31.10.22 18:20:18
Так ведь стейты игрока с оружием вообще никак не коррелируют, исключая взаимодействие вида "PlayerPawn::PlayAttacking()" и "PlayerPawn::PlayAttacking2()" (которые, кстати, тоже не из-под класса оружия вызываются).

Не понял вопроса. Проблем при совмещении модификаций возникнуть вообще не должно.

Рейтинг сообщения: +1, отметил(и): Артём
2 8 1
Артём
UAC Sergeant Major
Next rank: UAC Sergeant Major after 49 points
711

Doom Rate: 1.7

Posts quality: +265
Ссылка на пост №891 Отправлено: 31.10.22 18:50:55
Разъясняю ситуацию:

Окей, вот в чём дело:

Я решил сделать стандалон от Biohazard-а и сделать режим совместимым с любым другим оружейным вадом. Дан класс игрока, который после смерти вызывает определённый скрипт реанимации:

Скрытый текст:


ACTOR Survivor : DoomPlayer
{
  states
  {
  Death:
        PLAY H 5 A_NoBlocking
        PLAY I 5 A_PlayerScream
        PLAY J 5 
        PLAY KL 5 
        PLAY M 5
        PLAY N random(35, 175) 
        PLAY N 5 A_FaceTarget
        PLAY NMLKJIH 5
        TNT1 A -1 ACS_NAMEDEXECUTEALWAYS("RAISE_SPAWN_ZOMBIE_MARINE")
        Stop
  }
 }



Но если использовать оружейный мод, в котором есть другой класс игрока, то изначальный класс из Biohazard-а перезаписывается, и игрок после смерти в зомби не превращается.
1 1
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 2.27

Posts quality: +789
Ссылка на пост №892 Отправлено: 01.11.22 20:19:48
А может, лучше DEATH-скрипты для вызова "RAISE_SPAWN_ZOMBIE_MARINE" использовать? Тогда практически гарантированно совместимость ни с чем нарушена не будет.

Рейтинг сообщения: +1, отметил(и): Артём
2 8 1
Артём
UAC Sergeant Major
Next rank: UAC Sergeant Major after 49 points
711

Doom Rate: 1.7

Posts quality: +265
Ссылка на пост №893 Отправлено: 01.11.22 20:34:56
Поработал с DEATH-скриптом, вроде теперь срабатывает независимо от оружейного мода. Спавню труп, который встаёт и превращается в зомби. Теперь вопрос: а что делать с трупом самого игрока? Нужно, чтобы он как-то исчез.
1 1
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 2.27

Posts quality: +789
Ссылка на пост №894 Отправлено: 01.11.22 20:46:13
ZDoom wiki. ACS script types:
DEATH
<...> The player who died is the script activator <...>


Поэтому, вероятно, в конце DEATH-скрипта можно использовать "Thing_Remove( 0 );".
2 8 1
Артём
UAC Sergeant Major
Next rank: UAC Sergeant Major after 49 points
711

Doom Rate: 1.7

Posts quality: +265
Ссылка на пост №895 Отправлено: 01.11.22 21:51:13
JSO x
Пробовал - не работает. Труп игрока остаётся на месте и никуда не исчезает, хотя прописываю всё, как надо.

Добавлено спустя 12 часов 59 минут 53 секунды:

EDIT: проблема была решена путём строчки SetActorProperty(0, APROP_RENDERSTYLE, STYLE_None);

Рейтинг сообщения: +1, отметил(и): JSO x
1 1
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 2.27

Posts quality: +789
Ссылка на пост №896 Отправлено: 02.11.22 17:41:53
Вообще, это костыль, но раз работает и устраивает...

А попробуй вместо изменения вида рендеринга актора "SetActorState( 0, "Null" )" прописать. Фактически, то же уничтожение, но с задержкой в один такт.

Рейтинг сообщения: +3, отметил(и): theleo_ua, Артём, SilverMiner
2 8 1
Артём
UAC Sergeant Major
Next rank: UAC Sergeant Major after 49 points
711

Doom Rate: 1.7

Posts quality: +265
Ссылка на пост №897 Отправлено: 02.11.22 19:45:16
JSO x
Это тоже работает, но как отключить это предупреждение (которое выскакивает каждый раз, когда игрок умирает)?

Warning: The active body of a player does not have a next state, but the current state has a finite duration! Freezing player body in its current state.
1 1
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 2.27

Posts quality: +789
Ссылка на пост №898 Отправлено: 02.11.22 21:20:06
Могу предположить, что подошла бы функция "A_SkullPop()" -- единственная из всего арсенала Decorate, которая отвязывает конфигурацию игрока ("душу") от его тела. Но, видимо, в ACS её аналога не существует.

Что происходит и почему это предупреждение вообще появляется: при вызове "SetActorState( 0, "Null" )" игрок переходит в стейт "TNT1 A 1", притом следующего стейта за ним не существует.
class Actor : Thinker native {
    // <...>

    States( Actor, Overlay, Weapon, Item ) {
    // <...>
    Null:
        TNT1 A 1; // Переход происходит сюда.
        Stop;
    // <...>
    }

    // <...>
}

В движке же довольно много завязано на взаимодействие структуры "PlayerInfo" (конфигурация/душа игрока) и класса "PlayerPawn". Как только один из этой связки внезапно удаляется -- например, актор, принудительным уничтожением через вызов "Destroy()" -- внутри второго действующего лица ломаются все указатели, которые мгновение назад были действительными. Знаю по опыту, если что.

Так вот. Разработчики Zandronum это учли и добавили искреннее предупреждение, что, если ничего не поменять, игра сейчас вылетит. Собственно, поэтому меняют продолжительность стейта автоматически -- в данном случае с "TNT1 A 1" на "TNT1 A -1". Забавно, что в исходном коде GZDoom такую проверку убрали -- видимо, оказалось, что она мешает некоторым модификациям раскрывать свой полный потенциал.

По вопросу:
Артём пишет:
<...> как отключить это предупреждение?

Само предупреждение -- никак. Вариант с установкой типа отрисовки в данном случае оказался лучше, так как настолько свободно контролировать из-под ACS произвольного актора нельзя. Есть вариант переводить игрока в стейт "AltSkinXDeath:" со встроенным вызовом "A_SkullPop()", но для данного случая, как я считаю, гораздо проще и надёжнее использовать костыль в виде сокрытия тела через отключение рендеринга.

Рейтинг сообщения: +2, отметил(и): theleo_ua, Артём
2 8 1
uHcauDep
- Lance Corporal -
Next rank: = Lance Corporal = after 30 points
130

Doom Rate: 2.6

Posts quality: +3
Ссылка на пост №899 Отправлено: 09.11.22 14:06:44
Какие переменные и в каком файле нужно изменить у ствола, чтобы: 1. Увеличить\уменьшить урон 2. Изменить количество нужных патронов для зарядки обоймы (сейчас на 15 в обойме тратится 60 патриков). https://www.moddb.com/mods/brutal-doom/addons/vietdoom-xm21-for-bdv21
3
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 2.27

Posts quality: +789
Ссылка на пост №900 Отправлено: 10.11.22 10:30:33
Можешь поиском по всем файлам пройтись, найти свойство "Weapon.AmmoGive[12]". Урон заменяется через свойство "Damage" для акторов-снарядов и через параметры для хитскана (см. "A_FirBullets()").

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

Рейтинг сообщения: +1, отметил(и): Артём
2 8 1
YURA_111
UAC Sergeant Major
Next rank: Chief Petty Officer after 82 points
768

Doom Rate: 1.98

Posts quality: +137
Ссылка на пост №901 Отправлено: 24.11.22 19:55:31
Доброго времени суток! Народ, кто может подсказать как в ДумБилдере сделать движение текстуры на 3Д-Флоре ? Не можем понять какая функция за это отвечает
zzXenobytEzz
= Corporal =
Next rank: - Lance Corporal - after 20 points
110

Doom Rate: 2

Posts quality: +15
Ссылка на пост №902 Отправлено: 07.12.22 18:48:06
YURA_111 пишет:
движение текстуры на 3Д-Флоре


Не через Scroll_Texture, не?

p.s. возможности проверить нет сейчас...
YURA_111
UAC Sergeant Major
Next rank: Chief Petty Officer after 82 points
768

Doom Rate: 1.98

Posts quality: +137
Ссылка на пост №903 Отправлено: 08.12.22 13:25:34
К сожалению не очень понятно как именно это сделать. Есть несколько 3Д платформ одна над другой - нужно чтобы у средней скролилась текстура... Я не нашел способа - хоть мы и обошлись и без этого, но все равно хотелось бы знать.
lafoxxx [B0S]
- Captain -
Next rank: = Captain = after 154 points
2186

Doom Rate: 1.4

Posts quality: +1002
Ссылка на пост №904 Отправлено: 17.12.22 19:11:00
Как задать $limit для $playersound в SNDINFO?
Целевой порт – ZDaemon
И будет ли работать?

Требуется, чтобы предыдущий звук не обрезался последующим.
2 3 4
Michael63
Lieutenant Colonel
Next rank: - Colonel - after 138 points
3902

Doom Rate: 1.98

Posts quality: +892
Ссылка на пост №905 Отправлено: 08.02.23 00:22:43
Наверное, у меня вопрос банальный, но всё же. Делаю вад для Doom 2, использую в качестве основного источника ресурсов doom2.wad, добавил немного новой графики и музыки. И тут захотелось использовать текстуры из Doom 1, которых нет в Doom 2. Можно ли как-то быстро перекинуть все недостающие текстуры внутрь моего вада? Знаю, что уже есть текстурпак, где эти текстуры содержатся, вот он:

http://www.iddqd.ru/textures#Doom for Doom II

но нормально скопировать у меня пока не получилось. Если, например, с помощью Slade просто скопировать содержимое текстурпака в мой вад, то возникает ошибка, связанная, по-видимому, с лампом TEXTURE1, и текстуры отображаются криво. Пробовал удалить свои старые TEXTURE1 и PNAMES, а потом скопировать аналогичные лампы из текстурпака, но это не решает проблему.
1 1 2
Mud
- Warrant Officer -
Next rank: = Warrant Officer = after 56 points
1084

Doom Rate: 1.97

Posts quality: +701
Ссылка на пост №906 Отправлено: 08.02.23 09:38:11
Michael63
Попробуй взять текстуры из этого текстурпака.
3 1
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 2.27

Posts quality: +789
Ссылка на пост №907 Отправлено: 08.02.23 11:48:31
Michael63, вроде бы всё вместе компилируется, запускается. Текстуры из того сборника + "Khorus" на копии Doom 2 MAP01:
Скрытый текст:



Сам файл-пример, в нём добавил всё из "d1gfxd2.wad", а также текстуры маски "K_BLD01*" из Khorus. Добавлял через ПКМ -> "Graphics" -> "Add to TEXTUREx", Slade v3.1.12:
Скрытый текст:



Michael63 пишет:
то возникает ошибка, связанная, по-видимому, с лампом TEXTURE1, и текстуры отображаются криво

Ошибка в каком-либо логе описывается, или это просто визуальный баг? И отображаются криво как именно -- некоторые типичные ошибки, вроде расположения не в том WAD Namespace, выявляются по характеру сбоев.
2 8 1
Michael63
Lieutenant Colonel
Next rank: - Colonel - after 138 points
3902

Doom Rate: 1.98

Posts quality: +892
Ссылка на пост №908 Отправлено: 08.02.23 15:57:01
Mud пишет:
Попробуй взять текстуры из этого текстурпака.

Я как раз этот текстурпак использовал, только скачал с нашего сайта.
JSO x пишет:
Ошибка в каком-либо логе описывается, или это просто визуальный баг?

Визуальный, прикладываю скриншот. Я вроде разобрался, в чём было дело. В моём ваде была лишняя копия лампа PNAMES (то есть, после копирования всего содержимого из d1gfxd2.wad оказалось аж три PNAMES, и один из двух лишних я вчера не удалил). При удалении этот баг исчезает.
1 1 2
N00b
Chief Petty Officer
Next rank: Chief Petty Officer after 18 points
922

Doom Rate: 2.15

Posts quality: +384
Ссылка на пост №909 Отправлено: 03.03.23 18:05:44
Возможно ли в GZDoom сделать актор, хитскановые попадания в который LineTracer-ом не проверяются по оси Z? Мне интересно прежде всего регистрировать хитсканы, "пролетающие" ниже хитбокса актора (такое может быть, если он стоит на наклонном полу). Могут ли как-то в этом помочь SetXYZ и UnlinkFromWorld?
1 2
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 2.27

Posts quality: +789
Ссылка на пост №910 Отправлено: 05.03.23 01:13:20
По моим проверкам, сам актор без посредников -- нет.
Скрытый текст:

class HitscanTest_Base: Actor {
	const GRAY = TEXTCOLOR_GRAY;
	const DARK = TEXTCOLOR_DARKGRAY;

	Default {
		+SOLID;
		+SHOOTABLE;
		+BUDDHA;
		+NOGRAVITY;
		Health 0x7FFFFFFF;
		Mass LARGE_MASS;
		Height 56;
	}

	override int TakeSpecialDamage( Actor inflictor, Actor source, int damage, Name damagetype ) {
		String inflictorName = ( inflictor? inflictor.GetClassName() .. "" : "<NULL>" );
		String sourceName = ( source? source.GetClassName() .. "" : "<NULL>" );

		console.printf( DARK .. "%s::TakeSpecialDamage(). inflictor " .. GRAY .. "%s" .. DARK .. ", src " .. GRAY .. "%s" .. DARK .. ", damage = " .. GRAY .. "%i" .. DARK .. ", dmgtype = '" .. GRAY .. "%s" .. DARK .. "'.",
						GetClassName(), inflictorName, sourceName, damage, damagetype );

		return Super.TakeSpecialDamage( inflictor, source, damage, damagetype );
	}

	override bool CanCollideWith( Actor other, bool passive ) {
		console.printf( DARK .. "%s::CanCollideWith(). other " .. GRAY .. "%s" .. DARK .. ", passive == " .. GRAY .. "%i" .. DARK .. ".",
						GetClassName(), other.GetClassName(), passive );

		return Super.CanCollideWith( other, passive );
	}

	States {
	Spawn:
		TROO A -1;
		Stop;
	}
} // of class HitscanTest_Base: Actor {}

class HitscanTestCANPASS: HitscanTest_Base {
	Default {
		+CANPASS;
	}
}

class HitscanTestCanCollideTrue: HitscanTest_Base {
	override bool CanCollideWith( Actor other, bool passive ) {
		Super.CanCollideWith( other, passive );
		return true;
	}
}

class HitscanTestCanCollideFalse: HitscanTest_Base {
	override bool CanCollideWith( Actor other, bool passive ) {
		Super.CanCollideWith( other, passive );
		return false;
	}
}

class HitscanTestACTLIKEBRIDGE: HitscanTest_Base {
	Default {
		+ACTLIKEBRIDGE;
	}
}

class HitscanTestDONTOVERLAP: HitscanTest_Base {
	Default {
		+DONTOVERLAP;
	}
}

class HitscanTestISMONSTER: HitscanTest_Base {
	Default {
		+ISMONSTER;
	}
}

class HitscanTestMonsterCombo: HitscanTest_Base {
	Default {
		Monster;
	}
}


Однако можно попробовать создавать второй актор, связанный с первым и расположенный ниже него, а затем через манипуляции с +ALLOWTHRUBITS/+ALLOWTHRUFLAGS добиваться нужного эффекта (с ними не разбирался, так что тут конкретнее ничего не скажу. Вроде как для работы нужны собственные BulletPuff-типы). В коде под спойлером все акторы блокируют хитскан-атаки, но это не показатель, в нём я и пытался добиться определения столкновения.

N00b2015 пишет:
Могут ли как-то в этом помочь SetXYZ и UnlinkFromWorld?

Вряд ли. Так как BLOCKMAP расположена в плоскости XY, Z-координата попросту не учитывается ни в каких внутренних оптимизирующих перерасчётах, подгружаясь исключительно по мере необходимости. Поэтому, собственно, функции вроде "Actor::AddZ()"/"Actor::SetZ()" и реализованы элементарным прямым присвоением координаты -- и используются в коде без каких-либо дополнительных проверок (на примере Ревенанта или Д'Спарила).

"SetXYZ()" просто не обновляет несколько внутренних структур -- самыми заметными из них будут BLOCKMAP и RenderList (а "UnlinkFromWorld()" банально вычищает все ссылки на вызывающего актора из этих же структур). В случае нарушения работы первой актор будет считать, что он находится в другом секторе и другой BLOCKMAP-ячейке относительно фактических; в случае порчи второй более дальние акторы могут начать отрисовываться поверх более близких.

Рейтинг сообщения: +2, отметил(и): theleo_ua, N00b
2 8 1
N00b
Chief Petty Officer
Next rank: Chief Petty Officer after 18 points
922

Doom Rate: 2.15

Posts quality: +384
Ссылка на пост №911 Отправлено: 05.03.23 11:01:23
JSO x
Спасибо за ответ! Я не совсем правильно выразился, SetXYZ мне был нужен, чтобы попробовать переместить актора под пол.
Дело вот в чём, модели танков из этой темы у меня должны иметь возможность менять все три своих угла Эйлера, и при этом все хитскановые попадания (у меня не BulletPuff) по модели должны регистрироваться. Сейчас меняется только рыскание (angle), и с регистрацией всё нормально, но если поменять крен (roll) или тангаж (pitch), то произойдёт вот такое:

то есть попадания по красной части регистрироваться не будут (а должны).

Поэтому мне нужен либо способ избавиться от проверки Z в хитскане вообще, либо способ утопить нижнюю часть актора в пол с сохранением -NOBLOCKMAP, чтобы его видели хитсканы (и переместить (0,0,0) модели в центр этого актора по вертикали):

Утопить у меня его тоже не получается,
mo.A_ChangeLinkFlags(sector: true); mo.UnlinkFromWorld(); mo.SetXYZ(mo.pos - (0, 0, 8)); mo.LinkToWorld();

ни к чему не приводит (актор остаётся на месте), хотя на странице SetXYZ написано, что после LinkToWorld вызывать FindFloorCeiling нужно самостоятельно. Я добавил ему +NOGRAVITY и +NOCLIP, но на результат это не повлияло.

Теоретически, я вот подумал, чего-то подобного можно было бы достичь с помощью A_Explode с флагом OLDRADIUSDMG, но как это отразится на производительности?.. Надо потом проверить.

Рейтинг сообщения: +1, отметил(и): theleo_ua
1 2
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 2.27

Posts quality: +789
Ссылка на пост №912 Отправлено: 05.03.23 14:08:48
N00b2015 пишет:
Поэтому мне нужен <...> либо способ утопить нижнюю часть актора в пол с сохранением -NOBLOCKMAP, чтобы его видели хитсканы (и переместить (0,0,0) модели в центр этого актора по вертикали):

По-моему, только +NOINTERACTION позволяет одновременно оставлять актор видимым в мире и позволять ему находиться ниже пола/выше потолка, 3D-полы в расчёт не берём. Но этот флаг, естественно, напрочь отключает все коллизии.

N00b2015 пишет:
+NOGRAVITY и +NOCLIP

Не, они ниже уровня пола опустить актор не помогут. Тот же игрок при активном noclip не проваливается сквозь поверхности (насколько помню, там чуть разные ветки обработки, но в целом вызывается один и тот же метод).

N00b2015 пишет:
<...>, либо способ избавиться от проверки Z в хитскане вообще

А не получится ли заменить хитскан/LineTrace на проджектайл? Потому что они совершенно точно учитываются доброй половиной акторов из кода в моём предыдущем сообщении (в том числе и вне хитбокса сверху/снизу). Но класс "FastProjectiles" довольно прожорливый, хотя его можно оптимизировать под конкретный проект. Если не удастся -- то "A_Explode()", скорее всего, будет действительно быстрее.

Ещё есть вариант написания собственной системы проверки столкновений, например, через квадро- или октодеревья -- и работать она будет крайне быстро, даже при множестве танков и снарядов.

Рейтинг сообщения: +2, отметил(и): theleo_ua, N00b
2 8 1
theleo_ua
- Commissar -
Next rank: = Commissar = after 24 points
5316

Doom Rate: 1.79

Posts quality: +1220
Ссылка на пост №913 Отправлено: 05.03.23 15:26:44
JSO x пишет:
Поэтому, собственно, функции вроде "Actor::AddZ()"/"Actor::SetZ()" и реализованы элементарным прямым присвоением координаты -- и используются в коде без каких-либо дополнительных проверок (на примере Ревенанта или Д'Спарила).


а какие проверки обычно делаются при изменении X и Y (кроме секторов и blockmap) ? И не затруднит кинуть примеры таких проверок в коде?
4 1
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 2.27

Posts quality: +789
Ссылка на пост №914 Отправлено: 05.03.23 17:25:07
Z-координата актора меняется без проверок на то, должен ли измениться актор внутри каких-либо из тех внутренних структур (собственно, "SetXYZ()" делает это же, но по всем трём координатам). Я прошёлся поиском по gzdoom.pk3 -- вот статистика за исключением объявления функций в "actor.zsc":

1) "SetXYZ()" использовался в трёх файлах. Дважды для изменения стартовой точки вылета снаряда без проверок на вместимость (она чуть дальше проверялась), один раз для и так отлинкованной от мира "MovingCamera".
2) "SetZ()" и "AddZ()" -- в 18 файлах.
3) "SetOrigin()" -- в 11 файлах. Собственно, везде, где нужно глобально и на постоянной основе изменить позицию актора в мире. Кстати, в C++ телепортация тоже использует его же.

А вот код "P_ZMovement()", вызываемый внутри "AActor::Tick()": видно, что, несмотря на обилие кода, никаких перелинковок к секторам/BLOCKMAP-сетке/render-списку не производится.

theleo_ua пишет:
а какие проверки обычно делаются при изменении X и Y (кроме секторов и blockmap) ?

Не-не, все необходимые для нормальной жизни движка проверки производятся под C++-капотом. Для программиста на ZScript чаще всего можно обойтись либо "TestMobjLocation()" (например, в "Actor::InitSpawnedItem()" и "PlayerPawn::UndoPlayerMorph()"), либо, в более редких случаях, "BlockLinesIterator" (примеров в gzdoom.pk3 вообще нет, но тоже может использоваться. Я так для Auto-Ambient Doom хотел сделать динамическую имитацию флага +FIXMAPTHINGPOS).

Рейтинг сообщения: +2, отметил(и): theleo_ua, N00b
2 8 1
camper
UAC Sergeant Major
Next rank: UAC Sergeant Major after 76 points
684

Doom Rate: 1.4

Posts quality: +390
Ссылка на пост №915 Отправлено: 24.03.23 11:41:28
Вопросs есть. Буду признателен если ответите.
1) Новые текстуры для doom могут любые имена иметь? (те что в папке #.pk3/textures) а не обязательно принятые для doom,doom2?
2) Что нужо сделать, чтобы добавить в игру новые "Things" например из категории "decoration" (не язык скриптов, а украшения на карте типа деревьев tre1, tre2 и прочего).
1
N00b
Chief Petty Officer
Next rank: Chief Petty Officer after 18 points
922

Doom Rate: 2.15

Posts quality: +384
Ссылка на пост №916 Отправлено: 26.03.23 22:47:18
camper
Раз в вопросе присутствует название pk3, правильно я полагаю, что речь идёт о ZDoom/GZDoom?
1) Да, любые, в том числе длиннее 8 символов. Кроме того, можно использовать несколько разных текстур с одним названием файла, если они лежат в разных папках. Для того чтобы их различать, в UDB нужно поставить галку "Use long texture names" при загрузке карты.
2) В каком смысле "добавить"? Чтобы можно было их ставить на карту? В любом случае не обойтись без описания актора в Decorate/ZScript, если его нет, то его нужно написать самостоятельно, благо что для декорации это очень просто (чтобы этому научиться, можно переделывать описания акторов с ZDoom Wiki). Например, вот страничка с кодом на Decorate одной из стандартных декораций. Она анимированная, если нужна статичная декорация с одним спрайтом, который называется, например, "XYZWA0.png", то строчку после Spawn нужно заменить на "XYZW A -1" (-1 означает бесконечную длительность фрейма).
После этого нужно дать декорации номер (DoomEdNum), не совпадающий с этими (без этого можно будет только спаунить в игре её командой summon, а не ставить на карту). Вписать номер нужно после названия:
Actor EvilEye 41 { ... }

В ZScript так делать нельзя, DoomEdNum нужно указывать в MAPINFO.
После этого можно уже ставить актора на карту, но в редакторе он будет отображаться в отдельной категории User-defined ближе к концу списка. Чтобы переместить её в Decorations, нужно добавить в Decorate вне стейтов строчку типа //$Category "Decorations/Tech" (см. список читаемых DB типов комментариев). С другой стороны, может иметь смысл завести свои отдельные категории для новых акторов.

Рейтинг сообщения: +3, отметил(и): BeeWen, JSO x, camper
1 2
camper
UAC Sergeant Major
Next rank: UAC Sergeant Major after 76 points
684

Doom Rate: 1.4

Posts quality: +390
Ссылка на пост №917 Отправлено: 27.03.23 17:25:07
Большое спасибо за обстоятельный ответ.

N00b2015 пишет:
Раз в вопросе присутствует название pk3, правильно я полагаю, что речь идёт о ZDoom/GZDoom?


Это для k8vavoom, форка vavoom. Сейчас готовится выход нового билда, который способен запускать ipk3 без использования ресурсов оригинальных игр id на idtech1. k8vavoom не использует zscript, но поддерживает decorate. Я собрал тестовый ipk3 в основном на основе ресурсов карты lest.wad (Cartoteka&Vector) для демонстрации и экспериметов, подобный этому https://forum.zdoom.org/viewtopic.php?p=1169284#p1169284
Но движок позволяет играть в мультиплеер (по крайней мере по локалке) уже сейчас. Сейчас дошлифую до какого-то состояния и хочу опубликовать к новому билду движка, с разрешения всех авторов контента.
1
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 2.27

Posts quality: +789
Ссылка на пост №918 Отправлено: 27.03.23 19:32:58
camper пишет:
k8vavoom не использует zscript, но поддерживает decorate.

Насколько знаю, у него собственный язык. "VavoomScript" или как-то так. Более низкоуровневый в сравнении с ZScript -- то есть позволяет писать некоторые вещи, которые в защищённом со всех сторон API ZScript, в теории, сделать нереально. Однако это заставляет платить цену совместимости модификаций -- поэтому сделать сборку на k8vavoom (а иногда и просто заставить работать два мода вместе) куда труднее, чем на GZDoom.

camper пишет:
Но движок позволяет играть в мультиплеер (по крайней мере по локалке) уже сейчас.

Почти любой порт позволяет играть по сети. Да что там порты, даже оригинальный Doom.

N00b2015 пишет:
Да, любые, в том числе длиннее 8 символов.

Предупреждаю, Mud (Serious_MOod) в своё время утверждал, что эта возможность не до конца доделана и поэтому иногда "странно работает" (цитата из л/с).
2 8 1
camper
UAC Sergeant Major
Next rank: UAC Sergeant Major after 76 points
684

Doom Rate: 1.4

Posts quality: +390
Ссылка на пост №919 Отправлено: 27.03.23 21:00:51
JSO x пишет:
Насколько знаю, у него собственный язык. "VavoomScript" или как-то так. Более низкоуровневый в сравнении с ZScript -- то есть позволяет писать некоторые вещи, которые в защищённом со всех сторон API ZScript, в теории, сделать нереально. Однако это заставляет платить цену совместимости модификаций -- поэтому сделать сборку на k8vavoom (а иногда и просто заставить работать два мода вместе) куда труднее, чем на GZDoom.


Это Vavoom-C , но ketmar (автор проекта k8vavoom) против широкого его использования и настаивает на использовании decorate. По мнению многих использование zscript ограничивает моддинг только для gzdoom.
1
JSO x
- 2nd Lieutenant -
Next rank: = 2nd Lieutenant = after 36 points
1404

Doom Rate: 2.27

Posts quality: +789
Ссылка на пост №920 Отправлено: 27.03.23 22:34:30
camper пишет:
По мнению многих использование zscript ограничивает моддинг только для gzdoom.

Ну да, тут спорить трудно. Мне тоже не нравится засилие "GZDoom и только GZDoom" -- всё-таки он тоже лишь инструмент самовыражения.

camper пишет:
<...> и настаивает на использовании decorate

Decorate сам по себе хорош для модификаций обыкновенной направленности -- если нужно сделать что-то, выходящее за рамки управления стейтами, то им одним никак не обойтись. ACS для своих целей (в основном для управления уровнем) неплох, однако тоже ограничен. А вот Vavoom-C и ZScript такие рамки отодвигают куда дальше.


Также стоит рассмотреть вопрос оптимизации кода; предупреждаю, далее речь пойдёт про семейство портов *ZDoom с 2016-го года, которое я более-менее изучил.


Так вот, ни Decorate, ни ACS в этом плане не могут потягаться с обоими языками -- я знаю, так как проводил несколько бенчмарков (сравнений скорости разных реализаций; прилагаю пример-скриншот подобной проверки) и немного изучал JIT-компиляцию ZScript (более того, информацию об этом флаге на ZDoom Wiki тоже добавил я). Вкратце:

1) ZScript компилируется в мнемоники Ассемблера целевой платформы, что при грамотном использовании априори является наибыстрейшим способом исполнения кода;

2) ACS -- в опкоды собственной VM, а именно "ACSThinker" (базовый класс "Thinker", кстати, тоже находится в юрисдикции API ZScript. До "ACSThinker" добраться можно, однако с ним количество действий уже резко ограничено);

3) Decorate, DeHackEd, DECOHack и другие подобные вещи изменяют конфигурацию стейтов. Опять же, система их внутриигровой смены, за исключением вызова кодпоинтеров, полностью написана на ZScript.


Вывод? В этом плане оба языка -- и ZScript, и Vavoom-C, вероятнее всего, написанный с тем же прицелом -- вне конкуренции. Мне, с моим слабым железом и жаждой создания добротных оптимизированных модификаций, связки Decorate + ACS катастрофически не хватает.

Рейтинг сообщения: +2, отметил(и): theleo_ua, camper
2 8 1
Страница 23 из 38Перейти наверх Пред.  1, 2, 3 ... 22, 23, 24 ... 36, 37, 38  След.
   Список разделов - Местечко мапперов и моддеров - Тема для новичков. Вопросы по маппингу/моддингу - любые!-2