[13.5] Создание Своих Квестов для Игры

Reading Mode

Этап 1. Свои Квесты и Шаги

Глава 2. Первый квест с нуля

Шаблон редактровать мы научились. Теперь пора бы и такой же квест с нуля собрать

Шаг 1. Отображения расширений файлов

Для начала включим отображение расширений файлов в Проводнике.

Расширения файлов — это окончание файла с точкой: .txt, .pdf, .docx, .png и т.д.

Windows 10:

Верхняя часть окна Проводника

Windows 11:

Верхняя часть окна Проводника

Android

Используйте MT Manager. Там отображение расширений файлов и включено по-умолчанию

Шаг 2. Создаем пустой XML

Windows

  1. ПКМ по пустой области –> Создать –> Текстовый Документ
  2. Переименуйте (вместе с расширением .txt) на MyQuest.xml
  3. Если cпросит про смену расширения, жмите «Да»

Обязательно убедитесь, что у вас получился именно MyQuest.xml, а не MyQuest.xml.txt. Если получился с .txt на конце, то просто переименуйте повторно, убрав .txt из конца

Android

В MT Manager уже встроен XML-редактор, поэтому рекомендуется использовать его

Шаг 3. Первая строка

В самом начале каждого XML файла обязательно ставьте декларацию:

<?xml version="1.0" encoding="UTF-8"?>

Декаларация – это своеборазный “паспорт” файла, который говорит: «Я – XML-файл версии 1.0 с текстом в UTF-8». Просто копируйте и вставляйте её в начало каждого квеста

Шаг 4. Тело квеста

Добавим тело квеста (она же главная коробка): <quest>. Внутри этой “коробки” лежит весь квест.

Состоит “Главкоробка” из двух частей:

<quest npc="Wizard" title="Мой Квест">
и
</quest>

Между этими двумя частями располагается сам квест

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

<quest npc="Wizard" title="Мой Квест">

quest – Откырвающая часть (тег). Начало “Главкоробки”

npc – Системное имя NPC, к которому привяжется этот квест. В моём случае, это Wizard (Волшебник). См. Имена NPC

title – Название квеста. Как будет отображаться в Журнале или при выборе квеста в диалоговом окне. В моём случае, это «Мой Квест»

Теперь вторую строку:

</quest>

</quest> – Это “крышка” Главкоробки (закрывающий тег). Она означает, что квест закончился и дальше в XML файле ничего не будет

Шаг 5. Базовый шаг #start

У каждого квеста есть начальная и конечная точка. В случае Block Story, начальной точкой является шаг #start, а конечной – #end.

Так как все шаги-теги (коробки), должны находиться внутри Тела Квеста (Главкоробка <quest>), то поместим #start внутрь <quest>:

  1. Переходим на новую строку и нажимаем 1 раз клавишу Tab (слева от Q). На Android в XMl-редакторе эта кнопка называется также
  2. Пишем: <step id="#start">
  3. Опять новая строка, 1 раз Tab и пишем “крышку” нашей коробки: </step>
  4. Оставляем одну пустую строку и на второй новой строке пишем: <step id="#end"/>. Обратите внимание, что в конце должен быть «/», т.к. это пустой тег (пустая коробка) в 1 строку. Вместо <step id="#end"></step>, мы пишем “сокращенный” вариант: <step id="#end"/>

Должно получиться так:

<?xml version="1.0" encoding="UTF-8"?>
<quest npc="Wizard" title="Мой Первый Квест">
ㅤ<step id="#start">
ㅤ</step>

ㅤ<step id="#end"/>
</quest>

Шаг 6. Текстовые блоки

Тобишь у нас выходит эдакая Матрёшка. В тег-коробки <quest> лежит тег-коробка <step>, а внутри <step> лежат еще теги-коробки. Давайте их тоже поставим:

  1. Разместим <intro> и </intro>. На этот раз ставим 2 раза Tab, так мы как-бы показываем, что <intro> лежит внутри <step>, который лежит внутри <quest>
  2. Пишем между <intro> и </intro> наш “текст первого разговора”. У меня это будет: «Привет, как дела?»
  3. Теперь пишем <desc> и </desc>. Аналогично, новая строка + 2 раза Tab. Добавляем текст, у меня: «Рад тебя снова видеть! Как дела?»

Должно получиться так:

<?xml version="1.0" encoding="UTF-8"?>
<quest npc="Wizard" title="Мой Первый Квест">
ㅤ<step id="#start">
ㅤㅤ<intro>Привет, как дела?</intro>
ㅤㅤ<desc>Рад тебя снова видеть! Как дела?</desc>
ㅤ</step>

ㅤ<step id="#end"/>
</quest>

Напомню, что текст вы можете писать какой угодно, а не копировать мой 1 в 1

Шаг 7. Добавим Кнопку

Теперь осталось добавить кнопку, чтобы игрок мог закрыть диалог. Мы же не хотим чтобы получился вот такой незакрываемый диалог:

Пример такого диалога с Паулой
Пример незакрываемого диалога с Паулой

Как мы помним из Главы 1:

<option> – кнопка

to – куда ведет эта кнопка

text – текст на этой кнопке

#close — закрыть диалоговое окно

Это кнопка, значит пишем в одну строку с «/» перед >

Оставим пустую строку между текстовыми блоком <desc> и кнопкой

ㅤ

Теперь напишем нашу кнопку:

<option to="#close" text="Норм"/>

У меня на кнопке будет написано: «Норм», после нажатия на кнопку диалог закроется (с помощью #close)

Шаг 8. Сверяемся

Теперь давайте сверимся.

Тщательно проверьте, чтобы у вас не была пропущена или поставлена не там, где надо какая-нибудь скобочка, кавычка или символ

ㅤ

Код:

<?xml version="1.0" encoding="UTF-8"?>
<quest npc="Wizard" title="Мой Первый Квест">
  <step id="#start">
      <intro>Привет, как дела?</intro>
      <desc>Рад тебя снова видеть! Как дела?</desc>
     
      <option to="#close" text="Норм"/>
  </step>
  <step id="#end"/>
</quest>

Шаг 9. Проверка работоспособоности

Настало время проверить квест. Забрасываем его в папку Quests (Документы –> Block Story –> Quests) и перезапускаем игру, либо перезаходим в мир, чтобы кастомные квесты обновились

Проверяем:

Всё работает. Ваш первый квест с нуля готов!

Теперь попробуйте сменить NPC с Волшебника (Wizard) на Паулу (FemaleWarrior) или Теда (Viking). Затем перезайдите в мир и проверьте, что квест теперь привязан к другому NPC

Зачем нужны Tab’ы и отступы?

Игра Табы и отступы не видит, ей абсолютно всё равно можно всё хоть в одну строчку написать, НО Табы и отступы нужны ВАМ и остальным квестоделам для лучшей читабельности

Если всё сломалось

  1. Проверьте, что квест точно находиться в папке Quests (Документы –> Block Story –> Quests)
  2. Проверьте, что вы не поставили лишний символ где-то в коде
  3. Проверьте, что вы не удалили кавычки у атрибутов (text="_", npc="_" и т.д.)
  4. Проверьте, что вы правильно поставили «/» у закрывющих тегов (крышек от коробок). Сначала «/» и только потом тег.

Заключение

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

2
0

Comments

  1. Northern_77
    Northern_77

    Отличный гайд, но осталось несколько вопросов:
    1) Куда делся раздел с кастомным магазином из прошлой версии руководства. В 13.5.0? Его больше нельзя кастомизировать?
    2) У Фуза в 13.5.0 есть свой магазин, следовательно, они тоже стали квестовыми НПС и для них можно делать кастомные квесты. Или нельзя?

    1
    0
    • Da-Damych
      Da-Damych

      1) Кастомные магазины полностью убраны (даже для Алхимика, Фуза и Крестьян). Теперь игра не будет подгружать квесты, содержащие в коде тег <store>

      В логах будет писать:
      Skipped custom quest ‘ИмяКвеста’ from file [Путь до XML-файла квеста]: NPC stores are not allowed in custom quests
      UnityEngine.DebugLogHandler:Internal_Log(LogType, LogOption, String, Object)
      UnityEngine.Logger:Log(LogType, Object)
      UnityEngine.Debug:LogWarning(Object)
      QuestManager:AddUserQuests(XmlSerializer, String)
      d__77:MoveNext()
      UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)

      2) Да, для Фуза можно теперь тоже делать квесты. Список Квестовых NPC только что обновил, просто изначально забыл добавить
      Из нюансов: У них пока что нет своего портрета, поэтому будет видно просто имя

      1
      0

Leave a Reply