View Single Post
Old 06-03-2004, 12:14 AM   #1
ZETT
Командир эскадрильиСтарый алкоголик
 
ZETT's Avatar
 
Faction:
Предтечи

Join Date: Jun 2003
Location: VRN
Posts: 294
Сообщение Руководство по созданию карт

Автор: Sco®pion
scorpion@rts-game.ru.

http://hw2.rts-game.ru/content/articles/articles9.html
_____________________________________

Руководство по созданию карт

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


1.ПОДГОТОВКА

Первым делом надо исправить оплошность разработчиков HW2. Дело в том, что они почему-то не создали папочки в которую нужно складывать дополнительные карты. Ну ничего, создадим её за них . Зайдите в вашу папку с Homeworld2 (кстати сделать карту можно только для полной версии HW2, демка новые карты просто не увидет), в ней вы увидите папку "Data", зайдите в неё. В папке "Data" создайте папки "LevelData\multiplayer\deathmatch\". Папка "deathmatch" - то что нам нужно, в ней мы и будем создавать карты.


2. СОЗДАНИЕ ФАЙЛА КАРТЫ

Вас должно быть мучают вопросы: "А в каком редакторе мы будем творить трёхмерную карту Homeworld2? Сколько он весит и откуда его качать?". Расслабьтесь, ничего качать не надо, потомучто самый крутой редактор 3D-карт, и вообще чего угодно, у вас уже есть, и имя ему Блокнот )). Да, карта HW2 - есть ни что иное как обычный текстовик, который написан определённым образом и имеет название "*.level". Итак, создайте текстовый файл и переименуйте его, сменив расширение на "level" (при этом непосредственно имя файла ни на что не влияет и может быть любым). Откройте файл, начинаем писать...


3. ДОБАВЛЕНИЕ ИНФОРМАЦИИ О КАРТЕ

Первым делом надо внести информацию о названии карты, и о количестве игроков, на которое она рассчитана. Эта информация будет видна в меню выбора карты. Пропишем:

levelDesc = "xxx"
maxPlayers = y


Здесь xxx - имя карты, y - количество игроков


4. ДОБАВЛЕНИЕ ИНФОРМАЦИИ ОБ ИГРОКАХ

Добавьте следующие строки. Менять их не нужно (рассчитано на 2-х игроков, если надо больше - дополните по аналогии):

player = {}
player[0] = {
id = 0,
name = "Vaygr",
resources = 1500,
raceID = 1,
startPos = 1,
}
player[1] = {
id = 1,
name = "Hiigaran",
resources = 1500,
raceID = 0,
startPos = 1,
}



5. ДОБАВЛЕНИЕ СТАРТОВОЙ ПОЗИЦИИ ИГРОКОВ

Стартовые позиции игроков указываются в координатах X, Z и Y (обратите внимание что начало координат находится в центре карты).
Пропишите (рассчитано на 2-х игроков, если надо больше - дополните по аналогии):

function DetermChunk()
addPoint("StartPos0", {X, Z, Y}, {A, B, C})
addPoint("StartPos1", {X, Z, Y}, {A, B, C})


X, Z, Y - координаты (указываются в метрах, могут быть отрицательными),
A, B, C - на эти уголы (в градусах), относительно разных координат будут повёрнуты корабли в начале игры (имеет смысл A и C приравнять к нулю. Их изменение влияет на наклон кораблей, т.е. можно сделать горизонтальный Mothership, или наоборот - вертикальный Flagship, но увы ненадолго. Ещё при телепортации они начнут выравниваться и вскоре примут надлежащее им положение. А вот параметр "B" влияет на то, в какую сторону будут повёрнуты корабли и его вы вольны менять как вам вздумается).


6. ДОБАВЛЕНИЕ РЕСУРСОВ, ОБЪЕКТОВ

Астероиды
Для добавления астероида пропишите:

addAsteroid("AsteroidType", {X, Z, Y}, RU, 0, 0, 0, 0)

AsteroidType - тип астероида, принимает значения от Asteroid_1 до Asteroid_5 (Asteroid_1 самый мелкий, Asteroid_5 самый крупный). Причём Asteroid_1 и Asteroid_2 не являются источниками ресурсов.
X, Z, Y - координаты
RU - количество ресурса (указанная цифра означает процент ресурса в астероиде, от максимального количества ресурса, характерного для астероида данного размера)

Облака
Для добавления облака пропишите:

addCloud("polySurface1", "CloudType", {X, Z, Y}, {R, G, B, 0}, 0, Size)

CloudType - тип облака, принимает значения: cloud_0, cloud_nores, cloud_nores2 и cloud_nores3.
X, Y, Z - координаты
R, G, B - устанавливает RGB-цвет (0=0, 1=255)
Size - размер в метрах

Пылевые облака
Сенсоры не видят того, что в этих облаках. Внутри облака ионные лучи не работают (если я верно понял).
Для добавления облака пропишите:

addDustCloud("polySurface1", "DustCloudType", {X, Z, Y}, {R, G, B, 1}, 0, Size)

DustCloudType - тип облака, принимает значения: dustcloud_0, dustcloud_nores, dustcloud_nores2, dustcloud_nores2_m05, dustcloud_nores3, dustcloud_nores3_m05, dustcloud_nores_m05, dustcloud_nores_nocharge и dustcloud_teal.
X, Y, Z - координаты
R, G, B - устанавливает RGB-цвет (0=0, 1=255)
Size - размер в метрах

Туманность
В туманности корабли получают повреждения
Для добавления туманости пропишите:

addNebula("Nebula4_OLD1", "NebulaType", {X, Z, Y}, {R, G, B, 1}, 0, Size)

NebulaType - тип туманности, принимает значения: m05_dustcloud_nebula, m05_nebualdustcloud_nores, m05_nebualdustcloud_nores2, m05_nebualdustcloud_nores3, m07_foundry_radiation, m08_nodamage_radiation, m11_bentusi_debris, m11_bentusi_radiation, mp_bentusi_radiation, nebula01_cream, nebula01_teal, nebula_0, nebula_hiding and radiation.
X, Y, Z - координаты
R, G, B - устанавливает RGB-цвет (0=0, 1=255)
Size - размер в метрах

"Галька"
Обнаруживается сенсорами в виде небольших коричневых пятнышек, но ничего не делает
Для добавления гальки пропишите:

addPebble("PebbleType", {X, Z, Y}, 0, 0, 0)

PebbleType - тип гальки, принимает значения: pebble_0, pebble_1, pebble_2 и pebble_3.
X, Y, Z - координаты

Перерабатываемые обломки
Для добавления обломков пропишите:

addSalvage("ChunkType", {X, Z, Y}, RU, 0, 0, 0, 0)

ChunkType - тип обломков, принимает значения от Slv_Chunk_Lrg01 до Slv_Chunk_Lrg05 (Slv_Chunk_Lrg01 самый мелкий, Slv_Chunk_Lrg05 самый крупный).
X, Y, Z - координаты
RU - количество ресурса (указанная цифра означает процент ресурса в обломках, от максимального количества ресурса, характерного для обломков данного размера)

Корабли (И прочий стафф?)
Для добавления пропишите:

addSquadron("SquadronType", "SquadronType", {X, Z, Y}, -1,{0, 0, 0}, 0, 0)

SquadronType - задаёт тип объекта. На данный момент известны: meg_bigred, meg_misslefrigate, meg_sajhulknose_ui, meg_sajhulkpanels, meg_foundry, meg_foundrydebris_chunk2, meg_veildebris_chunk1, meg_foundrydebris_chunk4, meg_sajhulkpanels, meg_dreadnaughtberth, meg_asteroid_nosubs, meg_progenitorpowermodule, meg_foundrydebris_chunk3.
X, Y, Z - координаты


7. ЗАДАНИЕ РАЗМЕРА КАРТЫ

Для задания размера пропишите:

setWorldBoundsInner({0, 0, 0}, {X, Z, Y})
end


X, Z, Y указывают половинную длину, высоту и ширину карты.


8. ЗАДАНИЕ ПАРАМЕТРОВ КАРТЫ

Пропишите:

function NonDetermChunk()
fogSetActive(0)
setGlareIntensity(0)
setLevelShadowColour(0, 0, 0, 1)
loadBackground("X")
setSensorsManagerCameraDistances(MIN, MAX)
setDefaultMusic("Data:sound/music/Y/Z")
end


X - фон карты. Может быть: white (белый), black (чёрный), m01, m02, m03, m04, m05, m06, m07, m08, m09, m10, m11, m12, m13, m14 или m15.
Y - папка с фоновой музыкой. Может быть Ambient (обычная музыка) или Battle (музыка, проигрываемая во время битв)
Z - музыкальный трек. Для Ambient: amb_01, amb_02, amb_03, amb_04, amb_05, amb_06, amb_07, amb_08, amb_09, amb_10, amb_11, amb_12, amb_13 and amb_14. Для Battle: battle_01, battle_04, battle_04_alt, battle_06, battle_keeper, battle_movers, planet_killers, Battle_sajuuk and bentus_arrival.

Last edited by Ten : 11-24-2006 at 04:40 PM. Reason: форматирование
ZETT is offline   Reply With Quote