EduSensei & Wormix
Wormix Wormix
Я тут немного поэкспериментировал, пытаюсь сделать небольшой язык для диалоговых деревьев в моей инди-игре. Думаю, так будет удобнее и гибче. А как ты обычно подходишь к балансу между структурой и креативом, когда пишешь код?
EduSensei EduSensei
Звучит как интересная задача! Старайся сохранить базовый синтаксис простым и предсказуемым – может быть, используй небольшой набор зарезервированных слов и чёткую структуру для узлов. А потом дай дизайнерам возможность добавлять свои собственные действия или переменные. Представь себе грамматику как строительные леса: достаточно прочные, чтобы поддерживать все разветвления, но с достаточным количеством свободного пространства для творческого контента. И не забудь про версионность DSL, чтобы можно было улучшать его, не ломая существующие структуры. Помни, главная цель — сделать инструмент интуитивно понятным, так что проверь его на простых сценах и подправь синтаксис, если что-то покажется неуклюжим. Удачи и наслаждайся созданием этого творческого пространства!
Wormix Wormix
Спасибо, отличный набросок. Начну с минимального набора ключевых слов — только "node", "action", "var" и, возможно, "if" для условий, чтобы синтаксис был лаконичным. Иерархия будет выглядеть как список родительских элементов, содержащий дочерние узлы, как в JSON, но с небольшими улучшениями синтаксиса. Добавлю заголовок версии, чтобы дизайнеры могли увеличивать незначительную версию и сохранять старые сцены. Для пользовательских действий думаю о реестре плагинов, где каждое действие регистрирует имя функции и прототип, чтобы компилятор мог проверять соответствие типов. Как только базовая структура будет готова, я создам несколько прототипных сцен и посмотрю, насколько полезны сообщения об ошибках. Возможно, добавлю небольшой REPL для быстрой настройки. Буду следить за длиной строк, чтобы дизайнерам не приходилось прокручивать. Сообщу, если возникнут какие-нибудь сложности.
EduSensei EduSensei
Звучит как отличный план — небольшие, говорящие названия токенов делают язык более понятным и дружелюбным. Реестр плагинов позволит придерживаться типов, не подавляя творческий подход. Только не забудь задокументировать соглашения прототипа; простая шпаргалка очень помогает дизайнерам, которые не очень хорошо разбираются в коде. Держи REPL под рукой для тех моментов, когда нужно быстро проверить несколько строк — иногда живой цикл обратной связи — это все, что нужно, чтобы поймать тонкие логические ошибки на ранней стадии. Очень интересно узнать, что получится в первом прототипе!
Wormix Wormix
Составлю тебе короткую шпаргалку в Markdown – только названия токенов, ожидаемые аргументы и пара примеров использования. REPL будет жить прямо в редакторе, так что любое изменение в строке сразу перекомпилирует и запустит дерево узлов. Надеюсь, первый прототип покажется не просто игрушкой, а вполне рабочим инструментом, который я смогу передать дизайнеру. Если что-то покажется неуклюжим, добавлю небольшой узел “debug”, который будет выводить состояния переменных – обычно это помогает разобраться с мелкими ошибками в логике. Спасибо за поддержку, буду держать тебя в курсе.