Открыть главное меню

ТОМ 0.9 бета: различия между версиями

м (Версия 0.9.4.х)
(Пожалуй, можно считать платформу заброшенной ввиду перехода автора к разработке ТОМ 2)
 
(не показано 65 промежуточных версий 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 движка открыты.
+
При желании авторы могут создавать и использовать свои собственные интерфейсы и плагины. API движка открыты.
  
 
===Поддержка HTML и прочих тегов===
 
===Поддержка HTML и прочих тегов===
Строка 51: Строка 53:
 
Полнота поддержки HTML зависит от конкретного интерфейса.
 
Полнота поддержки HTML зависит от конкретного интерфейса.
  
 +
==Версия 0.9.3.1==
 +
[[Медиа:ConTOM.rar|скачать]]
  
==Ветка развития 0.9==
+
===Консольный интерфейс: constom.exe===
===Версия 0.9.3.1===
 
====Консольный интерфейс: constom.exe====
 
 
[[Изображение:Constom.GIF]]
 
[[Изображение:Constom.GIF]]
  
Строка 63: Строка 65:
 
Constom поддерживает тег смены цвета шрифта и несколько служебных тегов.
 
Constom поддерживает тег смены цвета шрифта и несколько служебных тегов.
  
====TOM API 0.9.3.1====
+
===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.х===
+
==Версия 0.9.4.х==
Для линейки 0.9.4.х декларируется обратная совместимость с v0.9.3.1, что гарантирует возможность проигрывания игр, сделанных для версии 0.9.3.1 и использование разработанных для неё библиотек.
+
[[Медиа:Tom_094.rar|скачать]]
''(на самом деле совместимость не полная - возможности v0.9.3.1, которые никогда не были использованы, в 0.9.4.х могут не поддерживаться).''
+
 
 +
Для версий 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();
  
====Интерфейс на основе HGE====
+
====Внешние функции====
====ТОМ API 0.9.4.х====
+
ТОМ позволяет подключать неограниченное количество внешних функций, расположенных в интерфейсе или в плагинах и расширяющих стандартный набор функций ТОМа.
====Плагины====
 
  
===Общее для v0.9.3.1 и v0.9.4.х===
+
После регистрации внешней функции её можно вызвать из командной строки '''>MyFunction Arg''' или из кода игры: '''MyFunction(Arg)'''.
Совместимость версий делает возможным использование общих библиотек и инструментов:
+
 
====Библиотеки====
+
 
В [[Медиа:Libs4TOM.rar|пакет библиотек]] входят:
+
Существует 5 специальных внешних функций, необходимых для работы ТОМа:
 +
*'''print''' - выводит текст на экран;
 +
*'''input''' - ввод из командной строки;
 +
*'''error''' - выводит информацию об ошибке;
 +
*'''debug''' - выводит отладочную информацию;
 +
*'''speech''' - читает переданный текст голосом.
 +
Обязательными являются только функции print и input.
 +
 
 +
Эти 5 функций также можно вызывать из командной строки и из кода игры, хотя особого смысла в этом нет - движок сам вызывает их когда это необходимо.
 +
 
 +
===Плагины===
 +
Плагины - это специализированные dll.
 +
Имя файла плагина должно соответствовать маске *.plg.dll
  
'''Стандартная библиотека ТОМ:'''
+
Плагины грузятся при старте платформы из папки движка и из подпапки plugins\ в каталоге движка, а также при запуске игры из папки игры и из подпапки plugins\ в каталоге игры.
*модули стандартной библиотеки (каталог ''Libs4TOM\std.lib'');
 
*демо для стандартной библиотеки (файл ''Libs4TOM\std_test.tom'');
 
*автоматизированные тесты модулей стандартной библиотеки (каталог ''Libs4TOM\tests'');
 
*портированные на стандартную библиотеку ТОМ игры рТАДС - [[Плащ Тьмы]] и [[Золотой череп]] (файлы ''Cloak_of_Darkness.tom'' и ''GOLDSKLR_std.tom'').
 
  
'''Частично портированная библиотека rTADS:'''
+
В момент загрузки плагины регистрируют свои собственные функции, которые расширяют набор стандартных функций ТОМа.
*файлы библиотеки rTADS (каталог ''Libs4TOM\rTADS.lib'');
 
*портированная игра рТАДС - [[Золотой череп]] (файл ''GOLDSKLR_rTADS.tom'').
 
  
Консольный плеер '''Constom''' (каталог ''Libs4TOM\Bin'').
 
  
Утилита для автоматического тестирования '''ТОster''' (каталог ''Libs4TOM\Bin'').
+
В комплект поставки включены два плагина:
 +
*'''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|Стандартная библиотека]] строится по модульному принципу.  
 
К каждому модулю разработан свой тест, демонстрирующий его работу.
 
К каждому модулю разработан свой тест, демонстрирующий его работу.
Строка 155: Строка 200:
 
*'''Light.tml'''
 
*'''Light.tml'''
  
=====Порт библиотеки rTADS=====
+
===Инструменты===
пока ограничивается портированием на ТОМ очень простой игры "Золотой череп".
+
====Генератор словоформ====
 
 
====Инструменты====
 
=====Генератор словоформ=====
 
 
Удобный [[Медиа:tom_Gener.rar|генератор словоформ]] от Александра:
 
Удобный [[Медиа:tom_Gener.rar|генератор словоформ]] от Александра:
  
Строка 166: Строка 208:
 
Текущая версия 0.8.2.158
 
Текущая версия 0.8.2.158
  
==Ветка развития 0.10 (ближайшее будущее)==
+
==Отказ от выпуска версии 1.0==
Скоро будет запущена в разработку...
+
Направление развития 0.9 признано неудачным. Выявленные в ходе бета-тестирования сложность разработки игр, недостаточный уровень поддержки русского языка, и отсутствие авторов, желающих писать на этой платформе, наглядно это подтвердили.
  
==Ветка развития 2.0 (отдалённое будущее)==
+
В настоящее время идёт разработка [[ТОМ 2]].
Направление развития 0.9 признано неудачным. Выявленные в ходе бета-тестирования сложность разработки игр, недостаточный уровень поддержки русского языка, и отсутствие авторов, желающих писать на этой платформе, наглядно это подтверждают.
 
  
Принципы работы движка будут серьезно пересмотрены. Постараюсь вложить в новую версию весь боевой опыт, приобретенный за время создания и использования платформы, а также новые накопленные идеи, внедрить которые в старую архитектуру уже невозможно.
+
Принципы работы движка серьезно пересмотрены. В новую версию вложен весь боевой опыт, приобретенный за время создания и использования платформы, а также новые идеи, внедрить которые в архитектуру первого ТОМа было уже невозможно.
  
 +
==Changelog==
 +
===Версия v.0.9.4.11 beta===
 +
[[Медиа:Tom_094.rar|лежит здесь]]
  
Ведутся эксперименты.
+
Новое в версии:
Часть перспективных разработок удачно перенесены в версию 0.9.4.x.
+
*загрузка/выгрузка плагинов перенесена из движка в интерфейс и доработана;
 +
*плагин '''speech.plg.dll''' (чтение текста голосом) доработан и возвращен в архив;
 +
*плагин '''tommsi.plg.dll''' (воспроизведение музыки и звуков) требует доработки и временно исключен из архива;
 +
*исправлены пути для загрузки фоновых картинок - теперь пути берутся относительно каталога игры;
 +
*в тэге '''<body>''' теперь работает параметр '''bgcolor=''' пример: '''<body background=bg.jpg bgcolor=red>'''
 +
*можно задавать произвольные цвета текста и фона с помощью шестнадцатеричных чисел в формате RGB; пример: '''<body text=F94500>'''
 +
*небольшое улучшение парсера: при неоднозначности между объектом и локацией предпочтение отдаётся объекту.
  
==Changelog==
+
===Версия v.0.9.4.10 beta===
===Версия v.0.9.4.6 альфа===
+
*ударение в лексемах более не влияет на парсер;
[[Медиа:Tom_094.rar|лежит здесь]]
+
*в тэге <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 альфа'''
 
*доделана нормализация знаков препинания;  
 
*доделана нормализация знаков препинания;  
 
*исправлены некоторые ошибки.
 
*исправлены некоторые ошибки.
Строка 186: Строка 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 (багфикс)'''
 
*Исправлена критическая ошибка. В остальном без изменений.
 
*Исправлена критическая ошибка. В остальном без изменений.
  
Строка 240: Строка 316:
  
  
'''Версия v.0.9.3.0 бета'''
+
[[ТОМ: Changelog|Архив по старым версиям]]
*Добавлено чтение текста игры через 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: оконный интерфейс пока крайне сырой...
 
  
[[Категория:Платформы]] [[Категория:Парсерные платформы]]
+
[[Категория:Парсерные платформы]] [[Категория:Документация ТОМ]]
 +
[[Категория:Заброшенные платформы]]

Текущая версия на 16:16, 2 июня 2018

TOM logo.GIF

Содержание

Общая информация

Парсерная русскоязычная ИЛ-платформа.

Расшифровка названия: ТОМ - Текстовая Основа Миростроения.

Период разработки: 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 бета

лежит здесь

  • Изменен принцип подстановки произношения - оно теперь подставляется непосредственно в тексте в квадратных скобках:
слово[правильное произношение слова] 
  • добавлена команда "повторить", которая повторяет последний произнесенный текст (работает только если в системе установлен голос)
  • усовершенствован механизм подстановки альтенативных форм предлогов ("с"->"со", "из"->"изо" и т.д.).


Архив по старым версиям