ТОМ 0.9 бета: различия между версиями
ASBer (обсуждение | вклад) |
Nikita (обсуждение | вклад) Пожалуй, можно считать платформу заброшенной ввиду перехода автора к разработке ТОМ 2 |
||
| (не показаны 73 промежуточные версии 4 участников) | |||
| Строка 5: | Строка 5: | ||
Парсерная русскоязычная ИЛ-платформа. |
Парсерная русскоязычная ИЛ-платформа. |
||
Расшифровка названия: ТОМ - ''Текстовая Основа Миростроения.'' |
|||
[[:Категория:Игры на платформе ТОМ|Игры на платформе ТОМ]] (пока одна игра). |
|||
Период разработки: 2008-2011гг. |
|||
Автор: [[Участник:ASBer|ASBer]] |
|||
Последняя версия: [[Медиа:Tom_094.rar|0.9.4.11 бета]], версии [[ТОМ 0.9 бета#Отказ от выпуска версии 1.0|1.0]] не будет. |
|||
[http://tom.userforum.ru/ Официальный форум] платформы. |
|||
Продолжение разработки: [[ТОМ 2]]. |
|||
Расшифровка названия: ТОМ - ''Текстовая Основа Миростроения.'' |
|||
[[:Категория:Игры на TOM|Игры на платформе ТОМ]]. |
|||
Текущая версия: [[Медиа:ConTOM.rar|0.9.3.1 бета]] (консоль). В состав архива входит демо-игра про мышек. |
|||
Автор: [[Участник:ASBer|ASBer]] |
|||
Графический интерфейс: [[Медиа:TOMilena.rar|ТОМ+Милена]]. |
|||
[http://tom.userforum.ru/ Официальный форум] платформы. |
|||
Есть набор простых [[Медиа:tom_sample.rar|примеров]] по программированию. |
Есть набор простых [[Медиа:tom_sample.rar|примеров]] по программированию. |
||
| Строка 43: | Строка 45: | ||
3. Начиная с версии 0.9.4.х используются плагины, расширяющие возможности языка ТОМ и обогащающие его мультимедийные возможности. |
3. Начиная с версии 0.9.4.х используются плагины, расширяющие возможности языка ТОМ и обогащающие его мультимедийные возможности. |
||
При желании авторы могут |
При желании авторы могут создавать и использовать свои собственные интерфейсы и плагины. API движка открыты. |
||
===Поддержка HTML и прочих тегов=== |
===Поддержка HTML и прочих тегов=== |
||
| Строка 51: | Строка 53: | ||
Полнота поддержки HTML зависит от конкретного интерфейса. |
Полнота поддержки HTML зависит от конкретного интерфейса. |
||
==Версия 0.9.3.1== |
|||
[[Медиа:ConTOM.rar|скачать]] |
|||
===Консольный интерфейс: constom.exe=== |
|||
==Ветка развития 0.9== |
|||
===Версия 0.9.3.1=== |
|||
====Консольный интерфейс: constom.exe==== |
|||
[[Изображение:Constom.GIF]] |
[[Изображение:Constom.GIF]] |
||
| Строка 63: | Строка 65: | ||
Constom поддерживает тег смены цвета шрифта и несколько служебных тегов. |
Constom поддерживает тег смены цвета шрифта и несколько служебных тегов. |
||
===TOM API 0.9.3.1=== |
|||
Интерфейс между ядром версии 0.9.3.1 и оболочкой достаточно прост, построен на нескольких функциях ядра. Любой желающий может использовать ядро платформы в своих разработках. |
Интерфейс между ядром версии 0.9.3.1 и оболочкой достаточно прост, построен на нескольких функциях ядра. Любой желающий может использовать ядро платформы в своих разработках. |
||
| Строка 77: | Строка 79: | ||
**Возвращает текст, сгенерированный при выполненнии команды. |
**Возвращает текст, сгенерированный при выполненнии команды. |
||
===ТОМилена=== |
|||
Первым удачным примером интеграции движка ТОМ является платформа [[Милена]]. |
Первым удачным примером интеграции движка ТОМ является платформа [[Милена]]. |
||
| Строка 102: | Строка 104: | ||
%<music name="главная тема" event="stop">//Эта строка останавливает воспроизведение музыки с условным именем "главная тема" |
%<music name="главная тема" event="stop">//Эта строка останавливает воспроизведение музыки с условным именем "главная тема" |
||
==Версия 0.9.4.х== |
|||
[[Медиа:Tom_094.rar|скачать]] |
|||
Для версий линейки 0.9.4.х декларируется обратная совместимость с v0.9.3.1, что гарантирует возможность проигрывания игр, сделанных для версии 0.9.3.1 и использование разработанных для неё библиотек. |
|||
''(на самом деле совместимость не полная - возможности v0.9.3.1, которые никогда не были использованы, в 0.9.4.х могут не поддерживаться).'' |
|||
Для версий 0.9.4.х декларируется обратная совместимость* с v.0.9.3.1, что гарантирует возможность проигрывания игр, сделанных для версии 0.9.3.1 и использование разработанных для неё библиотек. |
|||
===Общее для v0.9.3.1 и v0.9.4.х=== |
|||
*''*совместимость не полная - возможности, которые никогда не были использованы, в v.0.9.4.х могут отсутствовать.'' |
|||
====Библиотеки==== |
|||
В [[Медиа:Libs4TOM.rar|пакет библиотек]] входят: |
|||
'''В плюсе:''' |
|||
*новый графический интерфейс и новый механизм взаимодействия движка с интерфейсом; |
|||
*основной цикл игры убран внутрь 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)'''. |
|||
'''Стандартная библиотека ТОМ:''' |
|||
*модули стандартной библиотеки (каталог ''Libs4TOM\std.lib''); |
|||
*демо для стандартной библиотеки (файл ''Libs4TOM\std_test.tom''); |
|||
*автоматизированные тесты модулей стандартной библиотеки (каталог ''Libs4TOM\tests''); |
|||
*портированные на стандартную библиотеку ТОМ игры рТАДС - [[Плащ Тьмы]] и [[Золотой череп]] (файлы ''Cloak_of_Darkness.tom'' и ''GOLDSKLR_std.tom''). |
|||
Существует 5 специальных внешних функций, необходимых для работы ТОМа: |
|||
'''Частично портированная библиотека rTADS:''' |
|||
*'''print''' - выводит текст на экран; |
|||
*файлы библиотеки rTADS (каталог ''Libs4TOM\rTADS.lib''); |
|||
*'''input''' - ввод из командной строки; |
|||
*портированная игра рТАДС - [[Золотой череп]] (файл ''GOLDSKLR_rTADS.tom''). |
|||
*'''error''' - выводит информацию об ошибке; |
|||
*'''debug''' - выводит отладочную информацию; |
|||
*'''speech''' - читает переданный текст голосом. |
|||
Обязательными являются только функции print и input. |
|||
Эти 5 функций также можно вызывать из командной строки и из кода игры, хотя особого смысла в этом нет - движок сам вызывает их когда это необходимо. |
|||
Консольный плеер '''Constom''' (каталог ''Libs4TOM\Bin''). |
|||
===Плагины=== |
|||
Утилита для автоматического тестирования '''ТОster''' (каталог ''Libs4TOM\Bin''). |
|||
Плагины - это специализированные 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|Стандартная библиотека]] строится по модульному принципу. |
[[Медиа:Libs4TOM.rar|Стандартная библиотека]] строится по модульному принципу. |
||
К каждому модулю разработан свой тест, демонстрирующий его работу. |
К каждому модулю разработан свой тест, демонстрирующий его работу. |
||
| Строка 150: | Строка 200: | ||
*'''Light.tml''' |
*'''Light.tml''' |
||
===Инструменты=== |
|||
=====Порт библиотеки rTADS===== |
|||
====Генератор словоформ==== |
|||
пока ограничивается портированием на ТОМ очень простой игры "Золотой череп". |
|||
====Инструменты==== |
|||
=====Генератор словоформ===== |
|||
Удобный [[Медиа:tom_Gener.rar|генератор словоформ]] от Александра: |
Удобный [[Медиа:tom_Gener.rar|генератор словоформ]] от Александра: |
||
| Строка 161: | Строка 208: | ||
Текущая версия 0.8.2.158 |
Текущая версия 0.8.2.158 |
||
==Отказ от выпуска версии 1.0== |
|||
==Ветка развития 0.10== |
|||
Направление развития 0.9 признано неудачным. Выявленные в ходе бета-тестирования сложность разработки игр, недостаточный уровень поддержки русского языка, и отсутствие авторов, желающих писать на этой платформе, наглядно это подтвердили. |
|||
В настоящее время идёт разработка [[ТОМ 2]]. |
|||
Принципы работы движка серьезно пересмотрены. В новую версию вложен весь боевой опыт, приобретенный за время создания и использования платформы, а также новые идеи, внедрить которые в архитектуру первого ТОМа было уже невозможно. |
|||
==План развития платформы== |
|||
Текущее направление развития платформы признано неудачным. Выявленные в ходе бета-тестирования сложность разработки игр, недостаточный уровень поддержки русского языка, и отсутствие авторов, желающих писать на этой платформе, наглядно это подтверждают. |
|||
В настоящее время идет разработка направления 0.9.4.х, получившегося в результате скрещивания движка 0.9.3.1 с новым графически интерфейсом. |
|||
==Changelog== |
==Changelog== |
||
===Версия v.0.9.4. |
===Версия v.0.9.4.11 beta=== |
||
[[Медиа:Tom_094.rar|лежит здесь]] |
[[Медиа: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 альфа''' |
|||
*доделана нормализация знаков препинания; |
*доделана нормализация знаков препинания; |
||
*исправлены некоторые ошибки. |
*исправлены некоторые ошибки. |
||
| Строка 178: | Строка 259: | ||
Осталось доделать небольшие фичи, после чего эта версия перейдет в "бету" и будет рекомендована как основная официальная версия. |
Осталось доделать небольшие фичи, после чего эта версия перейдет в "бету" и будет рекомендована как основная официальная версия. |
||
===Версия v.0.9.4.5 (багфикс)=== |
|||
'''Версия v.0.9.4.5 (багфикс)''' |
|||
*Исправлен ряд ошибок, критичных и не очень. Спасибо '''Александру'''. |
*Исправлен ряд ошибок, критичных и не очень. Спасибо '''Александру'''. |
||
===Версия v.0.9.4.4 dev=== |
|||
'''Версия v.0.9.4.4 dev''' |
|||
*Добавлена speech.dll для чтения текста. |
*Добавлена speech.dll для чтения текста. |
||
===Версия v.0.9.4.3 (багфикс)=== |
|||
'''Версия v.0.9.4.3 (багфикс)''' |
|||
*Исправлена критическая ошибка. В остальном без изменений. |
*Исправлена критическая ошибка. В остальном без изменений. |
||
| Строка 232: | Строка 316: | ||
[[ТОМ: Changelog|Архив по старым версиям]] |
|||
'''Версия v.0.9.3.0 бета''' |
|||
*Добавлено чтение текста игры через MS Speech API 5.1 (синтезированный голос). |
|||
*Добавлены новые команды для управления звуком на уровне платформы: |
|||
**включить звук/музыку/голос; |
|||
**выключить звук/музыку/голос. |
|||
( для включения/выключения музыки используется новый обработчик '''OnMusic()'''). |
|||
*Исправлены найденные ошибки. |
|||
'''Версия v.0.9.2.11 бета''' |
|||
Основые изменения касаются работы с меню. |
|||
*строки меню теперь формируются динамически; |
|||
*меню может быть сформировано и вызвано для любого объекта (раньше было привязано к локации); |
|||
*добавлена сортировка строк меню (раньше было по алфавиту); |
|||
*добавлена автонумерация строк меню; |
|||
*выбор в меню возможен по номеру строки или по началу любого слова в меню. |
|||
'''Версия v.0.9.2.10 бета''' |
|||
*исправлены мелкие ошибки |
|||
'''Версия v.0.9.2.9 бета''' |
|||
*добавлены функции преобразования типов object(), string(), number(), bool(); |
|||
*добавлены функции преобразования строк left(), right(), mid(), lower(), upper(), trim(); |
|||
*исправлены найденные ошибки. |
|||
'''Версия v.0.9.2.8 бета''' |
|||
*добавлена возможность вставки в код игры команд на естественном языке. |
|||
*добавлена конструкция для описания предлогов. |
|||
*доработано сохранение игр. |
|||
*исправлены найденные ошибки. |
|||
'''Версия v.0.9.2.7 бета''' |
|||
*добавлены операторы ++; --; &&; и ||; (синтаксический сахар). |
|||
*исправлен парсинг составных команд для НПС. |
|||
'''Версия v.0.9.2.6 бета''' |
|||
*Добавлена функция для проигрывания звуков - media() |
|||
*В демоигру добавлено много новых звуков. Архив с игрой слегка распух. |
|||
*добавлено новое действие - смеяться :) |
|||
'''Версия v.0.9.2.5 бета''' |
|||
*исправление ошибок, доработка парсера. |
|||
'''Версия v.0.9.2.4 бета''' |
|||
*добавлено наследование объектов action от action, что позволяет создавать дейстия по подобию существующих. |
|||
*добавлена возможность вводить составные команды: |
|||
> войди в лифт и нажми 5 кнопку |
|||
Ты вошел в лифт. |
|||
Лифт |
|||
Самая обычная кабинка лифта. |
|||
Здесь есть кнопки. Ты находишься тут и лифтер находится тут. |
|||
Ты нажал кнопку 5. |
|||
Лифт поднял тебя на 5 этаж. |
|||
* исправлены мелкие ошибки |
|||
'''Версия v.0.9.2.3 бета и v.0.9.2.2 бета''' |
|||
*исправление ошибок, мелкие косметические улучшения. |
|||
'''Версия v.0.9.2.1 бета''' |
|||
*Изменен способ для первичного размещения объектов внутри друг-друга. Теперь при первом объявлении объекта в теле другого объекта, объявляемый объект автоматитески попадает внутрь этого объекта. |
|||
unique заяц |
|||
{ //... описание зайца |
|||
unique утка |
|||
{ //... описание утки |
|||
unique яйцо |
|||
{ //... описание яйца |
|||
// и т.д. до самой смерти Кощея |
|||
} |
|||
} |
|||
} |
|||
*Добавлен механизм уточнения команд: |
|||
''> возьми еду'' |
|||
''Стручок на грядке или малину на кустах?'' |
|||
''?> горох с грядки'' |
|||
''Ты сорвал стручок с грядки.'' |
|||
*В демоигру добавлены притяжательные местоимения. Сравните варианты ответов при игре за мышонка: |
|||
''> осмотри крота'' |
|||
и при игре за крота: |
|||
''> мышонок, осмотри меня'' |
|||
*исправлены некоторые мелкие ошибки в движке и демоигре. |
|||
'''Версия v.0.9.2.0 бета''' |
|||
*Изменен синтаксис языка. Изменен формат описания объектов и доступ к свойствам объектов. В целом язык приблизился к C++ и стал выглядеть еще более привычно для программистов. Очень надеюсь что до выхода версии 1.0 синтаксис меняться более не будет. |
|||
*Доведена до ума речевая модель. Определены речевые роли и их распределение в различных типах речевых актов. Реализация поддержки речевых ролей на уровне платформы позволяет автоматически определять лица и правильно подставлять/определять личные и возвратные местоимения при генерации/парсинге текста. Проверить это можно играя за различных персонажей - для мамы игра идет в 1 лице, для мышонка во 2м, и для крота в 3 лице. (О речевой модели в ТОМе обязательно напишу подробнее, т.к. тема интересна и требует дальнейшего развития) |
|||
*Проект полность перебран заново. Исправлена архитектура движка. Это позволило избавиться от детских болезней роста и исправить множество ошибок. Теперь ТОМ мне представляется логически цельным и завершенным (в рамках разумных ограничений версии 1.0) |
|||
'''Версия v.0.9.1.4 бета (bugfix)''' |
|||
*исправлены ошибки предыдущей версии |
|||
'''Версия v.0.9.1.3 бета''' |
|||
*убраны синонимы для объектов (будут реализованы позже и на других принципах) |
|||
*добавлен предопределенный метод CalcKey() для расчета переменной части морфологического ключа в зависимости от свойств объекта или других измечивых обстоятельств. |
|||
*добавлен предопределенный метод Redirect() для перенаправления действия с одного объекта на другой. |
|||
*исправлены найденные ошибки |
|||
'''Версия v.0.9.1.2 бета''' |
|||
*произведен рефакторинг движка; |
|||
*вызовы обработчиков событий и парсерных проверок приведены к стандарту Си; |
|||
*изменена логика для значения null; |
|||
*исправлены найденные ошибки. |
|||
'''Версия v.0.9.1.1 бета''' |
|||
*существенно упрощена работа с числительными - для любого объекта в команде можно указать его число. Проверки на согласование с числительными теперь выполняются парсером. |
|||
*для объектов, возвращаемых парсером, свойство .num теперь содержит число, указанное игроком; |
|||
*числовые переменные в парсерных шаблонах убраны за ненадобностью; |
|||
*для чисел стало возможным задавать строковые синонимы - "100"="сто"; |
|||
*добавлены специальные константы для указания количества - "все", "несколько", "половина", "треть", "четверть". |
|||
'''Версия v.0.9.1.0 бета''' |
|||
*в дополнение к шаблонному парсеру добавлен подбор действий и фраз по ключевым словам и ключевым объектам с оценкой по весу (см. keyword); |
|||
*конструкция задания лексем для парсера .lex = "строка" признана устаревшей и впоследствии будет удалена; |
|||
*для объектов, возвращаемых парсером, свойство .lex теперь содержит лексему, названную игроком в команде; |
|||
*любое свойство объекта, содержащее строку в формате лексемы и имеющее в основе одно слово, теперь может быть использовано как имя объекта в команде (альтернатива .lex=) |
|||
*исправлены ошибки. |
|||
'''Версия v.0.9.0.2 бета''' |
|||
*добавлены глобальные переменные token и secret; |
|||
*добавлено сообщение парсера object_select; |
|||
*для объектов добавлены предопределенные свойства in_dialog и as_variant |
|||
*системные команды теперь могут использоваться в коде игры. |
|||
Например |
|||
global < "exit" |
|||
приводит к выходу из программы. |
|||
*исправлены найденные ошибки. |
|||
'''Версия v.0.9.0.1 бета''' |
|||
*для локаций добавлен обработчик события [[TOM: язык программирования#.OnEnter( ) / .НаВход( )|OnEnter()]] |
|||
*убран обработчик события onChangePers() за ненадобностью |
|||
*добавлен тег для очистки экрана <clear> |
|||
*исправлены найденные ошибки в движке и игре. |
|||
'''Версия v.0.9.0.0 бета''' |
|||
*дополнительная поддержка интерфейсов - добавлена константа [[TOM: язык программирования#frontend|frontend]]; |
|||
*добавлена функция input(); |
|||
*демоигра адаптирована под Милену, добавлены картинки; |
|||
*исправлены найденные баги. |
|||
'''Версия v.0.2.4.1 альфа''' |
|||
*добавлены средства для организации диалогов и событий; |
|||
*сообщений об ошибках в парсере вынесены в переменные и могут быть изменены; |
|||
*оптимизирован парсер; |
|||
*доработано сохранение игр; |
|||
*исправлены найденные баги. |
|||
'''Версия v.0.2.4.0 альфа''' |
|||
*добавлена возможность сохранения/восстановления игры; |
|||
*исправлены найденные баги; |
|||
'''Версия v.0.2.3.3 альфа''' |
|||
Доработки платформы: |
|||
*существенно доработан парсер; |
|||
*изменены [[TOM: язык программирования#Теги|управляющие теги]]; |
|||
*исправлена масса ошибок. |
|||
Доработки демоигры: |
|||
*добавлены новые объекты (ягоды и грядки во дворе) |
|||
*добавлены шаблоны для действий с объектами упомянутыми ранее; |
|||
*добавлены действия с классовыми именами; |
|||
*вероятно еще что-то… эээ не помню :) |
|||
'''Версия v.0.2.3.2 альфа''' |
|||
Добавлены [[TOM: язык программирования#Относительные свойства объектов|относительные свойства]] объектов и ключевые слова actor и act. |
|||
Объектная модель платформы окончательно сформирована. |
|||
В демоигре восстановлена возможность игры любым персонажем. |
|||
'''Версия v.0.2.3.1 альфа''' |
|||
Исправлена работа конструкций языка if-else, for, while, switch-case. Фигурные скобки {} теперь необходимы только для объединения многострочных блоков. Все конструкции (за исключением switch-case) работают аналогично C. Принцип работы switch-case мною изменен, надеюсь, в лучшую сторону. |
|||
Также добавлены ключевые слова return, break, continue, работающие аналогично C. |
|||
Теперь язык платформы окончательно сформирован и позволяет разрабатывать алгоритмы любой сложности. |
|||
Документирование системы пока не начато, но начиная с этой версии в папке "Примеры" можно найти простые файлы с подробными комментариями, позволяющие освоить принципы работы платформы. Файлы, имеющие расширение .tom, открываются текстовым редактором. |
|||
'''Версия v.0.2.3.0 альфа''' |
|||
Изменения в интерпретаторе: |
|||
- добавлены конструкции циклов for и while; |
|||
- добавлена конструкция switch-case; |
|||
- изменена обработка событий, добавлены функции CheckMove, BefMove, AftMove; |
|||
- добавлена команда restart; |
|||
- формируется лог-файл, прошу присылать логи |
|||
Изменения в демоигре: |
|||
- добавлена система помощи, мышонок научился думать; |
|||
- добавлено ведение счета; |
|||
- возможность игры за разных персонажей временно убрана. |
|||
PS: оконный интерфейс пока крайне сырой... |
|||
[[Категория: |
[[Категория:Парсерные платформы]] [[Категория:Документация ТОМ]] |
||
[[Категория:Заброшенные платформы]] |
|||
Текущая версия от 13: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 бета
- Изменен принцип подстановки произношения - оно теперь подставляется непосредственно в тексте в квадратных скобках:
слово[правильное произношение слова]
- добавлена команда "повторить", которая повторяет последний произнесенный текст (работает только если в системе установлен голос)
- усовершенствован механизм подстановки альтенативных форм предлогов ("с"->"со", "из"->"изо" и т.д.).