... ой, у вас вода на потолке! ... и почему я прохожу сквозь стол? ...
... да, тут всякое бывает ... В этой теме мы попробуем научиться создавать карты для American McGee's Alice. Начнем с простых вещей и возможно доберемся до сложных скриптов.
Почему я написал в теме version 2.0? Основных причин две: использование одного редактора (NetRadiant) вместо двух (забудьте про HMF2 Radiant!) и измененный компилятор. Больше не нужно писать странные строчки в bat-никах, использовать командную строку и добавлять что-то в реестр. Все намного проще чем было. Наверное начнем ...
1. Установка и настройка редактора:
Скачиваем редактор NetRadiant.
После загрузки распаковываем содержимое архива в любую папку... или почти в любую. Важное условие: в пути не должно встречаться русских букв, т.е C:\Редактор карт\NetRadiant не годиться.
Редактор карт установлен, осталось только подружить его с Алисой.
Скачиваем NetRadiantAlice_170110 и распаковываем содержимое архива в папку с редактором NetRadiant.
**Этот файл будет дополнятся. Новые версии ищите ниже.**
Если файл по ссылке пытается скачать менеджер закачек (вроде Download master'а) и говорит что там html страница, то вырубайте его и открываете ссылку в окне браузера.
В папке alice.game можно найти компилятор карт и конвертер текстур. Папка Base соответствует одноименной папке в каталоге с игрой. Maps - в эту папку сохраняются карты. Models - содержит модели в формате md3. Scripts - в этой папке хранятся описания шейдеров.
В этом списке не хватает только текстур. Давайте это исправим. Для этого откроем pak1_large.pk3 (American McGee's Alice\Base) любым архиватором и распакуем папку textures в NetRadiant/alice.game/base. С установкой редактора закончили и пора его запустить.
<--------- Несколько терминов -------->
NetRadiant - редактор карт для игр на движке Quake3. American McGee's Alice в список поддерживаемых игр не входит.
Компилятор карт - программа для перевода карт из формата редактора (*.map) в формат понятный игре (*.bsp).
Конвертер текстур - программа для перевода графических изображений из одного формата в другой. В нашем случае из *.ftx в *.tga.
Модели в формате md3 - NetRadiant не понимает формат моделей игры *.tik, поэтому приходится использовать md3.
Шейдер - кхм.. Светящийся шар за спиной у гнома - это шейдер. Одна или несколько текстур, которые могут смещаться, накладываться друг на друга, изменять степень поглощения/рассеивания света. В шейдерах также описывается тип поверхности. Например вода/лава/лед.
<-------- ----------------------------- -------->
Дважды щелкаем на radiant.exe и видим окошко Global Preferences. В выпадающем списке (Select the game) выбираем Alice и снимаем галочку напротив Startup, чтобы при каждом запуске это окно не появлялось. После выбора игры необходимо указать Engine Path. Если редактор автоматически при первом запуске не предложил это сделать, то идем в настройки (Edit->Preferences->Settings-Path) и в строке Engine Path указываем путь к папке alice.game (С:/Program Files/NetRadiant/alice.game/).
Попробуем открыть карту (в архиве есть несколько), чтобы убедиться что все сделано правильно.
Нажимаем File->Open... и в появившемся окне должно быть три карты: ecila1.map (надеюсь Lucy_Acid не против), enter.map и lab2.map. Откроем для начала lab2.map. Если все прошло успешно, то вы должны увидеть некоторые знакомые модели из игры, а также заметить, что на карте нет текстур. Точнее текстуры там есть, только они не отображаются. Исправим это. Для этого сконвертируем текстуры в формат *.tga. В этом нет ничего сложного. Просто в меню Build выберем последний пункт (ftxConvert: (use once) ftx->tga and del all ftx) и дождемся закрытия консольного окна. Перезапустим редактор и снова откроем карту lab2.map - текстуры должны появится. С приготовлениями закончено и можно двигаться дальше.
Добавлено (2010-01-19, 3:35 Pm)
---------------------------------------------
2. Компиляция карт:
Откроем карту ecila1.map и попробуем скомпилировать ее. Первый раз без учета источников освещения. Второй раз, соответственно, с источниками освещения. Все что необходимо сделать, так это выбрать пункт меню Build и один из вариантов компиляции.
Варианты компиляции:
1. AliceQ3map: (single test) -vis -fast --- Быстрая компиляция без источников освещения (везде максимальная яркость) для проверки архитектуры уровня.
2. AliceQ3map: (test with light) -vis -fast -light --- Компиляция с источниками света. Наиболее часто используется.
3. AliceQ3map: (final) -vis -light -extra --- Самая долгая компиляция. Отличия от компиляции вторым вариантом еще стоит поискать=) Используйте этот вариант по желанию.
Для первого раза выберем AliceQ3map: (single test) -vis -fast и дождемся закрытия консольного окна. Если все прошло успешно, то в папке Maps появится файл ecila1.bsp. Карта есть - запустим её.
Копируем скомпилированную карту в American McGee's Alice\Base\maps. Если папки maps нету, то её стоит создать. После этого запускаем игру и в консоли (открывается кнопкой ~) пишем "map ecila1" (без кавычек). Оказались в комнате с водой на полу? Отлично! Скомпилируйте карту с источниками света и прорвете её в игре. Все получилось? Go дальше...
3. Интерфейс редактора:
Взглянем на картинку и разберем основные элементы:
1 - Основное окно программы. На картинке изображен вид сверху (ось XY). Переключение между осями координат (XY, XZ, YZ) осуществляется нажатием Ctrl+Tab. Для масштабирования используется колесико, а для перемещения - правая кнопка мышки (держим и двигаем).
2 - Окно просмотра карты в трехмерном пространстве. Перемещаться по карте можно с помощью стрелок и мыши, но предварительно нужно нажать ПКМ в этом окне (должен появится прицел).
3 - Окно для просмотра и выбора текстур. Шейдеры выделены белой рамкой.
4 - В этом окне отображается различная справочная информация. После компиляции в этом окне можно увидеть следующую строчку:
The build output will be saved in 'C:/Documents and Settings/Once/Application Data/NetRadiantSettings/1.5.0/junk.txt'
В файл junk.txt записывается ход выполнения компиляции. Если карта не компилируется, то в первую очередь стоит заглянуть в этот файл.
Продолжим изучать интерфейс по мере необходимости. А теперь переходим к созданию брашей (о что это?).
Добавлено (2010-01-19, 3:36 Pm)
---------------------------------------------
4. Что такое браш?
Браш (Brush) - основной элемент архитектуры любой карты. Объемная геометрическая фигура, состоящая из четырех или более поверхностей (Игромания №12 2000).
Браш создается в основном окне (окне с сеткой). Просто зажимаем ЛКМ и рисуем прямоугольник. Выделенный браш обведен красным.
Hot keys:
ESC - снять выделение.
BackSpace - удалить выделенный браш.
Пробел - скопировать выделенный браш (копируется на тоже самое место, поэтому его сразу нужно передвинуть).
Shift+ЛКМ - выделение одного или нескольких брашей.
Перейдем к изменению размеров, перемещению и вращению брашей.
1 - Иконки слева на право: перемещение (Translate - W), вращение (Rotate - R), увеличение (Scale), изменение размера (Resize - Q).
2 - С помощью этой группы кнопок любой браш можно повернуть на 90 градусов и сделать его зеркальное отражение.
3 - Показывает местоположение виртуальной камеры, т.е место, с которого вы смотрите на карту в 3Д.
Посмотрим на браши, которые изображены на рисунке (опять же слева на право). Первый - браш без изменений. Второй - это скопированный (пробел) и перемещенный вправо (W) браш. Третий браш повернут с помощью Rotate (крутить можно по любым осям на любой угол), а четвертый - это зеркальное отражение третьего по оси Z.
Во вкладке Brush из обычного четырехугольника можно сделать несколько стандартных фигур: Prism, Cone, Sphere, Rock. Для этого выделите браш, выберите Brush->Prism и введите число сторон у будущей призмы (минимум 3). Если ввести значение меньше или больше допустимого, то появится соответствующее предупреждение в окне информации.
Rotate используется для вращения объекта "на глаз". Для задания точного значения лучше использовать пункт меню Modify->Arbitrary rotation... Аналогичный пункт для увеличения Arbitrary scale.
Все изменения происходят в соответствии масштабу сетки. Значение по умолчанию - 8. Для более точного перемещения/увеличения/изменения размеров следует изменить масштаб с помощью вкладки Grid.
Добавлено (2010-01-19, 3:36 Pm)
---------------------------------------------
5. Использование Hollow и Subtract.
1 - Subtract. Похоже на вычитание, только вместо чисел браши. Необходимо выделить один браш, причем он должен пересекать другой браш (см. рисунок - центр). После применения Subtract'a по контуру выделенного браша во втором браше появится отверстие (см. рисунок - слева).
2 - Hollow. Удаляет "внутренности" браша, и разбивает его на несколько (см. рисунок - справа).
Теперь с использованием этих "штук" сделаем две комнаты и соединим их коридором.
Рисуем коробку (он же браш) произвольных размеров. Затем копируем ее и ставим напротив. Это будет две комнаты. Коридор располагаем между ними таким образом, чтобы он на одну клетку с каждой стороны был внутри комнаты.
Переход на вид с тремя проекциями Edit->Preferences...->Interface->Layout
Далее выделяем первую комнату и нажимаем Hollow. Тоже самое делаем со второй. Теперь это больше походит на комнаты, но без выхода. Поэтому выделяем коридор и нажимаем на Subtract. Отодвинем коридор в сторону и посмотрим на результат. В комнатах появились отверстия под коридор. Осталось сделать проход, но для начало поставим коридор на место (Ctrl+Z никто не отменял). На коридор тоже применим Hollow и удалим (backspace) стенки, между комнатой и коридором. Выглядеть должно примерно так:

Добавлено (2010-01-19, 3:37 Pm)
---------------------------------------------
6. Текстурирование брашей:
Текстурирование - наложение на весь браш или на отдельную его грань графического изображения (текстуры). Текстурировать желательно только видимые участки уровня, т.е стоя внутри комнаты вы не увидите ее внешних стен. Для этого необходимо выделять не целый браш, а только одну его сторону (Shift + Crtl + ЛКМ). На невидимые стороны обычно накладывают текстуру Caulk.
Если вид с тремя проекциями, то браузер текстур открывается буквой T (View->Texture browser).
Shift + стрелки - перемещение текстуры по брашу. На сколько клеток переместиться текстура можно задать в Surface Inspector'e (S).
Step(для сдвига) - количество клеток на которое переместится текстура.
Horizontal shift - текущий сдвиг по горизонтали.
Vertical shift - текущий сдвиг по вертикали.
Horizontal stretch - растяжение по горизонтали.
Vertical stretch - растяжение по вертикали.
Rotate - вращение текстуры.
Чего не хватает текстурированной карте для запуска в игре? Точки появления игрока! Поставим её:
В окне с сеткой нажмем ПКМ - появится список (список объектов - entity) в котором нужно выбрать info_player_start. Появившейся объект поставим напол в одну из комнат. Если присмотреться, то можно заметить стрелку. Она указывает направление, в котором смотрит игрок в начале игры. Для изменения этого направления нужно покрутить info_player_start по оси Z.
Теперь можно скомпилировать карту (без источников света - вариант №1) и посмотреть её в игре.
7. Источники света:
Без света - никуда. Добавим его на карту...
Открываем список объектов (ПКМ в окне с сеткой) и выбираем light. Появится окошко Light intensity. Light intensity - это яркость лампочки. Чем больше значение, тем ярче и дальше она будет светить (по умолчанию стоит 300). После нажатия ОК, лампочка появляется на карте. Сразу перемещаем её (W) в нужное место и задаем цвет (K - Chose Color).
Изменить яркость лампы можно в свойствах объекта (N - Entites). Выберите пункт light, в строке Value введите новое значение и нажмите Enter.
Один очень важный момент: поставьте галочку напротив no_entities. Если не поставить, то карта не загрузится (ограничение компилятора, т.к он от игры Heavy Metal: F.A.K.K. 2) и в консоли появится такая строчка: ERROR: LoadMap: funny lump size in sphere light data for maps/"имя_карты".bsp. Для удобства можно копировать одну лампочку и изменять ее свойства.
Теперь компилировать карту можно со светом - AliceQ3map: (test with light) -vis -fast -light.
Добавлено (2010-01-19, 3:38 Pm)
---------------------------------------------
8. Модели:
Список моделей пока далеко не полный, т.к приходится конвертировать их по 1шт. в *.md3 формат (понятный редактору). Разберемся с теми что есть.
Модель - это тоже объект (entity) как свет и начальная точка игрока. Поэтому в окне с сеткой опять жмем ПКМ. Все модели разбиты на несколько групп. Вот некоторые из них:
Characters - персонажи (красные шахматы тоже в этой группе).
Enemies - противники (большинство, но не все).
Item - предметы (оружие, рассудок, сила воли, сила воображения).
Выберем для примера Enemies_CardGuard-Club и поставим его во вторую комнату. Все модели также как и начальную точку игрока можно вращать по оси Z. Повернем врага лицом к Алисе=)
Теперь второй очень важный момент: в свойствах модели (N) нужно поставить курсор в поле Real model TIK и нажать Enter. Это единственная строчка, так что запутаться будет сложно. Если этого не сделать ничего страшного не случиться, но модель в игре вы не увидите.
Кхм.. а бить его как? Надо нож (Item_WeaponPickup_Knife) поставить или что-нибудь по круче... И не забывайте "жать Enter" в свойствах объекта.
Расположение модели в редакторе и в игре может немного различаться. Я старался корректировать эту разницу. Можете посмотреть на модель без корректировки - это телескоп (Skool_telescope).
Карта по всему выше написанному. Скопировать в \NetRadiant\alice.game\Base\maps и открыть в редакторе.
Продолжение следует ...