ТОМ 2.0

(альфа)
ТОМ (Текстовая Основа Миростроения) — это платформа для парсерной интерактивной литературы. Изначально ориентирована на русский язык и максимально возможную для машины «понятливость».
Платформа состоит из движка, скомпилированного как dll, и различных плагинов и фронт-ендов.
Архитектура открытая, при желании можно использовать движок в своей программе, или написать собственное расширение к нему.

Стандартная библиотека
Она же словарь. На данный момент содержит около 5000 распространенных слов, и пополняется по мере необходимости. Архитектурно является плагином. Теоретически, можно заменить своей собственной, но вряд ли подобный труд будет целесообразен.
библиотека ТОМ2

Структура игр
Игра ТОМа — это обычный текстовый файл с расширением .tom.
Описывает набор локаций, объектов и функций.
Основные понятия:
Локация — выделенная единица пространства. Может содержать объекты.
Объекты — имеют описания и другие свойства. Могут содержать другие объекты на своей поверхности, внутри себя или как собственную часть. Объект, управляемый игроком, выполняет роль ГГ.
Функция — описывается набором аргументов и имеет исполняемый код. Описание аргументов служит шаблоном для парсера при разборе команды. При этом результат выполнения одной функции может служить аргументом для следующей в парсинге, и так пока команда не будет разобрана полностью.

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

Интерфейсы (фронт-енды)
Интерфейс на основе HGE:
TOM HGE интерфейс

Веб-интерфейс:
TOM Web

Wiki: ifwiki.ru/%D0%A2%D0%9E%D0%9C_2

6 комментариев

spline
Было бы здорово почитать про внутреннее устройство более подробно.
ASBer
Подробнее всего можно будет прочитать в исходниках, выложу их в общий доступ, как только платформа дотянет до стадии «бета».
Разрозненная информация разной степени достоверности есть на форуме и вике.
Вот здесь ifprint.org/articles/interview-asber/ есть более глубокое описание парсера.
Вообще, мне сложно писать о собственной программе, выдерживая заданный уровень сложности восприятия. Там много всякого интересного накопилось…
ASBer
Мне будет проще в формате «вопрос-ответ» =)
Спрашивайте, какой механизм внутреннего устройства интересует — постараюсь ответить.
spline
Ну мой интерес пока сугубо академический. Мне интересно было бы почитать про принцип непосредственно парсинга, историю рождения идеи и всякое такое. Техническую часть пока осваивать совершенно некогда.
ASBer
Глубокое описание принципов работы парсера будет в документации (когда она появится). Это довольно объемная тема, и мало кому интересная. Обычному автору досконально разбираться в парсере не обязательно, можно просто считать что это магия.
Andy
Это магия!
«Нелепо, смешно, безрассудно, безумно — волшебно! Ни толку, ни проку, ни в лад, невпопад совершенно!» :)