Модификации:Карты

Материал из Stardew Valley Wiki
Перейти к навигации Перейти к поиску

Индекс

На этой странице объясняется, как редактировать карты. Это расширенное руководство для моддеров.

Вступление

Базовые компоненты

  • Карта это расположение местности (например, воды, скал и земли), объектов местности (например, кустарников), зданий, дорожек и триггеров для определенной области. Когда вы достигаете края области или входите в здание, и экран становится черным во время перехода, вы перемещаетесь между картами.
  • Каждая карта состоит из нескольких слоев, расположенных один над другим. Объекты на слое выше будут скрывать объекты на слоях ниже. Так расположены стандартные слои...
    Название слоя Типичное содержание
    Back Рельеф, вода и основные функции (например, постоянные пути).
    Buildings Заполнители для зданий (например, фермерского дома). Любые плитки, размещенные на этом слое, будут действовать как стена, если свойство плитки не имеет "Проходимой" буквы "Т".
    Paths Полы, дорожки, трава и мусор (например, камни, сорняки и пни из таблицы "дорожки"), которые игрок может удалить.
    Front Объекты, которые нарисованы поверх вещей позади них, как и большинство деревьев. Эти объекты будут нарисованы поверх игрока, если игрок находится к северу от них, но позади игрока, если игрок находится к югу от них.
    AlwaysFront Объекты, которые всегда рисуются поверх других слоев, а также игрока. Это обычно используется для эффектов переднего плана, таких как лиственный покров.
  • MapLayers.png

  • (С Использованием Плитки) Существует 2 различных типа слоев, а также 5 основных слоев, Слой объектов (значок в виде облака) и слой плитки (значок сетки). Слой плитки-это место, где вы вносите изменения в карту (размещаете и удаляете плитки), а слои объектов-это место, где вы добавляете и редактируете данные плитки. Ваши слои должны соответствовать тем, что указаны выше. Обратите внимание, что в зависимости от карты у них может отсутствовать слой "Paths" или "AlwaysFront".
  • Каждый слой состоит из множества тайлов, которые представляют собой квадраты размером 16×16 пикселей, расположенные в сетке для формирования видимой карты. Каждая плитка может иметь свойства (например, проходимая / заблокированная), специальную логику (например, действие, которое нужно выполнить, когда игрок наступит на них), и изображение, которое нужно показать. Изображение представлено индексом спрайта (или индексом плитки), который является его положением в связанной таблице спрайтов (см. Далее).
  • Каждая карта имеет одну или несколько таблиц спрайтов (также известных как таблицы листов, когда речь идет о модах), которые содержат доступные плитки и изображения, собранные вместе для формирования видимой карты.

Координаты тайлов

Каждый тайл имеет координаты (x, y), которые представляют его положение на карте, где (0, 0) - верхний левый тайл. x значение увеличивается вправо, и y увеличивается вниз. Например:

Modding - creating an XNB mod - tile coordinates.png

Форматы карты

В моддинге Stardew Valley используются два формата карт: .tmx (из редактора Tiled) и .tbin (из ныне устаревшего редактора карт tIDE). Функции, поддерживаемые обоими форматами, почти идентичны, но есть несколько отличий:

Особенность .tmx .tbin
Формат ✓ XML (в основном текст) ✘ бинарный
Редактировать тайлами ✓ поддерживается ✓ поддерживается с плагином
Редактировать напрямую ✓ можно открыть в текстовом редакторе ✘ не поддерживается
Переворачивание тайлов ✓ поддерживается ✘ не поддерживается
Поворот тайлов ✓ поддерживается ✘ не поддерживается
Управление версиями ✓ эффективное хранение, может различать изменения ✘ неэффективное хранение (необходимо копировать весь файл с каждой записью), не может различать изменения

.tmx рекомендуется в соответствии с вышеизложенным, но оба формата удобны в использовании, и вы можете конвертировать их между собой, нажав File > Export As.

Приступая к работе

Существует два основных способа редактирования карты.

Использование SMAPI

Создание мода SMAPI требует программирования, но он намного мощнее, и несколько модов SMAPI могут редактировать одну и ту же карту. Если вы хотите использовать этот подход:

  1. Создание SMAPI мода.
  2. Смотри инструкции ниже для внесения изменений в карту.

Обратите внимание, что это также не исключает использования тайлов. Вы можете создавать/редактировать карты в тайлах, затем загружать/редактировать их в SMAPI.

Использование Tiled

Tiled - популярный редактор карт, который можно использовать для редактирования карт Stardew Valley, без необходимости программирования. Вам нужно распаковать XNB карту, отредактировать карту и создать Content Patcher или SMAPI мод и загрузить в него карту. Если вы хотите использовать этот подход:

  1. Установите последнюю версию Tiled.
  2. После установки в левом верхнем углу перейдите в Edit > Preferences > Plugins и включите плагин tbin (tbin.dll для Windows, libtbin.so для Linux, или libtbin.dylib для Mac).
  3. Установите следующие параметры:
    Параметр Значение Описание
    View > Snapping > Snap to Grid ✓ Включен Необходимо для преобразования объектов обратно в формат игры.
    View > Highlight Current Layer ✓ Включен Выделяет слой на котором находится редактируемый тайл
  4. Смотри Модификации:Редактирование XNB файлов для помощи в распаковке и упаковке файлов карт.
  5. Смотри инструкции ниже для внесения изменений в карту.

(Если вы используете xnbcli для для распаковки оригинальных файлов карт, вам понадобится .tbin плагин, даже если вы планируете использовать .tmx поскольку xnbcli все еще производит .tbin файлы.)

Редактирование карты

Редактирование карт

Важное примечание: при создании пользовательских карт всегда начинайте с ванильной карты и редактируйте ее. Не пытайтесь создать новую карту в Tiled; в игре должны присутствовать определенные плитки, свойства карты и т.д.

Если вы используете Tiled:

  1. Распакуйте папку Content/Maps и создайте копию для редактирования ваших карт. Используйте эту копию папки для редактирования любых карт, прежде чем перемещать их в папку мода.
  2. Используйте тот же метод, чтобы распаковать карту, которую вы хотите отредактировать, если она не является ванильной, а затем поместите карту в папку редактирования.
  3. Откройте .tbin или .tmx файл в Tiled. Примечание: убедитесь, что файл находится в той же папке, что и распакованные таблицы тайлов!
  4. Внесите свои изменения.
  5. Сохраните файл. Не используйте Save as, так как это может повредить карту.
  6. Переместите .tbin или .tmx файл, и любые пользовательские таблицы тайлов, которые ему нужны, в папку вашего мода. Поместите их в папку assets.
  7. Загрузите свою карту через SMAPI или Content Patcher (или другой фреймворк модов).

Пользовательская карта

Вы можете добавить в игру новую карту и местоположение.

Если вы используете SMAPI:

public override void Entry(IModHelper helper)
{
   // игра очищает локации при загрузке сохранения, поэтому сделайте это после загрузки сохранения
   helper.Events.GameLoop.SaveLoaded += this.OnSaveLoaded;
}

private void OnSaveLoaded(object sender, SaveLoadedEventArgs args)
{
   // получиь внутренний ключ ресурса для файла карты
   string mapAssetKey = this.Helper.Content.GetActualAssetKey("assets/map.tmx", ContentSource.ModFolder);

   // добавить местоположение
   GameLocation location = new GameLocation(mapAssetKey, "YourLocationName") { IsOutdoors = false, IsFarm = false };
   Game1.locations.Add(location);
}
Примечание:
  1. Ваша карта должна быть построена по определенному шаблону; посмотрите на карты в папке Content/Maps для примера.
  2. После загрузки файла сохранения вы можете использовать эту команду для перехода к карте: debug warp YourLocationName X Y

Если вы используете Tiled:

Вы можете создать карту в Tiled, но вам нужен SMAPI, чтобы добавить ее в игру.

Настраиваемый лист тайлов

Вы можете добавлять на карту пользовательские спрайты, тайлы или изображения. Обязательно используйте префикс z_ перед ID чтобы избежать смещения индексов ванильных таблиц.

Если вы используете SMAPI:

public override void Entry(IModHelper helper)
{
   helper.Events.GameLoop.SaveLoaded += this.OnSaveLoaded;
}

private void OnSaveLoaded(object sender, SaveLoadedEventArgs args)
{
   // Это позволяет получить ключ ресурса для файла tilesheet.png из папки вашего мода. Вы также можете загрузить таблицу игровых листов, например
   // helper.Content.GetActualAssetKey("spring_town", ContentSource.GameContent).
   string tilesheetPath = this.Helper.Content.GetActualAssetKey("tilesheet.png", ContentSource.ModFolder);

   // Получить экземпляр игрового местоположения, которое вы хотите исправить. Для фермы вместо этого используйте Game1.getFarm ().
   GameLocation location = Game1.getLocationFromName("Town");

   // Добавить лист тайлов
   TileSheet tilesheet = new TileSheet(
      id: "z_your-custom-spritesheet", // уникальный ID для таблицы тайлов
      map: location.map,
      imageSource: tilesheetPath,
      sheetSize: new xTile.Dimensions.Size(32, 64), // размер тайла вашего изображения в таблице тайлов.
      tileSize: new xTile.Dimensions.Size(16, 16) // для карт всегда должно быть 16x16
   );
   location.map.AddTileSheet(tilesheet);
   location.map.LoadTileSheets(Game1.mapDisplayDevice);
}
Чтобы изменить тайлы с помощью новой таблицы тайлов, смотри #Тайлы.

Если вы используете Tiled:

  1. Создайте свою таблицу спрайтов и поместите ее в ту же папку, что и ваш .tbin или .tmx файл карты. Это должно быть изображение в формате PNG с изображениями, разделенными на плитки 16x16 (Для примера, смотри Модификации:Редактирование_XNB_файлов#Введение).
  2. Откройте файл карты в Tiled.
  3. Добавьте свой спрайт-лист:
    1. В Tilesets панеле, нажмите на Modding - creating an XNB mod - Tiled 'new tilesheet' button.png кнопку.
    2. Дайте ему описательное название (например, 'cute bugs') и выберите источник изображения.
    3. Убедитесь, что Embed in map установлена.
    4. Сохраните значения по умолчанию для других параметров и нажмите OK.
  4. Добавьте свои спрайты на карту:
    1. На панели Layers, нажмите на слой, который хотите редактировать.
    2. На панели Tilesets, нажмите на вкладку с вашим спрайт-листом.
    3. На панели Tilesets, нажмите на один тайл, чтобы выбрать его. Чтобы выбрать несколько, щелкните и перетащите курсор.
    4. Наведите курсор на карту, и вы увидите наложение выбранных вами тайлов.
    5. Нажмите на карту, чтобы разместить тайлы на выбранном слое.

Свойства карты

Каждая карта может иметь несколько свойств карты, которые определяют атрибуты и поведение, связанные с картой, такие как освещение, музыка, точки деформации и т.д. Каждое свойство имеет имя (которое определяет тип свойства), тип (в Stardew Valley, всегда 'строка'), и значение (которое настраивает свойство). Смотри свойства ниже.

Если вы используете SMAPI:

public override void Entry(IModHelper helper)
{
   helper.Events.GameLoop.SaveLoaded += this.OnSaveLoaded;
}

private void OnSaveLoaded(object sender, SaveLoadedEventArgs args)
{
   // получить значение 'Music'
   string currentMusic = Game1.currentLocation.map.Properties.TryGetValue("Music", out PropertyValue rawMusic)
      ? rawMusic.ToString()
      : null;

   // добавить или установить значение 'Music'
   Game1.currentLocation.map.Properties["Music"] = "MarlonsTheme";

   // удалить значение 'Music'
   Game1.currentLocation.map.Properties.Remove("Music");
}

Если вы используете Tiled:

  1. Нажмите Map на панели инструментов и выберете Map Properties.
  2. Посмотрите и отредактируйте свойства с помощью графического интерфейса.

Свойства тайла

Свойства тайла задаются отдельно для каждого тайла. Они могут изменять поведение игры (например, может ли игрок пройти по тайлу), или выполнить действие когда игрок наступает/нажимает на него. У каждого свойства есть имя, тип (в Stardew Valley всегда 'строка'), и значение.

Если вы используете SMAPI:

public override void Entry(IModHelper helper)
{
   helper.Events.GameLoop.SaveLoaded += this.OnSaveLoaded;
}

private void OnSaveLoaded(object sender, SaveLoadedEventArgs args)
{
    // например местоположение и координаты плитки
    GameLocation location = Game1.currentLocation;
    int tileX = 10;
    int tileY = 20;

    // получить свойство
    string value = location.doesTileHaveProperty(tileX, tileY, "Diggable", "Back");

    // добавить или установить свойство
    location.setTileProperty(tileX, tileY, "Back", "Diggable", "T");

    // удалить свойство тайла
    Layer layer = location.map.GetLayer("Back");
    Tile tile = layer.PickTile(new xTile.Dimensions.Location(tileX, tileY) * Game1.tileSize, Game1.viewport.Size);
    tile.Properties.Remove("Diggable");
    //tile.TileIndexProperties.Remove("Diggable"); // NOTE: removing a tile index property will affect all tiles of this type
}

Если вы используете Tiled:

В Tiled свойства тайла представлены двумя типами: object properties применяется только к выбранному тайлу, в то время как tile properties применитесь к каждому экземпляру этого тайла. В общем, вы всегда будете устанавливать object properties, так что мы рассмотрим только их.
  1. Выберите слой объекта на панели Layers.
  2. Выберете инструмент Modding - creating an XNB mod - Tiled 'select object' button.png select object на панели инструментов.
  3. Нажмите на объект, свойства которого вы хотите просмотреть. Объекты на карте обведены серой рамкой:
    Modding - creating an XNB mod - map object.png
  4. Свойства объекта будут показаны на панели Properties.
    Modding - creating an XNB mod - Tiled tile properties pane.png
Для редактирования свойств существующего объекта:
  • Измените значение: нажмите на поле и введите новое значение.
  • Измените наименование: выберите свойство и нажмите на кнопку и иконкой Modding - creating an XNB mod - Tiled 'edit' button.png.
  • Добавьте свойство: нажмите на кнопку с иконкой Modding - creating an XNB mod - Tiled 'add' button.png, введите наименование свойства, убедитесь в том, что тип свойства "string", и нажмите OK.
Чтобы добавить новый объект:
  1. Выберите слой объекта на панели Layers.
    Для каждого слоя тайлов должен быть один слой объектов. Если слой объекта отсутствует, создайте слой с тем же именем, что и слой тайлов.
  2. Выберете инструмент Modding - creating an XNB mod - Tiled 'insert rectangle' button.png insert rectangle на панели инструментов.
  3. Нажмите и перетащите прямоугольник на тайл, которую вы хотите отредактировать. Убедитесь в том, что он привязан к сетке тайла (смотри #Использование Tiled), и выбран только один тайл.
  4. Переименуйте TileData в Name
    1. О том, как редактировать его свойства, смотри в предыдущем разделе.

Тайлы

Вы можете редактировать тайлы для существующей карты.

Если вы используете SMAPI:

public override void Entry(IModHelper helper)
{
   helper.Events.GameLoop.SaveLoaded += this.OnSaveLoaded;
}

private void OnSaveLoaded(object sender, SaveLoadedEventArgs args)
{
    // пример местоположения и координаты тайла
    GameLocation location = Game1.currentLocation;
    int tileX = 10;
    int tileY = 20;

    // удалить тайл со слоя
    location.removeTile(tileX, tileY, "Back");

    // добавить тайл
    Layer layer = location.map.GetLayer("Back");
    TileSheet tilesheet = location.map.GetTileSheet("tilesheet name");
    layer.Tiles[tileX, tileY] = new StaticTile(layer, tilesheet, BlendMode.Alpha, tileIndex: 100); // Изменить индекс тайла

    // переключение поведения водного тайла
    location.waterTiles[tileX, tileY] = false; // true: вода, false: не вода
}

Если вы используете Tiled:

Смотри документацию по Tiled.

Тайлы анимации

Modding - creating an XNB mod - example animation.gif

Вы можете анимировать плитки для создания эффектов, таких как Гил в кресле-качалке (смотри пример справа).

Если вы используете SMAPI:

public override void Entry(IModHelper helper)
{
   helper.Events.GameLoop.SaveLoaded += this.OnSaveLoaded;
}

private void OnSaveLoaded(object sender, SaveLoadedEventArgs args)
{
   GameLocation location = Game1.currentLocation;

   // добавить анимированный тайл
   Layer layer = location.map.GetLayer("Buildings");
   TileSheet tilesheet = location.map.GetTilesheet("tilesheet name");
   layer.Tiles[tileX, tileY] = new AnimatedTile(
      layer,
      new StaticTile[] {
         new StaticTile(layer, tilesheet, BlendMode.Alpha, tileID),
         new StaticTile(layer, tilesheet, BlendMode.Alpha, tileID),
         new StaticTile(layer, tilesheet, BlendMode.Alpha, tileID),
         new StaticTile(layer, tilesheet, BlendMode.Alpha, tileID)
      },
      250 // interval in milliseconds
   );
}

Если вы используете Tiled:

  1. Нажмите кнопку изменить (значок гаечного ключа) для таблицы листов на панели Tilesets.
  2. Выберите тайл, который вы хотите анимировать в новом представлении.
  3. Нажмите Tileset > Tile Animation Editor на панели инструментов, чтобы отобразить это окно.
  4. В новом окне, перетащите плитки из таблицы в поле слева, чтобы создать кадр (одно изображение в последовательности).Если вам нужно удалить кадры, выберете их и нажмите Backspace/Delete(для Windows) или fn + Backspace(для Apple)
  5. Дважды щелкните, чтобы изменить продолжительность пребывания каждого кадра на экране (в миллисекундах). Убедитесь, что каждый кадр имеет одинаковое время; игра не может обрабатывать разное время кадров. Например, вот редактор анимации, показывающий одну из плиток раскачивания Гила:
    Modding - creating an XNB mod - Tiled example animation pane.gif
  6. Когда вы закончите, закройте панель.
  7. Анимированные тайлы на панели Tilesets теперь буут иметь символ в правом нижнем углу:
    Modding - creating an XNB mod - Tiled example animation tileset.png
    Анимация теперь является частью этого тайла. Каждый экземпляр этого тайла на карте теперь будет иметь одну и ту же анимацию.

Переворот/поворот тайла

Пример тайла, повернутого в четыре стороны, под кнопками переворота/поворота тайла.

Вы можете поворачивать и переворачивать тайлы без необходимости создавать повернутые/перевернутые версии спрайт-листов. Для этого необходимо установить SMAPI 3.4 или более поздней версии; базовая игра не распознает преобразования тайлов.

Если вы используете SMAPI:

public override void Entry(IModHelper helper)
{
   helper.Events.GameLoop.SaveLoaded += this.OnSaveLoaded;
}

private void OnSaveLoaded(object sender, SaveLoadedEventArgs args)
{
   // получить тайл
   GameLocation location = Game1.currentLocation;
   Layer layer = location.map.GetLayer("Buildings");
   Tile tile = layer.Tiles[tileX, tileY];
   
   // повернуть на 45°
   tile.Properties["@Rotation"] = 45;

   // перевернуть (0 = нормально, 1 = горизонтально, 2 = вертикально)
   tile.Properties["@Flip"] = 1;
}

Если вы используете Tiled:

Примечание: это работает только при редактировании .tmx файла. Преобразования тайлов не поддерживаются .tbin плагином.
  1. Выбрав инструмент штамп, нажмите на тайл в спрайт-листе, который вы хотите использовать.
  2. Нажмите кнопки перевернуть или повернуть (смотри изображение справа).
  3. Нажмите на карту, чтобы разместить перевернутый/повернутый тайл.

Свойства

Свойства карты

Свойства карты:¹

Свойство Описание
AmbientLight <byte r> <byte g> <byte b>
(действует в помещениях и местах, где не учитывается наружное освещение)
Устанавливает RGB цвет вычитается из белого (255,255,255), чтобы создать окружающий свет.
Например: AmbientLight 95 95 95 для нормального внутреннего дневного освещения.
BackwoodsEntry [<int x> <int y>]
(действует на ферме)
Позиция, в которую игрок попадает при входе на ферму из Глуши.
BrookSounds [<int x> <int y> <int type>]
(действует на открытом воздухе)
type}} может принимать следующие значения:
  • 0 (babblingBrook)(журчание ручья);
  • 1 (cracklingFire)(потрескивание огня);
  • 2 (engine)(двигатель);
  • 3 (cricket)(сверчок).
BusStopEntry [<int x> <int y>]
(действует на ферме)
Позиция, в которую игрок переходит при входе на ферму с автобусной остановки.
CanCaskHere T²
(действует в любом месте)
Позволяет бочкам работать в этом месте.
DayTiles [<string layerName> <int x> <int y> <int tilesheetIndex>]+
(действует в любом месте)
Устанавливает тайлы, которые будут появляться с 6 утра до 7 вечера. В любое время до 7 вечера тайл находится в нужном положении (<x>, <y>) на сопоставлении слоев карты <layerName>, изменяет свой индекс спрайт-листа на указанный <tilesheetIndex>, и добавляет свечение для имитации дневного света. Свечение будет добавлено только в том случае, если местоположение находится в помещении, а <tilesheetIndex> равен 256, 288, 405, 469 или 1224. Параметры могут быть повторены, чтобы повлиять на несколько тайлов.
Например: DayTiles Front 3 1 256 Front 3 2 288.
Doors [<int x> <int y> <string sheetID> <int tileID>]+
(действует в помещениях)
Добавляет функциональности межкомнатным дверям. Используется с свойством тайла Action Door. <x> <y> поля - это координаты тайла, <sheetID> это название листа, содержащего дверной спрайт, и <tileID> - индекс тайла в спрайт-листе.
Fall_Objects T²
Spring_Objects T²
Summer_Objects T²
Winter_Objects T²
Следует ли создавать сезонные объекты на создаваемых тайлах на основе данных из Data\Locations.xnb.
Например: Fall_Objects.
FarmCaveEntry [<int x> <int y>]
(действует на ферме)
Позиция, в которую игрок переходит при входе на ферму из пещеры на ферме.
FarmHouseEntry[<int x> <int y>]
(действует на ферме)
Изменяет положение Фермерского дома. Соответствует входной двери или положению, в котором игрок будет находиться при выходе из дома.
Feed <int x> <int y>
(действует в птичнике или хлеву)
Задает местоположение кормораздатчика в птичнике или хлеву.
Например: Feed 3 2.
forceLoadPathLayerLights T²
(действительно в местах, не связанных с фестивалями, на открытом воздухе)
Следует ли загружать огни со слоя Paths на карты, где их обычно не было бы.
Например: forceLoadPathLayerLights true.
ForceSpawnForageables T²
(действует в помещениях)
Позволяет появляться кормовым предметам в этом месте.
ForestEntry [<int x> <int y>]
(действует на ферме)
Положение, в котором находится игрок, когда он входит на ферму из Леса Синдерсэп.
GrandpaShrineLocation [<int x> <int y>]
(действует на ферме)
Положение дедушкиного святилища. Соответствует верхнему левому углу.
GreenhouseLocation [<int x> <int y>]
(действует на ферме)
Положение теплицы по умолчанию. Соответствует верхнему левому углу фундамента теплицы.
IgnoreLightingTiles T²
(действует в помещениях)
Следует ли игнорировать огни на Front и Buildings слоях.
Например: IgnoreLightingTiles true.
indoorWater T²
(действует в помещениях)
Включает водную логику (т.е. рыбалка и т.д.) в этом месте.
KitchenStandingLocation [<int x> <int y>]
(действует в фермерском доме)
Позиция, в которой будет стоять супруг игрока при использовании кухни.
Light [<int x> <int y> <int type>]+
(действует в любом месте)
type}} - вид источника света (например, 4 для двух свечей), и <x> <y> - координаты тайла. Поле <type> может принимать следующие значения:
  • 1 (lantern)(фонарь);
  • 2 (window)(окно);
  • 4 (sconce)(подсвечник);
  • 5 (cauldron)(котёл);
  • 6 (indoor window)(внутреннее окно);
  • 7 (projector)(прожектор).

Любое другое значение приведет к падению игры.
Например: Light 3 8 4 6 8 4 11 8 4 3 2 5 10 2 5 6 19 5 5 15 5 5 11 5 11 12 5 (Гильдия искателей приключений).

LocationContext Default
(действует в любом месте)
Устанавливает карту как часть материка для целей игровой логики, таких как погода.
LocationContext Island
(действует в любом месте)
Устанавливает карту как часть Имбирного острова для целей игровой логики, таких как погода.
MailboxLocation [<int x> <int y>]
(действует на ферме)
Положение почтового ящика игрока. Соответствует верхнему левому углу.
Music <string name>
(действует в любом месте)
Задает музыку, которая воспроизводится при входе игрока, где <name> - наименование файла музыки.
Например: Music MarlonsTheme.
Music <int start> <int end> <string name>
(действует в любом месте)
Задает музыку, которая воспроизводится при входе проигрывателя, где <name> - имя сигнала в аудиофайлах, музыка будет воспроизводиться только в том случае, если время находится между <int start> (включительно) и <int end>(исключительно).
например: Music 800 1200 MarlonsTheme.
NightTiles [<string layerName> <int x> <int y> <int tilesheetIndex>]+
(действует в любом месте)
Меняет плитку после 7 вечера. Снаружи работет вместе с DayTiles: устанавливает DayTiles тайлы для загрузки карты с 6 утра до 7 вечера, затем NightTiles для загрузки с 7 вечера до конца дня. Используется в основном он для ламп.
NPCWarp [<int fromX> <int fromY> <string toArea> <int toX> <int toY>]+
(действует в любом месте)
Эквивалентно Warp, но используется для NPC.
Outdoors T²
(действует в любом месте)
Определяет, находится ли место на открытом воздухе.
Например: Outdoors true.
ProduceArea <int x> <int y> <int width> <int height>
(действует в птичнике и хлеву)
Задает область, где животные могут размножаться в птичнике или хлеву.
Например: ProduceArea 6 4 8 7.
ScreenshotRegion <int left> <int top> <int right> <int bottom>
(действует в любом месте)
Ограничивает часть карты, отображаемую при создании скриншотов.
Например: ScreenshotRegion 0 27 69 61.
SeasonOverride [<string season>]
(действует в любом месте)
Берёт определенный сезон для большинства проверок игры. (Есть ли урожай в сезоне, какой спрайт-лист использовать, и т.д.)
ShippingBinLocation [<int x> <int y>]
(действует на ферме)
Положение ячейки доставки по умолчанию. Соответствует верхнему левому углу.
skipWeedGrowth T²
(действует в любом месте)
Предотвращает размножение и распространение сорняков в этом месте.
SpouseAreaLocation [<int x> <int y>]
(действует на ферме)
Положение открытой зоны для супругов. Соответствует верхнему левому углу.
Stumps [<int x> <int y> <unused>]+
(действует в Тайном лесу)
Ежедневно добавляет пни на карту Тайного леса. Третье поле для каждого пня, не используется.
Например: Stumps 24 6 3 29 7 3 26 10 3 46 6 3 34 26 3 41 26 3.
TreatAsOutdoors T²
(valid in indoor locations)
Это место рассматривается как открытое для целей спавна чего-либо, кроме света со слоя Paths и получения угля из камней.
Пример: TreatAsOutdoors true.
Trees [<int x> <int y> <int type>]+
(действует в любом месте)
Добавляет деревья на карту. Поля <x> <y> - координаты тайла, и <type> - тип дерева (1: дуб, 2: клён, 3: сосна, 6: пальма, 7: грибное дерево).
Например: Trees 17 18 2 20 31 2.
UniquePortrait [<str name>]+
(действует в любом месте)
Переключает портреты для NPC на уникальные варианты для местоположения. NPC Jane в локации Room переключится на портрет Portraits/Jane_Room.
Например: UniquePortrait Maru.
UniqueSprite [<str name>]+
(действует в любом месте)
Переключает спрайт-листы для NPC на уникальные варианты для местоположения. NPC Jane в локации Room will переключится на спрайт-лист Characters/Jane_Room.
Например: UniqueSprite Maru.
ViewportFollowPlayer T²
(действует в любом месте)
Заставляет окно игры центрироваться на игроке.
например: ViewportFollowPlayer.
Warp [<int fromX> <int fromY> <string toArea> <int toX> <int toY>]+
(действует в любом месте)
Устанавливает тайлы, которые перемещают игрока на другую карту (например, двери). Поля <fromX> <fromY> - координаты тайла перехода, и <toArea> <toX> <toY> это название внутриигрового местоположения, в которое нужно переместиться, и координаты тайла внутри него
Например: 6 20 Mountain 76 9.
WarpTotemEntry[<int x> <int y>]
(действует на ферме)
Позиция, в которую игрок перемещается при телепортации на ферму с помощью Тотема телепортации или Скипетра Возврата.
WindowLight [<int x> <int y> <int type>]+
(действует в любом месте)
Добавляет источники света, которые горят только днем, когда нет дождя (например, свет, проникающий через окно). Смотри Light для получения дополнительной информации.

Используются следующие свойства, но, по-видимому, они не оказывают никакого эффекта: Arch, Debris, Spouse, и Fish.

¹ Свойства карты в основном обрабатываются различными методами класса GameLocation, особенно классом resetLocalState.
² Значение T (сокращение от true), но любое непустое значение тоже будет работать.

Свойства тайла

Свойства тайла(за исключением специализированных свойств, таких как TouchAction WomensLocker):¹

Слой Свойство Описание
Back Bed T² Если игрок стоит на этой плитке, он считается лежащим в постели в целях восстановления выносливости (в мультиплеере) и логики потери сознания.
Back Buildable T² Позволяет размещать сельскохозяйственные постройки на этом тайле, если нет других препятствий.
Back Diggable T² Помечает тайл как пригодный для возделывания мотыгой и позволяет сажать сельскохозяйственные культуры. Также позволяет траве распространяться на этот тайл.
Back NoFishing T² Предотвращает забрасывание игроком лески на этот тайл при ловле рыбы.
Back NoFurniture T² Не позволяет игроку размещать мебель на этом тайле.
Back NoSpawn Grass Предотвращает появление мусора (например, сорняков или камней) на этом тайле.
Back NoSpawn Tree Предотвращает появление деревьев на этом тайле. Запрещает игроку сажать деревья на этом тайле, за исключением фермы. Если дерево уже находится на этом тайле, это предотвращает его рост.
Back NoSpawn All
NoSpawn True
Объединяет NoSpawn Grass и NoSpawn Tree.
Back NoSprinklers T² Предотвращает размещение спринклеров на этом тайле.
Back NPCBarrier T² Не позволяет NPC проходить по этому тайлу.
Back Passable T² Позволяет игрокам ходить или размещать объекты на этом тайле, даже если обычно они заблокированы строительным тайлом или другим свойством. Отличается от Buildings Passable T ниже.
Back Placeable T² Запрещает игрокам размещать объекты на этом тайле.
Back Type <str type> Задает тип тайла для различной игровой логики (например, звуки шагов или посадка культур), где <type> равен одному из следующих значений: Dirt, Stone, Grass, or Wood.
Back Water T² Помечает тайл как водный, для различной игровой логики (т.е. в него попадают предметы, из него можно наполнять лейку, в нём можно ловить рыбу, в него можно помещать ловушки, он поливает ближайшие рисовые культуры, блокирует большинство проверок свободного тайла, восстанавливать здоровье в нём, если в помещении, и рисовать анимированное наложение на нём, если на улице; если в шахтах, канализации или подводной лодке; или иным образом не в пустыне).
Back WaterSource T² Позволяет игроку наполнить лейку из этого тайла.
Buildings Passable T² При размещении на водном тайле игра больше не считает его свободным (например, если это мост). Отличается от Back Passable T выше.
Paths Order <I> Для размещения в индексе 29 и 30 таблицы путей. Установите порядок, в котором будут появляться каюты при создании многопользовательского сохранения

Свойство TouchAction заставляет что-то происходить, когда игрок наступает на тайл:

Слой Свойство Описание
Back TouchAction Bus Начинается поездка на автобусе и мини-ролик "Пустыня", работающий в сочетании с билетом на автобус.
Back TouchAction ChangeIntoSwimsuit Переодевает игрока в купальник и отключает бег.
Back TouchAction ChangeOutOfSwimsuit Переодевает игрока в обычную одежду и позволяет бегать.
Back TouchAction DesertBus Позволяет доехать на автобусе обратно до автобусной остановки.
Back TouchAction Emote <string npc> <int emoteID> Находит NPC, чье имя соответствует полю <npc>, и заставляет их показывать указанную эмоцию <emoteID> над их головой (4: пусто, 8: вопросительный знак, 12: сердитый, 16: восклицание, 20: сердце, 24: сон, 28: грусть, 32: счастье, 36: х, 40: пауза, 52: видеоигра, 56: музыкальная нота, 60: покраснение).
Back TouchAction FacingDirection <string npc> <int direction> Находит NPC, чье имя соответствует полю <npc>, и заставляет его смотреть в заданном направлении (0: вверх, 1: вправо, 2: вниз, 3: влево).
Back TouchAction legendarySword Дает меч галактики при удержании в руках радужного осколка.
Back TouchAction MagicWarp <string area> <int x> <int y> [string prerequisite] Телепортирует игрока на тайл с координатами <x> <y> указанной области <area> с волшебным звуком и эффектами. Если установлено поле [prerequisite], происходит только в том случае, если этот флаг установлен с помощью Game1.player.mailReceived.
Back TouchAction PoolEntrance Переключает игрока между режимом плавания и режимом ходьбы.
Back TouchAction Sleep Заканчивается день, если игрок подтвердит это.

Свойство Action вызывает ддействие при взаимодействии игрока с тайлом(например, нажатие):

Слой Свойство Описание
Buildings Action AdventureShop Показывает экран магазина Гильдии искателей приключений.
Buildings Action Arcade_Prairie Запускает Путешествие Короля Прерий.
Buildings Action Arcade_Minecart Запускает Джумино Карт.
Buildings Action BuyBackpack Показывает меню, которое позволяет игроку обновить свой рюкзак, если доступно обновление.
Buildings Action Billboard Показывает календарь.
Buildings Action Blacksmith Показывает магазин Клинта
Buildings Action BrokenBeachBridge Предлагает использовать дерево для ремонта моста.
Buildings Action BusTicket Предлагает отправиться в пустыню Калико, если автобус был отремонтирован. Работает в сочетании с TouchAction.
Buildings Action BuyQiCoins Показывает диалог, который позволяет игроку купить 100 монет в казино.
Buildings Action ColaMachine Предлагает игроку купить Джоджа-колу.
Buildings Action ClubCards
Action Blackjack
Показывает мини-игру блэкджек в казино.
Buildings Action ClubComputer
Action FarmerFile
Показывает диалог со статистикой игры (сделанные шаги, подаренные подарки и т.д.).
Buildings Action ClubSeller Показывает диалог, который позволяет игроку купить статую вечной удачи за миллион золотых.
Buildings Action ClubShop Показывает меню магазина казино.
Buildings Action ClubSlots Показывает мини-игру игровые автоматы в казино.
Buildings Action Dialogue <text> Показывает общее диалоговое окно с заданным текстом. Смотри Формат диалога.
Например: Action Dialogue Привет, @!
Buildings Action DivorceBook Показывает варианты развода для текущего статуса брака игрока (как если бы они нажали на книгу развода).
Buildings Action Door <npcName> [npcName] Устанавливает внутреннюю дверь, которую нельзя открыть, если у игрока нет двух или более сердец дружбы с любым из названных NPC. Помещается на нижнюю из двух дверных плиток. Смотри формат диалога.
Например: Action Door Abigail
Buildings Action ElliotBook TODO: Объясните, что это значит.
Buildings Action ElliotPiano TODO: Объясните, что это значит.
Buildings Action EnterSewer Уводит вас в канализацию, если вы получили ключ.
Buildings Action EvilShrineLeft Превращает ваших детей в голубей для радужного осколка.
Buildings Action EvilShrineCenter Стирает память о вас у ваших бывших супругов.
Buildings Action EvilShrineRight Переключает появление монстров на вашей ферме.
Buildings Action Garbage <ID> Дать игроку определенный предмет по <ID>. Можно нажимать только один раз в день. TODO: Объясните, что означает каждое <ID>.
Buildings Action Gunther Открывает меню музея, в котором вы можете пожертвовать артефакты или получить награды.
Buildings Action HMGTF Даёт "??HMTGF??", когда у игрока есть Чудо-огурец в руках.
Buildings Action IceCreamStand Если лето, показывает торговый экран киоска с мороженым. В противном случае игроку будет предложено вернуться летом.
Buildings Action JojaShop Показывает экран покупок Джоджа.
Buildings Action Jukebox Показывает меню музыкального автомата для выбора музыки.
Buildings Action kitchen Показывает меню готовки.
Buildings Action Letter <string text> Показывает буквенное меню на экране с заданным текстом, с синтаксисом, используемым Data\mail.xnb.
Например: Action Letter Hey there!^I had some extra wood lying around... I thought maybe you could use it. Take care! ^ -Robin %item object 388 50 %%
Buildings Action LockedDoorWarp [<int toX> <int toY> <string toArea> <int openTime> <int closeTime>] Указывает в какое время можно войти в дверь. Обратите внимание, вы должны использовать 24-часовой формат времени, т.е. 2000 для 8 вечера.
Например: 6 29 SeedShop 900 2100
Buildings Action LuauSoup Используется для фестиваля Луау, здесь вы добавляете продукт в суп.
Buildings Action MagicInk Добавляет волшебные чернила в ваш кошелек.
Buildings Action Mailbox Показывает следующее письмо из почтового ящика игрока (если таковое имеется).
Buildings Action Material Показывает сводную информацию о запасах древесины и камня игрока.
Buildings Action Message <string messageKey> Загружает сообщение с заданным ключом из Content\Strings\StringsFromMaps.xnb файл и отображает его в диалоговом окне.
Buildings Action MessageOnce <int eventID> <string message> Если игрок не видел событие с ID <eventID>, отмечает увиденное событие и отображает заданный текст сообщения в диалоговом окне. Не затрагивает формат диалога.
Buildings Action MessageSpeech <string messageKey> Идентично Action Message, но заменяет обычный контрольный курсор речевым курсором.
Buildings Action MineSign <string message> Показывает мини-диалоговое окно с заданным исходным текстом сообщения. Не затрагивает формат диалога.
Buildings Action MinecartTransport Показывает меню назначения карты (или сообщение, если оно не разблокировано).
Buildings Action MineElevator Показывает меню шахтного лифта (для перехода на уровень шахты), если игрок достиг уровня шахты 5+, иначе сообщение о том, что шахтный лифт не работает.
Buildings Action NextMineLevel Переводит игрока на следующий уровень шахты (или на 1 уровень, если они не находятся в шахте).
Buildings Action Notes <int noteID> Если игрок нашел указанную потерянную книгу, отобразит текст заметки о музее и пометит ее как прочитанную.
Например: Action Notes 17
Buildings Action NPCMessage <str name> "<str dialogueKey>" Если указанный NPC находится в пределах 14 тайлов от игрока, считывает диалог с данным ключом из строковых файлов и отображает диалоговое окно. Смотри формат диалога.
Например: Action NPCMessage Abigail "Strings\\StringsFromCSFiles:Event.cs.1022"
Buildings Action playSound <str cueName> Воспроизводит звук или музыку с заданным именем.
Buildings Action QiCoins Показывает диалог, который позволяет игроку купить 10 монет в казино, если у него их нет, в противном случае показывает, сколько монет есть.
Buildings Action SandDragon Используется для 3 части квеста загадочного "Мистера Ки".
Buildings Action Shop На картах фестиваля открывается фестивальный магазин. Не влияет на карты, не относящиеся к фестивалю.
Buildings Action TownMailbox <ID> TODO: Объясните, что это значит.
Buildings Action Warp <int x> <int y> <str area> Перемещает игрока в координаты тайла <x> <y> в локации <area>.
Например: Action Warp 76 9 Mountain
Buildings Action WarpCommunityCenter Перемещает игрока внутрь Общественного центра, если у него есть доступ (в противном случае отобразится сообщение "заблокирован").
Buildings Action WarpGreenhouse Перемещает игрока внутрь своей теплицы, если они ее разблокировали, в противном случае отображается сообщение о руинах теплицы.
Buildings Action WizardBook Если разблокировано, вы покупаете здания у мастера.
Buildings Action WizardHatch Если вы достаточно хорошо дружите с волшебником, вы переходите в его подвал, если нет, вам говорят, что вы не можете войти.
Buildings Action WizardShrine Показывает меню настройки персонажа, доступное в башне волшебника.

¹ Свойства тайла обрабатываются по всей кодовой базе с помощью GameLocation::doesTileHaveProperty. Действия и касания обрабатываются GameLocation::performAction и GameLocation::performTouchAction соответственно. ID эмоций перечислены как константы Character.
²T value (сокращение от true), но любое непустое значение тоже будет работать.

Слой Paths

Слой Paths содержит тайлы путей из спрайт-листа paths которые влияют на поведение карты:

Индексы тайлов, показанные в таблице.
Индекс тайла Описание Ограничение
0–7 Нет эффекта? TODO: проверьте, как его использует логика привязки.
8 Добавьте этот тайл в свойство карты Light с подсветкой типа 4 (бра). Только в помещении и на фестивалях.²
9–12 Создаёт дерево когда местоположение будет свободно. За пределами фермы шанс появиться равен 50%. (Смотрите также 31–32.)
Доступные деревья: дуб (9), клён (10), сосна (11), и пальма 1 (12).
Только на открытом воздухе.
13–18 Создаёт мусор при каждый день. За пределами фермы возрождайтесь весной.
Доступный мусор: сезонные сорняки (13–15), Камень (16–17), место для артефакта(18).
Только на открытом воздухе.
19 Создаёт большое бревно, когда ферма будет создана, в верхнем левом углу этого тайла. Только на ферме.
20 Создаёт Булыжник, когда ферма будет создана, в верхнем левом углу этого тайла. Только на ферме.
21 Создаёт большой пень, когда ферма будет создана (и каждый день на лесной ферме), в верхнем левом углу этого тайла. Только на ферме.
22 Создаёт траву, когда ферма будет создана, в верхнем левом углу этого тайла. Только на открытом воздухе.
23 Создаёт случайное дерево (дуб, клен или сосну) на стадии роста 2-3, когда создается локация. Только на открытом воздухе.
24–26 Создаёт обычный кустарник, когда локация будет создана. Кусты среднего роста ежевики и морошки.
Доступные кусты: большой (24), средний (25), маленький (26).
Только на открытом воздухе.
27 Когда локация будет создана, добавит этот тайл в свойство карты BrookSounds с звуком babblingBrook. Только на открытом воздухе.
28 Создаёт личинку here (шанс на день - 33%, если уже есть не более 50 личинок). Только в Логове жуков-мутантов.
29–30 Размещает домики в мультиплеере на основе слоя (29=поблизости или 30=отдельно) и свойство тайла Order, верхним левым углом на этой плитке. Только на ферме.
31–32 Создаёт дерево когда локация будет создана. За пределами фермы, 50% шанс каждый день. (Смотри также 9–12.)
Доступные деревья: Пальма 2 (31), Красное дерево (32).
Только на открытом воздухе.
33 Создаёт кустарник золотого грецкого ореха при создании локации. Только на открытом воздухе.

Примечания:

  1. В Логове жуков-мутантов, вероятность появления мусора снижается до 33% в день.
  2. Ограничение может быть отменено с помощью свойства карты forceLoadPathLayerLights.

Потенциальные проблемы

Порядок листов тайлов

Когда вы заменяете ванильную карту, не меняйте порядок или ID оригинальных спрайт-листов. Используйте в ID новых спрайт-листов префикс z_, чтобы избежать изменений первоначального порядка.

Почему это вызывает проблемы
Например, допустим, вы заменяете карту, на которой обычно есть эти спрайт-листы в Tiled:
Оригинальный порядок спрайт-листа.
При добавлении нового спрайт-листа, обратите внимание, что порядок меняется с [paths, untitled tile sheet] на [customSheet, paths, untitled tile sheet]:
Неправильный способ добавления нового спрай-листа (изменяет исходный порядок).
Если игра попытается получить доступ к тайлу из первого листа, она получит ее изcustomSheet вместо ожидаемого листа Paths. Это может вызвать что угодно, от визуальных (например, отображение неправильных тайлов) до критичных сбоев (особенно если новый лист меньше, чем ожидалось).
Чтобы избежать этого, всегда сохраняйте исходные таблицы листов в том же порядке и добавляйте к новым таблицам префикс z_, чтобы они добавлялись в конец:
Правильный способ добавления нового спрайт-листа.
Как исправить повреждённый спрайт-лист
Смотри "мод изменил порядок исходных спрайт-листов" ниже.

Локальная копия ванильных спрай-листов

При редактировании карты в тайловом формате вам может потребоваться скопировать ванильные спрайт-листы, например path.png или spring_town.png в папку карты для нахождения их в Tiled. Если спрайт-лист все еще там, когда вы загружаете игру, SMAPI будет использовать нго для вашей карты вместо ванильных листов, что может привести к непредвиденным результатам (например, изменения в модах перекраски не будут работать на вашей карте).

Чтобы избежать проблем, вы можете сделать...

  • Удалите ванильные листы из папки перед тестированием или выпуском мода.
  • Переименовать файл листа, чтобы он начинался с точки (like .spring_town.png) и ссылаться на это. Когда SMAPI загружает карту в игре, он автоматически игнорирует точку и ищет spring_town.png в локальных файлах или папке Content/Maps.

Проблемы, связанные с картой

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

Затрагиваемые карта Проблема
Maps/Farm
Maps/Farm_Combat
Maps/Farm_Fishing
Maps/Farm_Foraging
Maps/Farm_Mining
  • На ферме слой Paths должен иметь по крайней мере одну плитку с индексом 22 (создание травы). Используется для инициализации кода травы при загрузке сохранения, даже если трава не создается.[1]
Maps/FarmHouse*
  • Два тайла кровати, по которым игрок может ходить, должны иметь два свойства: Bed T (используется для определения того, находится ли игрок в постели) и TouchAction Sleep.
  • Удаление или изменение обоев и полов приведет к сбою игры.
  • Свойства карты DayTiles и NightTiles очищаются при загрузке комнаты супругов, поэтому пользовательские значения для этих свойств не будут работать для женатых игроков.
Maps/SpouseRooms
  • Если вы добавляете или изменяете размер любого спрайт-листа, вы также должны отредактировать Maps/FarmHouse1_marriage и Maps/FarmHouse2_marriage чтобы произошли те же изменения (даже если вы не внесете никаких других изменений в фермерский дом). Это необходимо, потому что ссылки на спрайт-листы и их размеры хранятся как часть файла карты.
  1. Звук травы устанавливается в Grass::loadSprite, который называется от GameLocation::loadObjects если слой Paths имеет тайл с индексом 22. (Игра создаёт траву для каждого такого тайла, а затем удаляет их.)

'Save as' в Tiled

Когда вы используете 'save as' в Tiled, никогда не сохраняйте карту в другую папку. Это изменит все ссылки на спрайт-листы, чтобы они указывали на старую папку, поэтому она больше не будет работать в игре. Вместо этого скопируйте/переместите файлы карты в другую папку, если это необходимо.

Расположение спрайт-листов в Tiled

Если спрайт-листы карты отсутствуют, никогда не используйте поиск, чтобы использовать спрайт листы из другой папки. Это добавит сложный путь к листам, который не будет работать в игре. Вместо этого скопируйте листы в ту же папку, что и карта, и ссылайтесь на них оттуда.

Устранение неисправностей

Смотри также потенциальные проблемы выше для решения общих вопросов.

"Пути к листам должны быть относительными без перехода по каталогам (../)"

Что это значит?
Ваша карта использует листы, которые находится за пределами корневой папки. Это может произойти, если вы использовали 'save as' в Tiled для сохранения в другую папку, копируйте и вставляйте листы между картами в разных папках или вручную добавляйте листы из другой папки.
Например:
📁 Stardew Valley/
   📁 Content/
      📁 Maps/
         🗎 townInterior     <──┐
   📁 Mods/                    │
      📁 YourModName/          │ ../../../Content/Maps/townInterior
         📁 assets/            │
            🗎 your-map.tmx  ───┘
Это запрещено, так как это очень ненадёжно (например, игроки могут установить ваш мод в другую папку).
Как мне это исправить?
  1. Скопируйте листы, которые вы используете, в ту же папку, что и карта.
  2. Для неизмененных ванильных листов переименуйте их, чтобы они начинались с точки (например, .townInterior.png). Это говорит SMAPI игнорировать файл при загрузке карты в игре и загружать карту из папки Content.
  3. В Tiled, нажмите на значок редактирования под спрайт-листом.
  4. На открывшейся вкладке, нажмите Tileset > Tileset Properties.
  5. Нажмите на поле 'Image', затем на 'Edit' для поиска листов в той же папке.

Для руководства по скриншотам шагов 3-5 see these images предоставлено пользователем Discord foggywizard#7430.

После его исправления приведенный выше пример будет выглядеть следующим образом:
📁 Stardew Valley/
   📁 Mods/
      📁 YourModName/
         📁 assets/
            🗎 your-map.tmx       ───┐
            🗎 .townInterior.png  <──┘ .townInterior.png

"мод изменил порядок исходных спрайт-листов"

Что это значит?
Смотри порядок спрайт-листов для большей информации.
Как мне это исправить?
Всегда сохраняйте исходные листы в том же порядке и добавляйте к новым листам префикс z_, чтобы они добавлялись в конец:
Правильный способ добавления нового листа.
Чтобы переименовать лист в Tiled:

"мод не имеет спрайт-листов с ID '<name>'"

Что это значит?
Вы заменили одну из ванильных карт, но на вашей пользовательской карте нет всех листов исходной карты (или вы изменили их имена в Tiled). Это приведет к сбою, если игра попытается получить доступ к отсутствующему листу.
Как мне это исправить?
Сравните исходные и пользовательские карты в Tiled. Для каждого листа на исходной карте убедитесь, что он также находится на пользовательской карте и имеет то же имя (даже если вы его не используете).
Если вам нужно переименовать спрайт-лист:
  1. На панели тайлов перейдите на вкладку для тайлов, а затем нажмите на значок "Изменить".
  2. Нажмите Tileset > Tileset Properties из верхнего меню, чтобы отобразить панель свойств.
  3. Измените поле Name.


Смотри также