ФЭНДОМ


Создание модов для Starbound.

Предисловие

Дорогие читатели, я пишу этот блог в помощь тем, кто не может начать осваивать модинг Starbound'a. Сразу прошу простить мне орфографические ошибки, т.к. я из Канады, русский знаю плохо. Но если вы всё-таки нашли ошибку, отпишите о ней в коментариях, заранее спасибо! Что-ж если вы решили начать путь, полный кода, разочарований, падений и взлётов, тогда я надеюсь, что вам понравится модинг и мой блог. 

Так-же рекомендую использовать Notepad++ ==> Ссылка

Что-ж поехали!


Начало(quick start).

Ну пора начинать. Для начала надо распоковать ресурсы игры (Вам ведь будет проще). Так вот, переходим в директорию установленной игры. По умолчанию: С:\Steam\steamapps\common\Starbound

MY DIrectory

Makkei







Теперь нам нужна папка "assets". В ней лежит фай "packed.pak" , это запакованные ресурсы игры!

Bandicam 2017-05-09 10-38-20-468

Makkei




Так вот, их надо распаковать, для этого создаёте в этой папке файл "Unpacker.bat". Открываете его и вписываете туда:

echo off
cls
set gamepath=C:\Program Files (x86)\Steam\SteamApps\common\Starbound
echo Unpacking ..\assets\packed.pak into ..\assets\unpacked
echo This may take a long time. 
echo Don't close this window! It closes automatically! 
"%gamepath%\win32\asset_unpacker.exe" "%gamepath%\assets\packed.pak" "%gamepath%\Assets\Unpacked"


 После запускаете его, появится консоль, не закрывайте её, она закроется автомотически после распаковки!

Bandicam 2017-05-09 10-57-54-910

Makkei




              






Примерно мосле 10 минут у вас появится папка "unpacked"  и закроется консоль.

В этой папке находятся все ресурсы игры, от загрузочного экрана, и до предметов, которые вы находите в сундуках! 

Теперь идём в папку 'Starbound\Mods\'

В ней хранятся ваши моды. Создадим папку с именем вашего мода "MyFirstMod"

Создаём в папке с нашим модом файл "_metadata" без расширения, и пишем туда:

{
  "version" : "rev8",
  "friendlyName" : "MyFirstMod",
  "link" : "",
  "steamContentId" : "000000000",
  "name" : "MyFirstMod",
  "description" : "You first mod",
  "author" : "You"
}

Это файл-описание вашего мода.

Ну вот, первая тема закончена, начинается самое интересное!!!

Немного теории

Кратко о ресурсах, они делятся на два типа:

  • продседурно-генерируемые
  • пред-разработанные

Продседурно-генерируемые:

  • Собираются из установленных частей
  • Имеют множество вариантов
  • К ним относятся: оружие(кроме легендарного и создаваемого), мобы(кроме боссов), планеты(кроме миссий и основных, типо Outpost, Protectorat и тд.).

Пред-разработанные:

  • Разработаны вручную, и не собираются из частей.
  • К ним относятся: Данжи, легендарное оружие, прочие предметы, миссии, боссы, корабли, и т.д.

Назначение ресурсов

Распишем распакованные ресурсы по названию и назначению:

  • achievements - Достижения, и некоторые квесты
  • ai - К.С.И.И. вашего корабля
  • animations - Частицы и анимации
  • behaviors - ИИ мобов
  • biomes - Биомы
  • celestial - Корабельная карта навигации
  • cinematics - Кат-сцены
  • codex - Записи в кодексе
  • collections - Коллекции
  • cursors - Курсоры при действиях игры
  • damage - Виды урона
  • dialog - Когда NPC разговаривают с вами
  • dungeons - Данжи и крепости
  • effects - Эффекты и бафы
  • humanoid - Персоонажи
  • interface - Интерфейс
  • items - Предметы
  • leveling - Уровни оружий
  • liquids - Жидкости
  • monsters - Монстры, которые продседурно-генерируемые
  • music - Звуки игры
  • names - Имена персоонажей
  • npcs - NPC которые пред-разработанны
  • objects - Все объекты игры
  • parallax - Задние планы для биомов
  • particles - Мини частицы
  • plants - Растения
  • player - Игрок, и его данные
  • projectiles - Проджектлайты(пули и стрелы ввиде текстур)
  • quests - Квесты
  • radiomessages - Радиосообщения
  • recipes - Рецепты предметов
  • rendering - OpenGL и его конфигурация
  • scripts - Скрипты
  • sfx - Звуки, относящиеся к предметам
  • ships - Корабли
  • sky - Небо
  • spawntypes - Типы спавнеров
  • species - Специализация
  • stagehands - Этапы
  • tech - Технологии
  • tenants - Конфигурация колониальных спаунеров
  • terrain - Конфигурация генераций пещер и прочего
  • tiles - Текстуры руд и прочих блоков
  • tilesets - Роспись предметов по тегам
  • treasure - Награды с квестов и миссий
  • vehicles - Транспорты
  • versioning - Lua скрипты
  • weather - Погода

Предмет

Пусть первое что мы создадим будет предмет, а точнее меч.

Создадим папку items в папке нашего мода.

В ней папку "active", там "weapons",  в ней "melee", внутри с именем предмета, например "sword"

Большенство предметов состоит из 2-х файлов:

  • Текстура
  • Файл-синтезатор (Типо синтезирует предмет в моде)
Bandicam 2017-05-09 15-04-01-369

Makkei










Файл-синтезатор

​Вот код обычного меча:

{
  "itemName" : "YourSword",
  "price" : 1080,
  "level" : 5,
  "maxStack" : 1,
  "rarity" : "Legendary",
  "category" : "broadsword",
  "description" : "Your sword description",
  "shortdescription" : "Name in game",
  "tooltipKind" : "sword",
  "twoHanded" : true,
  "itemTags" : ["weapon","melee","broadsword"],

  "inventoryIcon" : "MySword.png",

  "animation" : "/items/active/weapons/melee/broadsword/combobroadsword.animation",
  "animationParts" : {
    "handle" : "",
    "blade" : "MySword.png"
  },
  "animationCustom" : {
    "sounds" : {
      "fire" : [ "/sfx/melee/swing_broadsword.ogg" ]
    }
  },

  "scripts" : ["/items/active/weapons/melee/meleeweapon.lua"],

  "elementalType" : "physical",

  "primaryAbilityType" : "broadswordcombo",
  "primaryAbility" : {
    "fireTime" : 1.1,
    "baseDps" : 50,
    "stepDamageConfig" : [
      {
        "baseDamageFactor" : 1.0,
        "knockback" : 10
      },
      {
        "baseDamageFactor" : 0.4,
        "knockback" : 5
      },
      {
        "baseDamageFactor" : 1.1,
        "knockback" : 25
      }
    ]
  },

  "altAbilityType" : "risingslash",

  "builder" : "/items/buildscripts/buildunrandweapon.lua"
}

Разберём код,  

"itemName" : "YourSword" это кодовое имя предмета,  БЕЗ ПРОБЕЛОВ.

"price" : 1080 - цена в пикселах

"rarity" : "Legendary" - редкость предмета

"category" : "broadsword" -  тип предмета

"shortdescription" - имя предмета в игре МОЖНО С ПРОБЕЛАМИ

"description" - описание предмета в игре

"twoHanded" : true - двуручное? (true - ДА)

"inventoryIcon" : "YourSword.png" - Иконка предмета в инвентаре

"animation" - путь до файла анимаци

"scripts" - путь до файла со скриптами для оружия

"elementalType" - определяет тип урона: 


  • physical - физический
  • electric - электрический
  • poison - ядовитый
  • fire - огненный
  • frost - ледяной

"primaryAbilityType" - первичный тип атаки

"fireTime" - время на замах (выстрел у далбнобойных)

"baseDps" - базовый урон (без эффекта брони на буст урона)

"altAbilityType" - альтернативная атака

"builder" : "/items/buildscripts/buildunrandweapon.lua" - путь до скрипта инициализации (НЕ ТРОГАТЬ!!!)

Текстура

Ну с текстурой просто, рисуете себе мечек по вкусу! Пример:
MySword

Makkei

Главное фон прозрачный, формат .png.

Рецепт

Так как каждый предмет должен иметь рецепт, мы его сейчас сделаем!

Открываем директорию вашего мода, и создаём папку "recipes" , в ней папку с названием верстака, где крафтится предмет, в папке с именем верстака файл с именем вашего предмета.

Filr2142424sa

Директория вашего мода


Filr2142424sa2

Папка Recipes




Filr2142424sa22

Файл внутри папка anvil1

И в этот файл пишите:

{
  "input" : [
    { "item" : "ironbar", "count" : 6 },
    { "item" : "darkwoodmaterial", "count" : 4 }
  ],
  "output" : { "item" : "YourSword", "count" : 1 },
  "groups" : [ "craftinganvil", "weapons", "all" ]
}
"output" : { "item" : "YourSword", "count" : 1 }, -> Что получается при крафте 

"groups" : [ "craftinganvil", "weapons", "all" ] -> Где крафтится предмет

Вот мы закончили первый предмет и рецепт, пора запускать!!!

Объект

Теперь пора создавать объекты (ВЫ же хотите себе свой верстак?).

Объекты состоят из:

  • Файла-синтезатора
  • Текстуры
  • Изображения иконки инвентаря
  • Фрейма
  • Конфига анимации(если она есть)

Идём в корень нашего мода, там создаём папку "objects", в ней папку с названием типа объекта, пусть    "crafting", там папку с название вашего предмета "MyWorkbench".


Файл-синтезатор объекта

Файл кладём в папку 'MyWorkbench, и называем "'MyWorkbench.object",  туда пишем:

{
  "objectName" : "MyWorkbench",
  "colonyTags" : ["crafting"],
  "rarity" : "Rare",
  "interactAction" : "OpenCraftingInterface",
  "interactData" : {
    "config" : "/interface/windowconfig/crafting.config",
    "paneLayoutOverride" : {
      "windowtitle" : {
        "title" : "  My crafting table",
        "subtitle" : "  Heavy crafting!",
        "icon" : {
          "file" : "/interface/crafting/ironcraftingtable.png"
        }
      }
    },
    "filter" : [ "MyWorkbench" ]
  },
  "printable" : false,
  "description" : "Your first crafting table",
  "shortdescription" : "^orange;My Workbench^white;",
  "race" : "generic",
  "category" : "crafting",
  "price" : 30,

  "apexDescription" : "What a fuck?.",
  "avianDescription" : "Heavy brick!",
  "floranDescription" : "Pool!",
  "glitchDescription" : "Father?",
  "humanDescription" : "WTF?.",
  "hylotlDescription" : "Iron parasha!",
  "novakidDescription" : "Pice of sheet",

  "inventoryIcon" : "MyWorkbenchicon.png",
  "orientations" : [
    {
      "dualImage" : "MyWorkbench.png:<color>",

      "imagePosition" : [-16, 0],
      "frames" : 1,
      "animationCycle" : 1.0,

      "spaceScan" : 0.1,
      "anchors" : [ "bottom" ]

    }
  ]
}
Где:*

"objectName" : "MyWorkbench" Кодовое имя объекта (БЕЗ ПРОБЕЛОВ) 


  • "interactAction" : "OpenCraftingInterface", Действие при взаимодействии игрока с предметом(интеракт- действие)

  • "interactData" : {
    "config" : "/interface/windowconfig/crafting.config",
    "paneLayoutOverride" : {
    "windowtitle" : {
    "title" : "  My crafting table",
    "subtitle" : "  Heavy crafting!",
    "icon" : {
    "file" : "/interface/crafting/ironcraftingtable.png"
    }
    }
    },    Этот кусок отвечает за уточнение интеракт-действия

  • "filter" : [ "MyWorkbench" ] Ну это фильтр , который вы указываете в рецепте предмета(где крафтится предмет)

  • "orientations" : [
    {
    "dualImage" : "MyWorkbench.png:<color>",

"imagePosition" : [-16, 0],
"frames" : 1,
"animationCycle" : 1.0,

"spaceScan" : 0.1,
"anchors" : [ "bottom" ]

}
] Это отображение предмета в игровом мире, ну как ориентирована текстура

Файл-Фрейм

Создаёте в папке с вашим объектом файл "MyWorkbench.frames", и пишите туда:

​{

  "frameGrid" : {
    "size" : [32, 24],
    "dimensions" : [1, 1],
    "names" : [
      [ "default" ]
    ]

  }
}
Где:*

"size" : [32, 24], Размер вашей текстурки в пикселах


  • "dimensions" : [1, 1], деление файли текстур(нужно при создании анимаций)

  • "names" : [

[ "default" ]

] имена тех самых делёных текстур


Текстура объекта

нам нужна текстура размером 32x24 пиксела,(ну мы-ж сами указали этот размер...)

MyWorkbench

Верстак (32x24)

Вот пример:


Ну и иконка в инвентаре:

MyWorkbenchicon

Иконка


Ну объект готов, теперь подправим рецепт меча, чтобы он там крафтился:

{
  "input" : [
    { "item" : "ironbar", "count" : 6 },
    { "item" : "darkwoodmaterial", "count" : 4 }
  ],
  "output" : { "item" : "YourSword", "count" : 1 },
  "groups" : [ "MyWorkbench", "weapons", "all" ]
}

О, чуть не забыл, идём в папку "recipes" из корня мода.

Там создаём файл "MyWorkbench.recipe" и в него код:

{

"input" : [
    { "item" : "ironbar", "count" : 1 },
    { "item" : "darkwoodmaterial", "count" : 10 }
  ],
  "output" : { "item" : "MyWorkbench", "count" : 1 },
  "groups" : [ "inventorstable", "craftingstations", "all" ]
}

Это рецепт самого верстака, ну всё можно запускать и проверять!

Обнаружено использование расширения AdBlock.


Викия — это свободный ресурс, который существует и развивается за счёт рекламы. Для блокирующих рекламу пользователей мы предоставляем модифицированную версию сайта.

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

Также на ФЭНДОМЕ

Случайная вики