CLI
LSDE управляется из командной строки с помощью ссылок в виде пути, например lsde://scene/sc_7f3a9k2m/DIALOG-002: другая программа, скрипт или терминал открывает ссылку, и LSDE выходит на передний план, показывая то, на что она указывает. Опций вида lsde --goto --scene не существует — их роль играет путь. Это тот же механизм, что и vscode://file/… в VS Code или steam:// в Steam — не нужно устанавливать расширения, открывать порт или использовать токен.
Для чего это нужно
- Кнопка «Показать в LSDE» в редакторе игрового движка (Unity, Godot, Unreal), размещённая на персонаже или компоненте, который запускает диалог.
- Кнопка «Воспроизвести в LSDE», запускающая плеер с того блока, до которого дошла партия.
- Ссылка в тикете, дизайн-документе или сообщении команды.
- Команда в терминале или скрипт для автоматизации.
Форма ссылки
lsde://<действие>/<идентификатор сцены>
lsde://<действие>/<идентификатор сцены>/<имя блока>| Ссылка | Что делает LSDE |
|---|---|
lsde://scene/sc_7f3a9k2m | Открывает сцену на холсте blueprint |
lsde://scene/sc_7f3a9k2m/DIALOG-002 | Открывает сцену, выбирает блок и центрирует вид на нём |
lsde://play/sc_7f3a9k2m | Открывает сцену и запускает плеер с начального блока |
lsde://play/sc_7f3a9k2m/DIALOG-002 | Открывает сцену, выбирает блок и запускает плеер с него |
Несколько правил разбора:
- Схема и действие не чувствительны к регистру; любое действие, кроме
sceneилиplay, приводит к отклонению ссылки. - Идентификатор сцены всегда имеет форму
sc_+ 8 символов (0-9,a-z). - Имя блока необязательно и сравнивается точно; пробел или символ вне ASCII кодируется так же, как в любом URL (
DIALOGUE%20AвместоDIALOGUE A). - Некорректная ссылка отклоняется и записывается в журнал, но никогда не интерпретируется наугад.
Примечание
Сегодня доступно на Windows, с двумя действиями (scene и play). В будущем появятся другие платформы и действия.
Как найти идентификатор сцены и имя блока
- В LSDE — щёлкните правой кнопкой мыши по сцене в дереве сцен, затем выберите Идентификатор сцены: он сразу попадёт в буфер обмена.
- В коде игры — при экспорте графа генерируются типизированные константы (C#, C++, GDScript, TypeScript); значением каждой константы сцены служит её идентификатор, например
Scenes.act1→"sc_7f3a9k2m". - Через ассистента, подключённого по MCP —
lsde_list_scenesиlsde_read_sceneвозвращаютsceneIdдля каждой сцены (MCP Bridge).
Имя блока — то, что отображается на его карточке на холсте и в его строке в дереве (DIALOG-002): оно стабильно, привязано к своей сцене и никогда не используется повторно после удаления.
Включение ссылок в Windows
Регистрация никогда не происходит сама по себе: меню Справка → Интеграция с Windows → Зарегистрировать ссылки. Этот клик регистрирует lsde:// от имени именно этой копии LSDE, без повышения прав.
Нажмите ещё раз, если кнопка или ссылка перестали работать, если LSDE переместили в другую папку, или если на компьютере установлено несколько копий — ссылки получает та копия, что зарегистрирована последней.
Управление LSDE из движка или инструмента
Любая программа, способная открыть URL, может отправить ссылку — никакая библиотека LSDE для этого не нужна.
Unity (C#)
#if UNITY_EDITOR
using System;
using UnityEngine;
public static class LsdeLinks
{
public static void Reveal(string sceneId, string blockName = null) =>
Application.OpenURL(Build("scene", sceneId, blockName));
public static void Play(string sceneId, string blockName = null) =>
Application.OpenURL(Build("play", sceneId, blockName));
static string Build(string action, string sceneId, string blockName) =>
string.IsNullOrEmpty(blockName)
? $"lsde://{action}/{sceneId}"
: $"lsde://{action}/{sceneId}/{Uri.EscapeDataString(blockName)}";
}
#endifGodot (GDScript)
func reveal_in_lsde(scene_id: String, block_name := "") -> void:
var url := "lsde://scene/" + scene_id
if block_name != "":
url += "/" + block_name.uri_encode()
OS.shell_open(url)Unreal Engine (C++)
void RevealInLsde(const FString& SceneId, const FString& BlockName)
{
FString Url = TEXT("lsde://scene/") + SceneId;
if (!BlockName.IsEmpty())
{
Url += TEXT("/") + FGenericPlatformHttp::UrlEncode(BlockName);
}
FPlatformProcess::LaunchURL(*Url, nullptr, nullptr);
}Веб-страница, тикет, документ
<a href="lsde://scene/sc_7f3a9k2m/DIALOG-002">Показать в LSDE</a>Терминал
PowerShell Start-Process "lsde://play/sc_7f3a9k2m/DIALOG-002"
cmd start "" "lsde://play/sc_7f3a9k2m/DIALOG-002"Безопасность: ссылка может только показывать
Ссылка приходит извне, и открыть её может любая веб-страница — поэтому безопасность обеспечивается самой архитектурой:
- Никакой записи. Оба действия только открывают сцену, выбирают блок и запускают плеер, который никогда ничего не записывает. Всё, что изменяет проект, проходит через фасад MCP, защищённый токеном.
- Ни один проект не открывается, не закрывается и не перезагружается. Ссылка никогда не содержит путь к файлу.
- Закрытая грамматика. Всё, что не соответствует ожидаемой форме, отклоняется и никогда не домысливается.
- Ничего не прослушивается. Ни один сетевой порт не открывается; худшее, что может сделать ссылка, — это показать сцену.
