Закрыть
Artur Ajvazjan » Заметки
Недостаточно прав
Чтобы просматривать эту страницу, нужно зайти на сайт.
Найдено 4 заметки

Goldsrc: Положение сущностей в игровом мире, соответствующее ихнему в редакторе карт

24/08/2025


Суть: По-умолчанию если ставить сущность под углом в редакторе карт, то в самой игре она падает по горизонтали. Решение без готового кода.


image.php?url=aHR0cHM6Ly9rYXNsYW5hLm92ay50by9oZW50YWkvNDcvNDdkZGExOWE1ZGVmNzlmNjhhZmRiMjJmZWJlZWZlZDYxNDRmYjkzNDgxZDc1Y2ZkYjc3NjU1MDFmODdmNDdmODAwMmM5N2M5Njc3Y2Y4YmVhYzhjMTNjNjk2NTk4YWZjNGY1YTAyM2JlNWUwMmFlNzc4MWIwMDc0NDI4NTEzZWEuanBlZw==

Стоит обратить взор на функцию "void CBasePlayerItem::FallThink()", в которой имеются такие строки:

pev->angles.x = 0;

pev->angles.z = 0;


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


Если их закомментировать/убрать, то модель сохранит свои углы, но при этом упадёт до своего "origin".


Есть простое решение в виде создания отдельного параметра, который будет отвечать за отключение/включение падения у сущности. Пусть это будет условное "nophys".


По-умолчанию этот параметр равен "false". В "Spawn" сущности прописываем проверку на "nophys", если он равен "true", то — пишем код, подобный на "FallInit()" (кой в том же "weapons.cpp"), но устанавливаем "movetype = NONE", иначе обычный "FallInit()".


Сущности переписываем собственный "KeyValue" и ловим параметр "nophys" из карты. Как это делается, можно посмотреть в коде различных сущностей.

В редакторе карт нужной сущности прописываем параметр "nophys" со значением "1". Собираем карту и видим, что сущность сохранила своё положение, установленное в редакторе карт.

studiomdl: /AX.smd doesn't exist

17/09/2023

Модель не собирается, а компилятор сетует /AX.smd doesn't exist в секции с анимациями. В том числе и с раскомпилованными моделями из оригинальной Half-Life. Об этом говорится тут [1] (Решение там же, сообщением ниже). А сайт the303.org описывает эти символы так [2]:

[AX AY AZ AZR AXR AYR] ($sequence sub-command)

Originally intended to extract relative movement distance between the first and current frame of XYZ axis, and the "R" ones being for rotation. This command shows up in sdk docs and decompiled models but is not needed since sequences appear to automatically set the monster location during sequence movement.

Саму проблему одни компиляторы игнорируют, а другие компиляторы воспринимают в штыки [3]. Разработчики SDK PrimeXT [4] отреагировали на отзыв о проблеме и добавили предупреждение об этих параметрах в свой компилятор. Решение, позволяющее собрать модель, оказалось простым: можно убрать эти определения из *.qc - ничего критического не случится, а модель исправно соберётся.

Запись на моём сайте

Инфа о именовании PCC файлов, используемых в ME2-3.

PCC имеют разные приставки/префиксы, определяющие то, что в них хранится:

BioA — содержит содержимое уровней, текстуры, геометрию (меши). В редких случаях там могут быть последовательности анимаций и диалоги.

BioD — содержит связанное с сюжетом содержимое: диалоги, постановки сцен, поведения камер, анимации, FaceFX, эффекты (VFX), триггеры/спуски достижений. Ещё могут быть: геометрия, материалы, текстуры и эффекты.

BioG — содержит мужские и женские модели и материалы для лиц, волос, голов, одежды и брони; в том числе и для главгероя/игрока игры.

BioH — содержит специфичное для команды игрока — модели, материалы, эффекты, искусственный интеллект и прочее.

BioP — содержит основные файлы, управляющие базовым в игре: загрузки уровней, положение неписей на уровне, перемещение игрока по уровню и подобное.

Файлы BioA, BioD и BioP организованы по миссиям/уровням:

Cat001 - DLC «Из пепла»

Cat002 - Приоритет Тессия

Cat003 - Приоритет Цитадель 2 (Атака «Цербера»)

Cat004 - Приоритет Штаб квартира «Цербера» (Станция «Кронос»)

CerJcb - Аррае: Бывшие учёные «Цербера»

CerMir - Приоритет Горизонт

Cit001/2/3/4 - DLC «Цитадель»: Миссии

CitApt - DLC «Цитадель»: Апартаменты

CitCas - DLC «Цитадель»: Казино «Серебрянный берег»

CitSim - DLC «Цитадель»: Арена «Армакс Арсенал»

CitHub - Цитадель

CitSam - Месана: Сигнал бедствия (Монастырь ардат-якши)

End001 - Приоритет: Земля (Перед попаданием на Цитадель)

End002 - Приоритет: Земля (В Цитадели)

Gth001 - Приоритет: Дредноут гетов

Gth002 - Приоритет: Раннох

GthLeg - Раннох: Истребители гетов

GthN7A - Раннох: Адмирал Корис

Kro001 - Приоритет: Сур'Кеш

Kro002 - Приоритет: Тучанка

KroGar - Приоритет: Палавен

KroGru - Аттический Траверс: Рахни

KroN7a - Тучанка: Турианский взвод

KroN7b - Тучанка: Бомба

Lev001/2/3/4 - DLC «Левиафан»

MPCer - N7: Лаборатория «Цербера»

MPDish - N7: Центр связи

MPNov - N7: База истребителей «Цербера»

MPRctr - N7: Топливные реакторы

MPSlum - N7: Похищения «Цербером»

MPTwr - N7: Нападение «Цербера»

Nor - «Нормандия»

Omg000/1/2A/3/4 - DLC «Омега»: Миссии

OmgHub - DLC «Омега»: Хаб станции «Омеги»

OmgJck - Гриссомская академия: Эвакуация

ProEar - Пролог: Земля

ProMar - Приоритет: Марс

Добавить на геометрию материал, который будет решёткой.



В редакторе шейдеров используется Principled BSDF.

За основной цвет отвечает параметр Base Color. В моём случае это #0E0E0E.

Параметр Specular настраивается по желанию. В моём случае он равен 0.330.

Параметр Roughness также настраивается опционально. В моём случае он равен 0.687.


К параметру Alpha узла Principled BSDF подключается параметр Color узла ColorRamp.

Узел ColorRamp имеет режим цвета RGB, а интерполяция между цветовыми остановками как Constant.

Цветовая остановка 0 равна #000000 и находится на позиции 0.414.

Цветовая остановка 1 равна #FFFFFF и находится на позиции 0.430.


К параметру Fac узла ColorRamp подключён параметр Distance узла Voronoi Texture.

У узла Voronoi Texture параметры: Number of dimensions to output noise равен 3D; The voronoi feature that the node will compute равен F1; The distance metric used to compute the texture равен Euclidean.

Параметр Scale узла Voronoi Texture равен 74.800.


От узла Voronoi Texture параметр Distance также отходит к ещё одному узлу ColorRamp, у которого параметры также RGB, Constant. Цветовая остановка 0 равна #000000 и находится на позиции 0.253, а цветовая остановка 1 равна #FFFFFF и находится на позиции 0.452.

Параметр этого узла ColorRamp отходит к параметру Height узла Bump.

От узла Bump параметр Normal отходит к одноимённому параметру в узле Principled BSDF.




Чтобы запечь эти текстуры, используется Cycles, где Bake (запекание) выбирается по параметру Bake Type (Diffuse с Influence: Contributions: Color; и Normal).

При запекании необходимо держать эти текстуры активными.