500
  • Страница 1 из 1
  • 1
Модератор форума: tupi857  
Форум » Видоизменение » Технологии » Первые шаги в моддинге
Первые шаги в моддинге
# 112:35 05/06/2019
9
tupi857 (jango)
Cмотритель

 Вне сети
Мы не можем обсудить все детали в этом коротком туре - только самые важные аспекты. Но, надеюсь, будет достаточно иметь первый обзор. Остальное как всегда сделай сам. Изучение и понимание файлов данных намного эффективнее, чем выполнение всех шагов после руководства.

Папка «data» содержит три наиболее часто используемых файла данных для моддинга: proto.xml, techtree.xml и stringtable.xml. Они также подходят для новичков, чтобы получить больше опыта в «обучении на практике» или также «методом проб и ошибок».
Одновременно с этими файлами уже могут быть сделаны наиболее часто необходимые изменения.

Эти три файла не нужно преобразовывать в .xmb - они также принимаются как необработанные XML-файлы. Версия .xmb берется только в том случае, если исходный файл .xml отсутствует или, возможно, поврежден.
Так что - если не трогать - .xmb можно рассматривать как «аварийное резервное копирование».

Stringtable

Мы начинаем наше путешествие с самых простых и простых для понимания данных: файл data \ stringtable.xml содержит все отображаемые тексты - будь то внутри самой игры, для пользовательского интерфейса, для ESO, для редактора сценариев и т. Д. .
Таким образом, тексты , все вместе в одном файле, это легко адаптировать версию на другой язык - только stringtable должен быть заменен (кроме голосовых файлов).

Базовая структура строковой записи:
<String _locID = "{number}"> {text} </ String>
Она может быть расширена некоторыми дополнительными атрибутами, например, например. символ = , символ игры = ,, но это не интересно в целом.
Для нас важен только идентификатор строки, на который ссылаются все остальные файлы.

Обратите внимание!
Будьте осторожны при редактировании таблицы строк: многие записи очень длинные - некоторые строки содержат более 1000 символов. Нежелательное переформатирование может разрушить файл.

Пример: изменение отображаемого имени устройства
Чтобы изменить имяигрового устройства, вы должны найти соответствующий идентификатор в прото (см. Ниже). Затем найдите этот идентификатор в stringtable и измените следующий текст в соответствии со своими пожеланиями.

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

Файл

прототипа Файл прототипаdata \ proto.xml содержит описания и характеристики всех подразделений, зданий и других объектов.
Каждый объект имеет свою собственную запись прототипа в формате
<Unit id = '{number}' name = '{notation}'>
... {теги данных} ...
</ Unit>


В качестве примера мы рассмотрим типичный прототип для модуля - Мушкетер:

<Unit id = '214' name = 'Мушкетер'>
Уникальный UnitID и имя. На юниты в игре ссылаются только по названию. UnitID используется в сохраненных играх, сценариях и в целях отладки.

<DBID> 3 </ DBID>
Идентификатор базы данных, очевидно, только для внутреннего использования Ensemble.
Комментарий: я никогда не видел этот DBID, на который ссылаются другие файлы, и он работает также без этого тега. Но, возможно, для будущей совместимости тег следует сохранить.

<DisplayNameID> 22805 </ DisplayNameID>
Текстовый идентификатор для отображения имени устройства. Ссылаясь на stringtable.

<EditorNameID> 25023 </ EditorNameID>
То же, что и выше, но для обозначения в редакторе сценариев.

<PopulationCount> 1 </ PopulationCount>
Количество слотов населения, которое занимает единица.

<ObstructionRadiusX> 0,4900 </ ObstructionRadiusX>
<ObstructionRadiusZ> 0,4900 </ ObstructionRadiusZ>

Размер, экстент единицы измерения для обнаружения столкновений.

<FormationCategory> Ranged </ FormationCategory>
В зависимости от этого флага блок располагается в формации.

<MaxVelocity> 4.0000 </ MaxVelocity>
Это нормальная скорость движения для юнита.

<MaxRunVelocity> 6.0000 </ MaxRunVelocity>
Некоторые действия могут временно увеличить базовую скорость до этого значения.

<MovementType> land </ MovementType>
Куда движется юнит. Может быть «земля», «вода» или «воздух».

<TurnRate> 18,0000 </ TurnRate>

<AnimFile> unit \ infantry_ranged \ musketeer \ musketeer.xml </ AnimFile>
Соответствующий файл анимации в папке «art». Файл anim содержит всю информацию о модели для внешнего

вида
, вложений, анимации действий, текстур и т. Д. <ImpactType> Flesh </ ImpactType> <PhysicsInfo> dude </ PhysicsInfo>
В основном описания физического движка и системы повреждений.

<Icon> unit \ infantry_ranged \ musketeer \ musketeer_icon_64x64 </ Icon> Значок
отряда, который появляется, например. в очереди поезда здания. Находится в папке "art".

<PortraitIcon> unit \ infantry_ranged \ musketeer \ musketeer_portrait </ PortraitIcon> Портрет
юнита для пользовательского интерфейса. Находится в "

<ShortRolloverTextID> 25669 </ ShortRolloverTextID>
Описание текста, который появляется при наведении курсора мыши на устройство или значок.

<InitialHitpoints> 150.0000 </ InitialHitpoints>Точки попадания, которые
имеет юнит, когда он только что обучен / построен.

<MaxHitpoints> 150.0000 </ MaxHitpoints> Базовые
максимальные Hitpoints единицы. Обычно оба значения HP равны, но для спецэффектов начальные HP могут отличаться.

<LOS> 16.0000 </ LOS>
Линия обзора устройства.

<ProjectileProtoUnit> InvisibleProjectile </ ProjectileProtoUnit>
Снаряд (ы) для дальних юнитов. Возможно более одного попадания снаряда.

<UnitAIType> RangedCombative </ UnitAIType>
Определяет «искусственный интеллект» поведение объекта.

<TrainPoints> 30.0000 </ TrainPoints>
Сколько времени занимает обучение (или построение) юнита.

<Bounty> 10,0000 </ Bounty>
Количество очков опыта, которое получает противник при уничтожении отряда.

<BuildBounty> 10.0000 </ BuildBounty>
XP указывает игроку при сборке юнита.

<Cost resourcetype = 'Food'> 75.0000 </ Cost>
<Cost resourcetype = 'Gold'> 25.0000 </ Cost>

Затраты на обучение / строительство объекта. Обычно из типа «Еда», «Дерево», «Золото». Но также «Корабли» (= поставки) используется для наемников.

<AllowedAge> 1 </ AllowedAge>


<Armor type = 'Hand' value = '0.2000'> </ Armor>
Сопротивление атакам. Может быть типа «Рука», «Дальний» или «Осада». Можно определить только один тип - больше игнорируются. Значение варьируется от 0,00 до 1,00 (0% - 100%).
Тип «Осада» может быть определен, но значение игнорируется.

Теперь идет набор строк из формата
<UnitType> .... </ UnitType>
Эти флаги типов в основном «пассивны», они назначают единицу определенным категориям единиц.
Флаги 'LogicalType ...' используются для проверки нескольких действий.
Флаги «Аннотация ...», например. используется для улучшения целого класса единиц или для отображения и статистики.

<UnitType> LogicalTypeValidSharpshoot </ UnitType>
<UnitType> LogicalTypeNeededForVictory </ UnitType>
<UnitType> LogicalTypeHandUnitsAutoAttack </ UnitType>
<UnitType> LogicalTypeLandMilitary </ UnitType>
<UnitType> LogicalTypeScout </ UnitType>
<UnitType> LogicalTypeValidSPCUnitsDeadCondition </ UnitType>
<UnitType > LogicalTypeGarrisonInShips </ UnitType>
<UnitType> LogicalTypeRangedUnitsAutoAttack </ UnitType>
<UnitType> LogicalTypeVillagersAttack </ UnitType>
<UnitType> LogicalType <<
UnitTyTyTypeTypeTypeTypeTepeTepeTepeTepeTepeTepeTTepeTTepeTTepeTTepeTeTTepeTeTTR
<UnitType> LogicalTypeMinimapFilterMilitary </ UnitType>
<UnitType> Военный </ UnitType>
<UnitType> UnitClass </ UnitType>
<UnitType> Unit </ UnitType>
<UnitType> AbstractGunpowderTrooper </ UnitType>
<UnitType> AbstractInfantry </ UnitType>
<UnitType> AbstractHeavyInfantry </ UnitType>
<UnitType > HasBountyValue </ UnitType>
<UnitType> Ranged </ UnitType>
<UnitType> AbstractCavalryInfantry </ UnitType>
<UnitType> CountsTowardMilitaryScore </ UnitType>
<UnitType> AbstractRangedInfantry </ UnitType>
<UnitType> <UnitType> <UnitType>>

В соответствии с вышеизложенным следующие строки из формата
<Flag> .... </ Flag>
В основном это касается инструкций для самого игрового движка - также в большинстве случаев говорит само за себя.
<Flag> CollidesWithProjectiles </ Flag>
<Flag> ApplyHandicapTraining </ Flag>
<Flag> CorpseDecays </ Flag>
<Flag> ShowGarrisonButton </ Flag>
<Flag> DontRotateObstruction </ Flag>
<Flag> ObscuredByUnits </ Flag>
<Flag > Отслеживаемый </ Flag>

<Command page = '10 'column =' 1 '> Стоп </ Command>
<Command page = '10' column = '0'> Гарнизон </ Command>
<Command page = '10 'столбец = '2'> Удалить </ Command>


Здесь также обычно определяются специальные способности и кнопки build / train.

<Tactics> musketBayonet.tactics </ Tactics>
Ссылка на файл тактики отряда, расположенный в «data \ tactics». Файл тактики содержит подробные технические описания для каждого действия юнита. Это можно рассматривать как связующее звено между прото и anim-файлом.

Наконец, все характеристики прото-действий юнита определены. Помимо режимов атаки также можно собирать, строить, лечить способности здесь.
<ProtoAction>
<Name> BuildingAttack </ Name>
<Damage> 20.000000 </ Damage>
<DamageType> Siege </ DamageType>
<ROF> 3.000000 </ ROF>

<Name> DefendHandAttack </ Name>
<Damage> 13,000000 </ Damage>
<DamageType> Hand </ DamageType>
<ROF> 1.500000 </ ROF>
<DamageBonus type = 'AbstractCavalry'> 3.000000 </ DamageBonus>
</ ProtoAction>
< / ProtoAction> </ ProtoAction> < / ProtoAction> </ ProtoAction> < / ProtoAction> </ ProtoAction> < / ProtoAction> </ ProtoAction> < / ProtoAction> </ ProtoAction> < ProtoAction>
<Name> DefendRangedAttack </ Name>
<Damage> 23.000000 </ Damage>
<DamageType> Ranged </ DamageType>
<MaxRange> 12.000000 </ MaxRange>
<ROF> 3.000000 </ ROF>
</ ProtoAction>
<ProtoAction>
<Name> MeleeHandAttack </ Name>
<Damage> 13.000000 </ Damage>
<DamageType> Hand </ DamageType>
<ROF> 1.500000 </ ROF>
<DamageBonus type = 'AbstractCavalry'> 3.000000 </ DamageBonus>
</ ProtoAction>
<ProtoAction>
<Имя> StaggerHandAttack </ Name>
<Damage> 13.0000 </ Урон>
<DamageType> Рука </ DamageType>
<ROF> 1.500000 </ ROF>
<DamageBonus type = 'AbstractCavalry'> 3.000000 </ DamageBonus>
</ ProtoAction>
<ProtoAction>
<Имя> StaggerRangedAttack </ Name>
<Damage> 23.000000 </ Damage>
<DamageType> Ranged </ DamageType>
<MaxRange> 12.000000 </ MaxRange>
<ROF> 3.000000 </ ROF>
</ ProtoAction>
<ProtoAction>
<Name> VolleyHandAttack </ Name>
<Damage> 13.000000 </ Damage>
<DamageType> Hand </ DamageType>
<ROF> 1.500000 </ ROF>
<DamageBonus type = 'AbstractCavalry'> 3.000000 </ DamageBonus>
</ ProtoAction>
<ProtoAction>
<Имя> VolleyRangedAttack </ Name>
<Damage> 23.000000 </ Damage>
<DamageType> Ranged </ DamageType>
<MaxRange> 12.000000 </ MaxRange>
<ROF> 3.000000 </ ROF>
</ ProtoAction>


Общий формат для атаки:
<Name> {AttackName} </ Name> имя относится к действию в файле тактики
<Damage> {value} </ Damage> базовый урон
<DamageType> {type} </ DamageType > может быть «Рука», «Дальний», «Осада»
<ROF> {значение} </ ROF>, «Скорострельность» = «Время перезарядки»
<DamageBonus type = '{category}'> {value } </ DamageBonus> множитель урона

DamageBonus также может быть <1, чтобы уменьшить урон определенным типам. Эффективный урон рассчитывается как (базовый урон) * (бонусное значение)

Единицы с площадью,

<DamageFlags> {category} </ DamageFlags> важный: определяет, что затронуто повреждением области. Здесь также можно переопределить значения, обычно используемые в файле тактики, с помощью <MaxRange> или <MinRange> максимальной или минимальной дальности атаки <DamageCap> ограничителя ущерба <Projectile> специальный снаряд, если он еще не определен в другом месте. В самом конце у нас есть завершающий прототег </ Unit> Вопрос новичка, который часто появляется: как мне найти определенный юнит в файле прото? Вы можете использовать функцию поиска вашего редактора и ввести несколько ключевых букв, а затем искать, пока не найдете нужный прото.

В Интернете также есть списки прототипов - просто используйте веб-поиск, например, Google.
Или вы помещаете единицу в редакторе сценариев - меню «Объекты» -> «ObjectInfo» предоставляет имя прото.

Изменение прото-файла Изменить существующий прото-файл

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

Но часто желательно сохранить оригинальный блок и добавить новый, модифицированный.
Для этого вы копируете прототип подходящего устройства и вставляете (вставляете) его в конец файла, но перед завершением
</ Proto>
Здесь устройство получает новый уникальный идентификатор и имя. Затем отредактируйте статистику единицы к желаемым значениям.
Чтобы сделать новый юнит доступным в игре, мы должны включить его в techtree.

Techtree

В файле data \ techtree.xml содержатся все специфические для цивилизации технологии, улучшения и описания для домашних перевозок. Он включает / отключает определенные техники, юниты и здания в определенном возрасте. В противоположность прото - что справедливо для всех - изменение в techtree влияет в основном только на конкретного игрока.
Все технические средства также могут вызываться в редакторе сценариев с помощью триггерного эффекта «Установить техническое состояние».

В общем, каждая цивилизация начинается с описания «Age0 {Civ}», где большинство вещей определяется или предопределено. Каждый возрастной прогресс называет другую технологию '{Age} {Civ}' (Age = Colonialize .., Fortressize .., Industrialize .., Imperialize ..), например, например. FortressizeBritish или IndustrializeSpanish.
Также все улучшения юнитов определяются в techtree обычно в следующем порядке: «VeteranUnit», «GuardUnit», «ImperialUnit». Также здесь указаны улучшения, доступные в Market, Church, Arsenal, Capitol.
И, наконец, важные аспекты поставок в города определяются в techtree - они всегда начинаются с «HC ...», отгрузки единиц обычно с «HCShip ...».

Techtree - мощный инструмент, гораздо более гибкий, чем фиксированные структуры данных Proto. Это уже немного характер скриптового языка. У техников могут быть условия, они могут вызывать других техников, даже самих себя, и могут (теоретически) иметь неограниченное количество эффектов.

Базовая структура технологии:
<Tech name = '....' type = 'Normal'>
<DBID> .... </ DBID>
<Status> UNOBTAINABLE </ Status>
<Effects>
....
< / Эффекты>
</ Tech>


Кроме того, технологии идентифицируются и на них ссылаются по имени, поэтому имя технологии должно быть уникальным.
(Уникальный) DBID, очевидно, предназначен для внутреннего использования Ensemble.
Флаг состояния обычно устанавливается игровой логикой и изначально всегда НЕОБХОДИМ.

Необязательные возможные дополнительные теги:
Значок : значок, появляющийся в пользовательском интерфейсе.
DisplayNameID : идентификатор строковой таблицы для отображаемой нотации технологии.
RolloverTextID : идентификатор строковой таблицы для отображения описания, например. при наведении курсора мыши на значок
ResearchPoints : бонусные баллы при исследовании этой технологии.
Cost resourcetype = .... : может быть 'Еда', 'Дерево', 'Золото', 'Корабли' (поставки).
Флаг: различные флаги.
HomeCityLevel : is уже условие, технология доступна только на определенном уровне HC
Prereq: предварительные условия для включения технологии, в основном определенного возраста или уже активной технологии. К

несчастью, у технологий нет назначенного идентификатора, как у протосов. Они автоматически нумеруются непрерывно при запуске игры. Однако для некоторых целей, таких как триггеры RM, необходим технический идентификатор. Есть списки по всему Интернету или используйте простой трюк: создайте фиктивный сценарий, добавьте триггер с нужной технологией, быстро запустите сцену. и изучите USERDIR: trigger \ trigtemp.xs - это выдаст технический идентификатор.
Автоматическая нумерация также является причиной, по которой никогда не следует вставлять новую технологию - всегда добавляйте в конце techtree.

Эффекты

Эффект всегда имеет структуру
<Effect type = '..' .. {attribute} ..> {target} </ Effect>
Порядок атрибутов не важен. Возможные комбинации атрибутов внутри тега «Эффект» практически бесконечны. Поэтому мы должны ограничиться некоторыми наиболее часто используемыми типами эффектов.
Рекомендуется изучить techtree для примеров других эффектов.

<Effect type = 'TechStatus' status = '..'> {tech name} </ Effect>
Этот эффект включает / отключает другие технологии. Статус может быть
«активным» : технология немедленно активируется, и связанный код выполняется
«доступным» : технология может быть исследована игроком
«недоступно» : сбрасывает статус, запрещает технологию - но изменения данных не производятся, технология не регрессирует

<Тип эффекта = 'Тип данных' подтип = '..' [другие атрибуты] количество = '{значение}' релятивность = '{режим}'>
<Тип цели = 'ProtoUnit'> {прототип блока} </ Target> </ Эффект>

Это общий формат для изменения данных любого вида.

Сумма всегда является (подписанным) числом с плавающей точкой.

Относительность определяет, как обрабатывать значение:
«Абсолют» представляет собой изменение +/- относительно базового значения.
«Назначить» напрямую перезаписывает базовое значение.
«BasePercent» означает: сумма является множителем для базового значения (например, 2,00 удваивается , 0,50 половинки).

Подтип - это тип данных, которые необходимо изменить. Когда эффект изменяет значение proto, подтип ссылается на тег proto и часто именуется одинаково, но не всегда!

Целью может быть единица / объект или тип / класс единицы, например. 'Hero' или 'AbstractInfantry', как определено в прототипах 'UnitType'. Но не все эффекты работают должным образом на целых классах.

Обратите внимание!
Многие технологии зависят от своих предшественников, поэтому все технологии эпохи и улучшения юнитов.
Если вы выполняете, например. «IndustrializeBritish» из Age0, улучшения предыдущего возраста пропускаются - они не включаются автоматически и некоторые важные вещи могут отсутствовать.
То же самое относится и к апгрейдам юнитов - всегда апгрейдируйте по шагам Ветеран -> Страж -> Империал.
Наконец, есть некоторые технологии PostAge .., которые вызываются, когда игрок начинает в более позднем возрасте. В этом случае несколько предыдущих технологий / улучшений будут пропущены, и если вы вставите туда что-то, они никогда не будут выполнены.

Примеры
Ниже приведены некоторые шаблоны эффектов для наиболее распространенных проблем.
Код может быть помещен в любую техническую структуру - конечно, соответствующая технология должна называться (активной), чтобы изменения работали. Для зависящей от возраста инициализации поместите его в технику 'Age0 {Civ}' или '{Age} {Civ}'. Но, конечно, он может быть вставлен также в поставку HC или в технологию улучшения.

Изменение хитпоинтов юнита
<Тип эффекта = 'Тип данных' подтип = 'Точки попадания' сумма = '{num}' относительность = 'Абсолют'>>
<Target type = 'ProtoUnit'> {proto unit} </ Target> </ Effect>

Это добавляет количество HP к базовому значению юнита.

Изменение атаки единицы
<тип Effect = подтипа 'Data' = 'Damage' allactions = '1' сумма = '{фактор}' относительности = 'BasePercent'>
<Целевой тип = 'ProtoUnit'> {прото единица / класс} </ Target> </ Effect>

Это умножает базовый урон на коэффициент для всех режимов атаки.
Дополнительный бонус к урону можно установить с помощью
<Effect type = 'Data' subtype = 'DamageBonus' allactions = '1' unittype = '{эффективная единица / класс}' amount = '{factor}' относительность = 'Assign'>
<
Бонус урона действует только на указанный тип юнита и является множителем базового урона.
Если вы хотите изменить урон только для определенного режима атаки, вы должны заменить « .. allactions = '1' .. " на " .. action = '{proto action}' .. " "

Изменение стоимости юнита
<Тип эффекта = 'Тип данных' подтип = 'Стоимость' ресурс = '{тип}' сумма = '{num}' относительность = 'Назначить'>
<Тип цели = 'ProtoUnit'> {прототип блока} </ Target> </ Эффект>

Устанавливает стоимость для указанного типа ресурса на определенную сумму. Типом может быть «Еда», «Древесина», «Золото» - «Корабли» (= отгрузки) используются для наемников.

<Тип эффекта = 'Тип данных' подтип = 'PopulationCount' сумма = '{значение}' относительность = 'Назначить'>
<Тип цели = 'ProtoUnit'> {прототип блока} </ Target> </ Effect>


Включение недоступного unit
<Effect type = 'Data' subtype = 'Enable' amount = '1.00' относительность = 'Assign'>
<Target type = 'ProtoUnit'> {proto unit} </ Target> </ Effect>

Также отключение возможно с помощью " ... сумма = '0,00' относительность = 'Назначить' ... 'или' ... сумма = '- 1,00' относительность = 'Абсолют' ... ".
Для стандартных единиц это достаточно - местоположения поездов (здания) в основном заранее определены.
Иначе сделайте следующий шаг:

<Тип эффекта = 'Тип данных' подтип = 'AddTrain' unittype = '{прототип юнита / здание}' количество = '1,00' относительность = 'Назначить'>
<тип цели = 'ProtoUnit'> {целевое здание / единица} </ Target > </ Effect>
К
сожалению, это не делает различий между юнитами и зданиями, поэтому он всегда добавляется в первую строку поезда / сборки.

Включение специальной способности
отряда Некоторые действия отряда (например, специальные атаки) доступны только после явного разрешения их:
<тип эффекта = 'тип данных' подтип = 'действиеEnable' действие = '{протодействие}' количество = '1,00' относительность = ' Назначьте '>
<Target type =' ProtoUnit '> {proto unit} </ Target> </ Effect>


Получение бесплатных юнитов, например. отгрузкой
<Effect type = 'Data' subtype = 'FreeHomeCityUnit' unittype = '{proto unit}' amount = '{num}' относительность = 'Absolute'>
<Target type = 'Player'> </ Target> </ Effect>

The единицы будут выглядеть как обычные грузы.

Обучение наемников в зданиях
Мы включаем юнит с

подтипом <Effect type = 'Data' = 'Enable' amount = '1.00' относительность = 'Assign'>
<Target type = 'ProtoUnit'> {mercenary} </ Target> </ Effect >

Мы назначаем место обучения с помощью
<Effect type = 'Data' subtype = 'AddTrain' unittype = '{mercenary}' amount = '1.00' относительность = 'Assign'>

Наконец, мы должны отрегулировать стоимость «Корабли» до нуля, иначе каждая единица потребует одну отправку
<Тип эффекта = «Тип данных» подтип = «Стоимость» ресурс = «Корабли» количество = «0,00» относительность = «Назначить»>
< Target type = 'ProtoUnit'> {mercenary} </ Target> </ Effect>


Заключительные слова

Не все можно объяснить здесь подробно, иначе это руководство легко заполнило бы 200 страниц. Но, надеюсь, этого достаточно для первой ориентации.
Теперь вы можете расширить свои знания, попробовав и протестировав. Изучение и понимание описанных файлов имеет важное значение для собственного моддинга.
Вы не можете ожидать от всех проблем готового к использованию рецепта. Но просматривая форумы,
После первых шагов с этими основными файлами данных вы, возможно, захотите углубиться в «пропасть моддинга», возможно, работая над тактикой или файлами анимации. Это требует хорошего знания согласованности файлов. Изучите файлы ансамбля по умолчанию. Посмотрите, как другие люди сделали это, загрузив и изучив примеры.

Моддинг = Изучение + Размышления + Делая выводы + Реализация + Тестирование
LOVEAOE
Форум » Видоизменение » Технологии » Первые шаги в моддинге
  • Страница 1 из 1
  • 1
Поиск:
Пятёрка форумщиков