данный туториал продолжение тутора Garry`s mod: маппинг в hammer
Иииии всем привеДОС ДОС нам в мОСт, в этом туториале вы узнаете: как сделать фигуру не только с формой прямоугольника, как искажать фигурку и разрезать её, как сделать фигурку с экшином, и как сделать воду.
Для начала давайте с легкого как бетонное здание,
фигурка других форм
тут всё прост, перед тем как создать создать саму фигурку, надо в окне move selected в objects выбрать форму,

если же у вас нет этого окна, то в настройках view/screen elements можно добавить или убрать окно, вот в окне texture group можно выставить заранее текстуру которая сразу будет у фигуры, эт экономит время.
искажение фигурки
Это уже тяжелее , чтобы исказить фигурку нам нужен vertex tool

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

разрезы
Ну и в разрезе всё тоже изично, для разреза нам понадобится clipping tool

выделяем фигурку, а потом проводим линией разреза, когда вы уже хотите разрезать фигурку, надо кликнуть на clipping tool чтобы изменить то, как разрежет фигурку, если фигурка будет полностью не красной(тобиж без выделения) то фигурку разделит на пополам, и обе части фигурки отсоединяется но не удалятся, если у фигурки выделилась только какая-то часть то эту часть удалит.
экшены для фигурок
Теперь уже к трудноватому, экшн для фигурки, когда у фигурки стоит какой-то экшн то фигурка стаёт как бы полу-фигуркой полу-entity, для фигурки с экшином нам надо нажать на фигурку пкм(правой кнопкой мыши) и кликнуть на tie to entity, после чего у нас вылетит такое окно.

И спросите вы меня сейчас, а почему я не сделал пояснения к этому окну? Да потому что это просто скопированное окно изменения entity, только здесь мы уже изменяем параметры и функции фигурки, func_detail это функция обычной фигурки т.е дефолтный экшн всех фигурок, давайте сделаем дверь, для этого нам нужно сделать фигурку в виде двери и добавить ей экшн func_door или func_door_rotating, в чём различия этих двух экшинов?
двери
Func_door это дверь которая просто сдвигается к примеру как в думе, куда будет сдвигаться дверь зависит от того куда смотрит сама дверь, а вот куда будет смотреть дверь за это уже отвечает параметр move direction (pitch yaw roll), и вот, помните я делал туториал про фичи моддинга дума часть 2? если нет то вот ссылка на него , так вот, там я делал разбор того что такое pitch angle roll так в этом параметре надо указывать эти значения (yaw это angle).
Первое число в этом параметре это pitch, второе это angle, третье это roll.
Func_door_rotating вот это уже обычная дверь, но чтобы она поворачивалась не в центре а как обычная дверь, надо центр фигурки переставить сбоку где дверь типа прикреплена к стене, и что бы переставить центр фигурки надо найти кружочек в центре фигурки и хмммм, что это может быть? очень странно но это и есть центр фигурки, и этот круглый центр фигурки надо взять за шкирку и переставить его сбоку двери.
Ну и сейчас общая инфа про двери, и рассказывать я буду только важные вещи,
- speed скорость открытия двери, её дефолтная скорость 100
- start sound звук открытия двери
- stop sound звук закрытия двери
- delay before reset (-1 stay) сколько секунд после открытия двери она будет стоять открытой (число -1 = не будет закрываться )
- locked sound звук когда дверь заперта а её хотят открыть
- unlocked sound звук когда дверь открылась (имеется ввиду когда её заперли а потом будто бы ключиком сделали её не запертой )
- spawn position будет ли дверь открыта сразу или нет ( если стоит значение closed она будет закрыта )
ну а щас переходим от параметров к флагам,
флаги (переходим в категорию Flags)
- use opens открытие двери нажатием на неё
- NPCs can`t если данный флаг включен то npc не смогут её открыть
- touch opens открытие двери когда вы до неё дотронулись
- starts locked если данный флаг включен то дверь будет со старта заперта.
О и кстати, если вы хотите изменить параметры флаги и другие вещи связанные с экшином у фигурки но вы их уже сохранили то тогда надо кликать properties а не tie to entity.
разрушаемые и физичные фигурки
Мда с помощью экшинов фигурок можно сделать и такое, для разрушаемой фигурки нужно поставить функцию func_breakable, в данной функции также много параметров поэтому скажу важные,
- explosion damage дамаг от взрыва
- explosion radius радиус дамага от взрыва
- strength хп(health) у фигурки
- material type тип материала, действует на то какой звук и какие частицы выпадут у фигурки когда она сломается
- physics impact damage scale дамаг от удара или другого силового воздействия от предмета
А вот для функции физического объекта нам нужна эта функция func_physbox, но его многие параметры я не буду говорить т.к они почти все из функции разрушения но вот две вещи нужны. Если вы хотите чтобы физический объект не падал со старта то нужно сделать это: включить флаг motion disabled, в параметре health level to override motion выставить при каком хп(health) фигурки она будет падать.
Если вы не хотите чтоб физический объект разрушался и получал дамаг, ставьте параметр strength на ноль, вам никто не запрещает, и в отличии от func_breakable он имеет гравитацию и его можно спокойно двигать physic gun`ом.
вода
ну и давайте на последок сделаем басейн, для этого я сделаю кубо-образную дырень вниз с водой, чтобы это сделать я создам фигурку куба вырежу им фундамент карты, потом надо нажать пкм по кубу и либо вырезать скопированным кубом нутрь первого куба либо потом кликнуть make hollow и выбрать толщину стенок куба, потом лишнее мы вырезаем. Затем тот остаток фундамента карты который остался в бассейне мы удалим и на их месте создадим новый куб с текстурой воды. В поиске текстур в поле filter мы пишем water, теперь так лучше искать текстуру. для спокойной и нормальной воды как на карте gm_Construct рекомендую текстуру gm_construct/water_13 или nature/water_canals03 или nature/water_canals_water_clear. Теперь что бы у текстуры воды не было багов сбоку и снизу надо боки и низ куба воды окрасить в текстуру tools/toolsnodraw эта текстура не видимая, а как окрасить не всю фигурку а лишь одну из её граней вы узнаете в конце тутора в разделе маленькие фичи и факты.
Теперь нам надо поставить воде функцию, func_water_analog, ну и вот её параметры и объяснения их.
- move direction направление волн (работает только с текстурой nature/water_movingplane, эта текстура не качественная)
- speed скорость волн (работает только с текстурой nature/water_movingplane)
- move distance на сколько далеко волна будет двигаться (работает только с текстурой nature/water_movingplane)
- wave height высота волны (работает только с текстурой nature/water_movingplane)
- sound played when the water brush starts moving звук когда игрок двигается в воде либо когда вода движется
- sound played when the water brush stop moving звук когда игрок заканчивает двигаться в воде
И сейчас скажете вы, хммм а чё большинство параметров работают с текстурой nature/water_movingplane и она по твоим словам не качественная? да вот потому что в других КАЧЕСТВЕННЫХ текстурах воды всё это есть сразу а в nature/water_movingplan этого нет, даж звук воды есть сразу у КАЧЕСТВЕННЫХ текстур воды, прост через функцию их можн менять. И есть два вида не качественных текстур воды, с первым видом всё не так печально и они помечаются словом cheap, а второй вид это и есть текстура nature/water_movingplan, и не советую брать текстуры воды у которых есть слово dx или beneath т.к это составляющая текстур воды, нет их конечно можно брать но если у них будут баги и т.п то тут чисто проблема будет в том что это вода-компонент.
маленькие фичи и факты
- У фигурки можно изменить текстуру не только у всей фигурки но и на её гранях, для этого нам НЕ надо выделать фигурку сразу, а надо сначала зайти в toggle texture application и потом в камере выделять одну или несколько граней фигурки/фигурок и ставить на неё текстуру.
- Для того что бы в мульти плеере\кооперативе все не спавнились на одной точке а потом подыхали друг в друге, надо поставить несколько entity спавна игрока (максимум 33).
- На карте можно изменить текстуру скайбокса, для этого заходим в настройки map/map properties там вы уже сами легко найдёте параметр текстуры скайбокса (это skybox texture name) тут надо указывать полное имя скайбокс текстуры(вы поймёте в каком смысле полное) итак, чтобы найти текстуру скайбокса в поиске текстур ищем sky и там будут КУСОЧКИ от текстур неба, и я выбрал текстуру skybox/sky_day02_04_hdrbk теперь что бы указать её полное имя надо убрать весь мусор
skybox/sky_day02_04_hdrbkи что бы точно узнать полное имя, я вам скажу, полное название текстуры неба должно выглядеть так sky_day**(две_цифры)_**(две_цифры) никак иначе, вот к примеру sky_day04_101 такой текстуры неба не может быть т.к на номер тратится два числа по две цифры. - Лучше на карте вместо текстуры tools/toolsskybox2d обозначающей скай бокс, использовать эту tools/toolsskybox т.к она не 2д она может делать из себя 3д скайбокс с горами скалами и полом и многие другие вещи и при этом она также будет показывать текстуру неба.
- По кроме env_sun и shadow_control нужно ставить light_environment т.к многие вещи работают от него как к примеру та же вода.
- Возле не качественной воды второго вида или других текстурок с отражениями ставьте env_cubemap на высоте 64 unit`а то есть на высоте головы игрока а про кубмап я расскажу чуть позже в следующем туторе.
- Возле не качественной воды второго вида ставьте water_lod_control эта штука указывает в какой дистанции игрок будет видеть отражения воды от env_cubemap.
- иногда у карты появляется баг, текстура воды может исчезнуть а сама вода останется это я сам не знаю как происходит и от чего появляется, но как пофиксить я знаю, 1 вариант — повторно скомпилировать карту, 2 вариант- заменить текстуру воды на другую скомпилировать карту поиграть в неё затем в папке «папка с игрой\garrysmod\downloadlists» удалить файл с названием вашей карты (это кэшированный файл карты, гаррис все карты кэширует) а потом заменить текстуру воды на ту которую хотите и скомпилировать карту если текстуры всё равно нет тут уже нужен 3-вариант: он более надёжный и лёгкий, удалить фигурку воды и сделать воду заново, да именно так и он проверенный, на момент создания туториала я в карте столкнулся с этой проблемой, через день я додумался пойти по третьему варианту.
- у карты можно поставить тип холодного мира для зимних карт, это конечно не меняет текстуры но это может воздействовать как то на моды либо на карту либо и на то и на то. для этого мы заходим в нам уже знакомые настройки map/map properties и там есть параметр world is cold если стоит no то мир в карте не будет холодным.
Ну вот мы и подошли к концу туториала, вот карта в скомпилированном bsp формате и в формате для хаммера vtf
а я вам рекомендую её скачать, там есть пасхалка + постреляйте по домику, вам понравится 🙂 , кстти на скринах я играл с модом vfire который делает реалистичный огонь, на него вот тож ссылка. ну и если кто хочет и взрывы реалистичные вот.
скрины карты




А чтобы сделать такой же разрушающейся дом просто разрежьте внешнюю часть стены на куски и дайте им функцию физического объекта(главное не надо выделать все куски сразу т.к хаммер их всех склеит в один кусок) так же сделайте с внутренней частью стен и потолка и внешней частью потолка + можете все фигурки в доме разрезать на куски и дать им функцию физического объекта. только делая такой дом у дома будут не норм тени, ну этаж source этаж движок 2004 года.
Ну вот и сказочке пипец
