Modding:Asset System/ru: Difference between revisions

From Vintage Story Wiki
No edit summary
No edit summary
Tag: Manual revert
 
(26 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{GameVersion|1.12}}
<languages/>
{{GameVersion|1.15}}
__FORCETOC__
__FORCETOC__


Vintage Story загружает большую часть игрового контента из JSON файлов. Многие примеры этого можно найти в каталоге <code>assets</code> внутри вашей [[Vintagestory folder|папки с игрой]]. Такие вещи, как блоки, предметы, генерация мира, рецепты и т. Д., Загружаются из ресурсов во время запуска.
Vintage Story загружает большую часть игрового контента из JSON файлов. Многие примеры этого можно найти в каталоге <code>assets</code> внутри вашей [[Vintagestory folder|папки с игрой]]. Такие вещи, как блоки, предметы, генерация мира, рецепты и т. Д., Загружаются из ресурсов во время запуска.


== Поиск папки с активами ==
== Находим папку assets ==


Все действующие ресурсы для Vintage Story видны в папке с игрой, что позволяет вам просматривать их и учиться писать свои собственные. Вы можете найти эти файлы, используя следующие методы для каждого типа ОС, на которой вы играете в Vintage Story. Если вы ищете исходный код (то есть классы C#), ваш лучший вариант - погрузиться в '''[https://github.com/anegostudios Vintage Story Github]''' и просмотреть репозитории '''vsapi''', '''vssurvivalmod''', '''vsessentialsmod''' и '''vscreativemod''' для ссылок на классы.  
Все действующие ресурсы для Vintage Story видны в папке с игрой, что позволяет вам просматривать их и учиться писать свои собственные. Вы можете найти эти файлы, используя следующие методы для каждого типа ОС, на которой вы играете в Vintage Story. Если вы ищете исходный код (то есть классы C#), ваш лучший вариант - погрузиться в '''[https://github.com/anegostudios Vintage Story Github]''' и просмотреть репозитории '''vsapi''', '''vssurvivalmod''', '''vsessentialsmod''' и '''vscreativemod''' для ссылок на классы.  


=== Windows ===
=== Windows ===
Если вы используете Vintage Story в Windows, вы можете перейти к нужной папке, набрав %appdata% в строке поиска в меню пуск, и вы попадете в папку roaming вашего компьютера. Найдите папку <code>Vintagestory</code>, и вы сразу же наткнетесь на папку ресурсов, которая содержит ресурсы "creative", "game" и "survival".
Если вы используете Vintage Story в Windows, вы можете перейти к нужной папке, набрав %appdata% в строке поиска в меню пуск, и вы попадете в папку roaming вашего компьютера. Найдите папку <code>Vintagestory</code>, и вы сразу же наткнетесь на папку assets, которая содержит "creative", "game" и "survival".
* '''creative''' содержит ресурсы только для творческого режима.
* '''creative''' содержит ресурсы только для творческого режима.
* '''game''' содержит много универсальных ресурсов, таких как файлы lang, модели объектов и другие важные ресурсы для игры.
* '''game''' содержит много универсальных ресурсов, таких как файлы lang, модели объектов и другие важные ресурсы для игры.
* '''survival''' содержит большую часть фактического контента, с которым сталкивается большинство игроков, и содержит все ресурсы, используемые Vintage Story, такие как текстуры звуков и генерация мира.
* '''survival''' содержит большую часть фактического контента, с которым сталкивается большинство игроков, и содержит все ресурсы, используемые Vintage Story, такие как текстуры звуков и генерация мира.


== Список типов активов ==  
== Список типов ассетов ==  


Ниже приведены категории ресурсов, которые вы можете использовать при моддинге для Vintage Story. Каждый из них легко модифицируем и может быть использован для простого добавления собственного контента или изменений без необходимости какого-либо сложного кодирования. Вы также можете прочитать [[Modding:Basic Modding Examples|примеры]], чтобы узнать, что вы можете с ними сделать.
Ниже приведены категории ресурсов, которые вы можете использовать при моддинге для Vintage Story. Каждый из них легко модифицируем и может быть использован для простого добавления собственного контента или изменений без необходимости какого-либо сложного кодирования. Вы также можете прочитать [[Modding:Basic Modding Examples|примеры]], чтобы узнать, что вы можете с ними сделать.
Line 20: Line 21:
<table id="treeviewtable" class="table table-bordered tt-table" style='table-layout: fixed'>
<table id="treeviewtable" class="table table-bordered tt-table" style='table-layout: fixed'>
   <tr style=''>
   <tr style=''>
     <th width='300' align='left'>Name</th>
     <th width='300' align='left'>Имя</th>
     <th width='200' align='left'>Affects Gameplay</th>
     <th width='200' align='left'>Влияние на игру</th>
     <th width='80' align='left'>Side Type</th>
     <th width='80' align='left'>Тип стороны</th>
     <th align='left'>Usage</th>
     <th align='left'>Применение</th>
   </tr>
   </tr>
   <tr>
   <tr>
     <td><div class="tt" data-tt-id="root">AssetCategory</div></td>
     <td><div class="tt" data-tt-id="root">Категория активов</div></td>
     <td></td>
     <td></td>
     <td></td>
     <td></td>
Line 33: Line 34:
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_blocktypes" data-tt-parent="root">blocktypes</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_blocktypes" data-tt-parent="root">blocktypes</div></td>
     <td>true</td>
     <td>Да</td>
     <td>universal</td>
     <td>Универсально</td>
     <td>Defines all the blocks that are in the game</td>
     <td>Определяет все блоки существующие в игре</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_itemtypes" data-tt-parent="root">itemtypes</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_itemtypes" data-tt-parent="root">itemtypes</div></td>
     <td>true</td>
     <td>Да</td>
     <td>universal</td>
     <td>Универсально</td>
     <td>Defines all the Items that are in the game</td>
     <td>Определяет все предметы существующие в игре </td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_lang" data-tt-parent="root">lang</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_lang" data-tt-parent="root">lang</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>universal</td>
     <td>Универсально</td>
     <td>Translation</td>
     <td>Перевод</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_worldproperties" data-tt-parent="root">worldproperties</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_worldproperties" data-tt-parent="root">worldproperties</div></td>
     <td>true</td>
     <td>Да</td>
     <td>universal</td>
     <td>Универсально</td>
     <td>Contains some commonly used lists of properties</td>
     <td>Содержит некоторые часто используемые списки свойств</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_worldproperties_abstract" data-tt-parent="p_worldproperties">abstract</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_worldproperties_abstract" data-tt-parent="p_worldproperties">abstract</div></td>
     <td>true</td>
     <td>Да</td>
     <td>universal</td>
     <td>Универсально</td>
     <td></td>
     <td></td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_worldproperties_block" data-tt-parent="p_worldproperties">block</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_worldproperties_block" data-tt-parent="p_worldproperties">block</div></td>
     <td>true</td>
     <td>Да</td>
     <td>universal</td>
     <td>Универсально</td>
     <td></td>
     <td></td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_sounds" data-tt-parent="root">sounds</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_sounds" data-tt-parent="root">sounds</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>universal</td>
     <td>Универсально</td>
     <td>Sounds</td>
     <td>Звуки в игре</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_shapes" data-tt-parent="root">shapes</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_shapes" data-tt-parent="root">shapes</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>universal</td>
     <td>Универсально</td>
     <td>Contains the 3d models for all the items, blocks and creatures</td>
     <td>Содержит 3d модели для всех предметов, блоков и существ</td>
   </tr>
   </tr>
  <tr>
<tr>
    <td scope="row"><div class="tt" data-tt-id="p_dialog" data-tt-parent="root">config</div></td>
    <td>true</td>
    <td>universal</td>
    <td>Used for generic data that does not fit into the other categories.</td>
  </tr>
  <tr>
     <td scope="row"><div class="tt" data-tt-id="p_shapes_block" data-tt-parent="p_shapes">block</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_shapes_block" data-tt-parent="p_shapes">block</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>universal</td>
     <td>Универсально</td>
     <td>Shapes for blocks</td>
     <td>Модели для блоков</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_shapes_entity" data-tt-parent="p_shapes">entity</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_shapes_entity" data-tt-parent="p_shapes">entity</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>universal</td>
     <td>Универсально</td>
     <td>Shapes for entities</td>
     <td>Модели для существ</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_shapes_item" data-tt-parent="p_shapes">item</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_shapes_item" data-tt-parent="p_shapes">item</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>universal</td>
     <td>Универсально</td>
     <td>Shapes for items</td>
     <td>Модели для предметов</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_recipes" data-tt-parent="root">recipes</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_recipes" data-tt-parent="root">recipes</div></td>
     <td>true</td>
     <td>Да</td>
     <td>server only</td>
     <td>Только сервер</td>
     <td>The crafting, knapping, smithing and clay forming recipes</td>
     <td>Рецепты крафта, колочения, кузнечного дела и лепки из глины</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_recipes_alloy" data-tt-parent="p_recipes">alloy</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_recipes_alloy" data-tt-parent="p_recipes">alloy</div></td>
     <td>true</td>
     <td>Да</td>
     <td>server only</td>
     <td>Только сервер</td>
     <td>How metals can be combined to create alloys</td>
     <td>Как металлы могут быть объединены для создания сплавов</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_recipes_grid" data-tt-parent="p_recipes">grid</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_recipes_grid" data-tt-parent="p_recipes">grid</div></td>
     <td>true</td>
     <td>Да</td>
     <td>server only</td>
     <td>Только сервер</td>
     <td>Recipes for 3x3 grid crafting</td>
     <td>Рецепты создания сетки 3х3</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_recipes_smithing" data-tt-parent="p_recipes">smithing</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_recipes_smithing" data-tt-parent="p_recipes">smithing</div></td>
     <td>true</td>
     <td>Да</td>
     <td>server only</td>
     <td>Только сервер</td>
     <td>Recipes for smithing on the anvil</td>
     <td>Рецепты кузнечного дела на наковальне</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_worldgen" data-tt-parent="root">worldgen</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_worldgen" data-tt-parent="root">worldgen</div></td>
     <td>true</td>
     <td>Да</td>
     <td>server only</td>
     <td>Только сервер</td>
     <td>Contains all the configuration for world generation</td>
     <td>Содержит всю конфигурацию для генерации мира</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_worldgen_terrain" data-tt-parent="p_worldgen">terrain</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_worldgen_terrain" data-tt-parent="p_worldgen">terrain</div></td>
     <td>true</td>
     <td>Да</td>
     <td>server only</td>
     <td>Только сервер</td>
     <td>Defines how the terrain should look and with what it should be decorated with</td>
     <td>Определяет, как должна выглядеть местность и чем она должна быть украшена</td>
  </tr>
  <tr>
    <td scope="row"><div class="tt" data-tt-id="p_dialog" data-tt-parent="root">config</div></td>
    <td>Да</td>
    <td>Универсально</td>
    <td>Используется для общих данных, которые не вписываются в другие категории.</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_worldgen_tree" data-tt-parent="p_worldgen">tree</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_worldgen_tree" data-tt-parent="p_worldgen">tree</div></td>
     <td>true</td>
     <td>Да</td>
     <td>server only</td>
     <td>Только сервер</td>
     <td>Defines the shapes of trees</td>
     <td>Определяет форму деревьев</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_entity" data-tt-parent="root">entity</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_entity" data-tt-parent="root">entity</div></td>
     <td>true</td>
     <td>Да</td>
     <td>server only</td>
     <td>Только сервер</td>
     <td>Creatures and other entities</td>
     <td>Животные и другие существа</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_shaders" data-tt-parent="root">shaders</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_shaders" data-tt-parent="root">shaders</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>client only</td>
     <td>Только клиент</td>
     <td>Contains GLSL source code, that defines how the game is rendered</td>
     <td>Содержит исходный код GLSL, определяющий способ отображения игры</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_shaderincludes" data-tt-parent="root">shaderincludes</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_shaderincludes" data-tt-parent="root">shaderincludes</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>client only</td>
     <td>Только клиент</td>
     <td>Contains GLSL source code, that defines how the game is rendered</td>
     <td>Содержит исходный код GLSL, определяющий способ отображения игры</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_textures" data-tt-parent="root">textures</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_textures" data-tt-parent="root">textures</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>client only</td>
     <td>Только клиент</td>
     <td>Contains all the graphics of the game</td>
     <td>Содержит всю графику игры</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_textures_blocks" data-tt-parent="p_textures">block</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_textures_blocks" data-tt-parent="p_textures">block</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>client only</td>
     <td>Только клиент</td>
     <td>Block textures</td>
     <td>Текстуры блоков</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_textures_items" data-tt-parent="p_textures">item</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_textures_items" data-tt-parent="p_textures">item</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>client only</td>
     <td>Только клиент</td>
     <td>Item textures</td>
     <td>Текстуры предметов</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_textures_decal" data-tt-parent="p_textures">decal</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_textures_decal" data-tt-parent="p_textures">decal</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>client only</td>
     <td>Только клиент</td>
     <td>Decaltextures</td>
     <td>Decaltextures</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_textures_entities" data-tt-parent="p_textures">entities</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_textures_entities" data-tt-parent="p_textures">entities</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>client only</td>
     <td>Только клиент</td>
     <td>Entities textures</td>
     <td>Текстуры существ</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_textures_environment" data-tt-parent="p_textures">environment</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_textures_environment" data-tt-parent="p_textures">environment</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>client only</td>
     <td>Только клиент</td>
     <td>Environment textures (Sky, Moon, Sun, etc.)</td>
     <td>Текстуры окружения (Небо, Луна, Солнце и т.д.)</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_textures_gui" data-tt-parent="p_textures">gui</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_textures_gui" data-tt-parent="p_textures">gui</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>client only</td>
     <td>Только клиент</td>
     <td>Gui textures</td>
     <td>Текстуры интерфейса</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_textures_hud" data-tt-parent="p_textures">hud</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_textures_hud" data-tt-parent="p_textures">hud</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>client only</td>
     <td>Только клиент</td>
     <td>Hud textures</td>
     <td>Текстуры индикаторов</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_textures_particle" data-tt-parent="p_textures">particle</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_textures_particle" data-tt-parent="p_textures">particle</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>client only</td>
     <td>Только клиент</td>
     <td>Particle textures</td>
     <td>Текстуры частиц</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_music" data-tt-parent="root">music</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_music" data-tt-parent="root">music</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>client only</td>
     <td>Только клиент</td>
     <td>The games music tracks and its configuration</td>
     <td>Музыкальные треки игры и их конфигурация</td>
   </tr>
   </tr>
   <tr>
   <tr>
     <td scope="row"><div class="tt" data-tt-id="p_dialog" data-tt-parent="root">dialog</div></td>
     <td scope="row"><div class="tt" data-tt-id="p_dialog" data-tt-parent="root">dialog</div></td>
     <td>false</td>
     <td>Нет</td>
     <td>client only</td>
     <td>Только клиент</td>
     <td>Contains some of the dialog layouts</td>
     <td>Содержит несколько макетов диалогов</td>
   </tr>
   </tr>


Line 234: Line 235:
= Домены =
= Домены =


Домены используются для отделения мод-контента от оригинального. По сути, домен - это префикс для любого заданного кода (идентификатор элемента, блока и т.д.) Или пути (текстуры, звуки и т.д.). Сама по себе Vintage Story имеет свой собственный префикс <code>game</code>.
Домены используются для отделения мод-контента от оригинального. По сути, домен - это префикс для любого заданного кода (идентификатор элемента, блока и т.д.) Или пути (текстуры, звуки и т.д.). Сама по себе Vintage Story имеет свой собственный префикс <code>game</code> для всех его активов (папки игры, выживания и творчества).


When [[Mod Packaging|packaging a mod]] you specify a domain by placing a directory inside the mod <code>assets</code> directory with all your mod assets inside. The name of your domain directory will be the "current domain" for all assets inside it. If no domain has been specified in an asset code the game will assume it is in the current domain, meaning you only have to add a domain prefix if you want to refer to something outside the current domain.
Когда [[Mod Packaging|пакуете мод]], вы указываете домен, помещая каталог в каталог мода <code>assets</code> со всеми вашими активами мода внутри. Имя каталога вашего домена будет «текущим доменом» для всех активов в нем. Если в коде ресурса не указан домен, игра предположит, что он находится в текущем домене, то есть вам нужно добавить префикс домена только в том случае, если вы хотите сослаться на что-то за пределами текущего домена.


For example, if you want to create a new block which uses the original leather texture, you would have to specify the domain (since your block has a different one). Instead of using  <code>assets/textures/blocks/leather.png</code>, you would have add the prefix for the domain <code>game:assets/textures/blocks/leather.png</code>.
Например, если вы хотите создать новый блок, который использует оригинальную текстуру кожи, вам нужно будет указать домен (поскольку у вашего блока не стандартный). Вместо использования <code>block/leather</code> для <code>assets/survival/textures/block/leather.png</code> вы должны добавить префикс для домена <code>game:block/leather</code>.




== Overwriting assets ==
== Перезапись активов ==


There are no limitations to the system. So you can overwrite assets from Vintagestory itself by using the <code>game</code> domain folder.
Никаких ограничений. Вы вполне можете изменить любой актив Vintage Story, используя папку домена <code>game</code>.


To overwrite the bed blocktype you can put your own json flie inside your mod zip archive with the following path: <code>assets/game/blocktypes/bed.json</code>. So Vintagestory will load your json file instead of the original one.
Чтобы изменить Блоктайп кровати, вы можете поместить свой собственный JSON файл в zip архив расположенный в <code>assets/game/blocktypes/wood/bed.json</code>. Тогда Vintage Story загрузит ваш JSON-файл вместо исходного.


Theme packs can only override assets that do not effect game mechanics, the other mod types can override any asset.
Пакеты тем могут переопределять только ресурсы, которые не влияют на игровую механику, другие типы модов могут переопределять любой актив.


== Accessing assets in code ==  
== Доступ к активам в коде ==  


To access assets in a code mod, you can use the [[Modding:AssetManager| AssetManager]].
Чтобы получить доступ к активам в коде мода, вы можете использовать [[Modding:AssetManager| Менеджер Активов]].


= Moving Forward =  
= Дальнейшее продвижение =  


Once you have an idea of what assets are and how they're organized, it's time to move onto your first content mod. Head over to the '''[[Modding:Basic Block | Basic Block ]]''' page to learn how to make your first block, or go to the '''[[Modding:Basic Item |Basic Item]]''' page if you'd like to start by making an item. Both are great ways to learn how to make your first mod.  
Как только вы поймете, что такое ресурсы и как они организованы, можете перейти к вашему первому контент-моду. Перейдите к странице '''[[Modding:Basic Block | Основа блока ]]''', чтобы узнать, как сделать свой первый блок, или перейдите на страницу '''[[Modding:Basic Item |Основа предмета]]''', если вы хотите начать с создания предмета. Обе статьи, отличный способ научиться делать свой первый мод.  


{{Navbox/modding|Vintage Story}}
{{Navbox/modding|Vintage Story}}

Latest revision as of 10:23, 16 January 2024

Other languages:

Эта страница проверялась в последний раз для версии Vintage Story 1.15.


Vintage Story загружает большую часть игрового контента из JSON файлов. Многие примеры этого можно найти в каталоге assets внутри вашей папки с игрой. Такие вещи, как блоки, предметы, генерация мира, рецепты и т. Д., Загружаются из ресурсов во время запуска.

Находим папку assets

Все действующие ресурсы для Vintage Story видны в папке с игрой, что позволяет вам просматривать их и учиться писать свои собственные. Вы можете найти эти файлы, используя следующие методы для каждого типа ОС, на которой вы играете в Vintage Story. Если вы ищете исходный код (то есть классы C#), ваш лучший вариант - погрузиться в Vintage Story Github и просмотреть репозитории vsapi, vssurvivalmod, vsessentialsmod и vscreativemod для ссылок на классы.

Windows

Если вы используете Vintage Story в Windows, вы можете перейти к нужной папке, набрав %appdata% в строке поиска в меню пуск, и вы попадете в папку roaming вашего компьютера. Найдите папку Vintagestory, и вы сразу же наткнетесь на папку assets, которая содержит "creative", "game" и "survival".

  • creative содержит ресурсы только для творческого режима.
  • game содержит много универсальных ресурсов, таких как файлы lang, модели объектов и другие важные ресурсы для игры.
  • survival содержит большую часть фактического контента, с которым сталкивается большинство игроков, и содержит все ресурсы, используемые Vintage Story, такие как текстуры звуков и генерация мира.

Список типов ассетов

Ниже приведены категории ресурсов, которые вы можете использовать при моддинге для Vintage Story. Каждый из них легко модифицируем и может быть использован для простого добавления собственного контента или изменений без необходимости какого-либо сложного кодирования. Вы также можете прочитать примеры, чтобы узнать, что вы можете с ними сделать.

Имя Влияние на игру Тип стороны Применение
Категория активов
blocktypes
Да Универсально Определяет все блоки существующие в игре
itemtypes
Да Универсально Определяет все предметы существующие в игре
lang
Нет Универсально Перевод
worldproperties
Да Универсально Содержит некоторые часто используемые списки свойств
abstract
Да Универсально
block
Да Универсально
sounds
Нет Универсально Звуки в игре
shapes
Нет Универсально Содержит 3d модели для всех предметов, блоков и существ
block
Нет Универсально Модели для блоков
entity
Нет Универсально Модели для существ
item
Нет Универсально Модели для предметов
recipes
Да Только сервер Рецепты крафта, колочения, кузнечного дела и лепки из глины
alloy
Да Только сервер Как металлы могут быть объединены для создания сплавов
grid
Да Только сервер Рецепты создания сетки 3х3
smithing
Да Только сервер Рецепты кузнечного дела на наковальне
worldgen
Да Только сервер Содержит всю конфигурацию для генерации мира
terrain
Да Только сервер Определяет, как должна выглядеть местность и чем она должна быть украшена
config
Да Универсально Используется для общих данных, которые не вписываются в другие категории.
tree
Да Только сервер Определяет форму деревьев
entity
Да Только сервер Животные и другие существа
shaders
Нет Только клиент Содержит исходный код GLSL, определяющий способ отображения игры
shaderincludes
Нет Только клиент Содержит исходный код GLSL, определяющий способ отображения игры
textures
Нет Только клиент Содержит всю графику игры
block
Нет Только клиент Текстуры блоков
item
Нет Только клиент Текстуры предметов
decal
Нет Только клиент Decaltextures
entities
Нет Только клиент Текстуры существ
environment
Нет Только клиент Текстуры окружения (Небо, Луна, Солнце и т.д.)
gui
Нет Только клиент Текстуры интерфейса
hud
Нет Только клиент Текстуры индикаторов
particle
Нет Только клиент Текстуры частиц
music
Нет Только клиент Музыкальные треки игры и их конфигурация
dialog
Нет Только клиент Содержит несколько макетов диалогов

Домены

Домены используются для отделения мод-контента от оригинального. По сути, домен - это префикс для любого заданного кода (идентификатор элемента, блока и т.д.) Или пути (текстуры, звуки и т.д.). Сама по себе Vintage Story имеет свой собственный префикс game для всех его активов (папки игры, выживания и творчества).

Когда пакуете мод, вы указываете домен, помещая каталог в каталог мода assets со всеми вашими активами мода внутри. Имя каталога вашего домена будет «текущим доменом» для всех активов в нем. Если в коде ресурса не указан домен, игра предположит, что он находится в текущем домене, то есть вам нужно добавить префикс домена только в том случае, если вы хотите сослаться на что-то за пределами текущего домена.

Например, если вы хотите создать новый блок, который использует оригинальную текстуру кожи, вам нужно будет указать домен (поскольку у вашего блока не стандартный). Вместо использования block/leather для assets/survival/textures/block/leather.png вы должны добавить префикс для домена game:block/leather.


Перезапись активов

Никаких ограничений. Вы вполне можете изменить любой актив Vintage Story, используя папку домена game.

Чтобы изменить Блоктайп кровати, вы можете поместить свой собственный JSON файл в zip архив расположенный в assets/game/blocktypes/wood/bed.json. Тогда Vintage Story загрузит ваш JSON-файл вместо исходного.

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

Доступ к активам в коде

Чтобы получить доступ к активам в коде мода, вы можете использовать Менеджер Активов.

Дальнейшее продвижение

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

 

Wondering where some links have gone?
The modding navbox is going through some changes! Check out Navigation Box Updates for more info and help finding specific pages.

Modding
Modding Introduction Getting Started Пакет тем
Content Modding Content Mods Developing a Content Mod Basic Tutorials Intermediate Tutorials Advanced Tutorials Content Mod Concepts
Code Modding Code Mods Setting up your Development Environment
Property Overview ItemEntityBlockBlock BehaviorsBlock ClassesBlock EntitiesBlock Entity BehaviorsWorld properties
Workflows & Infrastructure Modding Efficiency TipsMod-engine compatibilityMod ExtensibilityVS Engine
Additional Resources Community Resources Modding API Updates Programming Languages List of server commandsList of client commandsClient startup parametersServer startup parameters
Example ModsAPI DocsGitHub Repository