Инструменты пользователя

Инструменты сайта


q3:работа_с_entities

Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

q3:работа_с_entities [29.08.2009 14:26]
Nt-kop4ik
q3:работа_с_entities [06.07.2020 03:50]
Строка 1: Строка 1:
-===== Введение ===== 
  
- 
-В данной статье будет рассказано, как работать с //entity// в редакторе уровней типа GtkRadiant на примере версии 1.5.0. 
- 
-//Map//-файл, который как раз редактируется с помощью Radiant'a, описывает следущие составляющие уровня: 
- 
-  * //worldspawn// - множество всех брашей и патчей уровня, не задействованных в //trigger//'ах и //func//'ах; 
- 
-  * //entity// - этити (к примеру, target_give, item_haste и др.); 
- 
-  * //trigger// - триггер, который можно определить как симбиоз множества из брашей и/или патчей с //entity//; 
- 
-  * //func// - особая группа брашей или патчей; 
-   
-  * //model// - модель. 
- 
-===== Создание и выделение объектов ===== 
- 
-Для помещения на уровень //entity//, //trigger//'а, //модели//'и или //func//'а (далее - //объект//) кликнуть правой кнопкой мыши на рабочее пространство редактора (неважно, в какой проекции) и выбрать нужный пункт. Следует помнить, что при создании //trigger//'a или //func//'a должен быть выделен как минимум один браш или патч, иначе создастся "пустой" //trigger// или //func//, и откомпилированный с такой "пустышкой" уровень не запустится в q3. При помещении же //entity// и //модели//'и наоборот все выделения в редакторе необходимо снять, иначе то, что было выделено, исчезнет (впрочем, иногда так и надо). 
- 
-{{:q3:entity_menu.png|}} 
- 
-  * **entity меню** 
- 
-===== Entity list ===== 
- 
- 
-Для управления установленными объектами редактор содержит мощные инструменты: //**entity list**// и **//entity inspector//**. 
- 
-**//Entity list//** - удобный список всех //entity// на уровне, в котором легко находить нужные из них для последующего вызова **//entity// inspector** или других целей (например, копирования). Для вызова **//entity list//** нужно выбрать соответствующую строчку меню **//view//**, либо использовать горячую клавишу **L**. 
- 
- 
-    * Примечание: горячие клавиши (в WinXP для GtkRadiant 1.5.0) можно посмотреть/поменять с помощью файла 
- 
-//SYSTEM_SECTION:\USER_NAME\Documents and Settings\Application Data\RadiantSettings\1.5.0\q3.game\shortcuts.ini// 
- 
-{{:q3:view_menu.png|}} 
- 
-  * **меню view** 
- 
-В появившемся окне можно искать нужный //объект//, а затем копировать его (клавиша **SPACE**), перемещать с помощью мыши, либо вызывать для ее редактирования **//entity inspector//**. Единственным недостатком этого инструмента является то, что в нем отображаются абсолютно все источники света, которых может быть не одна тысяча (да, бывают и такие чудовища), что очень мешает навигации в //**entity list**//. 
- 
-{{:q3:entity_list2.png|}} 
- 
-  * **entity list** 
- 
- 
-===== Entity inspector ===== 
- 
- 
-Логически следующий за //**entity list**//, но хронологически вызываемый раньше инструмент //**entity inspector**// вызывается горячей клавишей **N** при условии выделенного в редакторе объекта. Если //объект// создан только что и больше действий с выделением произведено не было, то можно вызывать //**entity inspector**// сразу, т.к. после создания любого объекта (в том числе браша или патча) выделение автоматически переходит на него. Если же надо выделить //объект// уже после, нужно выделить его с помощью левой кнопки мыши и клавиши **SHIFT**.  
- 
-Для этого находим на рабочем пространстве нужный //объект// (пользуясь, если нужно, правой кнопкой мыши для промотки и колесом мыши для масштабирования), зажимаем **SHIFT** и кликаем на //объект//. Если зажать левую кнопку мыши, то можно выделить несколько //объектов//. 
- 
-Так как описанный способ в точности повторяет алгоритм выделения брашей и патчей, для выделить так же //trigger// или //func// не выйдет. Для этого надо вместе с **SHIFT** зажимать **CRTL** (//entity// и //модели// тоже можно выделять с **CTRL**). 
- 
-Итак, после выделения нужного //объекта// нажатие горячей клавиши **N** приведет к открытию //**entity inspector**//. 
- 
-{{:q3:entity_inspector.png|}} 
- 
-  * **entity inspector** 
- 
-Две верхних области инструмента представляют собой мощную справочную систему по всем доступным //объектам//. Выбирая в верхнем окошке нужный (по умолчанию выбран тот, который был выделен при запуске //**inspector**//'а, а если не было выделено ничего - то последний использованный) можно найти все (практически) ключи для его настройки. 
-Собственно говоря //entity// или //модель// в map-файле представляет собой список параметров, среди которых: 
- 
-  * Главный (свойственен всем //entity//) 
-    * //classname// - определяет, чем собственно выделенная //entity// является; 
- 
-  * Второстепенные (могут быть определены для всех //entity//) 
-    * //origin// - местоположение //entity// в формате "X Y Z"; 
-    * //target// - метка, указывающая //entity//, следующую после данной в связи (//connection//); 
-    * //targetname// - метка данной //entity// для ссылания на нее другой; 
- 
-  * Специфические (могут быть определены для некоторых классов //entity//) 
-    * //spawnflags// - десятичное число, в котором кодируются булевые (да/нет) параметры //entity// (флаги); 
-    * //wait// - время в секундах, через которое //entity// может быть использована снова ("перезарядка"); 
-    * //другие...// 
- 
-//Trigger//'ам, //func//'ам свойственно все вышесказанное, только в их состав также входят браши или патчи. 
- 
-Итак, вводя в поле //**Key**// любой параметр, описанный здесь или другой, найденный в справка Radiant'a или где-то еще, в поле //**Value**// его значение, и нажав **ENTER** (нажимать, находясь на поле //**Value**//) создастся параметр с заданным значение. Кнопками **delete key** и **clear all** можно соответственно удалить выделенную строчку с параметром или удалить все парамерты (кроме //classname//). 
- 
-Так и происходит управление //объектами// (кстати, менять можно даже //classname//, но после этого с //объекта// спадет выделение) 
- 
-Правда, в случае //target// и //targetname// существует "быстрый механизм", минующий //**entity inspector**// (если в друх словах, то надо выделить два //объекта// в том порядке, в котором они соединяются и нажать **CTRL+K**), но использовать такой метод лично автор статьи настоятельно не рекомендует. Кроме того, что таким способом не сделать многих возможных в //**entity inspector**// вещей (например, соединение одного //объекта// с несколькими), но и теряется понимание сути маппинга, его красота и логичность (немного помпезно, но зато правда). 
- 
-Так что //target// и //targetname// вам в руки, и вперед ;-) 
- 
-=== Свойства объектов === 
- 
-  * При обычном копировании или импортировании //объектов// из других //map//-файлов параметры //target// и //targetname// снабжаются индексами. К примеру, при копировании //объекта// (//trigger//'а, к примеру) с параметром //target// равным //give_rocket//, создастся такой же //объект// с параметром //target// равным //give_rocket1//, а если значение равно //give_rocket1//, то получим значение //give_rocket2// и т.д. 
- 
-  * Важная особенность: при копировании //объекта// выделение __**не переходит**__ на новый //объект//. 
- 
-  * Не имеет значение, каково значение параметра //origin// у //entity//, за исключением: 
-    * //entity// пересекается с твердым брашем ; 
-    * //entity// находится в "открытом пространстве"; 
-    * В обоих случаях уровень при  компиляции (//BSP -meta//) выдаст "утечку" (//leak//). 
- 
-=== Некоторые "фишки" в работе с entity inspector === 
-  * При выделении некоторой строчки **Key:Value** в соответствующих полях появятся соответствующие значения; при этом если выделить другой //объект// и зайти в //**entity inspector**//, то поля будут содержать те же значения, которые там были во время закрытия. Таким образом можно удобно и быстро копировать строчки с параметрами из одного места в другое (к примеру, //_remap// от //модели// к //модели//). 
- 
-  * Если нужно для тестирования уровня передвинуть на некоторое время //info_player_start// (или аналог), но двигать обратно его потом будет лень, а наличие двух таких //entity// мешает стабильно спауниться, то можно установить в первом //info_player_start// параметр //classname// равным, к примеру, //info_player_start2//. Тогда он не будет никак отображаться на уровне и даст спокойно спауниться другому //info_player_start//'у. 
- 
-  * Кто чем может, помогайте :-) 
- 
- 
- --- //[[k47@email.com|Nt-kop4ik]] 26.08.2009// 
q3/работа_с_entities.txt · Последнее изменение: 06.07.2020 03:50 (внешнее изменение)