Форумы Homeworld3.RU

Форумы Homeworld3.RU (http://www.homeworld3.ru/forum/index.php)
-   Орбитальный Стапель [HW1 & HWC Modding] (http://www.homeworld3.ru/forum/forumdisplay.php?f=23)
-   -   [HW:C] Вопросы по модостроительству (http://www.homeworld3.ru/forum/showthread.php?t=1635)

AmDDRed 01-22-2010 04:13 PM

Re: [HW:C] Вопросы по модостроительству
 
1) Бейся к Ксел-Наге, он тут чудеса ХВ-моддинга демонстрировал, но куда-то пропал;
2) Можно переконвертировать. [HW2]Universe mod - тому пример. Впрочем, в [HW2]FX mod тоже используют дредноут Сомтау, правда, в качестве тяжёлой техники кадеши...

Fencer 01-26-2010 03:50 PM

Re: [HW:C] Вопросы по модостроительству
 
Вопрос конечно-же глупый, но ковыряться самому, сил уже не осталось...

Прошу обьясните мне, желательно пошагово, как в меню строительства HWC, менять один тип корабля, на другой, к примеру фрегат-улей на ионный, служитель на перехватчика... ну думаю дальше можно не продолжать... тут у меня одна идея возникла, а чтобы воплотить её в жизнь нехватает знаний...

Прошу не оставьте сей призыв о помощи без внимания.

Ten 01-27-2010 08:39 PM

Re: [HW:C] Вопросы по модостроительству
 
1 Attachment(s)
Прохождение за кушан/таидан? Или альтернативная история без притеснений крупных киитов мелкими, в силу чего последние свободно могут использовать уже готовые и зарекомендовавшие себя решения, а не изобретать велосипед? :)

Для начала – как и в ХВ1, в ХВК все корабли рассортированы по папкам в зависимости от расы:
  • race_beast – неуклюжий плюшевый зверёк со странным именем (с);
  • race_derelict – разнокалиберные обломки и прочий космический мусор техногенного происхождения;
  • race_kushan – кушане, сиречь хигаряне;
  • race_p1 – туранские рейдеры;
  • race_sectсектоиды сектанты Сомтау собственной персоной ;)
  • race_taidan – имперские и республиканские корабли таидан в ассортименте;
  • race_traders – Бентузи, Фаал-Корумы, исследовательские станции и прочие корабли, не попавшие в одну из предыдущих категорий.
Далее. За каждым кораблём в этих папках закреплены файлы следующих расширений: .shp (конфиг), .lod (пути к моделям разных уровней детализации) и .mad (при наличии у корабля анимации), а также папка с одноимённым названием, в которой, собственно, и хранятся модели с текстурами. Поскольку количество кораблей на расу и их названия жёстко задаются в экзешнике, придётся перезаписывать конфиги, а также папку с геометрией, т.к. горизонтальные двоеточия (..) для выхода на уровень выше не прокатят.


Если браться за перехватчик, для начала в папке с игрой создаём папку race_sect и в неё из папки race_kushan, что в Cataclysm.big, копируем файлы kheavyinterceptor.shp, kheavyinterceptor.lod, ну и саму папку kheavyinterceptor. После этого необходимо открыть файл kheavyinterceptor.shp и слегонца его подправить:
  1. Прежде всего нужно сменить название секции конфига в первой строчке:

    Code:

    [sAcolyte]
  2. Аналогично необходимо изменить название lod-файла и путь к mex-файлу (в последнем хранятся описатели опорных точек модели):

    Code:

    LODFile                            sAcolyte.lod
    pMexData                            sAcolyte\Rl0\LOD0\kHeavyInterceptor.mex

    Кстати, сам mex-файл можно не переименовывать, главное правильно указать путь к нему.
  3. Поскольку в двиг зашито, что аколит собирается в АКВ, необходимо добавить к перехватчику точки стыковки и её анимацию. Для этого в оригинальном sacolyte.shp ищем раздел Dock Points и выходим на следующий кусок текста:

    Code:

    ;Dock Points
    ;=---------=
    NUMBER_OF_DOCK_POINTS          1

    ; format is DockPoint          name,type,flyawaydist,mindist,maxdist,[headingdirection,updirection]  (0=up,1=right,2=forward,4=down,5=left,6=back) for direction
    DockPoint                      Link,DPT_Link,185,185,200,0,2

    Заменяем им соответствующий раздел в новом файле. Также ищем раздел Animation в конце конфига аколита, получаем:

    Code:

    ;Animation
    ;=--------=
    NUMBER_OF_ANIMS        4

    ANIM        0        CombatIn
    ANIM        1        CombatOut
    ANIM        2        Link
    ANIM        3        Unlink

    Переносим эти строчки в раздел Animation конфига перехватчика. Конечно, необходимых для анимации объектов вроде ракетниц у него нет, но при ошибках в анимации движок её просто не будет проигрывать, а вот при её отсутствии успешно полетит в направлении форточки, так что прописывать всё равно придётся. Так же, как выяснилось опытным путём, понадобится указать параметр linkDistance, иначе перехватчики при попытке сборки в АКВ будут вести себя не очень-то прилично. В разделе Special ищем строчку

    Code:

    linkDistance                        50.0
    и добавляем её в раздел Special конфига перехватчика.
  4. Теперь пушки, а конкретно – ракетницы. Хотя опорных точек в mex-файле перехватчика для них не предусмотрено, игра «знает» об их наличии, поэтому при залпе вылетает самостоятельно, причём опять в форточку. Чтобы вылетали всё-таки ракеты, нужно скопировать описатели пушек из конфига аколита (раздел Weapons) и поместить их после описания пушек перехватчика, а параметр NUMBER_OF_GUNS (общее количество орудий) выставить в 4.
  5. Ну и по мелочи – неплохо бы указать, что корабль модернизируется в ангаре (разработчики хваки почему-то посчитали, что «Клинок» – само совершенство, и дорабатывать его больше никогда не придётся :)). Для этого ищем раздел Basic Ship Stats и добавляем в его конец строчку из исходного sacolyte.shp:

    Code:

    UpgradeByDocking                                        TRUE

Примечание: разумеется, название «раздел» условно, переменные в shp-файле можно указывать в произвольном порядке. Но для удобства разработчики сгруппировали их по назначению, и далее под разделом будет пониматься кусок конфига, начинающийся комментариев вида:

;Название Раздела
;=--------------=

С настройкой shp-файла покончено. Переименовываем kheavyinterceptor.shp в sacolyte.shp, kheavyinterceptor.lod в sacolyte.lod, а папку kheavyinterceptor в sacolyte (это можно было сделать сразу, но возникла бы путаница в названиях старого и нового конфигов, поэтому с переименованием решил подождать).


Теперь нужно подкорректировать lod-файл, в котором хранятся пути к моделям различной детализации. Как и в случае с mex-файлом, имена geo/peo-файлов можно не изменять, главное чтобы к ним правильно был прописан путь, т.е. игра смогла их найти:

Code:

[Auto-Generated LOD file]
pointColor                  255,0,0


type0                      MESH
pMeshFile0                  sAcolyte\Rl0\LOD0\kHeavyInterceptor.geo
mOn0                        1.0
bOn0                        106531
mOff0                      1.0
bOff0                      118368

type1                      MESH
pMeshFile1                  sAcolyte\Rl0\LOD1\kHeavyInterceptor.geo
mOn1                        1.0
bOn1                        377243
mOff1                      1.0
bOff1                      419159

type2                      MESH
pMeshFile2                  sAcolyte\Rl0\LOD2\kHeavyInterceptor.geo
mOn2                        1.0
bOn2                        1883515
mOff2                      1.0
bOff2                      2092795

type3                      MESH
pMeshFile3                  sAcolyte\Rl0\LOD3\kHeavyInterceptor.geo
mOn3                        1.0
bOn3                        4105586
mOff3                      1.0
bOff3                      4561762

type4                      MESH
pMeshFile4                  sAcolyte\Rl0\LOD4\kHeavyInterceptor.geo
mOn4                        1.0
bOn4                        390581984
mOff4                      1.0
bOff4                      433980000

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


И последний штрих – кэш текстур. Для экономии памяти и возможности использовать одну текстуру для нескольких моделей они хранятся отдельно, кроме того, в игре есть листниг текстур: файл textures.ll, в котором хранятся их имена, размеры по горизонтали и вертикали, контрольные суммы – в общем, вся необходимая информация, чтобы было легко искать дубли и не грузить лишнего в память (не забываем, что двиг первого ХВ начал разрабатываться в 1997 году, когда возможности настольных компьютеров в плане обработки 3D-графики были весьма скромными). Судя по всему, размеры текстур тоже подхватывается из этого файла (а не из lif-ок, в которых они хранятся), и если он не совпадает с реальным, текстура накладывается неправильно и смотрится прескверно. Стало быть, записи листинга необходимо либо изменять (это придётся делать ручками, т.к. листинг создаётся на этапе преобразования текстур из psd в lif), либо удалять, что приведёт лишь к незаметному падению производительности.

Для добавления/удаления/просмотра записей в textures.ll есть реликовская утилита liflist.exe, слегка модифицированная для ХВК, чтобы обойти макс. ограничение на количество текстур в листинге (12000). Для неё понадобится список текстур, который можно сделать с помощью команды dir, дописав руками недостающее, либо несколькими щелчками в TEXTURES.LL Tool v2.0.0 от Spooky. Запускаем её, открываем файл textures.ll (он лежит в корне Cataclysm.big), пока идёт загрузка, переходим на вкладку «Texture Removal», ждём окончания, переключателем устанавливаем версию для Cataclysm, ставим галочку напротив «Race Sect» и жмём кнопку «Make Removal.mif». Ждём, пока количество обработанных записей с средней «колонке» не будет равно их общему количеству, после чего получаем искомый Removal.mif со списком текстур, записи о которых и будут удалены из textures.ll. В принципе, для замены аколита на перехватчик в mif-файле можно оставить лишь следующие строчки:

Code:

TEXTURES += race_sect\sacolyte\rl0\LOD0\page0.lif
TEXTURES += race_sect\sacolyte\rl0\LOD0\page1.lif
TEXTURES += race_sect\sacolyte\rl0\LOD0\page2.lif
TEXTURES += race_sect\sacolyte\rl0\LOD1\page0.lif
TEXTURES += race_sect\sacolyte\rl0\LOD1\page1.lif
TEXTURES += race_sect\sacolyte\rl0\LOD1\page2.lif
TEXTURES += race_sect\sacolyte\rl0\LOD2\page0.lif
TEXTURES += race_sect\sacolyte\rl0\LOD2\page1.lif
TEXTURES += race_sect\sacolyte\rl0\LOD3\page0.lif
TEXTURES += race_sect\sacolyte\rl0\LOD3\page1.lif
TEXTURES += race_sect\sacolyte\rl0\LOD4\page0.lif
TEXTURES += race_sect\sacolyte\rl0\LOD4\page1.lif

(я вообще любитель тонкой настройки всего и вся :)), но для дальнейших экспериментов с сектантами лучше удалить из листинга все их текстуры – так много проще будет отлавливать возможные ошибки (вопреки ключу ХВК не пишет на диск журнал отладки).

Вернёмся к liflist, которым и будем править листинг. Эта утилита консольная, для того, чтобы ею воспользоваться, необходимо в обязательном порядке поместить файлы textures.ll и Removal.mif в папку DataSrc, после чего запустить программу со следующими параметрами:

Code:

liflist.exe S DataSrc\textures.ll DataSrc\Removal.mif
Если не дружите с консолью (хотя крайне желательно – без владения компьютером на «продвинутом» уровне даже моддингом заниматься практически безсмысленно), можно рядом с liflist.exe в блокноте создать файл liflist.bat и скопировав в него строку запуска, а во второй строке написав команду pause, и запустить. После выполнения программы все записи в mif-файле будут удалены из textures.ll. Кладём его в корень папки с ХВК и запускаем игру.

Собственно, на этом всё – теперь вместо аколита получили кушанский «Блэйд», который, тем не менее, умеет собираться в АКВ (как бы парадоксально это не выглядело) и из ниоткуда пулять ракетами :)


Аналогичным образом мультибим заменяется на ионник, разве что возни меньше, т.к. у кушанских фрегатов нет анимации, да и в эсминцы они, к счастью, не собираются. Зато толку от них ноль: мультибимское фигуряние, видимо, тоже зашито в движок, в итоге обновлённые фрегаты роят-крутятся и практически не стреляют. В общем, если хочешь, пробуй, должно получиться, только не забудь про параметры MultiBeamRangeRatio, repositionTime, circleRange и fullMovementFreedom раздела Special, также придётся поменять тип / размер пушки с GUN_Fixed / GUNSIZE_LARGE на GUN_HiddenGimble / GUNSIZE_SMALL, т.к. иначе фрегат стрелять отказывается категорически.

В качестве примера – готовые ионник и аколит (распаковать в папку с игрой):

Fencer 01-27-2010 09:25 PM

Re: [HW:C] Вопросы по модостроительству
 
Что бы я без тебя делал Ten, в очередной раз выручил, спасибо, подробно обьяснил, что и как. Хотя после прочтения всего, что надо сделать, я честно скажу чуть не упал, ну да ладно. "Цель, оправдывает средства", говорят, что ж... проверю достоверность этого высказывания на деле.

Хм... не за что. Но на самом деле это капля в море :) И да - отнюдь не всегда цель оправдывает средства...

Кстати, вышеописанные принципы работают и в первом Homeworld - собственно, я куда больше экспериментировал над ним.
=T=

Evgeniy 01-28-2010 09:32 AM

Re: [HW:C] Вопросы по модостроительству
 
Спасибо Ten, понял где ошибся. Теперь буду знать как делать правильно.

Фёдор 01-29-2010 08:06 PM

Замена кораблей в меню постройки
 
Как заменить, допустим фрегат-таран, на кушанский ионный фрегат. Я пробовал так: открывал Cataclysm.big, сохранил все папки и файлы kioncannonfrigate. Потом скопировал их в папку race_sect изменил название Shp файла с kioncannonfrigate на srammingfrigate. В итоге вместо фрегата-тарана строится модель ионного фрегата без текстур.

При изменении всех названий .peo, .geo, .mex и исправлении .shp-файла вообще получаю зелёный куб. В Homeworld 2 получалось заменять корабли вот таким вот макаром. Подскажите, кто знает как заменить в Катаклизме.

Evgeniy 02-04-2010 03:36 PM

Re: [HW:C] Вопросы по модостроительству
 
Заменить фрегат-таран не получится, так как его таранный способ атаки вшит в движок. Как не заменяй всё равно получишь таранный корабль. Саму модельку корабля у меня заменить получилось (менял на ракетный эсминец), но повторю, смысла нет.

Фёдор - ты наверное где-то ошибся, бесцветные белые корабли и зелёные кубы у меня тоже получались. Переименуй папку kioncannonfrigate на srammingfrigate, проверь файлы .lod и .shp на правильность адресов.

Лёшка 02-05-2010 06:38 PM

Re: [HW:C] Вопросы по модостроительству
 
Пожалуй задам свой вопрос, который меня мучил :)
Я думаю все помнят Мазершип Твари из 10-й миссии :) Так вот, где меняется скорость перезарядки инфекционного луча?

Fencer 02-05-2010 07:58 PM

Re: [HW:C] Вопросы по модостроительству
 
Это указывается в файле bmothership.SHP, находится он в папке race_beast. Чтобы изменить параметр, отвечающий за время перезарядки, находишь строку:

Code:

NUMBER_OF_GUNS                                12

GUN                0
{
Type                                        GUN_HiddenGimble
GunSize                                        GUNSIZE_MEDIUM
StartUpgradeLevel                        WEAPON_BEASTINFECT
EndUpgradeLevel                                WEAPON_BEASTINFECT
DamageMult                                1.0
BulletLength                                10000.0                ; visual only.  Length of bullet on screen
BulletRange                                10000.0                ; distance bullets travel before disappearing
BulletSpeed                                10000.0                ; measured in m/s.
BulletMass                                0.0                ; mass of bullet
FireTime                                90.0                ;fire repeat rate (reciprocal = shots/second)
MinAngle                                0
MaxAngle                                90
}

и меняешь числовое значение, по своему усмотрению. То же делай и с остальными орудиями под наименованием WEAPON_BEASTINFECT. Сей метод также прокатит с Тяжёлым крейсером, и Носителем.

Вот только работает всё это лишь в мультиплеере. В сингле же Корабль-матка всё-равно продолжает стрелять с интервалом в 1 сек, не взирая на какие-либо изменения (кроме предпоследней миссии, в ней указанное время имеет значение).

Методов "укрощения" заражённого модуля, что жарит заразой в 4ой миссии без остановки, я не знаю. Изменение параметра строки FireTime в файле dbeastmothership, что находится в папке race_derelict, так же ни к чему не приводит.

Лёшка 02-06-2010 12:46 PM

Re: [HW:C] Вопросы по модостроительству
 
Quote:

Originally Posted by Ebonite (Post 35959)
Сей метод также прокатит с Тяжёлым крейсером, и Носителем

Это хорошо, тока с крейсером смысла не вижу, ибо он заразой должен стрелять как бы между делом, а вот на керриер надобно бы поставить. :)

Ebonite, большое тебе спасибо, пошёл пробовать. :friends:

Fencer 02-06-2010 12:52 PM

Re: [HW:C] Вопросы по модостроительству
 
Меня вот лично интересует, как прилепить инфекционную пушку, на другие корабли Твари?
Или ещё лучше: на корабли Сомтау?

Fencer 02-09-2010 08:15 PM

Re: [HW:C] Вопросы по модостроительству
 
1 Attachment(s)
Вот для тех, кто ни разу не рулил Заражённым исследовательским модулем.

Распаковывайте папку MultiPlayer, из биг-файла игры (в ней все мультиплеерные карты), поместите её туда, где хранится установленная игра. Открывайте любую понравившуюся папку с картой, например coldwar2 (карт там много), затем открываете текстовиком файл mothership_1 (единица означает номер игрока, там есть и под другими номерами), и в конце, добавляйте строку:
Code:

Ships    ,100.0,100.0,100.0,-90.0,RACE_DERELICT,dbeastmothership,1,WALL_FORMATION|?|?,0,?
Первые три числовых значения - расположение корабля по оси координат x, y, z.
Запускайте карту и пользуйте модуль, как душе угодно.

Вот карта, для примера, просто распаковывайте всё, в диррективу с игрой:

Evgeniy 02-10-2010 09:36 AM

Re: [HW:C] Вопросы по модостроительству
 
Хочу добавить корабли из HWC в HW2. Скинте пожалуйста ссылку на конвертер для моделей и, если можно, объясните поподробнее данный процесс.

И раз уж затронул эту тему. Почему модели кораблей из HW1 не переносятся в HWC (игра вылетает)?

Fencer 02-10-2010 12:24 PM

Re: [HW:C] Вопросы по модостроительству
 
Насколько я знаю, там с текстурами химичить надо, добавлять новые ship, lod, mex, peo, geo файлы... вообще, опыта у меня в этом деле пока немного, поэтому это всё, что я знаю и могу сказать.

Evgeniy 02-10-2010 04:52 PM

Re: [HW:C] Вопросы по модостроительству
 
Shp и lod файлы я делал свои по аналогии с катаклизмом - не помогает. Там что-то с моделями не то.

Flagman 02-11-2010 02:16 PM

Re: [HW:C] Вопросы по модостроительству
 
Лучше перенести шахтёров Сомтау на второй хом, я даже не поленюсь текстурки перерисовать, чтобы они были аффигенскими :cool::D

Fencer 02-12-2010 02:23 PM

Re: [HW:C] Вопросы по модостроительству
 
На меня тут идея снизошла, но вот беда... знаний катострофически мало...

Я заметил, что при обработке корабля, пучком, внутри него материализуется его заражённый двойник. По окончанию "кривляний", чистый аналог исчезает...

Но при обработке "Подковы" Бентуси, внутри неё появляется заражённый Служитель (сам проверял, в мультиплеере).
Подскажите: где указывается корабль, который должен появиться, при заражении чистого?

Evgeniy 02-13-2010 06:37 AM

Re: [HW:C] Вопросы по модостроительству
 
Была такая ерунда и у меня. Вылечил так: в файле .shp во вкладке special есть строка beastAttackConvertTo *. Звездочка - название корабля, в который превращается обьект при заражении. Заменяешь то, что у тебя вместо звездочки на trFloatingCity. При заражении получится обменник Бентузи. Неплохо было бы подправить текстурки, чтобы он выглядел как зараженный, но это я уже не умею.

И все таки, почему не получается перенести корабли из HW в HWC?

Fencer 02-13-2010 11:58 AM

Re: [HW:C] Вопросы по модостроительству
 
Спасиб, что обьяснил, а заражённый корабль Бентусей есть в Rebirth Mod'е на HW:C. Оттуда возьму.

Не уверен, но по моему успешный перенос кораблей, так-же зависит и от файла textures.ll, в нём прописаны текстуры, используемые на кораблях. Попробую сам пошерудить, может быть докопаюсь истины.

Evgeniy 02-16-2010 10:59 AM

Re: [HW:C] Вопросы по модостроительству
 
Спасибо, кораблик Бентузи вытащил, получилось неплохо. Textures.ll отвечает за накладывание текстур на модели кораблей. Если изменять модель кораблей, то надо удалить эту информацию из Textures.ll, иначе текстуры будут накладывать неправильно, однако все равно всё будет работать без вылетов.

Я наверно при переносе модели что-то напутал, буду переделывать.


All times are GMT +3. The time now is 05:41 AM.