Лучшие моды для Atom RPG
Выход первой Fallout стал переломным событием. Ее постъядерная эстетика «атом-панка», остроумные тексты и по-своему прекрасный мир оказали влияние на многие другие игры. И оно оказалось настолько сильным, что новые игры, вдохновленные классикой от Black Isle Studios, выходят до сих пор. Один из наиболее ярких примеров – Atom RPG.
Немало заимствуя у Fallout, Atom RPG позволяет нам взглянуть на альтернативную историю постапокалиптического СССР. Это разоренная страна, полная бандитов, мутантов, сталкеров и других выживших, которые не остановятся ни перед чем, лишь бы остаться в живых. Но если даже этого вам недостаточно, игру можно дополнить великолепными модами. Давайте взглянем на лучшие из них!
Remove Intros and Logos

Avatar 2.0
Зачем ограничиваться возможностями игры, если можно создать эти возможности самостоятельно? Мод Avatar 2.0 позволяет вам использовать в качестве игрового аватара любое изображение, благодаря чему внутриигровые паспорта выглядят невероятно реалистично. Вы почувствуете себя настоящей неотъемлемой частью Atom RPG. Как если бы в реальной жизни в паспортах подробно указывали все ваши способности.
Fishing Extended
Каждой игре, претендующей на высокое звание RPG, необходимы рыбалка и мини-игры. Каждой постапокалиптической игре, достойной своего сеттинга, нужны их экстремальные варианты. С модом Fishing Extended рыбалка становится более захватывающей, но и более опасной.
Теперь для ловли рыбы можно использовать нетрадиционные методы, например, гранаты и динамит. Но даже если вы хотите ловить по старинке, Fishing Extended докажет свою полезность целой кучей мелочей, благодаря которым рыбалка может стать единственной причиной постоянного возвращения к игре!
Walking Through the Wastes
Phenomenon
Free Play
В ролевых играх бросать незавершенные квесты – обычное дело. Например, многие предпочитают выполнять сюжетные квесты, чтобы быстрее добраться до концовки. Но в Atom RPG это означает прекращение игры.
Однако, мод Free Play позволит вам обойти установленные разработчиками ограничения и свободно продолжить играть даже после завершения основной сюжетной линии. Настоящая свобода? Звучит здорово!
Neutron
Atom RPG – отличная ролевая игра. Но даже в ней можно кое-что где-то подкрутить, чтобы она стала еще лучше. И говоря откровенно, мод Neutron делает нечто гораздо большее. Он значительно изменяет множество самых разных аспектов игры, а также вносит огромное количество нововведений в плане удобства, благодаря которым геймплей по сравнению с базовой версией становится значительно приятнее. Стоит лишь дать ему шанс, и вы мгновенно заметите разницу. Идеально, чтобы освежить второе, третье или десятое прохождение.
NoWeight
Видеоигры – непревзойденная форма эскапизма, позволяющая вам испытать ощущения, невозможные в нашем скучном мире. Но почему, черт возьми, мы не можем нести сразу все, что нам хочется?
Пожалуй, ограничение веса – одна из самых раздражающих механик, которая упорно отказывается умирать. И моды здесь – единственное решение. С модификацией NoWeight можно подобрать любой предмет, найденный в пустошах, потому что здесь каждый персонаж способен носить в тысячу раз больше обычного веса. Никаких ограничений!
CTW – Cheats to the Wastelands
Обнаружена сложная ролевая игра. Немедленно активировать режим бога! Мод Cheats to the Wastelands – очень полезное дополнение, которое вводит в игру внутриигровой редактор. Поверьте, это круто.
Он позволяет вам настраивать параметры всех ваших персонажей, а также изменять некоторые настройки игры, в том числе дополнительные параметры графики, недоступные обычными способами. Пора по-настоящему напрячь свою новую видеокарту и взглянуть, на что она способна.
A Better Talent Tree
Деревья талантов (или способностей) в этой игре очень важны. Представьте, что в бою вы были бы ограничены лишь обычными атаками? Но моддинг еще сильнее расширяет наши возможности. Модификация A Better Talent Tree вносит в дерево талантов ряд нововведений, благодаря которым оно ощущается несколько более сбалансированным.
Вместо экспоненциального повышения количества очков талантов, необходимых для приобретения каждой новой способности, мод увеличивает стоимость линейно. Поэтому чем дальше способность от центра, тем больше она будет стоить. Также было изменено количество очков талантов, получаемых при повышении уровня, поэтому вам придется тратить их более разумно. Особенно на высоких уровнях сложности. Вы же хотели настоящего испытания?
Вводный курс по использованию ModKit (ATOM RPG)
Предисловие
Данная инструкция написана мной (phobos2077) на основе того как я сам понял использование инструментария. Т.к. я не разработчик, мог чего-то не понять или понять неверно, имейте ввиду.
Моды созданные в ModKit представляют собой AssetBundle (по сути архив с дополнительными игровыми ресурсами в определенном формате, понятном Unity) + файл DLL (код мода).
Игра версии 1.08+ (либо бета-бранч) автоматически загружает моды, установленные в следующей папке:
c:\Users\ \AppData\LocalLow\AtomTeam\Atom\Mods\
Установка Unity
— В следующем окне ничего отмечать не нужно, жмем «Done»
— Дожидаемся скачивания и установки Unity
(этот вариант позволит в будущем легко устанавливать новые версии Unity, а также держать 2 и более версий на компе)
Вариант 2
— «Загрузить установщик»
— Скачиваем, следуем инструкциям установщика
После первого запуска потребуется авторизация. Необходимо будет создать учетную запись Unity
Коротко об использовании Unity Editor
Стандартный оконный интерфейс. Вверху главное меню редактора, под ним тулбар с полезными инструментами для разработки игр. Большую часть всего этого знать не обязательно, если вы планируете делать простые моды (правку предметов, диалогов и т.п.).
Для разработки полноценных новых локаций потребуются базовые навыки разработки сцен в Unity (в интернете миллион туториалов на эту тему).
Основная часть окна поделена на несколько областей, каждая из которых может иметь несколько вкладок. Каждая вкладка это «окно» внутри редактора Unity, их можно перетаскивать как угодно (в другую область, в отдельное от основного редактора окно и т.п.). Размеры областей также можно менять. На скриншоте представлена стандартная раскладка, которая идет после установки.
Готовим проект к разработке модов
— Извлекаем папку «modkit-master» из архива
— Запускаем Unity
— (авторизуемся, если потребует)
— Жмем «Open»
— Выбираем нужный каталог
— После загрузки, главное окно редактора будет выглядеть примерно так:
— Для удобства можем перетащить вкладку AssetViewer из этого окна в главное окно (рядом с Game, Scene, и тд)
В проекте modkit сразу идут ресурсы «примерного» мода. На первый раз рекомендуется ознакомиться с этими ресурсами, попробовать собрать мод и проверить его в игре. Но для дальнейшей разработки вашего мода нужно будет удалить всё лишнее, чтобы в готовом моде были только нужные ассеты.
Для очистки всего лишнего удаляем ТОЛЬКО следующие каталоги:
— Все подпапки в папке Resources/
— Все ассеты в папке Scenes/
Проект почищен, но мод работать не будет если не настроить должным образом скрипт мода.
— В проекте выбираем каталог Scripts/
— Щелкаем по MyMod и в инспекторе меняем поле Name на имя фашего мода (латиницей, без пробелов и лишних символов).
— В данном скрипте разработчики добавили код необходимый для запуска того самого «примерного» мода с новой локацией. Нам же большая часть этого кода не нужна. Для новичков рекомендую заменить всё содержимое скрипта на мой вариант:
https://pastebin.com/VbBZ6U8w
Предложенный скрипт содержит только загрузку измененных ресурсов и вывод простого сообщения в лог, о том что мод успешно загружен.
Использование Asset Viewer
Также AssetViewer можно использовать для просмотра ассетов (если не требуется их править), для этого просто щелкаем левой кнопкой мыши по ассету и смотрим его свойства в окне Инспектора.
Правка предметов при помощи ModKit
— Всё, правка готова, осталось лишь собрать мод
Сборка и тестирование мода
Atom rpg как установить моды на пиратке
Данная инструкция написана мной (phobos2077) на основе того как я сам понял использование инструментария. Т.к. я не разработчик, мог чего-то не понять или понять неверно, имейте ввиду.
Вариант 2
— «Загрузить установщик»
— Скачиваем, следуем инструкциям установщика
После первого запуска потребуется авторизация. Необходимо будет создать учетную запись Unity
Стандартный оконный интерфейс. Вверху главное меню редактора, под ним тулбар с полезными инструментами для разработки игр. Большую часть всего этого знать не обязательно, если вы планируете делать простые моды (правку предметов, диалогов и т.п.).
Для разработки полноценных новых локаций потребуются базовые навыки разработки сцен в Unity (в интернете миллион туториалов на эту тему).
Основная часть окна поделена на несколько областей, каждая из которых может иметь несколько вкладок. Каждая вкладка это «окно» внутри редактора Unity, их можно перетаскивать как угодно (в другую область, в отдельное от основного редактора окно и т.п.). Размеры областей также можно менять. На скриншоте представлена стандартная раскладка, которая идет после установки.
— Извлекаем папку «modkit-master» из архива
— Запускаем Unity
— (авторизуемся, если потребует)
— Жмем «Open»
— Выбираем нужный каталог
— После загрузки, главное окно редактора будет выглядеть примерно так:
— Для удобства можем перетащить вкладку AssetViewer из этого окна в главное окно (рядом с Game, Scene, и тд)
В проекте modkit сразу идут ресурсы «примерного» мода. На первый раз рекомендуется ознакомиться с этими ресурсами, попробовать собрать мод и проверить его в игре. Но для дальнейшей разработки вашего мода нужно будет удалить всё лишнее, чтобы в готовом моде были только нужные ассеты.
Для очистки всего лишнего удаляем ТОЛЬКО следующие каталоги:
— Все подпапки в папке Resources/
— Все ассеты в папке Scenes/
Проект почищен, но мод работать не будет если не настроить должным образом скрипт мода.
— В проекте выбираем каталог Scripts/
— Щелкаем по MyMod и в инспекторе меняем поле Name на имя фашего мода (латиницей, без пробелов и лишних символов).
— В данном скрипте разработчики добавили код необходимый для запуска того самого «примерного» мода с новой локацией. Нам же большая часть этого кода не нужна. Для новичков рекомендую заменить всё содержимое скрипта на мой вариант:
https://pastebin.com/VbBZ6U8w
Предложенный скрипт содержит только загрузку измененных ресурсов и вывод простого сообщения в лог, о том что мод успешно загружен.
Также AssetViewer можно использовать для просмотра ассетов (если не требуется их править), для этого просто щелкаем левой кнопкой мыши по ассету и смотрим его свойства в окне Инспектора.
— Всё, правка готова, осталось лишь собрать мод
Atom rpg как установить моды на пиратке
Данная инструкция будет постоянно пополняться.
Стоит выделить три основных уровня использования инструментария модемейкером (разработчиком мода):
— Начальный. На этом уровне модемейкер изменяет и добавляет игровые объекты на основе базовых игровых моделей, пользуясь только игровым функционалом.
— Любительский. На этом уровне модемейкер вкупе с базовым функционалом добавляет в игру уже готовый для внедрения сторонний функционал. Для этого уровня необходимы базовые знания основ 3d-моделирования и внедрения в игру своих FX-эффектов.
— Профессиональный. Для полноценного использования данного инструмента модемейкер должен обладать углубленными знаниями гейм-дизайна Unity и уметь писать скрипты на языке C#. Без специальных знаний изменение игровых механик для обычного игрока не представляется возможным.
1. Для того чтобы создавать моды к игре Atom RPG, вам понадобится среда для разработки игр Unity 2019.4.28 https://unity3d.com/get-unity/download/archive
После установки и запуска Unity откройте проект ModKit.
2. Редактор Unity
Редактор Unity обладает стандартным оконным интерфейсом, наиболее важными для создания модов особенностями которого являются следующие:
Термины, необходимые для работы в редакторе:
Внимание! Важно!
Поскольку Atom RPG является коммерческим проектом, модкит не открывает доступ ко всем исходникам игры. Через него вы не сможете извлечь модели, анимацию, звуки и прочие игровые ресурсы.
Но вы можете заменять их своими, подменяя их под схожими названиями, или добавлять новые.
3. Обзор игровых ресурсов (Asset Viewer)
Для внесения изменений в уже готовые базовые ассеты необходимо воспользоваться инструментом Asset Viewer.
Окно для просмотра добавленных в игру объектов Asset Viewer открывается по клику на указанную выше строку в меню.
Самые важные аспекты этого окна:
1. Чтобы редактировать ассет, необходимо сперва скачать его в проект правым кликом мышки с последующим кликом на кнопку Download\Скачать.
2. Поисковое окно для нахождения нужных ассетов по названию.
3. Поиск по категориям ассетов.
Кнопка Reload используется для перезагрузки пакета ассетов.
Кроме того, AssetViewer можно использовать для просмотра ассетов через левый клик по ним. Настройки ассета после этого отобразятся в окне Inspector\Инспектор.
4. Настройка карт проходимости (Path Editor)
1. Очистить карту проходимости. Это действие требуется выполнять при создании новой карты и после любых изменений размеров карты.
2. Выполнить генерацию расчета лучей для определения проходимости.
3. Построить карту проходимости на основе данных расчета лучей.
5. Сборка модификации (Build Mod)
Для публикации модификации в Steam Workshop вам нужно будет подключиться к аккаунту Steam. Сам Steam должен быть запущен на вашем PC не в автономном режиме (осуществлен вход в систему).
Для тестирования мода публикация в Steam Workshop не обязательна.
6. Запустите игру чтобы убедиться, что модификация работает.
Активируйте своё творение, перейдя в раздел «Модификации».
Изучите содержимое файла %AppData%/Username/LocalLow/AtomTeam/Atom/output_log.txt (где Username – имя вашей учетной записи Windows).
При успешной загрузке в строке «Mod Init» вы должны увидеть название своего мода. Далее изучите последующие строки с именем вашего мода на предмет возможных ошибок.
Выходить из игры для изучения лога не обязательно. Наблюдение за правильной работой мода можно осуществлять в реальном времени.
В игре используются ассеты-прототипы, в которых содержится игровая информация. Рассмотрим каждый прототип на примерах.
Чтобы изменить базовый игровой прототип, перейдите в Asset Viewer, выберите категорию, файл, через контекстное меню (ПКМ) > Download).
Создание нового игрового уровня необходимо начинать с создания сцены в Unity.
Перейдите в директорию Scene и вызовите контекстное меню Create > Scene. Зададим для примера название Test
Открываем ранее созданную сцену и создаем объект (Create Empty) с именем Level
Обнуляем координаты Position и добавляем компонент Environment Level
Добавляем местность, например 3D Object > Terrain
(Важно! Все статические объекты (дома, деревья, прочий антураж), которые не являются интерактивными, должны содержаться внутри объекта Level. В противном случае они не будут отображаться в игре.
Настраиваем размер местности в 50 клеток (тайлов), 1 клетка = 2 единицы в Unity. Для примера используем параметры Terrain Width 100 и Terrain Length 100.
Выставляем теги PathGround и слой Level.
Добавляем объект в Level, называем Path. Далее добавляем компонент Pathfinder(карту проходимости). Настраиваем карту для поиска путей в 50 клеток.
Теперь добавляем точку входа на локацию в Level и называем её EnterPoint (обязательно)
Первая тестовая локация готова. Теперь выполняем команду Save Level, и можно приступать к сборке мода (Game > Build Mod). Протестировать в игре уровень можно через консольную команду «ChangeLocation ИмяСцены ИмяТочкиВхода», например, «ChangeLocation Test EnterPoint».
Для создания нового персонажа выберите Game > Entities > Create Character Prototype, сохраните в директорию Assets/Resources/Entities/Character. Назовем нового персонажа именем Test.
Чтобы упростить создание нового диалога, можно взять готовый из игры и переименовать его для своих целей.
Возьмем для примера диалог Александра, сделаем Download (загрузим) и переименуем в Test.
Теперь подключим тестовый диалог к новому персонажу.
Теперь можно добавить нового персонажа на сцену. Создаем пустой объект и добавляем компонент Character Component, выставляем в поле Character созданный персонаж Test, а в Creature переносим из Asset Viewer (через drag&drop) любой тип существа.
Теперь можно сохранить Save Level и выполнить тестирование уровня в игре.
Внимание! Внедрение в мод полного прототипа существ «со стороны» требует расширенных знаний 3d-моделирования и анимации персонажей. Непосвященному в таинства гейм-дизайна человеку мы рекомендуем изучить руководства Unity по данному вопросу.
В игре используются скелеты моделей от Mixamo. Модель, скелет которой создан в Mixamo, будет автоматически подстраиваться под игровой анимационный контроллер.
Для анимации других скелетов контроллер придется настраивать вручную (пример контроллера есть в модките на основе прототипа волка).
Давайте рассмотрим пример тестового диалога. Для этого нужно перейти в следующую директорию: Assets/Resources/Entities/Dialog
Далее выбрать файл MyNPC и в инспекторе открыть специальное меню под названием (Node Editor).
На примере MyNPC рассмотрим операции в диалоге.
1. Точка начала скрипта (START).
2. Старт нового диалога с персонажем (DialogBegin).
3. Фраза персонажа, с которым говорит Главный Герой (Phrase).
4. Ответ Главного Героя (Answer).
5. Пустышка, он же соединительный блок, позволяющий строить сложные логические схемы и ветвления.
6. Условие проверки на наличие предмета (в данном случае EPistol) в инвентаре Главного Героя.
Чтобы изменить данные, выделите блок.
Для создания нового блока ПКМ в пустой области и выберите тип.
Чтобы создать связь между блоками, зажмите свободный нижний порт первого блока и соедините с нужным блоком.
Важно! Порядок выполнения выходов из блока очень важен: алгоритмы выполняются слева направо. Если из блока-пустышки выходят четыре линии с визуально тупиковыми условиями, то они выполнятся все, начиная с левой и заканчивая последней правой.
Игровые объекты состоят из прототипа (Prototype) и визуальной составляющей (Prefab), и должны находиться в паре.
Чтобы изменить существующие, достаточно загрузить их из AssetViewer и выполнить нужные модификации. Но чтобы создать новый тип, понадобится еще визуальная составляющая.
Пример префаба нового оружия.
Пример префаба новой униформы.
Пример префаба нового объекта «ящик».
Что бы добавить нового персонажа в существующих локацию:
Находим скрипт локации, для примера, добавим персонажа в КРЗ центр(City_2), в Asset View ищем Level_City_2 и скачиваем найденный скрипт(Download).
Добавляем создания персонажа:
1. Добавим проверку на создание HasKeyword, Key: MY_MOD_CITY_INIT и соединим START с новым логическим блоком.
Теперь соберем мод и проверим.
Что бы внести описание новых объектов, нужно сгенерировать уникальные ID локализации, делает через Game > Localization > Generate String Localization
Будут созданы файлы в папке Localization: strings_ru, strings_en. Открыв которые Вы сможете добавить уникальное описание для новых объектов.
После добавления описания, файлы нужно переименовать для правильной загрузки из мода.
Например: strings_ru в mymod_strings_ru, strings_en в mymod_strings_en
ВАЖНО: Все новые квесты и локации будут автоматически добавлены при генерации, а что бы обновить уже существующий файл mymod_strings_ru, нужно его переименовать в strings_ru и выполнить (Game > Localization > Generate String Localization)
Редактирование оригинального диалога
Для редактирования оригинальных игровых диалогов, вам требуется запустить Asset Viewer
Выбрать категорию dialog
выбрать нужный из списка и правой кнопкой мышки загрузить его себе в проект и начать редактирование, также можно посмотреть диалог без загрузки себе в проект, через Node Editor (В таком режиме сохранять изменения будет нельзя, но можно копировать ноды себе в скрипты)
Для создания своего диалога вам потребуется скачать любой оригинальный диалог и переименовать его, либо сделать копию тестового диалога через проводник Windows.
Для примера, скачаем диалог zvezda_pronin и переименуем его в primer1
Выделяем диалог и открываем в Node Editor
Теперь выделяем весь код, кроме DialogBegin и удаляем клавишей Del
Создадим стартовую фразу. “ Привет! Это тестовый урок!”
Добавим несколько вариантов ответов.
Добавляем события который произойдут после нашего ответа, в нашем случае – в первую ветку добавление опыта. Во второй проверка ГГ на пол. В зависимости от пола будет разный диалог. В третьей просто закрыть диалог.
Теперь потребуется создать вариант ответа нпц и вариант ответа ГГ чтобы завершить диалог.
Назначьте ваш диалог тестовому нпц, скомпилируйте мод и посмотрите результат в игре.
Назовём его CraftTest
Для нашего урока, сделаем крафт тестовой модели шлема из прошлых уроков, а вот ресурсы будем использовать из игры. Для этого используем Asset Viewer и используем категорию item.
Листаем ниже и находим Wood и Wires и загружаем их себе в проект. (Если не прогрузились картинки нажмите кнопку Reload)
Используем их в нашем рецепте. Добавим в результат наш шлем и создадим требовоания в 2 индигриента.
Добавляем для каждого Element 0 и Element 1
Cout – количество требуемого материала
Variants – материал
Consumable – выставим да, данный чек бокс отвечает будет ли израсходован данный материал при крафте или нет.
Наш новый рецепт готов. Данный рецепт можно уже выучить экспериментом в игре.
Создаем прототип Мемо Create Memo Prototype – в данном файле мы сделаем возможность изучение нашего рецепта через записку.
Назовём его MemoTest и сохраним его в папке Мемо.
Дальше нам потребуется уже готовый файл Json любой записки.
Для этого воспользуемся Asset Viewer
Выбираем категорию Memo
Находим Craft_book2 и загружаем её в свой проект.
Переименуем её в аналогичное имя которые мы создали для ассета в memotest.
Теперь откроем наш скрипт
И заменим в PlayerAddRecipe на наш новый созданный рецепт.
Удаляем всё лишнее и создаем новое описание. Изменим имя ключа GOT_CRAFTBOOK_2, на CRAFT_TEST_1 который выполняет роль триггера – означающий что рецепт был прочитан и изучен.
Выходим из редактора нод и выделяем наш ассет MemoTest
И загружаем данный ассет себе в проект.
Переименуем его в test_trade
Так же можно изменить иконку персонажа или оставить оригинальную из игры. Имя так же задается в файле локализации, мы можем изменить имя ссылки на локализацию, что мы и сделаем.
Навыки торговли у персонажа напрямую влияют на ценообразование у данного торговца поэтому изменим их в сторону увеличения. Для наглядности.
Alertness влияет на возможность обворовать данного персонажа.
Вот мы и создали персонажа Character.
Теперь будем использовать оригинальные модели персонажей для нашего торговца.
Воспользуемся Asset Viewer выбираем категорию Creature
Все это модели можно использовать для неигровых персонажей. Воспользуемся базовой моделью персонажа из игры. Загрузим BaseMale7. (Позже он нам понадобиться.)
Теперь загрузим любой базовый диалог через Asset Viewer. Например, zvezda_pronin и переименуем его в test_trade.
Открываем наш диалог и удаляем все лишнее
Теперь установим в данном диалоге в DialogBegin чекбокс CanBarter
Теперь благодаря этому у нашего НПЦ появилась кнопка торговли в диалоге.
Создадим простой диалог с возможностью начать торговлю.
Итого мы сможем начать торговлю с нпц через кнопку торговли в диалоге, а также через вариант ответа.
Теперь нам потребуется создать скрипт с генерацией товаров. Воспользуемся уже готовым вариантом.
Открываем Asset Viewer выбираем категорию Behavior и в поисковой строке вводим trader
Загружаем Village.Trader и переименуем его в trade_behavior
Удаляем не используемые нами ноды, а именно
Данное состояние и анимацию, торговец использует для воспроизведения анимации облокачивая на стойку в Отрадном.
CharacterInBattle оставим – это проверка на состояние находится ли персонаж в бою.
Делаем всё как на картинке ниже
Данный скрипт выполняет следующие. Каждые 6 часов наш торговец будет продавать часть товаров из инвентаря и за них получать деньги, после этого произойдёт генерация инвентаря на выбор из 4-х. В каждом из них прописаны товары.
GoodAndMoney – переводит скопившийся товар в деньги
InventorySet— генерация инвентаря
Чекбокс Random – если отключить, то весь список будет добавлен торговцу. Если вкл, то из всего этого списка, каждая единица товара, будет проходить цикл случайности.
Теперь добавим наш диалог созданному торговцу
Создаем на тестовой карте нового персонажа и дадим ему название Trader
И добавим нашему персонажу компоненту Character Component
Наш торговец готов.
Для создания квеста воспользуемся тестовым персонажем из нашего урока “создание диалогов”.
(Создание описания для предметов, квестов и других моментов, будет рассмотрено отдельным уроком “Создание локализации”.)
Создадим простейший квест, в котором нашему НПЦ потребуется вернуть ПТРД.
Сделаем проверку на наличие квеста у ГГ, и добавим варианты ответа если квест выполнен, активен, и ещё не взят.
В первом случае у нас будет вариант событие если квест уже взят. Во втором случае никакого дополнительного ответа более не появится, так как квест уже выполнен. В третьем случае наше первичное знакомство с квестом.
Создадим для третьего пункта, ответ НПЦ и создадим начало квеста.
Где важно отметить, что для QuestBegin потребуется создать уникальную переменную как указано на рисунке.
И ее же мы будем использовать для поиска и закрытия квеста.
Воспользуемся выбором нод Inventory и нодой InventoryHasItem для поиска наличия предметов в инвентаре у персонажей.
Обязательно укажем в каком инвентаре искать данный предмет, в нашем случае у игрока Player. И сделаем два варианта ответа, при наличии и отсутствии предмета.
Далее завершаем наш квест нодой QuestDone и за ним окончание диалога.
Так же выдадим небольшую награду ГГ и заберем ПТРД из инвентаря игрока.
Загрузим его и сразу переименуем в test_companion
Сделайте по своему усмотрению характеристики для персонажа и измените ссылку на локализацию.
Загрузим любой диалог, например zvezda_pronin
Переименуем его в test_companion_off (Диалог до вступления в отряд игрока)
Установим наш диалог test_companion_off нашему персонажу test_companion
Теперь скачаем диалог gexogen_teammate и переименуем его в test_companion_on (диалог, когда персонаж в отряде)
При желании вы можете самостоятельно изменить все базовые реплики у персонажа в test_companion_on, этого мы в этому уроке рассматривать не будет.
Теперь требуется с помощью Asset Viewer скачать базовое поведение нпц в отряде. Выбираем категорию Behavior и скачаем поведение Fidel.
Переименуем его в test_companion
Откроем и удалим всё лишнее как показано на рисунке.
Возвращаемся к нашему диалогу test_companion_off. Удаляем всё лишнее и создаем базовый диалог. Но начнём наш диалог не с DialogBegin, а с Dummy. Это требуется для того, чтоб была возможность до проигрывания диалога, перехватить событие на другой диалог.
В данном случае, для переключения на диалог напарника мы используем ключ Teammate который мы выдаем при выборе реплики для вступления нового напарника в отряд.
AddKeyword – Ключ, Флаг.
CharacterCaps – присоединение персонажа к отряду игрока.
CharacterSetRalationship – устанавливаем положительную репутацию данного нпц к игроку.
PlayBehavior – подключаем наш Скрипт поведения нпц в отряде.
PlayState – подключение нашего второго диалога когда НПЦ в отряде.
Наш диалог и вступление НПЦ в отряд готов.
Теперь подготовим 2 иконки в формате PNG. Одну скопируем в папку AVA вторую в Character
И обе переименуем, в папке AVA в ava_test_companion, в папке Character в test_companion.
Внимание, имя Аватарки в паспорте, должна совпадать с именем заспавленого персонажа через скрипт или на карте.
Выделяем нашу иконки. И устанавливаем тип Sprite. Проделываем тоже самое и с картинкой в папке AVA.
Назначаем нашу иконку персонажу.
Осталось создать и разместить персонажа на сцене.
Сохранить и протестировать. Как это было показано в предыдущих уроках.
https://youtu.be/IuJW2nUwLO8
Для создания описания предметов и формирования локализации на другие языки используется один и тот же метод, но с разными подходами.
Файлы локализации хранятся в папке Localization
Их можно редактировать любым текстовым редактором. (рекомендуется Notepad++)
Имя для названия файлов локализации задается в скрипте ModEntryPoint
Откройте его любым редактором.
Файлы должны находиться в папки локализации и иметь вид mymod_strings_ru – русская локализация, mymod_strings_en – английская локализация и т.д.
Сгенерировать локализацию для предметов можно через меню Game> Localization> Generate String Localization.
Будут сформированы файлы для англ. и рус. локализации, которые потребуется заполнить.
После добавления описания, файлы нужно переименовать для правильной загрузки из мода.
Например: strings_ru в mymod_strings_ru, strings_en в mymod_strings_en
открываем данные файлы c помощью notepad++
Short – короткое имя, например при наведении на предмет. Full – полное описание предмета.
Заполняем согласно формату
Так же, если вы используете оригинальные предметы, то вам потребуется скачать оригинальную локализацию через Asset Viewer в категории Localization и перенести к себе в файлы mymod_strings_ru эту локализацию. Оригиналы, после данных манипуляций, требуется удалить из проекта.
Если же файлы уже были сформированы ранее и вам требуется добавить новые ID ссылки локализации, то вам потребуется обратно переименовать файлы локализации в strings_en и strings_ru. И сформировать локализацию повторно.
Формирование локализации для всего текста
Сгенерировать полную локализацию для предметов и диалогов и скриптов, можно через меню Game> Localization> Generate Localization
Внимание – после формирования полной локализации, везде, где есть текст в скриптах, сформируются на него ID ссылки, сам текст, будет использоваться из файла локализации text_. Рекомендуется сделать копию таких файлов (папка Dialog и Behavior).
После генерации локализации появятся файлы. string_ru string _en text_ru
Теперь потребуется прописать в скрипте загрузку локализации, а также загрузку всего текста при запуске модкита, иначе вместо текста в скриптах будут только ID ссылки.
После сохранения кода, потребуется перезапустить проект!
Для проверки вашего файла локализации на ошибки в JSON файле, воспользуйтесь сторонним сайтом https://jsonlint.com
В данном уроке создадим случайную встречу и вставим её в оригинальную игру.
Все случайные встречи генерируются через скрипты behavior. (Моды, которые добавляют случайные встречи друг друга перезаписывают.)
Создадим простую встречу, где будет медведь, а их количество будет зависеть от уровня игрока.
Воспользуемся Asset Viewer и скачаем любой готовый скрипт встречи, например z_z_ants
Скачайте его и переименуйте в z_z_testbear
Откроем его – это легкий и простой скрипт для понимания.
Для спавна медведей нам потребуется скачать Character медведя и его ассет модели Creature через Asset Viewer.
Откроем наш скрипт и заменим крыс на медведей, как показано на картинке.
Скрипт поведения Rat.Swing – можно оставить, он отвечает за случайное перемещение в коротком радиусе.
Удалим все кроме начального dummy и спавна монстров.
Теперь добавим проверку на уровень игрока раздел Player > Has Modifier
Воспользуемся условием и создадим возможность чтоб при уровне игрока больше 5 спавнилось 4 медведя, если ниже, то 2.
Теперь требуется объявить нашу случайную встречу в скрипте глобальной карты и добавить случайную встречу в ассет событий на глобальной карте.
Скачаем себе в проект, скрипт основной глобальной карты Z_1 в категории behavior
Открываем его и ищем dummy из которого будут выходить множество EncounterType
Сделаем копию любого EncounterType сочетанием клавишь ctrl+d или правой кнопкой и меню duplicate.
Назовём его testbear
Из него запустим PlayBehavior и выделим наш созданный ранее скрипт на спавн, а так же соединим Dummy с нашим EncounterType.
Осталось объявить нашу новую случайную встречу.
Для этого найдем Ассет случайных событий в Asset Viewer категория encounter
Скачаем WorldMap и вместе с ним загрузятся и картинки всех случайных встреч.
Выделяем WorldMap и раскрываем список encounters
Это список всех случайных встреч первой глобальной карты. Добавим новую строчку для нашей случайной встречи указав 50 в поле size
И нажав Enter она добавиться, раскроем её.
Все характеристики сдублированы автоматически с предыдущего события.
В поле Type введем имя Энкаунтера которое мы задали в скрипте глобальной карты.
Остальные настройки могут быть установлены по желанию.
Chance – шанс случайного события
Period – Выбор периода события (например только ночью)
Trigger – ключ\ флаг благодаря которому запуститься случайное событие
Trigger Invert – работает пока триггера нет
Trigger Reset – сбрасывает триггер после первой встречи
Can skip – появится возможность в меню отказаться от встречи.
Once – данное событие произойдёт один раз.
Icon – иконка в формате PNG
Desc – ссылка на локализацию на описание случайной встречи
Enter – ответ ГГ в меню случайной встречи (Войти, Атаковать и т.д.)
Levels – список уровней на которых может происходить случайная встреча.
Chance – добавить проверки на навыки для возможности избежать встречи.
Requirements – определенные события для активации случайной встречи, например уровень игрока.
Requirements EX – дополнительные условия.
Weather Condition – условия проигрывания события в зависимости от погодных условий.
Заменим локацию, на которой будет происходить случайное событие. Их можно взять из других событий.
Взяв со списка с 38 Element
Карта Z_1 вполне нас устроит. Добавим ее к нашей встречи.
Теперь сменим иконку на любую другую из базовых и добавим ссылку на локализацию нашей случайной встречи.
Так же отключим все требования, которые достались нам от предыдущего события.
Наша случайная встреча готова.
Для вставки наших персонажей в оригинальную игру потребуется создать точки для спавна, а для этого нужно знать координаты точек.
В данном уроке мы рассмотрим один из способов получения координат прямо в игре, через консоль.
Для разблокировки режима «Пульт» необходимо ввести кодовое слово youshallnotpass. Высветится ошибка, что команда не распознана, но так и должно быть.
Выделяем любого нпц и вводим команду debuginfo, в нашем случае это верный наш соратник.
Все данные по персонажу включая координаты будут записаны в лог файл.
Файл находится в рабочей папке по адресу C:\Users\ИМЯ ПОЛЬЗОВАТЕЛЯ СИСТЕМЫ\AppData\LocalLow\AtomTeam\Atom
Вот мы и получили требуемые координаты.
Теперь воспользуемся Asset Viewer и найдем в категории Behavior требуемый уровень. В нашем уроке это начальная локация КРЗ.
Загружаем level_city_1 и открываем его.
От основного стартового dummy сделаем новую ноду из категории Spawn > Add Spawn Point
Введем в неё наши полученные координаты и дадим точке новое имя testspawn
Теперь от неё сделаем спавн нашего персонажа из других уроков. Выбрав категорию Spawn > SpawnCharacter
Назначим нашему персонажу модель нпц и ассет нашего торговца, а также его Behavior и укажем нашу точку спавна.
Теперь требуется сделать проверку на спавн, чтоб при каждом срабатывании скрипта наш персонаж не появлялся повторно и не дублировался.
Готово. Мы добавили нашего персонажа на оригинальную локацию.
Для удобства добавления новых предметов. воспользуемся тестовым модом, где представлены тестовые прототипы.
Скачать его можно по ссылке: Githab [github.com]
Перемещаем нашу модель и текстуры в созданную папку. Выбираем нашу модель и раскрываем ее стрелкой.
Выделяем материал, правой кнопкой мышки делаем Extract from Prefab, для встроенного в модель материала. (Иначе материал можно создать самостоятельно, и назначить её на модель.)
Назначаем текстуры для нашей модели.
Модель и текстуры готовы.
Открываем префаб тестового пистолета.
Удаляем старую модель. Устанавливаем точку выстрела FlashSlot в соответствующую позицию возле дула пистолета.
Для добавления новой экипировки нам понадобиться, модель в формате FBX или OBJ, а также текстуры к ней.
Для удобства добавления новых предметов воспользуемся тестовым модом, где представлены тестовые прототипы.
Скачать его можно по ссылке: Githab [github.com]
Запустив тестовый модкит, создадим в папке Assets/Resources/Models папку Armor и в ней, папку с наименованием нашей экипировки. В нашем примере это trooper_helmet. Все модели, звуки и иконки требуется хранить в соответствующей директории папке Assets/Resources/.
Перемещаем нашу модель и текстуры в эту папку. После, выбираем нашу модель и раскрываем ее стрелкой.
Выделив материал делаем Extract from Prefab, для встроенного в модель материала. (Иначе материал можно создать самостоятельно, и назначить её на модель.)
Назначаем текстуры для нашей модели.
Модель и текстуры готовы.
Открываем префаб тестовой экипировки.
Перемещаем на сцену модель, которую мы копировали в проект.
Выравниваем параметры экипировки на сцене. Position, Rotation и Scale.
Удаляем старую модель. Удалив Mesh Renderer компонент из префаба.
Для добавления новой модели персонажа нам понадобиться, модель в формате FBX или OBJ, а также текстуры к ней. Потребуется создать скелет для этой модели, через Mixamo. Процесс наложения скелета на вашу модель полностью показан на сайте https://www.mixamo.com.
Требуется регистрация на сайте Adobe. Загрузите модель, расставьте точки и скелет сформируется автоматически. После скачайте модель выбрав FBX for Unity в T-позе.
Для удобства, добавления модели персонажа, воспользуемся тестовым модом, где представлены тестовые прототипы.
Скачать его можно по ссылке: Githab [github.com]
Перемещаем нашу модель и текстуры в эту папку. (Если текстуры хранятся внутри модели, то их можно распаковать в настройках материала модели.)
Выделяем модель, раскрываем, далее выделив материал сделаем Extract from Prefab, для встроенного в модель материала. (Иначе материал можно создать самостоятельно, и назначить её на модель.).
Назначаем материал к модели и готово.
Открываем префаб тестовой модели персонажа. (Для удобства добавления новых моделей, сделайте копию префаба модели тестового персонажа и её ассета из проводника Windows, и переименуйте.)
Перемещаем на сцену модель, которую мы копировали в проект.
Подгоняем параметры модели как на сцене в соответствии оригиналом через параметр scale ( в самой модели, не в префабе!)
Далее потребуется перенести все компоненты с модели оригинал, на нашу модель, а также объект cameraTarget. Для нашей модели так же потребуется выставить Layer на Character и применить для всей модели, когда будет задан вопрос.
Отключаем модель оригинал как показано на картинке.
Далее существует 2 способа переноса слотов. Вручную или Авто.
Каждый слот CapSlot, BloodSlot и т.д. переноситься руками на модель, в соответствии с положением костей в анимации. В основном это требуется, когда модель состоит не из стандартного скелета и размера. И все положения слотов подгоняются в ручную, но позволяет адаптировать практические любые модели с разными размерами.
Делаем Re-bind в компоненте Character Skeleton и далее bind. Будут перемещены все слоты на нашу модель. Теперь можно удалять стандартную модель персонажа из префаба.
https://youtu.be/NUiDQV84g-M
Для добавления новой модели персонажа нам понадобиться, модель в формате FBX, текстуры и файлы анимации. В данном уроке мы будем брать готовую модель из Unity Asset Store.
Для удобства, добавления модели персонажа, воспользуемся тестовым модом, где представлены тестовые прототипы. Для овладения уроком требуются дополнительные знания Unity.
Загружаем и импортируем себе в проект Creature Cave Troll из магазина Unity
Делаем копию дерева анимации тестового волка
Раскроем Idle – он содержит 2 состояния, обычное и боевое состояние.
Добавим наши анимации, путем перетаскивания из раскрытой модели в поле Motion.
Так проделываем со всеми стандартными анимациями. которые есть у нашей модели.
Цепочку Attack_fake можно полностью удалить. – это фейковые атаки для волков которые дерутся на ринге в перегоне.
Теперь требуется расставить События (Event) на анимацию – это требуется для отработки определенных моментов в игре. Например, попадание по персонажу или атака.
И сама модель была отвязана от рут нод, как показано на рисунке.
Теперь сделаем копию префаба тестового волка и назовём его troll
Перетащим созданный ассет троля в префаб
Теперь открываем префаб и перетаскиваем нашу модель монстра. Как и в уроке по добавлению модели персонажа.
Выставляем правильные координаты
Выставляем Layer у нашей модели на Character
И применяем на всю модель, когда будет задан вопрос.
Далее переносим все компоненты с волка. на нашу модель.
Character Anim Event
Character skeleton
Далее выставляем наше дерево анимаций троля
Теперь требуется создать коллизию для нашего монстра и сделать на него ссылку через Proxy Component
Модель Монстра готова.
Урок состоит из нескольких этапов и поделён на 2 части.
• Создание сцены и её настройка.
• Загрузка ассетов из магазина Unity.
• Создание и настройка слоёв.
• Добавление деревьев и размещение.
• Создание рельефа местности.
• Создание уровня используя ассеты Unity.
• Размещение воды и других необходимых зон.
• Добавление локации на глобальную карту.
• Создание проходимости на карте.
• Cоздание миникарты.
• Подготовка уровня.
Для создания новой карты нам понадобиться модели объектов для карты их текстуры, а также текстуры земли.
Для учебного урока мы загрузим бесплатные ассеты из магазина юнити. Список, которые использовались для создания локации.
Shed, Tools, Bridge and Fences – фурнитура
Outdoor Ground Textures – текстуры земли
Для полноценного понимания создания рельефа, слоёв, деревьев и т.д. следует изучить базовые курсы Unity. Данный урок для пользователей кто уже знаком с Unity.
Создание сцены и её настройка.
Создание нового игрового уровня необходимо начинать с создания сцены в Unity.
Перейдите в директорию Scene и вызовите контекстное меню Create > Scene
Открываем созданную сцену и создаем объект (Create Empty) с именем Level
Обнуляем координаты Position и добавляем компонент Environment Level
Добавляем террейн, например 3D Object > Terrain
(Важно! Все статические объекты (дома, деревья, прочий антураж), которые не являются интерактивными, должны содержаться внутри объекта Level. В противном случае они не будут отображаться в игре.
Настраиваем размер карты
Максимум 400х400 рекомендуемый 100.
Отключаем генерацию освещения. У нас используется глобальное освещение.
Выставляем теги PathGround и слой Level для нашего terrain.
Добавляем новый пустой объект в Level, называем Path. Далее добавляем ему компонент Pathfinder(карту проходимости). Настраиваем карту для поиска путей в 25 клеток. Он всегда равен половине размера карты террайн.
Включим глобальное освещение для карты. Нажмите на Auto generated Lighting Off
Включаем автогенерацию освещения
Сохраните сцену и Level.
Загрузка ассетов из магазина Unity.
Открываем Asset Store в проекте
Используем поиск и находим требуемые для уровней ресурсы. В нашем уроке это:
Shed, Tools, Bridge and Fences – фурнитура
Outdoor Ground Textures – текстуры земли
Нажимаем загрузить и после загрузки импорт, и далее просто кнопка import.
Таким образом, себе в проект можно добавлять множество любых других ресурсов.
Создание и настройка слоёв.
Более подробную информацию о слоях можно получить в официальном мануале по Unity.
Выделяем наш террейн и выбираем меню его редактирования и Paint Texture
Далее Edit Terrain Layers и Create Layer
Находим нашу текстуру и карту нормалей и добавляем в слой.
Таким способом добавляем все слои для загруженных текстур.
Добавление деревьев и размещение.
Выделяем наш террейн и выбираем меню редактирования деревьев.
Нажимаем Edit Tree и Add Tree и далее находим префаб наших деревьев и добавляем их.
Таким способом добавляем все 4 деревца.
Размещение деревьев происходит кистью. Размер и прочие детали задаются в параметрах дерева.
Создание рельефа местности.
Выделяем наш террейн и выбираем меню редактирования террейна.
Настраиваем высоту и размер кисти и рисуем на карте желаемый эскиз.
Создание уровня используя ассеты Unity.
Весь процесс создания уровня состоит в перетаскивании загруженных моделей на сцену. Как во многих других игровых движках.
Все статические объекты должны находиться внутри объекта LEVEL.
Помимо сохранения сцены, при любом изменении статики требуется сохранять и уровень.
Для удобства можно все статические объекты спрятать, внутри LEVEL создать например пустой объект и назвать Static.
И все статические объекты перетащить в него.
Размещение воды и других необходимых зон.
Для удобства просто перемещаем все необходимые вам зоны и объекты из оригинальной тестовой сцены.
В нашем случае – это вода, точка входа и зона выхода на глобальную карту.
Вставляем ее в нашу тестовую карту.
Настраиваем правильное расположение скопированных объектов
В компоненте Level out напишем OutMyMod2, данную точку создадим на глобальной карте позднее, это спавн точка на глобальную карту.
Добавление локации на глобальную карту.
Открываем тестовую глобальную карту. Выделяем тестовую базовую локацию и копируем её. Так же копируем точку выхода и OutMyMod и назовём её OutMyMod2
Переименуем нашу локацию в test и добавим вход в нашу созданную локацию level_test
Создание проходимости на карте.
После потребуется сгенерировать проходимость повторно.
Для создания миникарты нам потребуется создать папку UI в каталоге Resources. И создать папку minimap в папке UI.
Далее Game>Utils>Save Minimap To Png и сохраняем в нашу созданную директорию.
Так же выставляем нашей картинке тип Sprite
Осталось сделать интерактив для нашей карты и создать для нее скрипт behavior. Делаем копию MyMod_Level
Назовём их Level_test
В префаб level_test добавим наш ассет level_test
Наш префаб перетаскиваем на карту и называем logiclevel
Осталось подключить логику для уровня. Для этого сделаем копию behavior mymod_level и назовём его level_test















