Глава V. Первые практические уроки.

Практические уроки: инструменты создания брашей (clip, carve, hollow, вершинное редактирование), первая карта и все типы карт CS.

5.1

Как создать браш, энтити, префаб?

В этой статье мы научимся создавать самые простые объекты на карте, вставлять энтити-объекты, создавать префабы. Статья довольно большая, с большим количеством рисунков, поэтому наберитесь терпения и прочитайте ее внимательно. Как показывает практика, очень много вопросов у начинающих мапперов возникает при создании простых объектов и в самых простых операциях над ними. Данная статья отвечает на многие эти вопросы.
Содержание:

1. Создание браша

Чтобы создать обыкновенный браш, нужно выбрать инструмен Block [Shift-B] при этом курсор сменится на рамку (см. рис. ниже)
t2wcinstr5 t2pic19 Выберем вид сверху и, зажав левую кнопку мыши, зададим размер прямоугольника, скажем 256х256 юнитов и отпустим кнопку. Объект пока не готов.
t4brush1 Переключимся на вид сбоку или вид спереди (значения не имеет) и увеличим высоту нашего объекта до 256 юнитов.
t4brush2 t4brush3 Теперь когда положение объекта и его размеры заданы, остается навести курсор на объект, нажать правую кнопку мыши и выбрать единственный вариант "Create object".
t4brush4 t4brush5 Посмотрим как это будет выглядеть в игре, для этого выберем вид 3d textured.
t4brush6 Изображение браша в 3-х мерном виде
Браш в виде куба с размерами 256х256х256 юнитов готов. Теперь мы можем заменить и выравнить на нем текстуры, а также переместить в любое место нашей карты, изменить размеры, форму и т.д.
Примечание: размер создаваемого или выбранного объекта отображаются в строке помощи, внизу экрана (см. рис. ниже).
t4helpline

2. Создаем энтити

Все энтити делятся на точечные энтити (point-based), например, источники света и звука, некоторые типы триггеров, места рождения игроков и пр. и брашевые энтити (brush-based), например, триггеры, кнопки, двери, лифты и пр..
Точечные энтити вставляются на карту инструментом Entity Tool [Shift-E]. Для создания брашевого энтити сначала необходимо изготовить браш, а затем превратить его в энтити. Пример, дверь. Создаем браш по форме напоминающий дверь и превращаем его в объект func_door. Превращение осуществляется сочетанием клавиш [Ctrl-T].
Более подробно об энтити-объектах и их свойствах Вы можете прочитать в разделе "Энтити".
Рассморим создание этих двух типов подробнее.

2.1. Создание точеного энтити-объекта (point-based)

Выберем инструмен Entity Tool [Shift-E] при этом курсор сменится на топорик (см. рис. ниже)
t2wcinstr4 t2pic16 Теперь обратим внимание на правую часть рабочего поля редактора. Там находится панель New Object (выделена синей рамкой).
t4ent1 t4ent2 Вы можете вытащить эту и любую другую панель как показано на рисунке справа.
В строке Objects мы выбираем тип точечного энтити-объекта, которую хотим вставить на карту. По умолчанию в списке стоит info_player_start (т.е. место рождения контра). Вы можете изменить тип энтити по умолчанию в меню Tools > Options... > Game Configurations (см. рис. ниже)
t4ent3 В строке Default PointEntity class устанавливается point-based энтити по умолчанию, а в строке справа, Default SolidEntity class устанавливается brush-based энтити по умолчанию.
Далее в списке Objects выбираем необходимый тип энтити, например light (источник света).
t4ent4 И вставляем его на карту.
t4ent5 t4ent6 В итоге наш источник света будет изображен в виде небольшого фиолетового прямоугольничка.
t4ent7 t4ent8 Теперь, если понадобится, мы можем переместить нашу энтити в другое место, а также изменить ее свойства. Для этого выделим энтити и нажмем правую кнопку мыши. Появится меню с различными пунктами (рисунок справа): копировать, удалить, группировать и т.д. Нас интересует последняя строчка Properties. Советуем запомнить быстрые клавиши для свойств объектов [Alt-Enter].

2.2. Создание брашевого энтити-объекта

Для создания этого типа энтити сначала нам необходимо изготовить браш, а затем, выделив его, в контекстном меню выбрать Tie to Entity или же нажать сочетание клавиш [Ctrl-T].
Можно превращать браши в брашевые энтити и обратно энтити в браши кнопками на панели "New Object". Кнопка toEntity превращает браш в брашевый энтити-объект, кнопка toWorld превращает брашевый энтити-объект в браш (т.е. обратная операция).
В появившемся оконее мы должны указать тип энтити-объекта (выбираем его в списке), затем мы можем изменить его свойства, то, что идет под словом Attributes.
t4ent9 Выбор типа энтити. t4ent10

Дополнительные сведения

Необходимо отметить, что в любой момент Вы можете изменить тип той или иной энтити. Для этого выделите ее и нажмите [Alt-Enter] или выбирете в контекстном меню Properties.
Кроме свойств энтити Вы можете выставлять различные флаги (закладка Flags). Для разных энтитей существуют разные флаги. Флагов может и не быть вовсе.
t4ent12

3. Создание и вставка префабов

Как Вы уже знаете, префаб — это заготовка, состоящая из одного или нескольких объектов для быстрой вставки на карту (например, стул, книжная полка, лампа, ящик и т.д.). Хранятся библиотеки префабов в файлах с расширением *.ol в директории "Hammer\prefabs".
Вместе с Hammer'ом идут 5 библиотек с префабами: computers (компьютеры), crates (ящики), old stuff (диван, несколько кресел), random objects (мусорка, диваны, сейфы и т.п.), usable objects (прожектор, аптечка и т.д.)
Для того чтобы вставить префаб на карту выберем Block Tool [Shift-B], затем в панели New Objects в строке Categories выберем одну из библиотек префабов, например, computers.
t4pref1 В строке ниже ("Objects") мы выбираем уже конкретный экземпляр компьютера, например, Green Computer. Теперь нажимаем на кнопку Insert original prefab.
Префаб
Префаб помещается в начало координат при просмотре в 3d-виде или же в центр экрана при выбранном 2d-виде.
Также Вы можете создавать свои собственные префабы. Для этого выделите все объекты, которые составят будущую заготовку и в панели New Objects нажмите кнопку Create Prefab
t4pref3 В поле Name укажите имя префаба, в поле Description Вы можете написать дополнительную информацию о префабе (например, его размеры), а в поле Create in Вы выбираете библиотеку, в которой следует сохранить заготовку.
Если Вы не хотите сохранять свой префаб в стандартных библиотеках, то можете создать свою. Для этого в меню Tools выберите пункт Prefab Factory...
t4pref4 Затем нажмите кнопку Add Library, укажите имя библиотеки, также Вы можете ввести описание для своей библиотеки.
t4pref5 Теперь при создании своих заготовок Вы можете выбрать для сохранения свою библиотеку. Например, мы сделали заготовку кухонного стола и теперь сохраняем ее в библиотеке My_Prefabs.
t4pref6 На этом статья, посвященная созданию объектов на карте закончена.
5.2

Возможности инструмента Block

В этой статье мы рассмотрим все возможности, которые предоставляет нам инструмент Блок.
Содержание: Инструмент Блок, он же Block Tool позволяет вставлять на карту 5 различных по форме объектов: обычный браш прямоугольной формы + 4 объекта, перечисленные выше в содержании статьи.
В основном для постройки карты используются обычные "прямоугольные" браши, а из дополнительных форм часто применяют цилиндр. Остальные 3 вида объектов используются редко, по крайней мере их можно быстро получить из прямоугольного браша (например, разрезав его пополам, мы получим угол).
Создание обычного браша мы подробно описали в статье "Как создать браш, энтити, префаб?".
Рассморим теперь создание других четырех видов объектов подробнее.

1. Создание цилиндра

Для начала условимся, что в меню Tools > Options... > 2D views в строке Reorient Primitives on creation... флажок установлен. Для чего это нужно — читайте ниже.
Для создания цилиндра выберем инструмент Block [Shift-B] и в панели New Objects в списке Objects выберем cylinder.
t4cyl1 В поле Faces мы можем указать количество боковых граней цилиндра в пределах от 3 до 32. Чем их больше, тем круглее будет наш цилиндр.
Итак, на виде сверху сделаем квадрат размером 64х64. Переключимся на вид сбоку или спереди и сделаем высоту нашего цилиндра равной 80 юнитов.
t4cyl2 На виде сверху, в меню правой кнопки мыши, выберем Create object. Цилиндр готов.
t4cyl3 А теперь поясним о том, зачем в опциях нужно поставить флажок около Reorient Primitives on creation... Проще объяснить при помощи рисунка.
t4cyl4 Если бы мы применили команду Create object в виде front, то наш цилиндр был бы вписан в прямоугольник со сторонами 64х80. Если же этого флажка не поставить, то положение цилиндра не будет зависеть от выбранного вида и цилиндр всегда будет вписываться в прямоугольник на виде сверху.
Опция эта удобна, когда нам нужно нарисовать цилиндр (например, бочку в игре) лежащим на земле. Тогда просто в виде front нажимаем Create object и нет необходимости тратить время на вращение цилиндра, если бы флажок не был установлен.
Надеемся, что такое объяснение будет для Вас понятным. Вы можете и сами поэкспериментировать с установленным флажком и без него.
А вот так наш цилиндр выглядит в 3-х мерном виде. Довольно угловато, не так ли?
Цилиндр в 3d-виде
Как мы уже писали выше, в поле Faces мы выставлям количество граней (сторон). Максимальное их количество - 32, при этом цилиндр (он может быть колонной или бочкой в игре) будет очень красиво смотреться. На рисунке ниже приведен пример цилиндра с 32-мя гранями.
Цилиндр с 32 гранями
Все бы хорошо, но есть одна вещь, о которой не стоит забывать. Мы хотим сразу предостеречь Вас от возможных ошибок. Большое количество граней — это большое количество полигонов, а движок Half-Life расчитан на неслишком большое их количество. Так что не стоит создавать слишком много "бочек" в одном месте карты. Или создавайте поменьше граней, например, 8-12 вместо 24.
Подробнее о проблеме большого количества полигонов Вы можете прочитать в статьях из раздела Оптимизация карты (R_Speeds).
Вот собственно и все, что касается создания цилиндра.

2. Создание угла (wedge)

"Wedge" дословно означает "клин". Внешне объект похож скорее на угол. Особо описывать построение этого типа объектов, думаем, не стоит, т.к. оно полностью совпадает с построением обычного браша. Просто приведем пример с изображением.
Объект Wedge
Данный тип объектов используется при постройке карт редко (имеется ввиду использование инструмента Блок для создания такого типа объектов), т.к. гораздо проще отрезать нужную часть от параллелепипеда, чтобы получить подобный угол.

3. Создание пирамиды (spike)

Опять же название условное. Создается пирамида также как и обычный браш. В поле Faces Вы можете указать количество боковых граней. На рисунке ниже приведено несколько примеров таких объектов с 4, 20 и 7 гранями соответственно.
Объект Spike

4. Создание винтовых лестниц arch

Перевести одним словом на русский язык довольно трудно. В общем этим инструментом можно создавать винтовые лестницы и тому подобные объекты. Давайте рассморим несколько примеров.
В панели New Objects выбирите Arch. Создайте объект с размерами 384х384х64. Когда Вы нажмете Create object, появится вот такое окошко (см. рис. ниже)
t4arch1 Wall width
Толщина отдельной составной части, возможно отрицательное значение, тогда толщина будет отсчитываться в обратную сторону;
Number of sides
Количество частей (от 3 до 100);
Arc
Угол, на который будет закручен объект (от 8 до 360);
Start Angle
Здесь указывается начальный угол для первой части;
Add Height
Здесь указывается высота в юнитах, на которую каждая последующая часть будет возвышаться над предыдущей. Это можно использовать при создании закрученных лестниц;
Примеры объектов, построенных функцией Arch:
Пример объекта ArchПример объекта Arch
Подробнее о создании винтовых лестниц Вы можете прочитать из одноименной статьи: "Винтовые лестницы".
На этом описание возможностей инструмента Блок закончено.
5.3

Инструмент Clip — разрезание объектов

В этой статье мы расскажем об инструменте Clip, с помощью которого можно разрезать объекты на части.
Для демонстрации работы инструмента Clip возьмем часть кирпичной стены, браш с размерами сторон 384х256х64
Браш с размерами 384х256х64
Выберем вид с наибольшей площадью стены (чтобы удобнее было показывать разрез) и выделим наш объект. Перед применением Clip объект нужно обязательно выделить.
Затем выбираем инструмен Clip [Shift-X] (границы браша стали красными пунктирными линиями) и ставим первую точку где-нибудь на контуре браша (он стал белым). (см. рис. ниже)
t4clip2 t4clip3 Далее не отпуская левой кнопки мыши проводим линию, по которой наш браш будет рассечен. Для завершения операции нажимаем Enter.
t4clip4 t4clip5 Таким образом, мы разделили стену на 2 части.
У этого инструмента есть еще некоторые возможности. При повторном нажатии на [Shift-X] мы можем выбрать какую из 2-ух частей оставить, а какую удалить.
Та часть, которая окрашена белым цветом будет сохранена.
t4clip6 t4clip7 Таким образом, при нажатии на [Shift-X] чередуются 3 режима разрезания объекта: обе части сохраняются или остается одна из частей.
Кстати, совсем не обязательно располагать точки именно на контуре браша (см. рис. ниже).
t4clip9 Также Вы можете разрезать несколько объектов одновременно. Для этого необходимо выделить их все и дальше применить Clip как обычно.
Отдельно хочется упомянуть о разрезании брашевых энтити-объектов, например таких как func_wall или func_breakable.
Мы рекомендуем сначала превратить такие объекты в обыкновенные браши, разрезать их, а зетем снова превратить в энтити и выставить свойства. Энтити превращается в браш при помощи кнопки toWorld на панели New Objects. Браш превращается в энтити нажатием Ctrl-T.
Если во время определения линии разреза нажать кнопку "O", то на экран выведутся размеры остающейся части объекта (см. рис. ниже).
t4clip91 Потренируйтесь в разрезании различных объектов самостоятельно.
5.4

Создание отверстий при помощи Carve

Утилита (функция) Carve в общем-то предназначена для создания отверстий в стенах. Почему "в общем-то"? Просто профессиональные мапперы создают все отверстия при помощи инструмента Vertex Manipulation, т.е. они подгоняют вершины рядом стоящих брашей, чтобы они создавали отверстие. В таком случае Вы точно избежите проблем с плохой состыковкой брашей, которая возможна при использовании Carve. Но раз функцию Carve ни кто не запрещал, то с ее помощью можно создавать окна, дверные проемы, проходы и тому подобные вещи. В этой статье мы рассказываем как это сделать.
Откройте редактор и создайте новый файл [Ctrl-N]. Выберите инструмент Блок и на виде сверху (2D top) постройте прямоугольник с размерами 384 юнита в ширину и 32 юнита в высоту. Переключитесь на вид спереди (2D front) и удлините прямоугольник до 256 юнитов (все размеры контролируйте в строке подсказок, внизу). Завершите создание браша нажатием на Enter. Должно получиться что-то вроде этого (см. рис. ниже).
t4carve1 Теперь вырежем в этом браше сквозное отверстие для окна. Для этого необходимо создать еще один браш, который по размерам будет соответствовать будущему окну, т.е. длина и ширина этого браша должны равнятся длине и ширине будущего окна. Размещать этот браш следует именно в то место, где будет окно. Обратите внимание, что на виде сверху (2D top) новый браш по толщине больше первого большого браша. Это делается, чтобы в трехмерном виде было удобно выбрать этот браш (а это потребуется).
t4carve2 Переключитесь в трехмерный вид (3D textured) у Вас должно получиться что-то вроде этого (см. рис. ниже).
Применение Carve. Оба браша в трехмерном виде
Теперь остается выделить маленький браш и нажать [Shift-Ctrl-C] или выбрать в меню Tools пункт Carve. Что произошло? Маленький браш вырезал из большого браша свою форму или свой объем, если хотите. В принципе теперь мы можем удалить маленький браш за ненадобностью. В результате у Вас должно получится сквозное отверстие (см. рис. ниже).
Применение Carve. Обратите внимание, что при вырезании отверстия большой браш разрезается по всей ширине (рис. справа)
Обратите внимание, что большой браш разрезался полностью по всей ширине (рисунок справа). Это происходит потому, что движок Half-Life не умеет рисовать отверстия в брашах, для него необходимо разбить такой браш на состаляющие, более мелкие браши. Именно поэтому Hammer разрезает браш на более мелкие. Кстати и именно поэтому функция Carve не во всех случаях хороша для применения. Например, при вырезании круглого отверстия при помощи цилиндра, браш-стена будет разбит на большое число плохо состыкованных (спасибо Hammer'у :)) брашей. В результате в игре мы получим уменьшение fps (кадров в секунду) из-за большого числа брашей и плохое освещение кромок брашей из-за плохой состыковки.
На рисунке ниже мы построили 12-ти гранный цилиндр, чтобы вырезать в стене круглое отверстие.
Применение Carve. Создание круглого отверстия при помощи цилиндра
На рисунке ниже, слева, Вы видите конечный результат (готовое отверстие), а справа - как разбивается браш-стена. В принципе Вы никогда не должны использовать Carve для создания круглых отверстий из-за выше перечисленных причин (понижение fps, плохое освещение кромок). Такие отверстия, во-первых, не так часто используются на картах, а во-вторых, создаются при помощи манипуляции с вертексами (вершинами) объектов. Об этом мы подробно рассказываем в нескольких следующих статьях Учебника.
Применение Carve. Обратите внимание, что при вырезании отверстия большой браш разрезается по всей ширине (рис. справа)
Пользуйтесь функцией Carve очень аккуратно, т.к. по неосторожности при вырезании отверстия Вы можете задеть расположенные рядом объекты, и они также будут обрезаны. Когда какой-то объект мешает вырезанию, временно переместите его в другое место или просто скройте (для этого есть кнопка на маленькой панели инструментов).
Также о функции Carve Вы можете прочитать в статье "Термины".
5.5

Создание пустотелых объектов при помощи Hollow

При помощи функции Hollow мы можем создавать пустотелые объекты, например, из простого куба — комнату. В этой статье мы расскажем как это делается.
Запустите редактор и создайте новый файл [Ctrl-N]. Выберите инструмент Блок и на виде сверху (2D top) постройте квадрат с размерами 256 юнитов по ширине и высоте. Переключитесь на вид спереди (2D front) и удлините прямоугольник также до 256 юнитов (все размеры контролируйте в строке подсказок, внизу). Завершите создание браша нажатием на Enter. Таким образом, мы создали куб с размерами 256х256х256 юнитов. (см. рис. ниже).
t4hollow1 Применение Hollow. Создаем куб с размерами 256х256х256
Этот куб внутри не пустой, т.е. внутри него нельзя ходить, как по комнате. Функция Hollow как раз и используется для придания кубу объема, т.е. создания полости внутри него. Как это сделать? Выделите куб и нажмите [Ctrl-H] или в меню Tools выберите Make Hollow. Перед Вами появится следующее окошко (см. рис. ниже).
t4hollow3 В этом окне спрашивается какую толщину стенки Вы хотите задать кубу. Толщина измеряется в юнитах. Оставьте значение по умолчанию 32. Нажмите "OK". Что произошло? Куб из одного браша превратился в 6 отдельных, которые создают внутреннее пространство (полость). Таким образом, у нас получилось что-то вроде комнаты. Толщина стенок комнаты равна 32 юнитам, как мы и указали. На рисунке ниже показано как будет выглядеть наш объект на виде сверху после Hollow.
t4hollow5 Разбиение куба хорошо видно на виде 3D wireframe (справа).
Применение Hollow. Куб разбился на 6 отдельных брашей (вид 3D wireframe)
В окне можно указывать также и отрицательные значения. Например, при -32 куб также будет внутри пустой, только стенки будут как бы приставлены снаружи куба. В этом случае внутренняя полость будет равна по объему первоначальному кубу.
Как и в случае с функцией Carve, при использовании Hollow редактор не наилучшим образом создает пустой внутри браш. Но для создания простых квадратно-прямоугольных комнат Hollow вполне подойдет (поначалу :). В будушем, став немного опытнее, Вы поймете, что лучше создавать комнату самому из отдельных брашей, используя при этом инcтрумент для работы с вертексами (вершинами) для уменьшения количества поверхностей.
И последнее, не надо к каждому брашу на своей карте применять Hollow! Да, это прозвучит смешно для опытных мапперов, но, поверьте, многие начинающие мапперы превращают все браши на карте в мини-комнаты. Это абсолютно излишне! Внутри браша не должно быть пустоты. Представьте, что браш — это обычная строительная плита. Вот и создавайте свой уровень из плит, а не комнат :)
Также о функции Hollow Вы можете прочитать в статье "Термины".
5.6

Vertex Manipulation — изменение формы объектов

В этой статье мы расскажем как правильно использовать такой полезный, а в некоторых случаях просто незаменимый инструмент, как Vertex Manipulation, также мы рассмотрим наиболее распространенные ошибки, допускаемые начинающими мапперами, не до конца освоившими этот инструмент.
Набор объектов, которые мы можем построить в редакторе достаточно скуден. Он включает: параллелепипед (а также куб, как его разновидность), цилиндр, пирамиду и угол (половинка параллелепипеда). Из всех этих простых объектов и состоят карты.
Инструмент Vertex Manipulation позволяет изменять форму простых объектов, таким образом, у нас появляется возможность создавать более сложные объекты, такие как, например, скалы, возвышенности, уступы и т.п.
Вертексы (verteces) — вершины объекта (точки, в которых пересекаются ребра)
Манипуляция — изменение формы объекта путем перемещения его вершин (вертексов)
Как известно из курса школьной геометрии, плоскость в пространстве задается 3-мя точками, т.е. через любые 3 точки пространства можно провести плоскость и при том только одну. В маппинге чаще всего плоскость задается четырмя точками (см. рис. ниже).
t4vertex1 Вертексы (вершины) объектов в 3-d виде редактора изображаются белыми точками, а ребра — желтыми. Жетые точки размещаются посередине ребра.

Ошибка №1

Так как количество точек зачастую равно четырем, то вполне возможна ситуация, когда одна из них не будет лежать в одной и той же плоскости, что и другие 3.
Создадим подобную ситуацию, для этого переместим вниз правую ближнюю к нам точку. В итоге у нашей плоскости возникнет "изгиб" (см. рис. ниже).
t4vertex2 Такой браш при компиляции вызовет ошибку! Для движка Half-Life обязательным условием является нахождение в одной плоскости ВСЕХ точек, ее образующих.
Чтобы исправить данную ошибку, необходимо провести дополнительное ребро (см. рис. ниже).
t4vertex3 Теперь вместо одной плоскости мы имеем 2.
Переходя к конкретным объектам, наша ошибка будет выглядеть так:
Неправильная манипуляция с вертексами
Часто одна или несколько сторон такого неправильного (битого, как его еще называют) браша как бы "исчезает" (пропадает). Вот как это выглядит в редакторе:
Так выглядит битый браш в редакторе
Таким образом, если после манипуляции с вертексами, Вы заметите, что одна или несколько сторон объекта исчезла или как-то странно мелькает, то данный браш 100% имеет неправильную форму, которую необходимо исправить.

Ошибка №2

Данная ошибка возникает, когда 2 стороны одного браша лежат в одной плоскости (см. рис. ниже).
2 стороны одного браша лежат в одной плоскости
Как получается эта ошибка? Сначала мы выделили середины противоположных ребер (они изображаются желтыми точками, а когда выделены — красными), затем мы провели дополнительное ребро (рисунок справа). Ребро проводится нажатием [Ctrl-F].
Такой объект при компиляции вызовет ошибку "coplanar plane" или по-другому "Brush with coplanar faces". Подробнее об этой ошибке Вы можете прочитать здесь.

Ошибка №3

Третья очень распространенная ошибка это "leaf saw into leaf". Возникает она в ситуации, когда объект как бы "смотрит" внутрь себя (см. рис. ниже).
t4vertex7 В 3-d виде это выглядит так:
Объект "смотрит" сам в себя (3-d вид)
Для движка Half-Life это тоже недопустимая ситуация. Как проверить, что данной ошибки нет? Очень просто. Мысленно проведите через каждую сторону объекта плоскость, если она НЕ ПЕРЕСЕКАЕТ объект ни в какой из частей, то ошибки нет. Если пересечение есть — значит ошибка.
В самом деле, если мы проведем плоскость через одну из верхних граней (см. рис.), то она пересечет наш объект, а это недопустимо!
А выход из данной ситуации простой — замените один браш двумя, как показано на рисунке ниже.
t4vertex9 При компиляции данная ошибка проявляется не всегда (карта может успешно докомпилироваться до конца), но в игре браш будет иметь неправильную форму, некоторые из граней могут пропасть (как это бывает при ошибке №1).

Ошибка №4

Название этой ошибке "Plane with no normal". Она возникает, когда Вы совмещаете две вершины в одной точке и на вопрос "Merge veteces?" (т.е. "Совместить вершины?") отвечаете "НЕТ". Получается, что две точки одной грани имеют одни и те же координаты (т.е. находятся в одном месте пространства), а это недопустимо.
Поэтому, чтобы данная ошибка никогда у Вас не возникала — на этот вопрос всегда отвечайте "ДА".

Разновидности манипуляции с вертексами

t2wcinstr10 Итак, с основными ошибками мы Вас познакомили. Теперь Вы знаете, чего делать НЕЛЬЗЯ. А вот что делать можно :)
Чтобы войти в режим работы с вертексами, необходимо:
  1. выделить объект
  2. выбрать инструмент Vertex Manipulation [Shift-V]
Чтобы убрать режим работы с вертексами нужно нажать на красную стрелочку (Инструмент выбора).
После перехода в режим работы с вертексами, объект становится полупрозрачным. Веришины объекта заменяются белыми точками, а центры ребер — желтыми.
Манипуляция с вертексами имеет 3 режима, которые переключаются по кругу, повторными нажатиями на иконку с инструментом или клавиш [Shift-V].
t4vertex10 В первом режиме можно перемещать и вершины, и ребра объекта;
Во втором — только вершины;
В третьем — только ребра.

Простейшие операции

Теперь давайте посмотрим, как совершаются простейшие операции. Например, что нужно сделать для превращения куба вот в такой объект (см. рис. ниже справа).
Превращаем куб
Последовательность действий (поясняющий рисунок ниже):
  1. Строим куб
  2. Выделяем его и выбираем инструмент Vertex, выбираем верхнюю точку (середину ребра)
  3. Нажимаем Ctrl-F, чтобы создать дополнительное ребро
  4. Снова выделяем цетральную точку (белую на этот раз) и тянем ее вверх
t4vertex12 В 3-х мерном виде Шаг 3 (создание нового ребра между двумя точками) выглядит так:
Добавляем ребро
Чтобы в 3-d виде провести новое ребро между двумя вертексами, нужно сначала их выделить (рисунок слева) и затем нажать Ctrl-F, появится новое ребро, соединяющее выделенные точки (рисунок справа).
На виде сверху (и любом другом 2-d виде) в отличии от 3-d вида при нажатии на вертекс, выделяются все "совпадающие" вертексы, т.е. вертексы, находящиеся друг за другом. И при перетаскивании такой точки, перемещается целое ребро.
Создание пирамиды
Давайте еще потренируемся в работе с вертексами и превратим тот же куб в пирамиду (см. рис. ниже).
Превращаем куб в пирамиду
Схематически наши действия выглядят следующим образом:
Каждую из 4-х вершин перемещаем в центр верхней стороны куба
Мы по очереди перемещаем каждую из 4-х вершин в центр верхней грани куба. Удобнее всего сначала в 3-d виде выбрать одну вершину и затем в 2-d виде переместить ее в центр. Так необходимо поступить со всеми четырмя вершинами.
Когда Вы переместите в центр вторую вершину (а затем и 3, и 4), появится вот такое окошко (см. рис. ниже) с вопросом "Merge vertices?", т.е. "Совместить вершины?".
t3comperr8 На этот вопрос всегда отвечайте "ДА". Трудно представить случай, когда необходимо ответить "НЕТ"... Более того, если Вы ответите нет, то получите при компиляции ошибку "Plane with no normal". Выше мы кратко описали в чем ее суть, еще немного дополнительной информации об этой ошибке Вы можете прочитать здесь.

Масштабирование

Эта операция применяется довольно редко (если вообще применяется ;-), однако иногда она может пригодиться и значительно ускорить создание, например, формы для световых лучей (Статья по созданию световых лучей). В итоге у нас получится нечто вроде усеченной пирамиды (см. рис. ниже).
Превращаем куб в усеченную пирамиду путем масштабирования
  1. Строим объект (в нашем случае куб)
  2. Выделяем четыре вертекса, образующих верхнюю грань
  3. Нажимаем Alt-E; появляется окошко с выбором масштаба (рисунок справа)
  4. Изменяем масштаб и жмем Enter
  5. Чтобы изменения вступили в силу, выходим из режима вертексов, нажатием на Инструмент выбора
Выделяем верхние вертексы и жмем Alt-E

Оптимизируем карту

Манипуляция вертексами может пригодится для оптимизации карты. Давайте рассмотрим такой пример: мы хотим создать стенку с усеченным углом (см. рис. ниже).
Стенка с усеченным углом
Вместо того, чтобы создавать 2 отдельных браша...
t4vertex19 ...лучше создать один большой с усеченным углом (см. рис. ниже).
t4vertex20 На любой достаточно крупной карте можно найти десятки мест, где возможно использование одного крупного браша вместо 2-3 мелких — эта техника позволяет сокращать общее время компиляции карты (т.к. меньше брашей) и иногда уменьшает r_speeds, что соответственно приводит к увеличению fps.
Отсюда правило :) — старайтесь, где только это возможно, использовать большие (комплексные, как их еще называют) браши вместо нескольких мелких.
На этом наша вводная статья о работе с вершинами объектов закончена. Подробнее о применении инструмента вертексной манипуляции Вы можете прочитать в статьях из разделов: "Арки", "Крыши" и "Продвинутый маппинг" (создание гор, туннелей и канализаций).
5.7

Моя первая карта

Ну, чтож, вот и настал этот волнующий момент, когда Вы сами с нашей помощью создадите свою первую карту и сможете на ней побегать.
Мы надеемся, что Вы внимательно читали все предыдущие статьи Учебника, а следовательно умеете создавать простые браши, вставлять точечные энтити, умеете текстурировать объекты и имеете представление о компиляции (желательно BAT-файлом). Также от Вас потребуется знание следующих энтити-объектов: Запустите редактор и создайте новый файл [Ctrl-N]. Выберите инструмент для работы с текстурами (разноцветный кубик). На появившейся панели Face Properties нажмите кнопку Browse. Внизу, в поле Filter наберите следующее: FIFTIES_WALL12 (это мы выбираем текстуру для стен будущей комнаты). Если у Вас подключен halflife.wad, то такая текстура найдется, если нет — подключите halflife.wad (он находится в директории valve с Half-Life). Выберите самую первую текстуру.
t6my1map1 Закройте окно с выбором текстур. Установите вид сверху (2D top), выберите инструмен Блок [Shift-B] и постройте квадрат с размерами 384х384 юнита (размер контролируйте в строке состояния, внизу). Переключитесь на вид спереди (2D front) и удлинните прямоугольник также до 384 юнитов. Завершите создание браша нажатием на Enter.
t6my1map2 Выделите только что созданный браш и нажмите [Ctrl-H] . Сейчас мы применим функцию Hollow, рассмотренную в прошлой статье. В появившемся окошке оставьте значение 32 и нажмите "OK".
t4hollow3 Таким образом, у нас появилась комната с размерами 384х384х384 юнита и толщиной стенок 32 юнита (см. рис. ниже).
t6my1map3 Теперь можно посмотреть на карту в виде 3D textured, залететь внутрь комнаты. Для перемещения в 3D-виде один раз нажмите Z и пользуйтесь кнопками W, A, S, D и мышью. В результате всех операций Ваша комната в трехмерном виде должна выглядеть приблизительно так (см. рис. ниже):
Комната в трехмерном виде
ЗАПОМНИТЕ! Не нужно применять функцию Hollow к каждому брашу на карте! Мы это сделали, чтобы быстро создать комнату, внутри которой можно будет бегать. Представьте, что браш — это обычная строительная плита. Так зачем же каждую плиту превращать в комнату, зачем каждую стенку на карте превращать в комнату (мы все равно там бегать не собираемся :), зачем превращать в комнату пол на карте — это абсолютно не нужно! Здесь же нам нужна была именно комната, внутри которой мы могли бы бегать, поэтому мы применили функцию Hollow. Точно такую же комнату можно получить, создав 6 стен по отдельности.
Теперь настало время вставить 3 объекта, о которых мы говорили в начале статьи. Первым вставим источник света, т.е. объект light. Выберите инструмент Entity Tool [Shift-E], затем на панели New Objects в списке выберите объект light (см. рис. ниже).
t4ent4 Поставьте вид сверху (2D top), подведите курсор к центру комнаты и нажмите левую кнопку мыши (см. рис. ниже).
t6my1map5 Переключитесь на вид спереди (2D front) и поместите объект light под потолок (см. рис. ниже). Затем нажмите Enter, чтобы закончить создание источника света.
t6my1map6 Итак, лампочку мы сделали. Теперь у нас на карте будет светло. Теперь остается создать точки появления контров и террористов. Как Вы уже знаете этими точками являются объекты info_player_deathmatch (террорист) и info_player_start (контр). Один объект — одна точка рождения. Чтобы на карте могли играть несколько игроков, необходимо ставить несколько точек для контров и для террористов.
Также как и в случае с лампочкой выберите в списке info_player_deathmatch и установите, как показано на рисунках ниже.
t6my1map7 t6my1map8 Обратите внимание, что объекты info_player_deathmatch и info_player_start не должны касаться стен (см. рис. ниже, вид top), друг друга и быть приподняты на некоторое расстояние над землей (см. рис. ниже, вид front). Это необходимо делать, чтобы игроки не умирали в начале раунда сами по себе и могли свободно двигаться. Вы замечали на некоторых картах при большом пинге и лагах, как игроки в начале раунда как бы падают на землю? Это происходит как раз потому, что между игроком и землей имеется некоторое расстояние. При качественном соединении такие "приземления" практически незаметны.
t6my1map9 Итак, одну точку рождения террориста мы уже разместили. Теперь точно также создайте одну точку появления контра. Выберите в списке объект info_player_start и вставьте его подобным образом, только в противоположный угол комнаты (на виде сверху это будет правый нижний угол).
Все! Первая полностью рабочая карта создана! Конечно ее еще надо откомпилировать, но пока сравните то, что получилось у Вас, с нашей картинкой. Если все приблизительно так, сохраните карту под именем my1map (или любым другим) в формате RMF и затем в формате MAP, чтобы можно было откомпилировать.
Вид законченной карты в виде 3D textured
Чтобы откомпилировать карту нужно создать BAT-файл. Скопируйте приведенные ниже строки в Блокнот и сохраните файл как COMPILE.BAT (подробно процесс создания BAT-файла описан в статье "Как компилировать?").
Ниже мы приводим пример простенького BAT-файла, которым Вы сможете откомпилировать свою первую карту.
@echo off
set WADROOT=c:\games\half-life
set mapname=my1map.map
hlcsg.exe "%mapname%"
hlbsp.exe "%mapname%"
hlvis.exe "%mapname%"
hlrad.exe "%mapname%"
Поместите COMPILE.BAT к компиляторам, туда же скопируйте карту в формате *.MAP и запускайте BAT-файл. Через пару секунд в этой же директории будет готовая BSP-карта.
Замечание: если имя карты не my1map, то измените его в строке set mapname=my1map.map, а также измените путь к директории с Half-Life, если он другой.
И последнее, сохраните Вашу первую карту на память. Позже, месяцев так 5-6 спустя, посмотрите на нее. Мы уверены, Вы как минимум улыбнетесь :)
my1map.zip [5Кб] — в архиве карта-пример в форматах BSP и RMF.
5.8

Как сделать DE-карту?

В этой статье мы расскажем, как сделать карту с бомбой, т.е. DE-карту.
От Вас потребуется знание всего одного нового энтити-объекта в дополнение к трем уже известным (light, info_player_deathmatch, info_player_start): Карты с бомбой являеются самыми популярными у игроков. В них сочетается динамичность и интересный геймплей. Чтобы создать хорошую DE-карту, нужно понять причину популярности таких карт как: de_dust, de_dust2, de_aztec, de_inferno. Посмотрите, как расположены на этих картах бомб-плейсы, где находятся базы команд, как выполнены укрытия, каков "рельеф" этих карт (карты "многоэтажные") и, возможно, Вы сможете сделать нечто подобное :)
Перейдем к созданию DE-карты. На любой DE-карте должно быть 2 места для закладки бомбы (так уж повелось). Эти места определяются объектом func_bomb_target.
Выберите уже известным Вам способом текстуру с именем AAATrigger. Это специальная текстура, которая применяется для подобных объектов. Возможно у Вас будет несколько разных на вид текстур AAATrigger. Какую использовать? Любую! Это не имеет значения, в данном случае важно не изображение текстуры, а ее название — AAATrigger.
Теперь выберите инструмент Block, выберите подходящее место на карте, где будет закладываться бомба и создайте на нем обычный браш. Размеры браша полностью определяют зону, куда можно заложить бомбу (см. рис. ниже). Чтобы террорист мог заложить бомбу, он должен лишь слегка касаться этой зоны.
Определение области закладки бомбы объектом func_bomb_target
Но обычный браш, окрашенный текстурой AAATrigger, работать не будет. Его необходимо превратить в энтити. Для этого выделите его и нажмите [Ctrl-T], в появившемся окне в списке выберите объект func_bomb_target. Закройте окно. Область закладки бомбы определена. Теперь карта автоматически будет DE-картой, т.е. при старте одному из террористов будет выдана бомба.
Посмотрите на рисунок выше: террорист, стоя на верхнем ящике, бомбу заложить не сможет, т.к. он не касается объекта func_bomb_target. Однако если этот объект немного увеличить по высоте, то заложить бомбу получится, т.к. ноги террориста будет касаться объекта func_bomb_target.
Чтобы как-то обозначить место для закладки бомбы (для удобства играющих), можно в центре наложить декаль, например, как на рисунке ниже (название такой декали {TARGET и находится она в файле decals.wad). О том как накладывать декали Вы можете прочитать в статье "Как накладывать текстуры и декали?". Также можно создать свою текстуру с каким-нибудь крестиком или буквами A/B, обозначающими разные точки закладки бомбы. Например, так сделано на de_dust/de_dust2, de_aztec (из CS 1.6).
Обозначение места закладки бомбы декалью
В игре декаль будет выглядеть так:
Так выглядит декаль в игре
Как видите, объект func_bomb_target в игре абсолютно прозрачен, однако на его наличие указывает мигающий значок бомбы (у террориста с бомбой). Естественно, для полноценной карты необходимо создать несколько точек рождения игроков, максимальное количество: 32, т.е. по 16 за террористов и контров (больше не позволяет Half-Life). Выбирайте число точек в зависимости от размера карты. Если карта небольшая, то возможно хватит по 8 точек за каждую сторону.
У объектов info_player_deathmatch и info_player_start нет каких-то специальных параметров, кроме направления взгляда игрока после того как он "родится". Угол выставляется в свойствах этих объектов черточкой в черном кружке или цифрами (см. рис. ниже). Свойства вызываются нажатием [Alt-Enter].
t6bomb7 Как видно из рисунка выше, по умолчанию при рождении игрок всегда смотрит направо на виде сверху (0°). Представьте, если основной проход находится слева, то игрок вынужден будет разворачиваться на 180° в начале каждого раунда, что довольно сильно утомляет и не дает сосредоточится на покупке оружия. В таких случаях совсем не лишним будет указать угол направления взгляда (как показано на рис. выше).

Изменение радиуса взрыва бомбы

В некоторых случаях, например, когда карта совсем небольшая, бывает полезно изменить радиус взрыва бомбы. Это делается при помощи точечного энтити-объекта info_map_parameters. Вставьте один такой объект в любом месте карты (для удобства можно около какого-нибудь места закладки бомбы). Вставляется такой объект как и любой другой точечный, т.е. инструментом Entity Tool [Shift-E], в списке выбираем объект info_map_parameters.
После установки объекта, выделите его и нажмите [Alt-Enter], появятся свойства (см. рис. ниже).
t6bomb4 В первом параметре "Weapon_Buying" указывается какая из команд может покупать оружие, по умолчанию обе команды могут покупать оружие (оставляем без изменений).
А вот второй параметр — "Bomb Radius" — это и есть радиус взрыва бомбы. По умолчанию он равен 500. Для маленькой карты, где спрятаться практически не где, можно поставить 350, а для очень большой можно поставить побольше, например, 650. В общем смотрите на размер своей карты и решайте нужно ли изменять радиус взрыва бомбы. В большинстве случаев мапперы оставляют все как есть. В этом случае даже не нужно создавать объект info_map_parameters — он просто не нужен.

Точное указание места покупки оружия

Область, в которой игроки могут покупать оружие, автоматически располагается прямо вокруг точек их появления. Однако существует возможность указать точную (более протяженную) область для покупки оружия. Для этого создается браш, закрашенный текстурой AAATrigger, затем он превращается нажатием [Ctrl-T] в энтити-объект func_buyzone.
Размер объекта func_buyzone и определяет область покупки оружия, выйдя за которую оружие купить нельзя. Обычно данный объект размещают на базах команд так, чтобы он закрывал все точки появления игроков одной команды. Важным моментом после создания этой области является указание, какая из команд может покупать оружие внутри данной области.
Указывается это в свойствах объекта. Выделите func_buyzone и нажмите [Alt-Enter]. Появятся свойства объекта (см. рис. ниже).
t6bomb5 Здесь есть только один параметр "Team", его значения могут быть All teams (любая из команд), Terrorist (только террористы), Counter-Terrorist (только контры). Естественно у объекта func_buyzone на базе контров необходимо выбрать Counter-Terrorist, а у террористов — Terrorist.
func_bomb_target.zip [14Кб] — в архиве карта-пример в форматах BSP и RMF.
5.9

Как сделать CS-карту?

В этой статье мы расскажем, как сделать карту с заложниками, т.е. CS-карту.
От Вас потребуется знание двух новых энтити-объектов: Для превращения карты без типа в CS-карту необходимо расставить заложников и определить место их спасения (куда контры будут их отводить).
Сначала определим места "рождения" заложников. Они создаются точечным энтити-объектом hostage_entity (1 объект — 1 заложник). Эти объекты устанавливается точно также, как и обычные точки "рождения" игроков (info_player_deathmatch и info_player_start), действуют те же правила: объект не должен касаться стен и других таких же объектов, а также он должен находиться немного выше (на 8-16 юнитов) земли.
На рисунке ниже на виде сверху (2D top) показано, как установлены заложники в редакторе, и как это выглядит в игре.
Расстановка объектов hostage_rescue (заложников)
У заложников (объекта hostage_entity) есть некоторые свойства, который вызываются по [Alt-Enter] (см. рис. ниже).
t6hostage3 Первое "Pitch Yaw Roll" — это не что иное как направление "взгляда" заложника. Его проще выставить в черном кружке, ориентируясь на виде сверху (2D top).
Второе "Model" — это модель заложника. Если у Вас есть какая-то другая модель заложника, то Вы можете указать в этом параметре путь к ней (обычно ее следует скопировать в папку cstrike/models..). Но помните, что в этом случае данную модель придется распространять вместе с картой, т.к. у других людей такой модели нет.
И последнее "Skin" — выбор скина (одежды) заложника. Если у модели есть несколько скинов, то здесь можно выбрать во что будет одет заложник. У стандартной модели на выбор есть 2 скина: желтый комбинезон (как на рисунке) и светлая рубашка, темные штаны.
Теперь определим область для спасения заложников. Выберите уже известным Вам способом текстуру с именем AAATrigger. Это специальная текстура, которая применяется для подобных объектов. Возможно у Вас будет несколько разных на вид текстур AAATrigger. Какую использовать? Любую! Это не имеет значения, в данном случае важно не изображение текстуры, а ее название AAATrigger.
Теперь выберите инструмент Block, определите место на карте, куда должны быть приведены заложники, чтобы быть спасенными и создайте на нем обычный браш. Размеры браша полностью определяют зону, куда можно приводить заложников (см. рис. ниже).
Определение области спасения заложников объектом func_hostage_rescue
Но обычный браш, окрашенный текстурой AAATrigger работать не будет. Его необходимо превратить в энтити. Для этого выделите его и нажмите [Ctrl-T], в появившемся окне в списке выберите объект func_hostage_rescue. Закройте окно. Область спасения заложников определена. Теперь карта автоматически будет cs-картой.
Естественно, для полноценной карты необходимо расположить несколько точек рождения игроков, максимальное количество: 32, т.е. по 16 за террористов и контров (больше не позволяет Half-Life). Выбирайте число точек в зависимости от размера карты. Если карта небольшая, то возможно хватит по 8 точек за каждую сторону.
У объектов info_player_deathmatch и info_player_start нет каких-то специальных параметров, кроме направления взгляда игрока после того как он "родится". Угол выставляется в свойствах этих объектов черточкой в черном кружке или цифрами (см. рис. ниже). Свойства вызываются нажатием [Alt-Enter].
t6bomb7 Как видно из рисунка выше, по умолчанию при рождении игрок всегда смотрит направо на виде сверху (0°). Представьте, если основной проход находится слева, то игрок вынужден будет разворачиваться на 180° в начале каждого раунда, что довольно сильно утомляет и не дает сосредоточится на покупке оружия. В таких случаях совсем не лишним будет указать угол направления взгляда (как показано на рис. выше).
На самом первом рисунке все заложники повернуты к нам задом :). Это произошло из-за того, что угол (параметр "Angle") по умолчанию равен 0°. Чтобы заложники (на этой конкретной карте) были повернуты к нам лицом, необходимо в свойствах выставить угол 180°. Возможно, на Вашей карте не понадобится менять этот угол, все зависит от расположения стен на карте.

Точное указание места покупки оружия

Область, в которой игроки могут покупать оружие, автоматически располагается прямо вокруг точек их появления. Однако существует возможность указать точную (более протяженную) область для покупки оружия. Для этого подобно func_hostage_rescue создается браш, закрашенный текстурой AAATrigger, затем он превращается нажатием [Ctrl-T] в энтити-объект func_buyzone.
Размер объекта func_buyzone и определяет область покупки оружия, выйдя за которую оружие купить нельзя. Обычно данный объект размещают на базах команд так, чтобы он закрывал все точки появления игроков одной команды. Важным моментом после создания этой области является указание какая из команд может покупать оружие внутри данной области.
Указывается это в свойствах объекта. Выделите func_buyzone и нажмите [Alt-Enter]. Появятся свойства объекта (см. рис. ниже).
t6bomb5 Здесь есть только один параметр "Team", его значения могут быть All teams (любая из команд), Terrorist (только террористы), Counter-Terrorist (только контры). Естественно у объекта func_buyzone на базе контров необходимо выбрать Counter-Terrorist, а у террористов — Terrorist.
func_hostage_rescue.zip [14Кб] — в архиве карта-пример в форматах BSP и RMF.
5.10

Как сделать AS-карту?

В этой статье мы расскажем, как сделать карту с VIP-ом, т.е. as-карту.
От Вас потребуется знание двух новых энтити-объектов: AS-карты не так популярны, как DE или CS, но раз уж они являются стандартными режимами в CS, то опишем как их создавать. Напомним, что AS-карта это карта с VIP'ом (игрок с пистолетом, который не может покупать оружие), контры должны отвести его в определенное место на карте (часто этих мест два), а террористы — не дать этого сделать. Типичным примером AS-карты является as_oilrig. Посмотрите по каким принципам она сделана, где появляются контры, а где террористы, где расположены точки для спасения VIP'а, какие укрытия находятся на стороне террористов и т.п.
Начнем создавать AS-карту. Сначала определим место появления VIP'а (создадим объект info_vip_start). Естественно, VIP должен быть один, поэтому и объект info_vip_start следует создовать только один. Объект устанавливается точно также, как и обычные точки "рождения" игроков (info_player_deathmatch и info_player_start), действуют те же правила: объект не должен касаться стен и расположенных поблизости объектов info_player_start, а также он должен находиться немного выше (на 8-16 юнитов) земли. VIP'а следует устанавливать рядом с остальными контрами. Если Вы делаете 10 точек появления террористов, то контров должно быть 9 + 1 VIP.
Определение места появления VIP'a объектом info_vip_start
Теперь определим место, в которое VIP'а должны отвести контры. Делается это при помощи объекта func_vip_safetyzone. Выберите уже известным Вам способом текстуру с именем AAATrigger. Это специальная текстура, которая применяется для подобных объектов. Возможно у Вас будет несколько разных на вид текстур AAATrigger. Какую использовать? Любую! Это не имеет значения, в данном случае важно не изображение текстуры, а ее название AAATrigger.
Теперь выберите инструмент Block, определите место на карте, куда контры должны привести VIP'a, и создайте на нем обычный браш. Размеры браша полностью определяют зону, куда нужно привести VIP'а (см. рис. ниже).
Определение области спасения VIP'a объектом func_vip_safetyzone
Но обычный браш, окрашенный текстурой AAATrigger работать не будет. Его необходимо превратить в энтити. Для этого выделите его и нажмите [Ctrl-T], в появившемся окне в списке выберите объект func_vip_safetyzone. Закройте окно. Область спасения VIP'a определена. Теперь карта автоматически будет AS-картой.
Естественно, для полноценной карты необходимо расположить несколько точек рождения игроков, максимальное количество: 32, т.е. по 16 за террористов и контров (больше не позволяет Half-Life). Выбирайте число точек в зависимости от размера карты. Если карта небольшая, то возможно хватит по 8 точек за каждую сторону.
У объекта info_vip_start нет каких-то специальных параметров, кроме направления взгляда VIP-игрока после того как он "родится". Угол выставляется в свойствах объекта info_vip_start черточкой в черном кружке или цифрами (см. рис. ниже). Свойства вызываются нажатием [Alt-Enter].
t6bomb7 Как видно из рисунка выше, по умолчанию при рождении игрок всегда смотрит направо на виде сверху (0°). Представьте, если основной проход находится слева, то игрок вынужден будет разворачиваться на 180° в начале каждого раунда, что довольно сильно утомляет и не дает сосредоточится на покупке оружия. В таких случаях совсем не лишним будет указать угол направления взгляда (как показано на рис. выше).

Точное указание места покупки оружия

Область, в которой игроки могут покупать оружие, автоматически располагается прямо вокруг точек их появления. Однако существует возможность указать точную (более протяженную) область для покупки оружия. Для этого создается браш, закрашенный текстурой AAATrigger, затем он превращается нажатием [Ctrl-T] в энтити-объект func_buyzone.
Размер объекта func_buyzone и определяет область покупки оружия, выйдя за которую оружие купить нельзя. Обычно данный объект размещают на базах команд так, чтобы он закрывал все точки появления игроков одной команды. Важным моментом после создания этой области является указание, какая из команд может покупать оружие внутри данной области.
Указывается это в свойствах объекта. Выделите func_buyzone и нажмите [Alt-Enter]. Появятся свойства объекта (см. рис. ниже).
t6bomb5 Здесь есть только один параметр "Team", его значения могут быть All teams (любая из команд), Terrorist (только террористы), Counter-Terrorist (только контры). Естественно у объекта func_buyzone на базе контров необходимо выбрать Counter-Terrorist, а у террористов — Terrorist.
func_vip_safetyzone.zip [14Кб] — в архиве карта-пример в форматах BSP и RMF.
5.11

Как сделать ES-карту?

В этой статье мы расскажем, как сделать карту, где террористам нужно сбежать, т.е. ES-карту.
От Вас потребуется знание трех новых энтити-объектов: ES-карты, наверное, самые непопулярные из всех типов карт. В официальном наборе карт CS нет ни одной ES-карты (может быть Вы создадите такую ES-карту, которую включат в CS? :). Тем не менее, давайте посмотрим, как они создаются. Напомним, что ES-карты это тип карт, на которых террористы должны добраться до определенного места в количестве 50% и более, тогда они побеждают. На ES-картах оружие могут покупать только контры, а террористы должны находить его в каком-нибудь месте (покупка для террористов запрещена).
Типичным примером ES-карты является es_cell. Посмотрите, где находятся места появления игроков, где разложено оружие для террористов и куда они должны прибежать.
Начнем создавать ES-карту. Сначала определим место, в которое должны прибежать террористы, чтобы считаться сбежавшими. Для этого выберем инструмент Block и построим в нужном месте браш, со всех сторон окрашенный текстурой AAATrigger. Затем выделим его и превратим нажатием [Ctrl-T] в энтити. В списке выберем объект func_escapezone. Размеры объекта полностью определяют зону, куда должны прибежать террористы (см. рис. ниже).
Определение места, куда должны прибежать террористы объектом func_escapezone
Теперь по правилам ES-карт необходимо запретить террористам покупать оружие. Это делается при помощи точечного энтити-объекта info_map_parameters. Выберите инструмент Entity Tool [Shift-E], затем в списке укажите объект info_map_parameters и вставьте его где-нибудь внутри карты (где именно, значения не имеет).
Выделите этот объект и нажмите [Alt-Enter], перед Вами появятся его свойства. В параметре "Weapon_Buying" необходимо выбрать "Only CT's can buy guns" (см. рис. ниже). Теперь оружие смогут покупать только контры.
t6escape2 Теперь где-нибудь поближе к террористам нужно разложить оружие, гранаты и бронежилеты. Делается это точечным объектом armoury_entity . Один такой объект вставляет на карту одну единицу оружия, одну гранату или один бронежилет. Но в свойствах этого объекта можно указать их количество, например, пять AK-47 или 4 HE-гранаты.
Выберите инструмент Entity Tool [Shift-E], затем в списке укажите объект armoury_entity и вставьте его в каком-нибудь месте поближе к базе террористов (т.к. это оружие предназначено им). Выделите этот объект и нажмите [Alt-Enter]. Появятся его свойства (см. рис. ниже).
t6escape3 В параметре "Item" указывается вид оружия, тип гранаты или бронежилет. В параметре "Count" — количество выбранного снаряжения.
Естественно, для полноценной карты необходимо расположить несколько точек рождения игроков, максимальное количество: 32, т.е. по 16 за террористов и контров (больше не позволяет Half-Life). Выбирайте число точек в зависимости от размера карты. Если карта небольшая, то возможно хватит по 8 точек за каждую сторону.
У объектов info_player_start и info_player_deathmatch нет каких-то специальных параметров, кроме направления взгляда игрока после того, как он "родится". Угол выставляется в свойствах этих объектов черточкой в черном кружке или цифрами (см. рис. ниже). Свойства вызываются нажатием [Alt-Enter].
t6bomb7 Как видно из рисунка выше, по умолчанию при рождении игрок всегда смотрит направо на виде сверху (0°). Представьте, если основной проход находится слева, то игрок вынужден будет разворачиваться на 180° в начале каждого раунда, что довольно сильно утомляет и не дает сосредоточится на покупке оружия. В таких случаях совсем не лишним будет указать угол направления взгляда (как показано на рис. выше).

Точное указание места покупки оружия

Область, в которой игроки могут покупать оружие, автоматически располагается прямо вокруг точек их появления. Однако существует возможность указать точную (более протяженную) область для покупки оружия. Для этого создается браш, закрашенный текстурой AAATrigger, затем он превращается нажатием [Ctrl-T] в энтити-объект func_buyzone.
Размер объекта func_buyzone и определяет область покупки оружия, выйдя за которую оружие купить нельзя. Обычно данный объект размещают на базах команд так, чтобы он закрывал все точки появления игроков одной команды. Важным моментом после создания этой области является указание, какая из команд может покупать оружие внутри данной области.
Указывается это в свойствах объекта. Выделите func_buyzone и нажмите [Alt-Enter]. Появятся свойства объекта (см. рис. ниже).
t6bomb5 Здесь есть только один параметр "Team", его значения могут быть All teams (любая из команд), Terrorist (только террористы), Counter-Terrorist (только контры). Естественно у объекта func_buyzone на базе контров необходимо выбрать Counter-Terrorist, а у террористов — Terrorist.
func_escapezone.zip [14Кб] — в архиве карта-пример в форматах BSP и RMF.
5.12

Другие типы карт

В этой статье мы рассмотрим создание таких типов карт как: DM, FY, KA, PA.

1. DM — Deathmatch

Обычный десматч или мясилово. Никаких бомб, заложников и прочих заморочек. Некоторые мапперы еще раскидывают оружие по базам команд, чтобы не тратить время на его покупку.
Отличительными особенностями DM-карт являются:
  1. Простота дизайна
  2. Быстрота игрового процесса
  3. Максимум мясилова
Если Вы делаете DM-карту, делайте ее простой, чтобы игроки за 2-3 раунда могли ее полностью изучить. Не стоит делать карту-коробку, когда команды видят друг друга уже на старте. Какая-то планировка все же должна быть.
Если Вы надумаете разместить оружие на карте (например, разложить АК на базе терров и М4 — у контров), то используйте для этого объект armoury_entity.
Ну, и последнее. Если Вы хотите увидеть настоящего представителя этого жанра карт, то скачайте dm_aztec_maso2 (1,3 Мб) или dm_aztec_maso3 (1,2 Мб). Часы захватывающего геймплея Вам гарантированы :)

2. FY — теже яйца только в профиль

Все знают карту fy_iceworld, популярность которой во всем мире огромна.
Для тех кто не вкурсе, что представляет из себя fy_iceworld и многочисленные ее клоны: это супер маленькая карта, четыре коробки (скалы), вокруг которых бегают игроки + оружие всех видов на респаунах команд. Карта полностью симметричная, что, возможно, и отличает этот тип карт от DM.
FY-карт делается не так много, если не сказать мало. Просто некоторые мапперы, завидуя популярности iceworld, пытаются изобрести велосипед и сделать свою уникальную fy-карту. В итоге получается КЛОН.
В общем, если Ваша карта полностью симметрична и на базах разбросано оружие всех типов, то, возможно, имеет смысл назвать ее FY.

3. KA — Knife Arena (на ножах)

Мясилово на ножах. Время от времени игроки переходят на ножи, когда надоедает огнестрел. Все стандартные карты не очень приспособлены к игре на ножах (они слишком большие). В таких ситуациях помогают специальные Knife Arena карты.
На таких картах запрещается покупка оружия, отнимаются пистолеты, выдаются ножи и больше ничего. Правда, на некоторых KA-картах есть гранаты и бронежилеты. Исходя из названия (Arena), карты этого жанра представляют собой некое открытое пространство (по сути большую открытую или закрытую коробку), но бывают и исключения.
Вот список энтити-объектов, используемых при создании ka-карты:
  • player_weaponstrip — отбирает оружие
  • game_player_equip — снабжает игроков оружием (ножами в нашем случае)
  • info_map_parameters — запрещает покупку
Хотите увидеть очень необычную KA-карту? Тогда поищите и скачайте KA_100x100, такого Вы вряд ли еще видели :-)

4. PA — Prepared Assault, а также Pistol Arena

Данный тип карт встречается редко. Что касается Prepared Assault, то данный режим мало чем отличается от DM.
Pistol Arena — это что-то вроде Knife Arena, но только на пистолетах. Энтити используются точно такие же, только вместо ножей выдаются пистолеты.
Кроме Pistol Arena и Knife Arena также распространены AWP-арены, ну, и так далее. Все различие между этими режимами заключается лишь в оружии, выдаваемом игрокам. По сути все это старый добрый Deathmatch.