урок 9
создание первой карты. проверка ошибок
Ну, чтож, вот и настал этот волнующий момент, когда Вы сами с нашей помощью создадите свою первую карту и сможете на ней побегать.
Мы надеемся, что Вы внимательно читали все предыдущие статьи Учебника, а следовательно умеете создавать простые браши, вставлять точечные энтити, умеете текстурировать объекты и имеете представление о компиляции (желательно BAT-файлом). Также от Вас потребуется знание следующих энтити-объектов:
info_player_deathmatch
info_player_start
light
Запустите редактор и создайте новый файл [Ctrl-N]. Выберите инструмент для работы с текстурами (разноцветный кубик). На появившейся панели Face Properties нажмите кнопку Browse. Внизу, в поле Filter наберите следующее: FIFTIES_WALL12 (это мы выбираем текстуру для стен будущей комнаты). Если у Вас подключен halflife.wad, то такая текстура найдется, если нет — подключите halflife.wad (он находится в директории valve с Half-Life). Выберите самую первую текстуру.

Закройте окно с выбором текстур. Установите вид сверху (2D top), выберите инструмен Блок [Shift-B] и постройте квадрат с размерами 384х384 юнита (размер контролируйте в строке состояния, внизу). Переключитесь на вид спереди (2D front) и удлинните прямоугольник также до 384 юнитов. Завершите создание браша нажатием на Enter.

Выделите только что созданный браш и нажмите [Ctrl-H]. Сейчас мы применим функцию Hollow, рассмотренную в прошлой статье. В появившемся окошке оставьте значение 32 и нажмите «OK».

Таким образом, у нас появилась комната с размерами 384х384х384 юнита и толщиной стенок 32 юнита (см. рис. ниже).

Теперь можно посмотреть на карту в виде 3D textured, залететь внутрь комнаты. Для перемещения в 3D-виде один раз нажмите Z и пользуйтесь кнопками W, A, S, D и мышью. В результате всех операций Ваша комната в трехмерном виде должна выглядеть приблизительно так (см. рис. ниже):

ЗАПОМНИТЕ! Не нужно применять функцию Hollow к каждому брашу на карте! Мы это сделали, чтобы быстро создать комнату, внутри которой можно будет бегать. Представьте, что браш — это обычная строительная плита. Так зачем же каждую плиту превращать в комнату, зачем каждую стенку на карте превращать в комнату (мы все равно там бегать не собираемся :), зачем превращать в комнату пол на карте — это абсолютно не нужно! Здесь же нам нужна была именно комната, внутри которой мы могли бы бегать, поэтому мы применили функцию Hollow. Точно такую же комнату можно получить, создав 6 стен по отдельности.
Теперь настало время вставить 3 объекта, о которых мы говорили в начале статьи. Первым вставим источник света, т.е. объект light. Выберите инструмент Entity Tool [Shift-E], затем на панели New Objects в списке выберите объект light (см. рис. ниже).

Поставьте вид сверху (2D top), подведите курсор к центру комнаты и нажмите левую кнопку мыши (см. рис. ниже).

Переключитесь на вид спереди (2D front) и поместите объект light под потолок (см. рис. ниже). Затем нажмите Enter, чтобы закончить создание источника света.

Итак, лампочку мы сделали. Теперь у нас на карте будет светло. Теперь остается создать точки появления контров и террористов. Как Вы уже знаете этими точками являются объекты info_player_deathmatch (террорист) и info_player_start (контр). Один объект — одна точка рождения. Чтобы на карте могли играть несколько игроков, необходимо ставить несколько точек для контров и для террористов.
Также как и в случае с лампочкой выберите в списке info_player_deathmatch и установите, как показано на рисунках ниже.


Обратите внимание, что объекты info_player_deathmatch и info_player_start не должны касаться стен (см. рис. ниже, вид top), друг друга и быть приподняты на некоторое расстояние над землей (см. рис. ниже, вид front). Это необходимо делать, чтобы игроки не умирали в начале раунда сами по себе и могли свободно двигаться. Вы замечали на некоторых картах при большом пинге и лагах, как игроки в начале раунда как бы падают на землю? Это происходит как раз потому, что между игроком и землей имеется некоторое расстояние. При качественном соединении такие «приземления» практически незаметны.


Итак, одну точку рождения террориста мы уже разместили. Теперь точно также создайте одну точку появления контра. Выберите в списке объект info_player_start и вставьте его подобным образом, только в противоположный угол комнаты (на виде сверху это будет правый нижний угол).
Все! Первая полностью рабочая карта создана! Конечно ее еще надо откомпилировать, но пока сравните то, что получилось у Вас, с нашей картинкой. Если все приблизительно так, сохраните карту под именем my1map (или любым другим) в формате RMF и затем в формате MAP, чтобы можно было откомпилировать.

Проверка карты на ошибки (основные ошибки)
В этой статье Вы узнаете о том, как осуществляется проверка карты на ошибки в редакторе карт. Также мы расскажем о наиболее часто встречающихся ошибках и способах их исправления.
Проверка карты на ошибки осуществляется клавишами [Alt-P]. Мы рекомендуем почаще проверять свою карту на ошибки, чтобы можно было вовремя принять меры.
К сожалению, не все ошибки обнаруживаются в редакторе карт. Многие из них (зачастую более коварные :) проявляются только при компиляции. Но в этом нет ничего страшного, т.к. компиляторы ZHLT обладают подробнейшей системой сообщений об ошибках, что позволяет быстро их находить и исправлять.
Наиболее часто встречающихся ошибки при создании карт:
There is no player start
Invalid texture (название текстуры)
Texture axic perpendicular to face
Invalid solid structure
Solid entity (имя объекта) is empty
Unmatched 'target' field (название)
Mixed face contents
Entity (имя объекта) has unused keyvalues
Entity (имя объекта) contains duplicate keyvalues
Invalid solid contents
Solid contains duplicate planes
1. There is no player start
На карте не созданы точки рождения игроков. Чтобы исправить ошибку, создайте один или несколько объектов «info_player_start» и «info_player_deathmatch» (точки появления контра и террориста, соответственно).
2. Invalid texture (название текстуры)
Ошибка означает, что объект или несколько объектов не имеют текстуры. Перейти к ошибочным объектам можно по кнопке «Go to error» в окне исправления ошибок. Объект, вызвавший ошибку, будет абсолютно белым.
Данная ошибка может возникнуть, если не были найдены текстуры, в результате отключения wad-файла. Чтобы исправить ошибку нужно или подключить wad-файл с указанными в ошибке текстурами, или закрасить объект какой-нибудь другой текстурой.
Также эта же ошибка всегда возникает, если Вы выбираете какой-то один wad-файл из списка и строите объекты. Затем Вы переключаетесь на другой wad-файл из списка и продолжаете строить объекты, забыв выбрать текстуру из нового wad-файла. То есть получается, что wad-файл Вы изменили, а имя текстуры используется старое.
3. Texture axic perpendicular to face
Эта ошибка возникает по двум причинам:
Если Вы вращали объект с выключенной опцией «Texture lock», и текстура стала перпендикулярна к стороне объекта;
На карте есть объект неправильной формы, полученный в результате манипуляции с вертексами или при помощи функции Carve.
В обоих случаях проще удалить объект и создать новый.
4. Invalid solid structure
Ошибка означает, что на карте есть объект неправильной формы, полученный в результате манипуляции с вертексами. Попытайтесь исправить данный объект или удалите и создайте новый.
5. Solid entity (имя объекта) is empty
Ошибка означает, что брашевый энтити-объект не имеет формы (что он пустой). Трудно сказать из-за чего возникает данная ошибка, но было замечено, что иногда энтити-объект самостоятельно становится брашем, а редактор по-прежнему считает его энтити-объектом. И вот когда мы повторно превращаем браш в энтити-объект, возникает данная ошибка. Так что, скорее всего, это происходит из-за глюков самого редактора. В любом случае, лучше избавиться от таких ошибок, хоть они никак и не влияют на компиляцию.
А избавиться довольно легко. Нажмите [Alt-P], в появившемся окошке выделите строку «Solid entity ... is empty» и нажмите кнопку «Go to error». Посмотрите на размер объекта (в статусной строке), если Вы видите что-то вроде: -1999998w, то нажмите Delete (т.е. просто удалите этот объект). Также поступите и с другими «пустыми» объектами.
Примечание: когда Вы перейдете к «пустому» объекту, то на карте его не будет видно, но редактор все же переходит к нему и позволяет удалить.
6. Unmatched 'target' field (название)
Ошибка означает, что в параметре «Target», вызвавшего ошибку объекта, указано имя несуществующего объекта. Для исправления ошибки перейдите к объекту кнопкой «Go to error» и удалите/исправьте запись в параметре «Target», или же создайте объект с указанным там именем.
В качестве примера можно привести такой случай. Вы создали кнопку, включающую лампочку. В параметре «Target» кнопки указали имя лампочки, но саму лампочку сделать забыли. В этом случае появляется рассмотренная выше ошибка.
7. Mixed face contents
А это постоянная ошибка тех начинающих мапперов, которые не хотят читать наши статьи о типах текстур в Half-Life :) Ошибка означает что какой-то из объектов Вы покрасили несовместимыми типами текстур, например, несколько сторон объекта Вы покрасили обычной текстурой, а другие — текстурой воды. Прочитайте статью «Типы текстур в Half-Life/CS» и тогда Вы с легкостью исправите данную ошибку.
8. Entity (имя объекта) has unused keyvalues
Указанный объект содержит неиспользуемые в его классе параметры. Ошибка исправляется кнопкой «Fix».
9. Entity (имя объекта) contains duplicate keyvalues
Указанный объект содержит несколько одинаковых параметров. Ошибка исправляется кнопкой «Fix».
10. Invalid solid contents
См. ошибку 7. «Mixed face contents» выше.
11. Solid contains duplicate planes
Ошибка означает, что какой-то объект имеет две плоскости, наложенные друг на друга. Для исправления ошибки нажмите кнопку «Go to error», удалите объект и создайте новый.