ТОМ 0.9 бета: различия между версиями
Содержимое удалено Содержимое добавлено
ASBer (обсуждение | вклад) |
Nikita (обсуждение | вклад) Пожалуй, можно считать платформу заброшенной ввиду перехода автора к разработке ТОМ 2 |
||
| (не показаны 242 промежуточные версии 4 участников) | |||
Строка 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]]
Консольный интерфейс является простым примером для разработки 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]]
Милена может выступать как полноценный оконный интерфейс ТОМа с поддержкой 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==
===Версия v.0.9.
[[Медиа: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.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|Архив по старым версиям]]
[[Категория:
[[Категория:Заброшенные платформы]]
| |||