Files

5.7 KiB

2D Shell — каркас, в котором рисуется каждая 2D-игра

2D Shell — это пустой экран, который 2D-игры наполняют: картинка текущего места, часы и панель инструментов сверху, место под панели и уголок уведомлений. Сам по себе он ничего не показывает. Контентные моды вставляют в него свои слои — Dialog Engine приносит текстовое окно и варианты выбора визуальной новеллы, а мод RPG — тайловую карту, по которой можно ходить, — поэтому новелла и тайловая RPG пользуются одним каркасом, одной панелью инструментов и одними меню.

Он входит в каждую 2D-игру: Cthangover, My Novel и RPG Plus.

Одна и та же оболочка в двух играх: сцена Cthangover с текстовым окном и вариантами выбора и деревня RPG Plus с тайловой картой; у обеих часы слева вверху и панель инструментов справа вверху.

Что видно на экране

Сцена Cthangover: фон кухни, слева вверху часы и счётчик пайков, справа вверху панель инструментов, варианты выбора «Leave» и «Cook», внизу текстовое окно.

Вот что даёт оболочка в этой сцене:

  • картинка места — кухня со своей подсветкой в зависимости от времени суток и огнями (Time Engine);
  • верхняя полоса — часы слева вверху, панель инструментов справа вверху, а посередине индикатор сохранения и по ночам переносной фонарь;
  • уголок уведомлений под часами;
  • место для панелей — сумка, карта или журнал открываются поверх сцены.

Текстовое окно и варианты выбора добавляет Dialog Engine, счётчик пайков — Cooking: это слои, которые эти моды кладут в оболочку.

Слои: от задних к передним

BaseScene
└── Scene
    ├── ModFirstPanel        слои модов позади всего остального
    ├── ViewBox              само место: освещение, фон, передний план, Lastground
    ├── (content layer)      слой контентного мода, например холст диалогов или мир RPG
    ├── TopView              часы, панель инструментов, индикатор сохранения, фонарь
    ├── ModBeforeUIPanel     панели инструментов: сумка, карта, журнал, меню…
    ├── NotificationPanel    сообщения в левом верхнем углу
    └── ModLastPanel         оверлеи поверх всего, например окно верстака

Поздние слои рисуются поверх ранних.

Авторам модов

Добавить слой контента патчем сцены. Патч — это .tscn в папке patches/ вашего мода по тому же пути, что и сцена оболочки. Он подставляет сцену оболочки и добавляет или меняет узлы. Патч Dialog Engine вставляет холст диалогов сразу после ViewBox:

patches/scenes/ui/base_scene.tscn
[ext_resource type="PackedScene" path="res://mods/shell2d_base/scenes/ui/base_scene.tscn" id="1_target"]
[ext_resource type="PackedScene" path="res://scenes/ui/dialog_canvas.tscn" id="3_dialog"]

[node name="BaseScene" instance=ExtResource("1_target")]

[node name="DialogCanvas" parent="Scene" index="2" instance=ExtResource("3_dialog")]

Мод RPG тем же способом добавляет свой RpgWorldHost, поэтому игра с обоими показывает тайловую карту, а поверх неё — реплики диалогов.

Добавить панель без патча. Панель инструментов или оверлей объявляется в секции ui манифеста с одним из слотов оболочки: ModBeforeUIPanel, ModLastPanel или Lastground у блока просмотра. Поля перечислены в руководстве мода UI.

Объявите зависимость. Моду, которому нужен 2D-каркас, следует указать shell2d_base в depends; сама оболочка приносит с собой Time Engine и UI.

Если что-то пошло не так

  1. Чёрный экран, на котором есть только панель инструментов. Оболочку не заполняет ни один контентный мод (в игре нет Dialog Engine или мода RPG), либо у сцены нет фона.
  2. Панель оказалась позади сцены. В её манифесте указан слот, который рисуется слишком рано; используйте ModBeforeUIPanel или ModLastPanel.