СОЗДАНИЕ
ДОПОЛНЕНИЙ В 3D Studio MAX
ЧАСТЬ I
Введение:
В данных уроках, я попытаюсь обьясьнить как создавать дополнения
для НВН, однако здесь вы не найдете информации о тонкостях создания
моделей в 3D Studio MAX - это тема отдельной статьи.
(Так же хочу предупредить, что всё о чём написано в этом цикле статей
- это сугубо мой личный опыт и возможно во многих вещах я допустил
ошибки. ......Ice Blade)
Содержание:
1.Тайлсеты.
2.Персонажи.
3.Оружие.
4.Размещаемые обьекты(Placeables).
5.Расы.
6.Классы.
7.Скилы.
8.Фиты.
От себя: Чтобы так сказать в комплексе показать создание модификации
НВН, я решил создать из Невера - что-то вроде Fallout(ну и что,
что не фентези - зато как глобально а?), чтобы продемонстрировать
возможности и открытость игрового движка НВН.
Глава
первая.
Создание Тайлсетов.
Содержание:
1.Создание тайлов местности.
2.Создание групп.
3.Создание дорог и стен.
4.Создание особеностей.
Создание тайлов
местности.
Так как создавать будем Fallout нам потребуется тайлсет для пустыни.
Ну чтож приступим в 3DS MAX, я создал следуюшие тайлы:
- пустой тайл(у меня он называется N01_OSN) - он будет основой
для тайлсета.
Но идеально ровная пустыня - это как-то уж слишком примитивно,
по этому надо бы добавить какких-нибудь дюн.
Для этого потребуются еще несколько тайлов:
- Верхний угловой тайл (N01_UGV).
- Центр стороны(N01_CE)
- Нижний угловой тайл (N01_UGN).
- двойной угол (N01_DVUG).
Вот собственно и все тайлы которые нам нужны.
Для прописания их в НВН нам потребуется создать 2 файла *.set и
*stdplt.itp, где * - пусть будет N01
N01.set :
В этом файле описываются наиболее важные характеристики тайлсета.
В начале нужно описать обшее характеристики тайлсета в след-й очередности:
[GENERAL]
Name=N01 - имя таилсета.
Type=SET - тип
Version=V0.2 - версия( необязательно).
Interior=0 - если незнаете ставьте 0
HasHeightTransition=1 - высотные переходы.У нас он только один (тайл
поднимается на один уровень, но вот
количество этих уровней мы не ограничеваем).
EnvMap=ttr01__ref01 - Текстура отражения по умолчанию.
Transition=2,5 - высота перехода тайла (дюны у нас поднимаются примерно
на половину высоты
обычных НВН-х тайлов)
DisplayName=68728 - имя в Тулсете (Вписываем итендификатор из Dialog.tlk)
Border=Desert
Default=Desert
Floor=Desert - типы местности поумолчанию и за границей модуля.
[TERRAIN TYPES]
Count=1
[TERRAIN0]
Name=Grass
StrRef=63635 - описываем типы местности (у на только один тип песок).
В StrRef пишем ID из
Dialog.tlk.
[PRIMARY RULES]
Count=0
[SECONDARY RULES]
Count=0 - у нас нет нескольких однотипныт тайлов, поэтому описывать
правила размещения не
имеет смысла.
[TILES]
Count=5 - чосло тайлов в нашем тайлсете.
А теперь приступим к описанию каждого тайла в отдельности:
[TILE0]
Model=N01_UGV - имя нашего тайла (верхний угол).
WalkMesh=msb01 - пишите тоже что у меня.
TopLeft=Desert - тип местности с которым стыкуется угол
TopLeftHeight=1 - этот угол у нас на высоте
TopRight=Desert
TopRightHeight=0
BottomLeft=Desert
BottomLeftHeight=0
BottomRight=Desert
BottomRightHeight=0 - остальные углы внизу.
Top=
Right=
Bottom=
Left=
MainLight1=1
MainLight2=1
SourceLight1=1
SourceLight2=1
AnimLoop1=1
AnimLoop2=1
AnimLoop3=1
Doors=0
Sounds=0
PathNode=B
Orientation=0
ImageMap2D=MI_temp01 - здесь указываете иконку для миникарты.
[TILE1]
Model=N01_CE - имя модели(Центр стороны)
WalkMesh=msb01
TopLeft=Desert -тип местности (он у нас один).
TopLeftHeight=1 -этот угол на высоте.
TopRight=Desert
TopRightHeight=1 -этот угол на высоте.
BottomLeft=Desert
BottomLeftHeight=0 -этот угол внизу.
BottomRight=Desert
BottomRightHeight=0 -этот угол внизу.
Top=
Right=
Bottom=
Left=
MainLight1=0
MainLight2=0
SourceLight1=0
SourceLight2=0
AnimLoop1=0
AnimLoop2=0
AnimLoop3=0
Doors=0
Sounds=0
PathNode=C
Orientation=0
ImageMap2D=MI_temp01
[TILE2]
Model=N01_UGN - модель(Нижний угловой тайл) N01_UGN
WalkMesh=msb01
TopLeft=Desert
TopLeftHeight=1 -этот угол на высоте.
TopRight=Desert
TopRightHeight=1 -этот угол на высоте.
BottomLeft=Desert
BottomLeftHeight=1 -этот угол на высоте.
BottomRight=Desert
BottomRightHeight=0 -этот угол внизу.
Top=
Right=
Bottom=
Left=
MainLight1=0
MainLight2=0
SourceLight1=0
SourceLight2=0
AnimLoop1=0
AnimLoop2=0
AnimLoop3=0
Doors=0
Sounds=0
PathNode=B
Orientation=0
ImageMap2D=MI_temp01
[TILE3]
Model=N01_DVUG - Модель(двойной угол).
WalkMesh=msb01
TopLeft=Desert
TopLeftHeight=1 -этот угол на высоте.
TopRight=Desert
TopRightHeight=0 -этот угол внизу.
BottomLeft=Desert
BottomLeftHeight=0 -этот угол внизу.
BottomRight=Desert
BottomRightHeight=1 -этот угол на высоте.
Top=
Right=
Bottom=
Left=
MainLight1=0
MainLight2=0
SourceLight1=0
SourceLight2=0
AnimLoop1=0
AnimLoop2=0
AnimLoop3=0
Doors=0
Sounds=0
PathNode=O
Orientation=0
ImageMap2D=MI_temp01
[TILE4]
Model=N01_OSN -Модель(пустой тайл)
WalkMesh=msb01
TopLeft=Desert
TopLeftHeight=0 -этот угол внизу.
TopRight=Desert
TopRightHeight=0 -этот угол внизу.
BottomLeft=Desert
BottomLeftHeight=0 -этот угол внизу.
BottomRight=Desert
BottomRightHeight=0 -этот угол внизу.
Top=
Right=
Bottom=
Left=
MainLight1=0
MainLight2=0
SourceLight1=0
SourceLight2=0
AnimLoop1=0
AnimLoop2=0
AnimLoop3=0
Doors=0
Sounds=0
PathNode=O
Orientation=0
ImageMap2D=MI_temp01
Здесь и заканчиваеться (на данный момент) SET-й файл.
Теперь itp.
N01palstd.itp
Для работы с Itp, нам понадобиться ITP Tools.
Этот файл несет в себе палитру для нашего тайлсета.
И так, запустив ITP Tools и загрузив( или создав ( я рекомендую
грузить Itp-шник от TMS-овского тайлсета - найти его можно в Templates.bif)
вы увидете примерно следуюшее:
(описание: Unit32 StrRef - ID из Dialog.tlk
ResRef ResRef - название для палитры(местность, группа, и.т.д.)
.
В загруженном ITP в особенностях и группах удалите всё что есть
так чтобы оставался пустой LIST LIST(потом конечно мы туда много
чего добавим).
В местности должны остаться только eraiser, grass и raiselower.
Затем в местности в место grass вписываем desert, а в Unit32 StrRef
вписываем ID из Dialog.tlk -(песок),
посе Itp должен выглядеть примерно так:
Здесь в общем-то и всё с тайлами местности (незабудьте создать(изменить)
ID из Dialog.tlk).
(Смело заганяйте все в OVERIDE(для проверки) или если уже все закончили
то в HAK.)
У вас должен получиться тайлсет для работы с такой вот местностью:
Создание групп.
Создание групп впринцепе не слишком отличается от создания обычной
местности.
Пустыня без нечего, как-то не интерестно поэтому надо бы добавить
туда какой нибудь БУНКЕР.
Значит берем бункер
он состоит из 9-и тайлов
В N01.set описываем каждый тайл, где все углы нижние
Например:
[TILE5]
Model=N01_BUNK_01 -Модель(угол бункера)
WalkMesh=msb01
TopLeft=Desert
TopLeftHeight=0 -этот угол внизу.
TopRight=Desert
TopRightHeight=0 -этот угол внизу.
BottomLeft=Desert
BottomLeftHeight=0 -этот угол внизу.
BottomRight=Desert
BottomRightHeight=0 -этот угол внизу.
Top=
Right=
Bottom=
Left=
MainLight1=0
MainLight2=0
SourceLight1=0
SourceLight2=0
AnimLoop1=0
AnimLoop2=0
AnimLoop3=0
Doors=0
Sounds=0
PathNode=O
Orientation=0
ImageMap2D=MI_temp01
В конце нашего файла (после описания тайлов) пишем след-е:
[GROUPS]
Count=1 - число групп (особенности тоже групы).
[GROUP0]
Name=Bunker_3x3
StrRef=68731
Rows=3 - число столбцов.
Columns=3 - число колонок.
Tile0=5
Tile1=6
Tile2=7
Tile3=8
Tile4=9
Tile5=10
Tile6=11
Tile7=12
Tile8=13 - печесляем тайлы (цифра это номер в описании тайла) которые
входят в группу
(очередность имеет особое значение).
Затем в ITP:
В группах
Unit32 StrRef - ссылка на ID
ResRef ResRef - указываете имя модели центрального тайла (вокруг
него будет осуществляться поворот).
С группами всё.
Создание
дорог и стен.
Теперь давайте сделаем стену для базы(что, уж мелочиться сделаем
большую и толстую, железную стену).
Для это нам понадобяться минимум след-е тайлы:
- конец стены.
- центральная часть стены.
- угол стены.
- перекрёсток.
-развилка.
Приступим:
N01.set:
Сразу после описания типов местности (
[TERRAIN TYPES]
Count=1
[TERRAIN0]
Name=Desert
StrRef=63635 )
Вставляем:
[CROSSER TYPES]
Count=1 - Количество перекрёстков.
[CROSSER0]
Name=Wall
StrRef=63301 -описание перекрёстка.
а затем в описаниях тайлов, так же как и обычно описываем тайл
но с некоторыми изменениями:
[TILE14]
Model=n01_w01_02 - имя модели(центральная часть стены).
WalkMesh=msb01
TopLeft=Desert
TopLeftHeight=0
TopRight=Desert
TopRightHeight=0
BottomLeft=Desert
BottomLeftHeight=0
BottomRight=Desert
BottomRightHeight=0
Top=Wall - а вот сдесь указываем с какой стороны, что должно быть
приделанно к этому тайлу.( данное
значение значит что с этой стороны должна быть присоединена стена.)
Right= - здесь стена отсутствует и может быть присоединён любой
тайл.
Bottom=Wall - аналогично Top.
Left=
MainLight1=1
MainLight2=1
SourceLight1=1
SourceLight2=1
AnimLoop1=1
AnimLoop2=1
AnimLoop3=1
Doors=0
Sounds=0
PathNode=C
Orientation=0
ImageMap2D=MI_temp01
Теперь Itp:
В местность добавляем новый элемент и пишем:
Unit32 StrRef - ссылка на ID
ResRef ResRef - указываете имя перекрёстка в set-ом файле.
Со стеной всё!!
Дороги делаються аналогично стенам.
Создание особеностей.
Создание особеностей во многом похоже на создание групп.
И так у нас есть стена по которой можно ходить, но вот зайти на
неё невозможно - по этому думаю надо сделать лестницу.
Лесница у стены будет немного длинее чем один тайл по этому будет
состоять из двух тайлов(но в целом группа особеностей может состоять
и из одного тайла):
и
N01.set:
Прописываем тайлы:
[TILE19]
Model=N01_LESN_U -Модель(Верхняя часть лестницы)
WalkMesh=msb01
TopLeft=Desert
TopLeftHeight=0
TopRight=Desert
TopRightHeight=0
BottomLeft=Desert
BottomLeftHeight=0
BottomRight=Desert
BottomRightHeight=0
Top=
Right=Wall - с каких сторон должна идти стена.
Bottom=
Left=Wall
MainLight1=0
MainLight2=0
SourceLight1=0
SourceLight2=0
AnimLoop1=0
AnimLoop2=0
AnimLoop3=0
Doors=0
Sounds=0
PathNode=O
Orientation=0
ImageMap2D=MI_temp01
[TILE20]
Model=N01_LESN_D -Модель(Нижняя часть лестницы)
WalkMesh=msb01
TopLeft=Desert
TopLeftHeight=0
TopRight=Desert
TopRightHeight=0
BottomLeft=Desert
BottomLeftHeight=0
BottomRight=Desert
BottomRightHeight=0
Top=
Right=
Bottom=
Left=
MainLight1=0
MainLight2=0
SourceLight1=0
SourceLight2=0
AnimLoop1=0
AnimLoop2=0
AnimLoop3=0
Doors=0
Sounds=0
PathNode=O
Orientation=0
ImageMap2D=MI_temp01
Затем в группы добавляем:
[GROUP1]
Name=UPwall
StrRef=68733
Rows=2
Columns=1
Tile0=20
Tile1=19
Теперь ITP
В особенности добавляем новый элемент со след-ми значениями :
Unit32 StrRef - ссылка на ID
ResRef ResRef - указываете имя модели центрального тайла.
Всё теперь тайлсет закончен!!!!!!!
Глава вторая.
Создание персонажей.
У нас есть тайлсет, но орки и демоны на фоне бункеров и укреплений
- смотряться как-то нелепо, согласитесь?
И так в МАХ-е сделали модель пехотинца(я еще немно подправил файлы
с анимацией персонажей, чтобы винтовка, о которой реч пойдет позже,
не смотрелась глупо):
-теперь надо её прописать!!
Открываем Apperance.2da
и в конец файла добавляем сточку:
ID 300 -последний.
Label Peh -имя
STRING_REF 68735 -ID из Dialog.tlk
NAME Peh -принадлежность
RACE c_peh - модель
ENVMAP default
BLOODCOLR R
MODELTYPE F
WEAPONSCALE 1
WING_TAIL_SCALE 1
HELMET_SCALE_M 1
HELMET_SCALE_F 1
MOVERATE NORM
WALKDIST 1.6 -т.к модель размером с обычного человека.
RUNDIST 2.7
PERSPACE 0.3
CREPERSPACE 0.5
HEIGHT 1
HITDIST 0.3
PREFATCKDIST 1.7
TARGETHEIGHT H
ABORTONPARRY 1
RACIALTYPE 11
HASLEGS 1
HASARMS 1
PORTRAIT ****
SIZECATEGORY 3
PERCEPTIONDIST 9
FOOTSTEPTYPE 0
SOUNDAPPTYPE 0
HEADTRACK 1
HEAD_ARC_H 60
HEAD_ARC_V 30
HEAD_NAME head_g
BODY_BAG 6
TARGETABLE 1
закатывайте Apperance в overide и увидете новую модель персонажа.(более
подробное описание apperance см. в приложении).
Глава третья.
Оружие.
Персонаж есть, но вооружен луком?!!!! - нееет надо и его хотябы
заменить.
Есть модель оружия и его иконка.
Прописать её можно так (у меня были некоторые проблемы с вводом
нового дистанционного оружия -с обычным всё в норме).
Baseitems.2da
Не будем мучаться и просто введем некоторые корективы в тяжелый
арбалет, а в частности
Label vint - имя
Name 68736 - имя в игре.
ModelType 0 - т.к. у нас модель+иконка.
ItemClass vint -модель
(описание Baseitems.2da см. в приложении.)
Теперь у нас почти новая игра.......- но есть еще многое, что нужно
по-меньшей мере переделать.
Продолжение следует........(если оно потребуется).
Приложения
и скриншоты >>>
Внимание!
Данный
текст является интеллектуальной собственностью. Любое цитирование
материалов допустимо только со ссылкой на наш сайт!
|