April 26

Создание модов для Null's Brawl: от А до Я.

Если вы всегда мечтали сделать собственные модификации для Null's Brawl, но не знали с чего начать — эта статья для вас. Мы расскажем базовые принципы создания модов: от структуры игровых файлов до правильной упаковки и публикации.

1. Что вообще представляют из себя моды Null’s Brawl?

Моды для Null's Brawl представляют из себя файл .NullsBrawlAssets, который можно напрямую открыть в Null's Brawl. В основном, мод изменяет файлы .csv, которые находятся в assets/csv_logic.csv, assets/csv_client.csv, assets/localization.csv. Что он может изменить? Буквально все визуальные элементы и некоторые настройки игры. Скины, карты, шрифты, музыка, экраны загрузки - всё может быть изменено.

2. Как начать создавать моды?

Создание модов — это отличная возможность проявить креативность и внести свой вклад в любимую игру.

Для начала - нужно скачать программу, которая умеет работать с файлами .json - для Windows - VS Code, Notepad++, и др. Для Android - Редактор кода, QuickEdit и др. Можно прочитать мануал, который был написан самим разработчиком Null's Brawl, Daniillnull: клик

В нашей статье мы напишем мод, который будет изменять тему лобби на лобби из "Станции призраков".

3. Настройка проекта. Создание content.json

Откройте файловый менеджер на вашем телефоне (это может быть встроенный в систему проводник, ES Проводник, и пр.) Создайте папку с любым названием. Откройте её. Создайте файл content.json - это название файла обязательно.

Перед началом считаем нужным написать правила написания:

  1. Файл должен начинаться с { и заканчиваться }.
  2. Все ключи и строковые значения пишутся в двойных кавычках " ".
  3. Все параметры в json должны указываться через запятую.
  4. Числа и логические значения (true, false) пишутся без кавычек.
  5. После каждой пары ключ-значение ставится запятая, кроме последней.
  6. Название таблицы указывается без .csv в конце.
  7. Название строки соответствует полю Name в таблице.

Откройте файл через редактор. Вы увидите простой файл. Это нормально. Для начала напишите название вашего мода: оно указывается через параметр @title:

{
    "@title": "Мой мод :)"
}

Теперь напишем описание для нашего мода: оно указывается через параметр @description:

{
    "@title": "Мой мод :)",
    "@description": "Мой самый первый мод"
}

Итак. Начало положено. Теперь нужно сказать игре, что именно нужно изменить. Для этого нужно обратиться к csv-файлу игры, в нашем случае к themes, так как именно этот файл управляет темами игры.

Открыв файл themes.csv через редактор таблиц, мы увидим, что первая строка содержит названия. Это параметры. Также (после 2-й строки) в 1-м столбце мы также увидим названия. Это объекты. Мы можем изменять как существующие строки, как и создавать свои. Но для того, чтобы наша тема в игре не менялась, нам нужно заменить все темы. Для этого воспользуемся звёздочкой: *

Дополним код:

{
    "@title": "Мой мод :)",
    "@description": "Мой самый первый мод",
    "themes": {
        "*": {
            
        }
    }
}

Но просто создания объекта недостаточно. Нужно написать параметры и значения.

Правила написания значений:

  1. Строку нужно всегда указывать в двойных скобках: "Привет"
  2. Число - просто числом: 23
  3. Истину или ложь можно указать через true или false соответственно.
  4. Пустое значение указывается как null

Нам потребуются параметры:

  • FileName - название файла, где хранится фон для лобби игры.
  • ExportName - название фона в файле, находится через SC Editor.
  • ThemeMusic - название музыки в лобби, находится в music.csv
  • LoadingJingle - название файла мелодии при загрузке в игру
  • LoadingScreen - название файла, где хранится экран загрузки.

Так как наша тема уже существовала раньше в игре, мы можем найти в themes.csv тему "GhostTrain". Вот эта строка:

GhostTrain

sc/background_ghosttrain.sc

bgr_ghosttrain

Ghosttrain_Menu

sfx/ghost_train_load_01.ogg

Заполним данные, следуя таблице:

{
    "@title": "Мой мод :)",
    "@description": "Мой самый первый мод",
    "themes": {
        "*": {
            "FileName": "sc/background_ghosttrain.sc",
            "ExportName": "bgr_ghosttrain",
            "ThemeMusic": "Ghosttrain_Menu",
            "LoadingJingle": "sfx/ghost_train_load_01.ogg",
            "LoadingScreen": "sc/loading.sc"
        }
    }
}

LoadingScreen был не указан, так как используется стандартный Loading из игры. Нужно найти версию, в которой была добавлена тема "Станция призраков".

Тема была добавлена в 46 версии Brawl Stars.
Это нам очень понадобится в будущем. Пока напишем код для музыки, аналогично теме:

{
    "@title": "Мой мод :)",
    "@description": "Мой самый первый мод",
    "themes": {
        "*": {
            "FileName": "sc/background_ghosttrain.sc",
            "ExportName": "bgr_ghosttrain",
            "ThemeMusic": "Ghosttrain_Menu",
            "LoadingJingle": "sfx/ghost_train_load_01.ogg",
            "LoadingScreen": "sc/loading.sc"
        }
    },
    "music": {
        "Ghosttrain_Menu": {
            "Disabled": null,
            "FileName": "music/brawloween_2022_menu_01.ogg"
        }
    }
}

Мы просто добавили FileName для того, чтобы указать путь до файла, и включаем музыку, чтобы игра её видела.

Итак, .json полностью готов к использованию! Сохраняем код и идём к следующему шагу.

4. Использование файлов.

Посмотрите на код. Возможно, вы заметили, что там есть пути до файлов. А где взять эти самые файлы? Есть очень хороший источник файлов, который позволяет найти файлы для любой версии Brawl Stars.

Нам нужно найти следующие файлы:

  • sc/background_ghostrain.sc
  • sc/loading.sc
  • sfx/ghost_train_load_01.ogg
  • music/brawloween_2022_menu_01.ogg

Открываем источник. Находим версию v46 и поочередно ищем и скачиваем файлы. Внимание! для некоторых .sc есть файлы _tex.sc, и .zktx. Их тоже нужно скачать и бросить в папку с .sc, иначе мод работать не будет!

Открываем папку мода. Создаем папки sc, music, и sfx. Кидаем каждый файл в свою папку, и на этом создание самого мода закончено!

Если очень хочется, можно в папку мода закинуть icon.png. Этот файл используется как иконка мода и отображается при установке.
С помощью zip-архиватора упакуйте всё содержимое папки мода и получившийся .zip - это и есть ваш мод!

5. Тестирование и публикация.

Для тестирования нашего мода можно использовать несколько способов. Но мы будем использовать метод root-прав.

Для этого мы генерируем uuid на сайте https://uuidgenerator.net. Затем распакуем наш .zip по адресу /data/data/daniillnull.nulls.brawlstars/files/mods/{ваш-uuid}/
Затем просто заходим в игру, и проверяем наш мод. Если всё хорошо - ура! Наш мод можно публиковать.

Есть Telegram-группа мододелов: https://t.me/nb_mods. А уже там есть вкладка Signing Requests Pro. Отправляем наш .zip туда, пишем небольшое описание, и ждём. Модераторы проверят ваш мод и отправят в Signed (vXX), где XX - версия игры. После этого ваш мод будет доступен для всех!

Удачи в создании ваших модов! @NullsGaming