Картостроительство DOOM 3 - Форум


Правила форума ·

  • Страница 1 из 1
  • 1
Архив - только для чтения
Картостроительство DOOM 3

Don

#3
Я забросил пока редактор дума к тому же там карт 20%, не готова, но могу монстров поставить и выкласть как демо версию, ток на троечку это будет, давно не работал...

Don

#5
Не, лучше я сейчас засяду на месяцок другой за редактор дума, может меньше, но свояю хорошую карту, не хочу на тройку выпускать... (все равно от WE скоро мозги смозолятся, надо отвлечся).

P.S. в принципе картинка раздела Дуума должна быть красной, а не синей cool

Don

#6
Итак, вот могу дать статью кому интересно, про запуск редактора в ДУУМЕ 3. (начинающим так сказать мапперам).
( Авторство данной ниже статьи принадлежит "iMiceman" )

Собственно карта для Doom 3 создаётся очень просто, в сравнении с Q3Radiant редактор потерпел некоторые изменения, в основном в лучшую сторону, что облегчает работу по созданию карт.

Сегодня мы сделаем простую карту типа BOX с триггером (кстати, это и отличает Doom Radiant от Q3Radiant – постоянное использование триггеров). В данной статье я буду подразумевать, что вы имели дело с некоторыми редакторами (возможно, не такими серьезными (это не в Unreal Editor копошиться)), но пока только ели-ели разобрались, как запускать Radiant, и в общем ничего не знаете о работе с ним. Начнем с настроек. Для удобной работы в Radiant необходимо создать в папке Doom3/base файл “autoexec.cfg” с таким содержанием (или добавить в него эти строки, если файл уже есть):

seta r_mode "-1" //Выборочное разрешение
seta r_shadows "1" //Показывать тени
seta com_allowConsole "1" //Позволить вызов консоли через тыльду
seta com_showFPS "1" //Показывать частоту кадров
seta r_customHeight "576" //Выборочная высота
seta r_customWidth "720" //Выборочная ширина
seta r_fullscreen "0" //Оконный режим
seta win_timerUpdate "1" //Позволить обновлять окно при перемещении
seta win_viewlog "1" //Показать консоль в отдельном окне
seta win_ypos "100" //Позиция окна игры по Y
seta win_xpos "100" //Позиция окна игры по X
developer "1" //Режим девелопера
disconnect //Пропустить заставку ID

Затем делаем ярлык и в него дописываем “+Editor”, все редактор к работе готов, теперь у нас все под рукой. Для большего удобства можно сделать меню с ярлыками ко всем доступным редакторам в Doom3.

Для начала разберемся с управлением и горячими клавишами (просмотреть список которых можно в меню Help/Command list). Главное это камера, она перемешается клавишами Ctrl + MOUSE3, а указать её направление можно просто нажав в нужной точке MOUSE3 (это в подокне XY Top).

Для перемещения по оси Z нужно в окне Z, нажать Ctrl + MOUSE3. В подокне CAM управление происходит хоткеем(горячей клавишей) Ctrl + MOUSE2 (если просто зажать MOUSE2 то можно скролить вид сверху, ролик служит увеличением). Можно менять вид в окне посредством нажатия Change views на главном тулбаре. Вроде с камерой разобрались. По ходу создания карты будем знакомиться с новыми хоткеями, пока остальное не важно.

Итак, сначала мы сделаем пол. Для этого нажимаем клавишу 4 (выставляется размер сетки на 8) и MOUSE1 (создание и изменение размеров объектов происходит именно с её помощью). Рисуем в окне XY Top нечто похожее на квадрат, в подокне Z меняем его высоту в одну секцию и перемещаем до уровня розового куба, теперь кликаем по закладке Media в подокне Inspectors и подбираем подходящую текстуру в папке Textures.

Все текстуры более-менее удобно рассортированы по категориям, но всё же можно потратить достаточно много времени на поиск, поэтому сразу открываем Textures/textures/base_floor/a_bluetex1a_02 и не надрываемся, все текстуры, что мы выбрали или посмотрели автоматом добавляются в закладку Textures подокна Inspectors.

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

Нажатием клавиши Esc снимаем выделение с предмета (выделить обратно Shift + MOUSE1, причём можно также создать бокс, который будет касаться/быть внутри/обхватывать нужный для выделения объект и просто нажать на панели инструментов одну из кнопок, предназначенных для выделения), а удалить - Backspace).

Кликаем MOUSE2 по свободному пространству подокна XY Top и видим меню, в котором перечислены Entities (объекты) имеющиеся в игре (пояснять значения всех объектов я не буду, поскольку это очень долго, но выставить необходимые и узнать доступные параметры и описания данного объекта мы можем в закладке Entity подокна Inspectors).

Нам необходимы info/info_player_start (место откуда появится игрок в сингле) и light (свет). Создаем info_player_start и ставим его над нашим боксом, который служит полом. Переходим в закладку Entity и кликаем по кнопке 90, тем самым, выставляя угол появления. Можно также изменить параметр Name на более пристойное, но это так, для тех кто любит порядок, к объектам используемым на карте только один раз можно не выставлять нормальное имя.

Теперь делаем свет, опять MOUSE2/light и располагаем его по центру нашего бокса, слегка выше уровня info_player_start. Сохраняем карту в папке Doom3/base/maps c именем “test_map” и компилируем её. Делается это просто – BSP/bsp noflood. Можно и просто bsp, но если карта вышла глюкавая и имеет “лэки” (leaks), то она не скомпилируется.

Затем bsp/bspext (сейвимся еще раз – на всякий случай). Теперь нажимаем F2 и появляется жутко тормозящее окошко Doom3, в консоли печатаем “map test_map” и ENTER. Ждем загрузки, и “О чудо, оно работает!” (или не работает, в зависимости от кривости ваших рук):

Теперь, возвращаемся в Radiant (жмем тильду и кликаем по окну Радианта, если просто закрыть окно дума мы убьем его навсегда, и через F2 оно больше не появится) и доделываем карту – добавляем света, создаем стены, потолок, вставляем модель лампочки. Делаем небольшой коридор со ждущим нас Импом (причем затриггеренным на появление из-за угла). Приукрашиваем карту кровищей и трупами, а также добавляем фоновую музыку.

Возникает вопрос: “Как это все сделать? Старик ты что шутишь, сказал пару слов и лезешь на сосну без объяснений!”, “НЕТ!” – сказал нервный iMiceman, сейчас все по порядку (кстати, текстуры лучше будет изменить при клонинге, потому что та, которую выбрал я, не очень вписывается, можно к примеру поставить плитку из папки washroom):

1. Делаем пол для нашего коридора – выделяем его, и клонируем клавишей SPACE, изменяем размер, и ставим на право от игрока;

2. Создаем стены – 8 раз клонируем наш пол, изменяем размеры, расставляем стены (да, и лучше, чтоб они не пересекались друг с другом и полом), далее клонируем наш источник света и добавляем его в коридор, потолок создадим в последнюю очередь, чтобы не мешал выделять объекты;

3. Звук, монстр, триггер – Нажимаем MOUSE2/speaker, переходим в закладку Entity, в поле Key вписываем s_shader (звук который будет играть из этого источника). Для выбора звука кликаем по кнопке Sound… и выбираем нужный звук, например Sound Shaders/sound/music.sndshd/admin_haunted_office – вот вам и нервная фоновая музыка. В поле Val можно просто прописать admin_haunted_office. Затем выставляем параметр s_looping на 1, и s_volume на 1. Если вы не хотите пускать музыку через speaker, то можно создать MOUSE2/worldspawn и в нем выставить параметр music.

Звук есть, теперь, делаем триггер и монстра. Триггер – MOUSE2/trigger/trigger_once, делаем его размером со стену, что перед игроком, и ставим перед ним. У триггера выставляем параметр target, а значение – imp1.

Теперь делаем монстра. MOUSE2/monster/monster_demon_imp, ставим его на пол и перемещаем в коридор. Теперь выставляем параметры (параметр - значение):

name – imp1 (имя к которому обращается триггер при активации),
angle – 315 (угол, направим его к стене, чтоб он выпрыгнул боком),
trigger – 1 (появляется и делает on_activate по триггеру),
on_activate – evade_right (список доступных анимаций рядом в листбоксе, можно заодно посмотреть превью нажав Play)

Удаляем параметр anim (можно оставить, но он не востребован), и слегка расширяем коридор – Имп немного толстоват – может врезаться в стену.

4. Прибамбасы, изменяем текстуры на приличные, добавляем потолок – создаем бокс, в списке текстур находим кровь (*splat* и т.д.), натягиваем, подгоняем размер, кликаем в меню по Patch/Simple Patch Mesh, жмем SHIFT + 2 (уменьшаем сетку), слегка повышаем уровень нашей крови над полом, чтоб не было пересечения, жмем 4 (нормальная сетка).

Ресайзим кровищу на вкус, клонируем, меняем текстуры, короче закровавливаем карту. Добавляем для разнообразия какие-нибудь модели (MOUSE2/New Model), …добавляем шотган (MOUSE2/weapons/weapon_shotgun), …добавляем рагдолл толстого зомби MOUSE2/env/env_ragdoll_fatty (я добавил еще один - poppy). Меняем текстуры на пригодные из папки washroom.

Добавляем потолок, клонируя пол и поднимая его до нужного уровня, и ставим приличную текстуру. Добавляем через MOUSE2/New model… модель лампы и цепляем над потолком.

Выставляем небольшой light_radius у света (примерно, 200 200 200), делаем различные примочки (MOUSE2/New model…) по вкусу.

Don

#7
Эта статья так-же принадлежит примного-уважаемому "iMiceman"

Поскольку на белом свете остались еще такие люди, которые не могут делать двери, лифты, и слово "func" у них вызывает нецензурную ассоциацию. Как вы поняли, сегодня я поведаю о функциях, а вернее о главных функциях (или можно сказать самых нужных) и некоторых мелочах.

Функции или "func". Что же мы называем функциями (только не пугаться, сорить терминами никто не собирается)? В редакторе Doom Edit это просто класс объектов и этого нам хватит. Функции помогают нам создавать такие прекрасные вещи как двери, лифты, землетрясения, телепорты, платформы (типа тех, что в Quake), и т.д. Так, приступим с самого начала...

Дверь [func_door]: Простая функция двери, все двери в думе скролируют, то бишь, когда мы заходим в зону активации открытия двери, она плавно скролирует в заданном направлении и скрывается на 90% (этот параметр можно изменить, см. [lip]) в стене, мы имеем в распоряжении следующие параметры для настройки поведения/внешнего вида двери:
1) [time] - [время в секундах] = время, за которое открывается/закрывается дверь;
2) [speed] - [цифровое знач.] = скорость перемещения двери, с параметром [time] несовместим;
3) [angle] - [знач. от 0 до 360] = угол открытия двери (рекомендуется использовать вместо [movedir]);
4) [movedir] - [малые знач.] = направление открытия, не совместим с [angle];
5) [model] - [назв. модели] = модель двери, находятся в папке [models/mapobjects/doors];
6) [wait] - [время_в_секундах] = сколько времени ждать перед возвращением;
7) [snd_СОСТОЯНИЕ] - [имя звука] = имя звука, используемого в определенном состоянии двери;
8) [triggerСОСТОЯНИЕ] - [имя объекта] = какой объект нужно активировать в определенном состоянии двери;
9) [triggersize] - [знач.] = размер триггера активации открытия (то есть, на сколько он простирается возле двери);
10) [dmg] - [знач.] = какое повреждение причинять во время блокировки двери;
11) [start_open] - [знач. 1 или 0] = респавнить дверь в открытом состоянии;
12) [toggle] - [знач. 1 или 0] = ждать в каждой позиции пока снова не подействует триггер;
13) [crusher] - [знач. 1 или 0] = дверь не реверсирует, если заблокирована;
14) [no_touch] - [знач. 1 или 0] = некасаема, нужно затриггерить для открытия;
15) [locked] - [знач. 1 или 2] = параметр работает вместе с [no_touch], что делаем после триггера:
1 - открывать;
2 - дать двери статус 'открытая';
16) [lip] - [знач.] = какой участок двери останется видимым после завершения движения.

Лифт [func_elevator]: Это лифт, назвать его простой функцией сложно, поскольку нужно определенное количество умения (и смекалки), для того чтоб сделать работоспособный лифт.
Как он делается? - Чтобы сделать лифт, нужно сначала создать "func_elevator", выставить параметр "model", выбрать GUI, выставить параметры GUI, сделать и забиндить двери, согласовать звуки со временем перемещения. В принципе все, но это простой лифт, есть много опций для его настройки, но я перечислю лишь те, которые на мой взгляд самые необходимые (почти все, лишь некоторые опущены):
1) [model] - [имя модели] = название модели лифта [models/mapobjects/elevators];
2) [move_time] - [время сек] = время перемещения между этажами;
3) [move_speed] - [точек/сек] = скорость перемещения между этажами, востребован при использовании loop звука - просто не нужно будет согласовывать движение со звуком;
4) [*cel_time] - [время сек] = время ускорения/притормаживания лифта;
5) [innerdoorХ] - [имя двери] = дверь, прикрепленная к лифту, если она одна, то параметр без значения Х, если две или более, то первая дверь без Х, следующая с Х (например, innerdoor1);
6) [floorPos_Х] - [X Y Z] = положения пола, значение Х в параметре - номер этажа, собственно от того, сколько мы выставим таких параметров, и какой GUI мы выберем, будет зависеть сколько этажей;
7) [floorDoor_X] - [имя двери] = имя внешней двери, Х - на каком этаже;
8) [floor] - [номер этажа] = этаж, на котором изначально должен быть лифт;
9) [pauseOnFloor] - [номер этажа] = этаж, на котором сделать паузу перед открытием двери;
10) [pauseTime] - [время сек] = время паузы из предыдущего параметра;
11) [snd_СОСТОЯНИЕ] - [имя звука] = звук, который будет проигрываться в определенном состоянии лифта;
12) [gui] - [назв. файла gui] = GUI, используемый для управления лифтом, обычно можно два определить - первый параметром [gui], второй [gui1], первый - внутри лифта в виде дисплея управления, второй - подсветка вверху номера этажа или типа того (если не сможете найти нормальный файл GUI, то ищите в папке guis/doors/elevator*);
13) [gui_parmX] - [знач.] = параметр GUI (далее следуют описания параметров дефолтного двухэтажного GUI);
а) [gui_parm2] - [1] = с этажа 1 на 2, или [2] = с 2 на 3;
б) [gui_parm3] - имя верхнего этажа (можно мультистрочное через БЭКСЛЕШ);
в) [gui_parm4] - имя нижнего этажа (можно мультистрочное через БЭКСЛЕШ);
г) [gui_parm5] - цвет GUI. [0] - дефолтный, [1] - красный, [2] - желтый, [3] - голубой, [4] - зеленый цвет;

ПРИМЕЧАНИЕ: Рекомендую сделать внутри лифта следующие вещи и прибиндить их к модели лифта - свет, в местах, где нужна подсветка - браш с текстурой "sfx/flare", возможно прибить какую-то модель снизу, если мы не делаем внешнюю дверь. Пример лифта/анимации (это так, оффтоп слегка, но с подобными анимациями карта выглядит живенько) можно скачать тут: elevator.zip

Землетрясение [func_earthquake]: Землетрясения собственной персоной. Создаем эту функцию, выставляем параметры, цепляем на триггер и как качнёт, что хоть прячься, а теперь о параметрах подробнее:
1) [playerOriented] - [1 или 0] = откуда будет трясти, от положения объекта (0), или от положения игрока (1), то есть близь места, где будет триггер;
2) [wait] - [знач. или -1] = сколько ждать перед тем как жахнуть снова, [-1] - только раз;
3) [randomDelay] - [знач. интенсивности] = разнообразие пауз;
4) [triggered] - [1_или_0] = объект будет ждать триггера, перед тем как тряхануть;
5) [snd_quake] - [имя звука] = определяет какой звук играть при землетрясении;

Телепорт [func_teleporter]: Ничего примечательного, триггерный телепорт, создаем объект, цепляем к триггеру и при активации триггера перемещаемся на позицию нашего объекта-телепорта. Вынужден сказать, что телепорт глючная штука, при паршивой сборке карты и неправильной компиляции может и не заработать.
1) [angle] - [знач. угол] = направление к лицу;
2) [wipe] - [имя звука] = звук, который использовать при телепортировании;

Платформа [func_plat]: Летающая платформа, типа тех, что мы можем наблюдать в Quake. Нужно создать объект, выставить конечное положение и высоту, на которую платформа должна переместиться. Все просто.
1) [height] - [точки] = высота, на которую поднимется платформа, по дефолту - высота модели;
2) [model] - [имя модели] = модель платформы;
3) [lip] - [точки] = такое же описание, что и у дверей;
4) [speed] - [точек/сек] = скорость перемещения;
5) [dmg] - [знач. поврежд] = какое повреждение давать при блокировке (например, зажало);
6) [no_touch] - [1_или_0] = работать только через триггер;
7) [snd_СОСТОЯНИЕ] - [имя звука] = какой звук издавать в определенном состоянии;

Вот собственно перечень функций, которые могут показаться сложными для изучения методом «тыка» (кроме телепорта), остальные достаточно просты. Если вы хотите узнать больше информации о функциях, то могу порекомендовать следующее - зайдите в папку Doom3/base/def (или Doom3/base/pak000.pk4/def, если игра изначально сжата), откройте файл func.def в Блокноте (или в более приличном редакторе), и посмотрите список всех функций. Как ориентироваться в файле? Ответ прост, строки, на которые стоит обратить внимание:

entityDef func_НАЗВАНИЕ_ФУНКЦИИ {...тело_функции...} //Тело функции, то есть все, что в нее напичкано

"editor_usage" "ОПИСАНИЕ" //Описание действия функции на англ. языке

"editor_var ПАРАМЕТР" //Описание параметра функции на англ. языке

"ПАРАМЕТР" "ЗНАЧЕНИЕ ПО-УМОЛЧАНИЮ" //Дефолтные значения

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

Pro100Killer

#9
respect
Мафия бессмертна!
Тестерирую на досуге мапы,без фанатизма)
nikikin
-Человек с очень завышеным ЧСВ и слабой нервной системой.
Это многое объясняет)
Весь мир это иллюзия бред больного ума и охреневшего сознания
  • Страница 1 из 1
  • 1
Поиск: