ТОМ 0.9 бета: различия между версиями
ASBer (обсуждение | вклад) м (→Милена) |
Nikita (обсуждение | вклад) (Пожалуй, можно считать платформу заброшенной ввиду перехода автора к разработке ТОМ 2) |
||
(не показано 269 промежуточных версий 4 участников) | |||
Строка 3: | Строка 3: | ||
==Общая информация== | ==Общая информация== | ||
− | + | Парсерная русскоязычная ИЛ-платформа. | |
− | [[ | + | |
+ | Расшифровка названия: ТОМ - ''Текстовая Основа Миростроения.'' | ||
+ | |||
+ | Период разработки: 2008-2011гг. | ||
+ | |||
+ | Последняя версия: [[Медиа:Tom_094.rar|0.9.4.11 бета]], версии [[ТОМ 0.9 бета#Отказ от выпуска версии 1.0|1.0]] не будет. | ||
+ | |||
+ | Продолжение разработки: [[ТОМ 2]]. | ||
+ | |||
+ | [[:Категория:Игры на TOM|Игры на платформе ТОМ]]. | ||
+ | |||
+ | Автор: [[Участник:ASBer|ASBer]] | ||
+ | |||
+ | [http://tom.userforum.ru/ Официальный форум] платформы. | ||
+ | |||
+ | Есть набор простых [[Медиа:tom_sample.rar|примеров]] по программированию. | ||
+ | |||
+ | Для углубленного изучения посетите [[:Категория:Документация ТОМ|раздел документации]]. | ||
+ | |||
+ | Если у Вас есть вопросы по платформе - посмотрите [http://forum.ifiction.ru/viewtopic.php?id=1258 FAQ]. | ||
+ | |||
+ | |||
+ | ===Язык программирования=== | ||
+ | ТОМ имеет [[wikipedia:Скриптовый язык|скриптовый]] [[TOM: язык программирования|язык программирования]] [[wikipedia:Высокоуровневый язык программирования|высокого уровня]], по синтаксису близкий к [[wikipedia:С++|С++]], а по идеологии напоминающий [[wikipedia:Ruby|Ruby]]. | ||
+ | |||
+ | Язык поддерживает [[wikipedia:объектно-ориентированное программирование|объектно-ориентированное программирование]] с линейным наследованием и [[wikipedia:динамическая типизация|динамической типизацией]]. | ||
+ | |||
+ | Есть возможность обработки событий и фоновых действий. | ||
− | + | ===Парсер команд на русском языке=== | |
+ | [[Парсер]] изначально ориентирован на русский язык, не имеет ограничений на количество слов в команде, команды описываются с помощью шаблонов. Парсинг управляется функциями-проверками к шаблонам. | ||
− | + | ===Модульный принцип построения платформы=== | |
+ | Платформа ТОМ строится по модульному принципу и состоит из нескольких частей: | ||
− | + | 1. Текстовый парсерный движок реализован в виде динамической библиотеки tom.dll | |
− | + | 2. Интерфейсная оболочка (Front-end) служит для отображения текста и ввода команд игрока. | |
− | + | 3. Начиная с версии 0.9.4.х используются плагины, расширяющие возможности языка ТОМ и обогащающие его мультимедийные возможности. | |
− | |||
+ | При желании авторы могут создавать и использовать свои собственные интерфейсы и плагины. API движка открыты. | ||
− | + | ===Поддержка HTML и прочих тегов=== | |
+ | ТОМ позволяет использовать как HTML разметку, так и любые другие теги. Текст, заключенный в < > прозрачен для ядра ТОМа и может быть обработан интерфейсом при разборе текста перед его выводом. | ||
+ | Вся тяжесть обработки HTML тегов и прочей разметки ложится на front-end. | ||
+ | Полнота поддержки HTML зависит от конкретного интерфейса. | ||
− | + | ==Версия 0.9.3.1== | |
+ | [[Медиа:ConTOM.rar|скачать]] | ||
− | == | + | ===Консольный интерфейс: constom.exe=== |
− | + | [[Изображение:Constom.GIF]] | |
− | 1. | + | Консольный интерфейс является простым примером для разработки front-end приложений к ТОМу версии 0.9.3.1. |
− | + | Исходный модуль консольного интерфейса [[Медиа:ConTOM_s.rar|constom.cpp]] на языке C доступен для свободного [[Медиа:ConTOM_s.rar|скачивания]]. | |
− | + | Constom поддерживает тег смены цвета шрифта и несколько служебных тегов. | |
− | + | ===TOM API 0.9.3.1=== | |
+ | Интерфейс между ядром версии 0.9.3.1 и оболочкой достаточно прост, построен на нескольких функциях ядра. Любой желающий может использовать ядро платформы в своих разработках. | ||
− | + | Назначение функций: | |
+ | *char* RunFile(char*FileName) | ||
+ | **Выполняет скрипт из указанного файла. | ||
+ | **Возвращает текст, сгенерированный при выполненнии скрипта. | ||
+ | *char* RunText(char*Statement) | ||
+ | **Вычисляет выражение или выполняет скрипт переданный в строке. | ||
+ | **Возвращает результат вычисления. Текст сгенерированный при выполненнии скрипта пишется в лог. | ||
+ | *char* Command(char*Input) | ||
+ | **Выполняет команды на русском языке. | ||
+ | **Возвращает текст, сгенерированный при выполненнии команды. | ||
− | === | + | ===ТОМилена=== |
Первым удачным примером интеграции движка ТОМ является платформа [[Милена]]. | Первым удачным примером интеграции движка ТОМ является платформа [[Милена]]. | ||
+ | |||
[[Изображение:TOM_Milena.JPG]] | [[Изображение:TOM_Milena.JPG]] | ||
+ | |||
+ | Милена может выступать как полноценный оконный интерфейс ТОМа с поддержкой HTML разметки. | ||
+ | |||
+ | Поддерживаются html-тэги: <nowiki><i>, <b>, <u>, <center>, <h1>..<h9>, <font>, <img></nowiki>, а также специальные тэги: <pause>(задержка до нажатия клавиши или временная задержка), <clear>(очистка экрана) и <music>(воспроизведение музыки). | ||
+ | |||
+ | |||
+ | '''Подробнее о тэге''' <pause>. | ||
+ | |||
+ | Тэг имеет специальный атрибут interval, задающий время паузы в миллисекундах. Если он не определён, интерпретатор ждет нажатия кнопки. | ||
+ | Пример: | ||
+ | %<pause interval="500">//Задержка на 500 миллисекунд | ||
+ | |||
+ | |||
+ | '''Подробнее о тэге''' <music>. | ||
+ | |||
+ | Тэг имеет несколько атрибутов: name(имя загруженного файла в системе(чисто условное)), src(путь к файлу), loop(если атрибут присутствует, звук зацикливается), event(принимает одно из 3 значений: "play", "pause" и "stop", если атрибут отсутствует его значение принимается за "play"). Значения атрибутов должны содержаться в двойных или одинарных кавычках. | ||
+ | Пример: | ||
+ | %<music name="главная тема" src="1.mp3" loop="">//Эта строка загружает и начинает воспроизведение музыки | ||
+ | %Нажмите любую клавишу, чтобы остановить воспроизведение<pause> | ||
+ | %<music name="главная тема" event="stop">//Эта строка останавливает воспроизведение музыки с условным именем "главная тема" | ||
+ | |||
+ | ==Версия 0.9.4.х== | ||
+ | [[Медиа:Tom_094.rar|скачать]] | ||
+ | |||
+ | Для версий 0.9.4.х декларируется обратная совместимость* с v.0.9.3.1, что гарантирует возможность проигрывания игр, сделанных для версии 0.9.3.1 и использование разработанных для неё библиотек. | ||
+ | *''*совместимость не полная - возможности, которые никогда не были использованы, в v.0.9.4.х могут отсутствовать.'' | ||
+ | |||
+ | |||
+ | '''В плюсе:''' | ||
+ | *новый графический интерфейс и новый механизм взаимодействия движка с интерфейсом; | ||
+ | *основной цикл игры убран внутрь dll и выполняется в отдельном потоке; | ||
+ | *регистрация внешних функций, система плагинов; | ||
+ | *поддержка музыки и речи вынесена из движка в отдельные плагины; | ||
+ | *вычисление выражений непосредственно в командной строке (удобно для отладки); | ||
+ | *тестировать можно на старых играх - мышках и спелеологисте. | ||
+ | |||
+ | |||
+ | ===Интерфейс на основе HGE=== | ||
+ | [[Изображение:TOMonHGE.JPG]] | ||
+ | |||
+ | Интерфейс реализован на основе полноценного графического движка [http://hge.relishgames.com/overview.html HGE], что в будущем позволяет нарастить графические возможности платформы и использовать различные спецэффекты. | ||
+ | |||
+ | ===ТОМ API 0.9.4.х=== | ||
+ | ТОМ API состоит из нескольких функций tom.dll: | ||
+ | *'''RegFunction()''' - регистрирует дополнительные внешние функции; | ||
+ | *'''Init()''' - запускает движок; | ||
+ | *'''RunText()''' - выполняет переданный текст, возвращает результат; | ||
+ | *'''Exit()''' - останавливает движок. | ||
+ | |||
+ | Еще есть альтернативные функции, на случай если ваш интерфейс или плагин не использует UNICODE: | ||
+ | *'''RegFunctionANSI()''' - работает аналогично RegFunction(); | ||
+ | *'''RunTextANSI()''' - работает аналогично RunText(); | ||
+ | |||
+ | ====Внешние функции==== | ||
+ | ТОМ позволяет подключать неограниченное количество внешних функций, расположенных в интерфейсе или в плагинах и расширяющих стандартный набор функций ТОМа. | ||
+ | |||
+ | После регистрации внешней функции её можно вызвать из командной строки '''>MyFunction Arg''' или из кода игры: '''MyFunction(Arg)'''. | ||
+ | |||
+ | |||
+ | Существует 5 специальных внешних функций, необходимых для работы ТОМа: | ||
+ | *'''print''' - выводит текст на экран; | ||
+ | *'''input''' - ввод из командной строки; | ||
+ | *'''error''' - выводит информацию об ошибке; | ||
+ | *'''debug''' - выводит отладочную информацию; | ||
+ | *'''speech''' - читает переданный текст голосом. | ||
+ | Обязательными являются только функции print и input. | ||
+ | |||
+ | Эти 5 функций также можно вызывать из командной строки и из кода игры, хотя особого смысла в этом нет - движок сам вызывает их когда это необходимо. | ||
+ | |||
+ | ===Плагины=== | ||
+ | Плагины - это специализированные dll. | ||
+ | Имя файла плагина должно соответствовать маске *.plg.dll | ||
+ | |||
+ | Плагины грузятся при старте платформы из папки движка и из подпапки plugins\ в каталоге движка, а также при запуске игры из папки игры и из подпапки plugins\ в каталоге игры. | ||
+ | |||
+ | В момент загрузки плагины регистрируют свои собственные функции, которые расширяют набор стандартных функций ТОМа. | ||
+ | |||
+ | |||
+ | В комплект поставки включены два плагина: | ||
+ | *'''tommci.plg.dll''' обеспечивающий проигрывание музыки; | ||
+ | *'''speech.plg.dll''' обеспечивающий проговаривание выводимого текста. | ||
+ | |||
+ | ==Общее для 0.9.x.x== | ||
+ | Совместимость версий делает возможным использование общих библиотек и инструментов. | ||
+ | |||
+ | ''(Последние версии стандартной библиотеки могут некорректно работать на платформе v.0.9.3.1, рекомендуется использовать последнюю версию платформы 0.9.4.х)'' | ||
+ | |||
+ | ===Библиотеки=== | ||
+ | В [[Медиа:Libs4TOM.rar|пакет библиотек]] входят: | ||
+ | |||
+ | '''Стандартная библиотека ТОМ:''' | ||
+ | *модули стандартной библиотеки (каталог ''Libs4TOM\std.lib''); | ||
+ | *демо для стандартной библиотеки (файл ''Libs4TOM\std_test.tom''); | ||
+ | *портированные на стандартную библиотеку ТОМ игры рТАДС - [[Плащ тьмы (RTADS)|Плащ Тьмы]] и [[Золотой череп]] (файлы ''Cloak_of_Darkness.tom'' и ''GOLDSKLR_std.tom''). | ||
+ | |||
+ | ====Стандартная библиотека==== | ||
+ | [[Медиа:Libs4TOM.rar|Стандартная библиотека]] строится по модульному принципу. | ||
+ | К каждому модулю разработан свой тест, демонстрирующий его работу. | ||
+ | Автор сам решает, какие модули необходимы в его игре, а какие можно выкинуть. | ||
+ | |||
+ | Смотрите также [[ТОМ: Стандартная библиотека|подробное описание библиотеки]] и [[ТОМ: Уроки|пошаговые уроки создания игры на основе стандартной библиотеки]]. | ||
− | + | ''Модули стандартной библиотеки:'' | |
− | |||
− | + | *'''UnusVerb.tml''' Содержит список неиспользуемых глаголов, генерит осмысленные сообщения для комманд с глаголами из списка. | |
− | |||
− | + | *'''Main.tml''' Содержит минимально-необходимый набор функциональности - классы для ''локаций, предметов, персонажей'' и ''декораций'', действия ''осмотреться, осмотреть, взять, дать, положить, идти, войти, выйти, сказать'', | |
− | + | *'''Physics.tml''' | |
+ | *'''Map.tml''' Позволяет размещать локации на карте, поддерживает перемещения по компасным направлениям - [[сзюв]] | ||
− | + | *'''Containers.tml''' | |
− | + | *'''Light.tml''' | |
− | + | ===Инструменты=== | |
+ | ====Генератор словоформ==== | ||
+ | Удобный [[Медиа:tom_Gener.rar|генератор словоформ]] от Александра: | ||
− | + | [[Изображение:tom_g.PNG]] | |
− | + | Текущая версия 0.8.2.158 | |
− | + | ==Отказ от выпуска версии 1.0== | |
+ | Направление развития 0.9 признано неудачным. Выявленные в ходе бета-тестирования сложность разработки игр, недостаточный уровень поддержки русского языка, и отсутствие авторов, желающих писать на этой платформе, наглядно это подтвердили. | ||
+ | В настоящее время идёт разработка [[ТОМ 2]]. | ||
− | + | Принципы работы движка серьезно пересмотрены. В новую версию вложен весь боевой опыт, приобретенный за время создания и использования платформы, а также новые идеи, внедрить которые в архитектуру первого ТОМа было уже невозможно. | |
==Changelog== | ==Changelog== | ||
− | Версия v.0. | + | ===Версия v.0.9.4.11 beta=== |
− | * | + | [[Медиа:Tom_094.rar|лежит здесь]] |
− | * | + | |
− | * | + | Новое в версии: |
− | * | + | *загрузка/выгрузка плагинов перенесена из движка в интерфейс и доработана; |
− | *исправлены | + | *плагин '''speech.plg.dll''' (чтение текста голосом) доработан и возвращен в архив; |
+ | *плагин '''tommsi.plg.dll''' (воспроизведение музыки и звуков) требует доработки и временно исключен из архива; | ||
+ | *исправлены пути для загрузки фоновых картинок - теперь пути берутся относительно каталога игры; | ||
+ | *в тэге '''<body>''' теперь работает параметр '''bgcolor=''' пример: '''<body background=bg.jpg bgcolor=red>''' | ||
+ | *можно задавать произвольные цвета текста и фона с помощью шестнадцатеричных чисел в формате RGB; пример: '''<body text=F94500>''' | ||
+ | *небольшое улучшение парсера: при неоднозначности между объектом и локацией предпочтение отдаётся объекту. | ||
+ | |||
+ | ===Версия v.0.9.4.10 beta=== | ||
+ | *ударение в лексемах более не влияет на парсер; | ||
+ | *в тэге <body> теперь работают стандартные параметры "text", "link", "topmargin", "bottommargin", "leftmargin", "rightmargin" | ||
+ | например: | ||
+ | %<body background=foto\bgStart.jpg text=aqua leftmargin=100 rightmargin=80 topmargin=50> | ||
+ | еще пока не сделано: | ||
+ | *не исправлена ошибка, возникающая при выгрузке плагинов. | ||
+ | *пути файлов в тегах берутся относительно папки движка, а не игры. | ||
+ | |||
+ | ===Версия v.0.9.4.9 beta (багфикс)=== | ||
+ | *исправлено сохранение игр; | ||
+ | *добавлен выбор значения свойств по локации (предмет_по_месту); | ||
+ | *интерфейс переписан с учётом потокобезопасности. | ||
+ | *речевой плагин временно убран из архива - не корректно завершает работу. | ||
+ | |||
+ | ===Версия v.0.9.4.8 beta=== | ||
+ | *финальная версия в этом направлении. | ||
+ | |||
+ | |||
+ | '''Версия v.0.9.4.7 альфа''' | ||
+ | *Сделана загрузка плагинов. | ||
+ | *Добавлена интерфейсная функция pause() / пауза(). Рекомендуется использовать вместо тэга <pause>. | ||
+ | *Доработана обработка ошибки с незакрытыми скобками в коде игры. | ||
+ | |||
+ | |||
+ | '''Версия v.0.9.4.6 альфа''' | ||
+ | *доделана нормализация знаков препинания; | ||
+ | *исправлены некоторые ошибки. | ||
+ | Версии присвоен статус "альфа". Всё основное, что планировалось в ветке 0.9.4.х, сделано. | ||
+ | Осталось доделать небольшие фичи, после чего эта версия перейдет в "бету" и будет рекомендована как основная официальная версия. | ||
− | |||
− | |||
− | |||
− | |||
− | + | '''Версия v.0.9.4.5 (багфикс)''' | |
− | Версия v.0. | + | *Исправлен ряд ошибок, критичных и не очень. Спасибо '''Александру'''. |
− | |||
− | |||
− | |||
− | |||
− | + | '''Версия v.0.9.4.4 dev''' | |
− | * | + | *Добавлена speech.dll для чтения текста. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | '''Версия v.0.9.4.3 (багфикс)''' | |
+ | *Исправлена критическая ошибка. В остальном без изменений. | ||
− | |||
− | + | '''Версия v.0.9.4.2 dev''' | |
+ | *Доделана система ввода-вывода (за исключением голоса и коррекции знаков препинания) | ||
+ | *Исправлены старые ошибки | ||
+ | *Добавлены новые ошибки | ||
− | |||
− | |||
− | + | '''Версия v.0.9.4.1 dev''' | |
− | + | *Исправлено несколько мелких ошибок. | |
+ | *Воспроизведение музыки приведено к полной совместимости с версией 0.9.3.1 | ||
− | |||
+ | '''Версия v.0.9.4.0 dev''' | ||
− | + | В плюсе: | |
− | + | + новый графический интерфейс и новый механизм взаимодействия движка с интерфейсом. | |
− | |||
− | + | + основной цикл убран внутрь dll и выполняется в отдельном потоке. | |
− | + | + система регистрации внешних функций. | |
− | + | + вычисление выражений непосредственно в командной строке (удобно для отладки) | |
− | + | + проигрывание музыки реализовано в отдельной dll, независимой от текстового движка. | |
− | - | + | + тестить можно на старых играх - мышках и спелеологисте. |
− | |||
+ | В минусе: | ||
− | + | - синтез речи - будет реализован отдельно от текстового движка. | |
− | - | + | - пост-обработка текста пока отсутствует, будет переделываться. |
− | + | ===Версия v.0.9.3.1 бета=== | |
+ | [[Медиа:ConTOM.rar|лежит здесь]] | ||
− | - | + | *Изменен принцип подстановки произношения - оно теперь подставляется непосредственно в тексте в квадратных скобках: |
+ | слово[правильное произношение слова] | ||
+ | *добавлена команда "повторить", которая повторяет последний произнесенный текст (работает только если в системе установлен голос) | ||
+ | *усовершенствован механизм подстановки альтенативных форм предлогов ("с"->"со", "из"->"изо" и т.д.). | ||
− | + | [[ТОМ: Changelog|Архив по старым версиям]] | |
− | [[Категория: | + | [[Категория:Парсерные платформы]] [[Категория:Документация ТОМ]] |
+ | [[Категория:Заброшенные платформы]] |
Текущая версия на 15:16, 2 июня 2018
Общая информация
Парсерная русскоязычная ИЛ-платформа.
Расшифровка названия: ТОМ - Текстовая Основа Миростроения.
Период разработки: 2008-2011гг.
Последняя версия: 0.9.4.11 бета, версии 1.0 не будет.
Продолжение разработки: ТОМ 2.
Автор: ASBer
Официальный форум платформы.
Есть набор простых примеров по программированию.
Для углубленного изучения посетите раздел документации.
Если у Вас есть вопросы по платформе - посмотрите FAQ.
Язык программирования
ТОМ имеет скриптовый язык программирования высокого уровня, по синтаксису близкий к С++, а по идеологии напоминающий Ruby.
Язык поддерживает объектно-ориентированное программирование с линейным наследованием и динамической типизацией.
Есть возможность обработки событий и фоновых действий.
Парсер команд на русском языке
Парсер изначально ориентирован на русский язык, не имеет ограничений на количество слов в команде, команды описываются с помощью шаблонов. Парсинг управляется функциями-проверками к шаблонам.
Модульный принцип построения платформы
Платформа ТОМ строится по модульному принципу и состоит из нескольких частей:
1. Текстовый парсерный движок реализован в виде динамической библиотеки tom.dll
2. Интерфейсная оболочка (Front-end) служит для отображения текста и ввода команд игрока.
3. Начиная с версии 0.9.4.х используются плагины, расширяющие возможности языка ТОМ и обогащающие его мультимедийные возможности.
При желании авторы могут создавать и использовать свои собственные интерфейсы и плагины. API движка открыты.
Поддержка HTML и прочих тегов
ТОМ позволяет использовать как HTML разметку, так и любые другие теги. Текст, заключенный в < > прозрачен для ядра ТОМа и может быть обработан интерфейсом при разборе текста перед его выводом.
Вся тяжесть обработки HTML тегов и прочей разметки ложится на front-end. Полнота поддержки HTML зависит от конкретного интерфейса.
Версия 0.9.3.1
Консольный интерфейс: constom.exe
Консольный интерфейс является простым примером для разработки front-end приложений к ТОМу версии 0.9.3.1.
Исходный модуль консольного интерфейса constom.cpp на языке C доступен для свободного скачивания.
Constom поддерживает тег смены цвета шрифта и несколько служебных тегов.
TOM API 0.9.3.1
Интерфейс между ядром версии 0.9.3.1 и оболочкой достаточно прост, построен на нескольких функциях ядра. Любой желающий может использовать ядро платформы в своих разработках.
Назначение функций:
- char* RunFile(char*FileName)
- Выполняет скрипт из указанного файла.
- Возвращает текст, сгенерированный при выполненнии скрипта.
- char* RunText(char*Statement)
- Вычисляет выражение или выполняет скрипт переданный в строке.
- Возвращает результат вычисления. Текст сгенерированный при выполненнии скрипта пишется в лог.
- char* Command(char*Input)
- Выполняет команды на русском языке.
- Возвращает текст, сгенерированный при выполненнии команды.
ТОМилена
Первым удачным примером интеграции движка ТОМ является платформа Милена.
Милена может выступать как полноценный оконный интерфейс ТОМа с поддержкой HTML разметки.
Поддерживаются html-тэги: <i>, <b>, <u>, <center>, <h1>..<h9>, <font>, <img>, а также специальные тэги: <pause>(задержка до нажатия клавиши или временная задержка), <clear>(очистка экрана) и <music>(воспроизведение музыки).
Подробнее о тэге <pause>.
Тэг имеет специальный атрибут interval, задающий время паузы в миллисекундах. Если он не определён, интерпретатор ждет нажатия кнопки. Пример: %<pause interval="500">//Задержка на 500 миллисекунд
Подробнее о тэге <music>.
Тэг имеет несколько атрибутов: name(имя загруженного файла в системе(чисто условное)), src(путь к файлу), loop(если атрибут присутствует, звук зацикливается), event(принимает одно из 3 значений: "play", "pause" и "stop", если атрибут отсутствует его значение принимается за "play"). Значения атрибутов должны содержаться в двойных или одинарных кавычках. Пример:
%<music name="главная тема" src="1.mp3" loop="">//Эта строка загружает и начинает воспроизведение музыки %Нажмите любую клавишу, чтобы остановить воспроизведение<pause> %<music name="главная тема" event="stop">//Эта строка останавливает воспроизведение музыки с условным именем "главная тема"
Версия 0.9.4.х
Для версий 0.9.4.х декларируется обратная совместимость* с v.0.9.3.1, что гарантирует возможность проигрывания игр, сделанных для версии 0.9.3.1 и использование разработанных для неё библиотек.
- *совместимость не полная - возможности, которые никогда не были использованы, в v.0.9.4.х могут отсутствовать.
В плюсе:
- новый графический интерфейс и новый механизм взаимодействия движка с интерфейсом;
- основной цикл игры убран внутрь dll и выполняется в отдельном потоке;
- регистрация внешних функций, система плагинов;
- поддержка музыки и речи вынесена из движка в отдельные плагины;
- вычисление выражений непосредственно в командной строке (удобно для отладки);
- тестировать можно на старых играх - мышках и спелеологисте.
Интерфейс на основе HGE
Интерфейс реализован на основе полноценного графического движка HGE, что в будущем позволяет нарастить графические возможности платформы и использовать различные спецэффекты.
ТОМ API 0.9.4.х
ТОМ API состоит из нескольких функций tom.dll:
- RegFunction() - регистрирует дополнительные внешние функции;
- Init() - запускает движок;
- RunText() - выполняет переданный текст, возвращает результат;
- Exit() - останавливает движок.
Еще есть альтернативные функции, на случай если ваш интерфейс или плагин не использует UNICODE:
- RegFunctionANSI() - работает аналогично RegFunction();
- RunTextANSI() - работает аналогично RunText();
Внешние функции
ТОМ позволяет подключать неограниченное количество внешних функций, расположенных в интерфейсе или в плагинах и расширяющих стандартный набор функций ТОМа.
После регистрации внешней функции её можно вызвать из командной строки >MyFunction Arg или из кода игры: MyFunction(Arg).
Существует 5 специальных внешних функций, необходимых для работы ТОМа:
- print - выводит текст на экран;
- input - ввод из командной строки;
- error - выводит информацию об ошибке;
- debug - выводит отладочную информацию;
- speech - читает переданный текст голосом.
Обязательными являются только функции print и input.
Эти 5 функций также можно вызывать из командной строки и из кода игры, хотя особого смысла в этом нет - движок сам вызывает их когда это необходимо.
Плагины
Плагины - это специализированные dll. Имя файла плагина должно соответствовать маске *.plg.dll
Плагины грузятся при старте платформы из папки движка и из подпапки plugins\ в каталоге движка, а также при запуске игры из папки игры и из подпапки plugins\ в каталоге игры.
В момент загрузки плагины регистрируют свои собственные функции, которые расширяют набор стандартных функций ТОМа.
В комплект поставки включены два плагина:
- tommci.plg.dll обеспечивающий проигрывание музыки;
- speech.plg.dll обеспечивающий проговаривание выводимого текста.
Общее для 0.9.x.x
Совместимость версий делает возможным использование общих библиотек и инструментов.
(Последние версии стандартной библиотеки могут некорректно работать на платформе v.0.9.3.1, рекомендуется использовать последнюю версию платформы 0.9.4.х)
Библиотеки
В пакет библиотек входят:
Стандартная библиотека ТОМ:
- модули стандартной библиотеки (каталог Libs4TOM\std.lib);
- демо для стандартной библиотеки (файл Libs4TOM\std_test.tom);
- портированные на стандартную библиотеку ТОМ игры рТАДС - Плащ Тьмы и Золотой череп (файлы Cloak_of_Darkness.tom и GOLDSKLR_std.tom).
Стандартная библиотека
Стандартная библиотека строится по модульному принципу. К каждому модулю разработан свой тест, демонстрирующий его работу. Автор сам решает, какие модули необходимы в его игре, а какие можно выкинуть.
Смотрите также подробное описание библиотеки и пошаговые уроки создания игры на основе стандартной библиотеки.
Модули стандартной библиотеки:
- UnusVerb.tml Содержит список неиспользуемых глаголов, генерит осмысленные сообщения для комманд с глаголами из списка.
- Main.tml Содержит минимально-необходимый набор функциональности - классы для локаций, предметов, персонажей и декораций, действия осмотреться, осмотреть, взять, дать, положить, идти, войти, выйти, сказать,
- Physics.tml
- Map.tml Позволяет размещать локации на карте, поддерживает перемещения по компасным направлениям - сзюв
- Containers.tml
- Light.tml
Инструменты
Генератор словоформ
Удобный генератор словоформ от Александра:
Текущая версия 0.8.2.158
Отказ от выпуска версии 1.0
Направление развития 0.9 признано неудачным. Выявленные в ходе бета-тестирования сложность разработки игр, недостаточный уровень поддержки русского языка, и отсутствие авторов, желающих писать на этой платформе, наглядно это подтвердили.
В настоящее время идёт разработка ТОМ 2.
Принципы работы движка серьезно пересмотрены. В новую версию вложен весь боевой опыт, приобретенный за время создания и использования платформы, а также новые идеи, внедрить которые в архитектуру первого ТОМа было уже невозможно.
Changelog
Версия v.0.9.4.11 beta
Новое в версии:
- загрузка/выгрузка плагинов перенесена из движка в интерфейс и доработана;
- плагин speech.plg.dll (чтение текста голосом) доработан и возвращен в архив;
- плагин tommsi.plg.dll (воспроизведение музыки и звуков) требует доработки и временно исключен из архива;
- исправлены пути для загрузки фоновых картинок - теперь пути берутся относительно каталога игры;
- в тэге <body> теперь работает параметр bgcolor= пример: <body background=bg.jpg bgcolor=red>
- можно задавать произвольные цвета текста и фона с помощью шестнадцатеричных чисел в формате RGB; пример: <body text=F94500>
- небольшое улучшение парсера: при неоднозначности между объектом и локацией предпочтение отдаётся объекту.
Версия v.0.9.4.10 beta
- ударение в лексемах более не влияет на парсер;
- в тэге <body> теперь работают стандартные параметры "text", "link", "topmargin", "bottommargin", "leftmargin", "rightmargin"
например:
%<body background=foto\bgStart.jpg text=aqua leftmargin=100 rightmargin=80 topmargin=50>
еще пока не сделано:
- не исправлена ошибка, возникающая при выгрузке плагинов.
- пути файлов в тегах берутся относительно папки движка, а не игры.
Версия v.0.9.4.9 beta (багфикс)
- исправлено сохранение игр;
- добавлен выбор значения свойств по локации (предмет_по_месту);
- интерфейс переписан с учётом потокобезопасности.
- речевой плагин временно убран из архива - не корректно завершает работу.
Версия v.0.9.4.8 beta
- финальная версия в этом направлении.
Версия v.0.9.4.7 альфа
- Сделана загрузка плагинов.
- Добавлена интерфейсная функция pause() / пауза(). Рекомендуется использовать вместо тэга <pause>.
- Доработана обработка ошибки с незакрытыми скобками в коде игры.
Версия v.0.9.4.6 альфа
- доделана нормализация знаков препинания;
- исправлены некоторые ошибки.
Версии присвоен статус "альфа". Всё основное, что планировалось в ветке 0.9.4.х, сделано. Осталось доделать небольшие фичи, после чего эта версия перейдет в "бету" и будет рекомендована как основная официальная версия.
Версия v.0.9.4.5 (багфикс)
- Исправлен ряд ошибок, критичных и не очень. Спасибо Александру.
Версия v.0.9.4.4 dev
- Добавлена speech.dll для чтения текста.
Версия v.0.9.4.3 (багфикс)
- Исправлена критическая ошибка. В остальном без изменений.
Версия v.0.9.4.2 dev
- Доделана система ввода-вывода (за исключением голоса и коррекции знаков препинания)
- Исправлены старые ошибки
- Добавлены новые ошибки
Версия v.0.9.4.1 dev
- Исправлено несколько мелких ошибок.
- Воспроизведение музыки приведено к полной совместимости с версией 0.9.3.1
Версия v.0.9.4.0 dev
В плюсе:
+ новый графический интерфейс и новый механизм взаимодействия движка с интерфейсом.
+ основной цикл убран внутрь dll и выполняется в отдельном потоке.
+ система регистрации внешних функций.
+ вычисление выражений непосредственно в командной строке (удобно для отладки)
+ проигрывание музыки реализовано в отдельной dll, независимой от текстового движка.
+ тестить можно на старых играх - мышках и спелеологисте.
В минусе:
- синтез речи - будет реализован отдельно от текстового движка.
- пост-обработка текста пока отсутствует, будет переделываться.
Версия v.0.9.3.1 бета
- Изменен принцип подстановки произношения - оно теперь подставляется непосредственно в тексте в квадратных скобках:
слово[правильное произношение слова]
- добавлена команда "повторить", которая повторяет последний произнесенный текст (работает только если в системе установлен голос)
- усовершенствован механизм подстановки альтенативных форм предлогов ("с"->"со", "из"->"изо" и т.д.).