Пятница, 03.05.2024, 03:37
Приветствую Вас Гость | RSS
Меню сайта
Поиск
Главная » Статьи » Картостроение

Делаем продвинутый лифт (Урок №1)

   Сила и творчество - вот главный залог успеха нашего клана. Кроме развития трёх основных направлений; не поддающейся сомнению, сильной игры, программированию (включая совершенствование серверов, картостроение и скиностроение), в нашем клане ведётся плодотворная работа по графике (см. раздел фотошоп), благодаря наличию в клане соответствующих мастеров.
   Часто наши соклановцы просят меня научить делать карты для CS:S. Скажу сразу, это дело очень нелёгкое, требующее терпения и внимательности. Собственно, учить я никого не собираюсь (из-за нехватки времени), тем более есть немало учебников по этой тематике в интернете. Прочитав их, вы можете научиться создавать очень красивые карты без посторонней помощи. В этой статье я хочу лишь немного поделиться собственным опытом. Конечно, есть много секретов картостроения, которых не найти в интернете, но здесь я раскрою один. Некоторые картостроители (из начинающих) делают карты простые, - полый куб, в котором есть различные препятствия и пара респов, кроме этого разбросано оружие. И всё, фантазия иссякает. Но гораздо интереснее делать карты, где имеются какие-нибудь механизмы. Я хочу рассказать об одном из них - о продвинутом лифте, который вы научитесь делать, прочитав эту статью. Более того, поняв принцип работы лифта, вы сможете и сами придумывать более сложные и интересные механизмы.
   Итак, начнём. Чтобы вы могли видеть лифт, ездить на нём, необходимо создать саму карту. Карты могут быть разными, но, поскольку эта статья посвящается лифту, то мы сделаем несложную карту, куда и поставим лифт.
   Открываем редактор Hammer. Надеюсь, вы владеете азами работы с редактором. Выбираем текстуру грунта. Для этого нажимаем кнопку Browse, что находится справа. Появляется список текстур. В окошке Filter, например, пишем слово sand (что в переводе - песок). Появляется список текстур песка. Выбираем ту текстуру, которая вам понравится, нажав на неё два раза.
   Рисуем прямоугольник с помощью инструмента Block Tool в левой панели.


   У нас получилась земля, по которой будут ходить игроки. Однако её недостаточно для компиляции карты. Теперь делаем небо. Рисуем сверху от земли соответствующих размеров куб с текстурой toolsskybox. Затем делаем его полым изнутри с помощью функции Make Hallow в верхнем меню Tools. Толщину стенок задаём любую, например стандартную 32. Наш куб сделался полым. Теперь необходимо удалить у него дно, чтобы присоединить его к земле (в таком случае конечная компиляция пройдёт намного быстрее). Для этого вначале выделяем куб в окне 3D-вида, и снова возвращаемся к меню Tools, где нажимаем на Ungroup. Это нужно для того, чтобы разгруппировать (разделить на части) нашу фигуру для последующего удаления дна. Теперь выделяем дно, и нажимаем клавишу Delete. Дно удалено. Для удобства присоединения небесной коробки к земле, нужно сгруппировать её снова. Выделяем стороны небесной коробки и её верх (низ мы удалили), и в меню Tools нажимаем Group. Теперь коробка (без дна) стала единым объектом. Выделяем её, и в окошке 2D-проекции состыковываем с землёй. Всё, теперь у нас получилась основа карты. Главное, чтобы в получившейся коробке (теперь уже с дном из земли) не имелось щелей, иначе компиляция будет произведена с ошибками освещения (Leak).
 

   Однако то, что мы сделали небом, пока им ещё не является. Нам необходимо прикрепить к нему небесные текстуры. Их вы можете выбрать в окошке Browse, набрав ключевое слово Sky в строке Filter. Перед вами появятся много небесных текстур. Но выбирать их не надо. Просто запомните название той, которая вам понравилась. Например, возьмём такое название - de_cobble_hdr
   Открываем в верхнем меню вкладку Map и нажимаем опцию Map properties (т.е. свойства карты). Перед нами появляется окошко свойств нашей карты. В функции Map пишем любое название, например - delta lift. А в функции SkyBox Texture Name пишем название небесной текстуры - de_cobble_hdr
   Затем нажимаем Apple (т.е. применить). Всё, небо у нас привязано к нашей карте, и при компиляции будут использованы именно эти текстуры.
   Теперь у нас есть земля, небо… И больше ничего. Чтобы карта была естественнее, нужно поставить солнышко (чтобы оно немного слепило глаза, как на официальных картах). Заходим внутрь нашей коробки и ставим вверху, на торце, энтитию light_environment (при помощи инструмента Entities). Только следует не забывать, что необходимо ставить её так, чтобы она была внутри коробки и не задевала ничего. Теперь открываем свойства этой энтити (двойным нажатием мышки по ней), и в функции Pitch Yaw Roll (Y Z X) вписываем угол освещения, например - 45 (с минусом, чтобы свет падал вниз). В функции Pitch также ставим угол освещения. Можно поставить снова - 45 (с минусом). В функции Brightness вставляем значение яркости нашего солнца. Вы можете выбрать её из визуального списка, добавив нужный оттенок, предварительно нажав кнопку Pick color. Я же вставляю готовые параметры яркости, которые выбрал заранее - 255 253 236 200
   В функции Ambient делаете примерно то же самое, т.е. можете сами выбрать цвет, оттенок, яркость. Я вставляю туда значение - 255 249 202 200
   Функции BrightnessHDR и AmbientHDR предназначены для того же. Но их используют для современных, мощных видеокарт (а такие есть не у всех). На видеокартах более слабых эта функция работать не будет. К тому же, если использовать HDR, то после компиляции вес bsp-файла увеличится вдвое. Можете вставить сюда те же значения, что мы присвоили Brightness и Ambient.
   Нажимаем кнопку Apply, чтобы сохранить настройки. Всё, солнышко сделано. Но не до конца. Дело в том, что текстуры неба будут у нас светиться, но солнышка видно не будет. Поэтому делаем солнце видимое для игроков.
   Ставим рядом с энтити light_environment энтити env_sun. Открываем его свойства и делаем следующие настройки:
   Pitch Yaw Roll (Y Z X) - 45
   Viewer Entity sun_target
   Use Angles No
   Pitch - 45
   Sun Color (R G B) 255 253 155 (можете выбрать на своё усмотрение)
   Overlay Color (R G B) 255 253 155 (т.е. корона солнца, можете выбрать свой оттенок)
   Size 16 (здесь имеется в виду размер солнышка)
   Overlay size -1 (размер короны. Минус означает внешнюю направленность)
   Overlay Material Name sprites/light_glow02_add_noz (т.е. текстура короны)
   HDR Color scale 1.0

   Нажимаем Apply. Но теперь необходимо сделать так, чтобы солнце светило туда, куда мы его направим. Для этого внизу карты, у самой земли ставим энтити info_target (только чтобы эта энтити ничего не задевала и была внутри нашей коробки). Желательно ставить её в противоположной стороне от энтити env_sun и внизу карты, - таким образом мы зададим более правильное направление света. Открываем свойства энтити info_target и прописываем значения:
   Name sun_target
   Parent (оставляем пустым)
   Pitch Yaw Roll (Y Z X) 0 0 0 


   Нажимаем Apply. Всё, теперь у нас полноценная коробка карты, с красивым небом и ярко сияющим солнышком. Но мы не сможем его увидеть в игре, т.к. мы не попадём в эту карту по причине отсутствия места появления игрока. Поэтому ставим ближе к земле (но не задевая её) энтити info_player_start, и прямо на неё ставим (совмещаем их) энтити info_player_counterterrorist


   Теперь мы сможем появиться на этой карте и увидеть её. По умолчанию у нас будет мало оружия - всего лишь пистолет и нож. Чтобы сделать другой набор оружия, необходимо поставить байзону (чтобы иметь возможность его купить). Но цель этой статьи - лифт, а не полноценная карта, поэтому мы не будем делать байзону, а ограничимся энтити game_player_equip. Это очень интересная энтити (о которой можно написать отдельную большую статью), которая позволяет выдавать игрокам то оружие, которое вы желаете им дать. Например, мы ограничимся двумя видами оружия; автомат m4a1 и нож.
   Открываем свойства game_player_equip и в функции Name пишем give_weapon. Затем нажимаем кнопочку SmartEdit и последовательно добавляем значения:
   1) Key targetname
       Value give_weapon
   2) Key spawnflags
       Value 0
   3) Key weapon_knife (здесь мы даём игроку нож)
       Value 1 (указываем количество выдаваемых ножей)
   4) Key weapon_m4a1
       Value 1

   Заходим на вкладку Flags и снимаем галочку с Use Only. Затем нажимаем кнопку Apply. Всё, главное сделано. Теперь наш набор оружия будет выдан игроку сразу же при старте игры. Преимущество этой энтити в том, что оружие не надо покупать, или подбирать где-нибудь, - оно будет выдано сразу. Компилируем контрольную карту, чтобы посмотреть, всё ли у нас получилось. Для этого нажимаем клавишу F9, ставим везде значения Normal и нажимаем OK. Карта должна скомпилироваться очень быстро, поскольку она по сути ещё пуста. Посмотрим на результат.


   Итак, всё у нас получилось; игрок появился на карте, в руках у него автомат. Кроме этого есть у него и нож. Попробуем побегать по карте и пострелять. Когда пуля попадает в песок, мы видим, как он разлетается. За пределы карты игрок выйти не может. Вверху и вокруг игрока мы видим красивое, естественное небо. Из-за облаков светит яркое солнце.
   Теперь возвращаемся в Hammer чтобы начать делать лифт. Его мы будем делать в центре карты (для лучшей наглядности).
   Для начала нажимаем кнопку "–" (минус) в верхней панели редактора Hammer, - нажимаем столько раз, сколько это возможно, чтобы уменьшить размер сетки в окнах 2D проекции. Затем выбираем подходящие текстуры для основы лифта (его корпуса). Можно выбрать любые текстуры, даже деревянные или каменные, но куда естественнее будут выглядеть металлические. Нажимаем в правой панели редактора кнопку Browse и вводим в окне Filter ключевое слово metal. Перед нами появится список видимых текстур металла. Выбираем из них подходящую, и дважды нажимаем на неё. Всё, текстура выбрана нами. Теперь берём инструмент Block Tool, что находится в левой панели, и рисуем в окне 2D конструкцию лифта. Он может иметь любой вид, какой вам только захочется. Но делать его желательно, соблюдая пропорции, чтобы квадраты (или прямоугольники) имели одинаковые размеры сторон, в противном случае он станет у вас смещаться во время игры, что будет выглядеть некрасиво. Я нарисую так; основа лифта будет металлической, состоящей из пола, потолка и балками по углам. Всё это я составлю из тонких брашей с текстурой металла. Далее нужно их выделить, и сгруппировать таким же образом, как мы сгруппировали коробку неба с помощью функции Group в верхнем меню Tools. Это нужно чтобы лифт был одним объектом, а не множеством. Для того, чтобы размеры лифта соответствовали игроку, можно на время поставить в него энтити info_player_counterterrorist. Теперь мы убедились, что наш лифт как раз по размеру, и можем убрать энтити info_player_counterterrorist, предварительно её выделив, и нажав клавишу Delete.


   Основа лифта готова. Но из него игрок может выпасть, поскольку в лифте нет стен. Для наглядности мы сделаем стеклянные стены (из неразбиваемого стекла), а также поставим стеклянную дверь, которая будет открываться, когда игрок подойдёт к лифту (но это чуть позже). Сначала делаем стены. Выбираем текстуру стекла, - вновь нажимаем Browse и в окне Filter пишем glass. Затем берём инструмент Block Tool и рисуем стены. Получается так.


   Теперь зажимаем клавишу Ctrl и выделяем все составные части лифта; металлическую основу и стёкла. Сгруппировываем их в одно целое при помощи функции Group. Затем снова идём в меню Tools и нажимаем на Tie to Entity (т.е. делаем объект из брашей энтити-объектом). В появившемся окне находим вкладку Class и выбираем func_tanktrain. Нажимаем Apply. Появляется список различных настроек лифта. Нужно задать следующие настройки:
   Name - lift
   First Stop Target - path1 (т.е. задаём параметр, чтобы лифт стоял в данной точке по умолчанию)
   Change angles - Never (фиксированная ориентация)
   Max Speed (units / second) - 50 (тут задаём скорость движения лифта от 1 до 100)
   Move Sound - можно выбрать любой звук, нажав кнопку Brows, но мы оставим это поле пустым, поскольку лифт у нас будет с дверью, у которой будет собственный звук. Если присвоить звук лифту и двери одновременно, то будет слышен лишь звук двери. Не имеет смысла озвучивать лифт.

   Далее нужно открыть вкладку Flags и поставить галочки на; No User Control, Fixed Orientation и Is unblockable by player, а всё остальное сделать пустым (без галочек).

   Теперь, для красоты, сделаем в лифте открывающуюся дверь. Выбираем инструмент Block Tool и рисуем её в проёме лифта. Я её нарисую такой же, как стены - такой же стеклянной (естественно, неразбивающейся). Итак, дверь готова. Но это ещё не дверь, это обычный браш, который необходимо сделать рабочей дверью. Выделяем её и открываем в верхнем меню вкладку Tools, затем нажимаем Tie to Entity. В появившемся окне, во вкладке Class, выбираем функцию func_door и нажимаем Apply. Затем выставляем следующие настройки:
   Name - door
   Parent - lift (этой командой мы прикрепляем дверь к лифту)
   Speed - 50 (задаём скорость движения двери от 1 до 100)
   Delay Before Reset (- 1 stay) - -1 (Минус один позволяет двери выполнять лишь одну операцию, либо закрываться, либо открываться)
   Start Sound - doors/door_metal_rusty_move1.wav (можно выбрать другой звук, нажав Browse)
   Move Direction Pitch Yaw Roll - 0 270 0 (направление движения двери. Тут могут быть значения: 0 0 0, 0 90 0, 0 270 0, 0 180 0, в зависимости от положения вашей двери и лифта на карте. Выбирается самостоятельно, и тестируется быстрой компиляцией).
   Открываем вкладку Flags и убираем все галочки, чтобы их там вообще не было, поскольку дверь у нас будет открываться по команде от триггеров.


   Теперь лифт и дверь у нас одно целое. Остаётся заставить всё это двигаться по команде вверх и вниз. Для этого строим путь. Выбираем инструмент Entity Tool (в левой панели), а справа, в окошке Objects выбираем функцию path_track. Один path_track создаём в середине лифта (внутри него), строго по центру (иначе он может смещаться).


   Второй path_track ставим там, где должен останавливаться лифт после подъёма (желательно сделать его без смещения, ровно, иначе лифт будет смещаться во время движения).
   Открываем свойства первого path_track’а, дважды нажав на него в окне 3D-проекции. Выставляем следующие значения:
   name - path1
   Next stop Target - path2
   orientation type - No change

   В свойствах же второго path_track’а выставляем:
   name - path2
   orientation type - No change

   Путь готов. Теперь необходимо сделать кнопки, нажав на которые, мы смогли бы заставить лифт двигаться, поскольку без них он будет стоять на месте. Но прежде чем их создать, необходимо поставить энтити logic_branch в любом месте карты (желательно недалеко от лифта). Энтити logic_branch создаётся таким же способом, как и энтити path_track (см. выше). В свойствах logic_branch устанавливаем параметры:
   name - tester
   initial value - 0

   Открываем вкладку OutPuts и добавляем строчки:


   Теперь делаем кнопки. Вначале сделаем кнопку внутри лифта, чтобы она была к нему привязана (двигалась вместе с ним, а не оставалась на месте).
   Выбираем инструмент Block Tool и рисуем внутри лифта (у стенки) небольшого размера кубик (он и будет у нас вместо кнопки). Текстуры к нему лучше подобрать металлические, а после того, как он будет готов, можно нанести на него декаль в образе кнопки (в списке стандартных декалей она имеется). Декаль наносится с помощью инструмента Apply Decals (после того как вы его выбрали, нужно нажать в правой панели редактора кнопку Brows, затем в окошке Filter набрать ключевое слово - decal. Перед вами появится список декалей, среди них имеется кнопка). Декаль наносится прямо в окне 3D-проекции. Но можно делать кнопку и без декали.


   Итак, теперь выделяем браш (вашу будущую кнопку), и нажимаем в верхней панели вкладку Tools, затем нажимаем Tie to Entity и в появившемся окне, во вкладке Class выбираем func_button. Затем задаём настройки:
   name - button1
   parent - lift (тут мы присоединяем кнопку к лифту)
   speed - 200 (задаём необходимую скорость нажатия, т.е. срабатывания)

   Открываем вкладку Flags и ставим галочки на значениях:
   Don't move
   Damage Activates
   Use Activates

   Затем открываем вкладку OutPuts и добавляем строчку:


   Делаем контрольную компиляцию. Проверяем карту в игре. Итак, что у нас вышло; лифт стоит на месте, дверь закрыта, мы её не можем открыть. Всё правильно, потому что мы настроили её так, что она по умолчанию закрыта и открыть её невозможно. При нажатии кнопки внутри кабины даётся команда на закрытие двери. На открытие нет команды. Производим выстрел через стекло по кнопке внутри кабины. Лифт движется вверх с закрытой дверью.
   Возвращаемся в редактор Hammer. В левой панели нажимаем кнопку Brows, набираем в поле Filter ключевое слово trigger. Перед нами появляется пара текстур, одна из них жёлтого цвета с надписью trigger. Выбираем её. Берём инструмент Block Tool и рисуем квадратный блок, так чтобы он занимал нижнюю часть лифта до его середины и немного выступал вперёд, за дверь.


   Выделяем этот блок, идём в меню Tools, нажимаем Tie to Entity и в окошке Class выбираем trigger_multiple и нажимаем Apply. Открываем вкладку Flags и ставим галочку на Clients, остальное оставляем без галочек. Переходим во вкладку OutPuts и добавляем строчки:


   Этот триггер-блок даст игроку возможность открыть дверь лифта, когда он к нему подойдёт, а также закрыть дверь лифта, когда тот начнёт движение. Но мы установили триггер-блок лишь внизу. Когда же лифт приедет наверх, то дверь не откроется. Поэтому делаем то же самое и наверху. Выделяем триггер-блок и копируем его при помощи команды Copy, что находится в меню Edit. Затем в 2-D окне вставляем копию блока, и располагаем его вверху, на месте остановки лифта, но, в отличие от нижнего блока, ставим его так, чтобы он шёл от центра лифта кверху (нижний блок у нас идёт от центра вниз). Всё, готово. Снова компилируем карту, чтобы проверить. Лифт работает так, как мы его задумали; когда игрок подходит к нему, дверь открывается, он заходит в кабину, дверь остаётся открытой, он нажимает кнопку и дверь закрывается, а лифт движется вверх. Как только лифт приехал наверх, дверь открывается, давая возможность выйти.

   На этом можно остановиться, но мы сделаем лифт ещё лучше, добавив две кнопки вызова - вверху и внизу, чтобы можно было вызвать лифт как в реальности.
   Итак, рисуем кнопки; одну внизу, рядом с лифтом, другую наверху (нам придётся сделать там небольшую площадку, чтобы её разместить). Выделяем кнопку, идём в меню Tools, нажимаем Tie to Entity и в окошке Class выбираем func_button. Задаём следующие настройки:
   name - button1
   speed - 200

   Открываем вкладку Flags и ставим галочки на значениях:
   Don't move
   Damage Activates
   Use Activates

   Открываем вкладку OutPuts и добавляем строчки:


   Это кнопка для нижнего этажа. Теперь делаем для верхнего (предварительно рисуем там площадку). Копируем нижнюю кнопку и ставим её наверх. Затем нажимаем на неё дважды и в свойствах открываем вкладку OutPuts. Изменяем значения так:


   Теперь всё готово - лифт можно будет вызывать.


   Для большей красоты и естественности можно сделать лифту направляющие, чтобы он у вас не летал в воздухе как пепелац. Направляющие можно нарисовать сзади или сбоку от лифта, пользуясь инструментом Block Tool и металлическими текстурами. Словом - на ваш вкус. Я сделаю направляющие слева и справа от лифта, так, чтобы они прилегали к нему почти вплотную, с небольшим зазором. После того как они сделаны, их желательно сделать энтити-объектами для упрощения будущей компиляции. Для этого идём в меню Tools, нажимаем Tie to Entity, и в окошке Class выбираем func_detail и нажимаем Apple. Всё, лифт полностью готов к использованию. Можно приступать к компиляции.
   Скачать готовую карту с этим лифтом, чтобы на него посмотреть и даже поездить на нём, вы можете здесь. Удачи в картостроении.
 
 
 
Категория: Картостроение | Добавил: Nickname123 (29.01.2010)
Просмотров: 4837 | Комментарии: 4 | Рейтинг: 5.0/1
Всего комментариев: 4
4 андрей  
0
а поч у меня нету evn_sun моного их но sun нету

3 stalker  
0
КАКОЙ ЕЩЕ УЧЕБНИК? ГЕОГРАФИИ ХЕХЕ))

2 Nickname123  
0
Когда-нибудь потом. Там, как оказалось, писать надо много, а времени нет сейчас. Но постепенно буду делать.

1 Dumbass(rus)  
0
кстати крос а когда вы свой учебник доделаете?

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Login
Категории раздела
Все статьи [109]
Картостроение [3]
Голосование
С каким видом оружия вы бегаете в COUNTER STRIKE?
Всего ответов: 3985
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Copyright MyCorp © 2024