ТОМ2 - платформа для парсерных игр

Объявление

Открыт сайт tom2-game.ru.


Последнюю версию платформы можно скачать здесь.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Новый ТОМ

Сообщений 1 страница 30 из 65

1

ASBer написал(а):

Текущее направление развития платформы признано неудачным. Выявленные в ходе бета-тестирования сложность разработки игр, недостаточный уровень поддержки русского языка, и отсутствие авторов, желающих писать на этой платформе, наглядно это подтверждают.

Разработка откатывается обратно в альфу. Принципы работы движка будут серьезно пересмотрены. Постараюсь вложить в новую версию весь боевой опыт, приобретенный за время создания и использования платформы, а также новые накопленные идеи, внедрить которые в старую архитектуру было уже невозможно.

Чтобы форум совсем не увял, пока идет разработка а показать еще нечего и долго еще не будет, постараюсь в этой теме выкладывать соображения, заметки, описания векторов разработки и т.п.
Возможно кому-нибудь это будет интересно, а может быть и обсудить что-то получится.

P.S. Старая версия также дорабытывается, но медленно. Приоритет установлен на новую систему.

2

Основные отличия от старого ТОМа:

технические:
- полная поддержка UNICODE на уровне движка;
- смена компилятора на gcc, отказ от Borland.

идеологические:
- новый усовершенствованный парсер;
- использование одного и того же парсера для обработки ИЯ/ЕЯ;
- возможность писать смешанный код на искусственном и естественном языках;
- остальное пока раскрывать не буду...

3

Да, конечно, интересно.
Спасибо за упорство и труд.
По-прежнему верю в вас =)

4

API взаимодействия движка с оболочкой также меняется.
Основной цикл игры будет перенесён внутрь движка.

Сейчас цикл прокручивается в оболочке, вызывая функции движка. Это не позволяет синхронизировать вывод текста со звуками, т.к. звуки воспроизводит движок, а текст выводится оболочкой. Получается что игрок сначала слышит все сопутствующие звуки, и только потом читает описание того что произошло.

Оболочка нового ТОМа будет предоставлять движку функции ввода-вывода.
Что и когда выводить будет решаться на уровне движка.

5

ASBer написал(а):

- возможность писать смешанный код на искусственном и естественном языках;

Довольно забавные вещи получаются. Ниже примеры записей одного и того же кода.

Код:
if(!Маша.item[Мяч]){ Маша+Мяч } //так записывается в старом ТОМе
if !Маша.item[Мяч] then Маша+Мяч //другой вариант записи, тоже будет работать
if !Маша.item[Мяч] Маша+Мяч //так тоже будет понимать, т.к. правильный вариант разбора только один
if(!у Маши есть мяч){ дать Маше мяч } //вставки в конструкцию на TOML фрагментов на ЕЯ 
if(у Маши нет мяча){ дать Маше мяч } //другой вариант условия
if у Маши нет мяча then дать Маше мяч //почти по-русски
если у Маши нет мяча тогда дать Маше мяч //ключевые слова TOML заменены русскими синонимами
дать Маше мяч если у неё его нет //директива полностью на естественном языке

Все варианты должны работать одинаково, правда на ЕЯ будет чуть медленнее.

Код на языке TOML с английскими ключевыми словами будет обрабатываться платформой по умолчанию.
Для кодирования на TOML по-русски, или на любом другом языке, нужно будет подключать к проекту файл с синонимами ключевых слов TOML.
Для кодирования на ЕЯ будут нужны специальные подключаемые библиотеки.

6

ASBer написал(а):

дать Маше мяч если у неё его нет

Тру RInform уже близко! Честно говоря, весьма впечатлён. Без сомнения, ТОМ на верном пути. Желаю неизменных успехов в дальнейшей разработке.

7

NooS написал(а):

Тру RInform уже близко!

Ой не близко...  :huh:
но двигаю в ТОМ направлении  :mybb:

8

Восторг!

9

Как идёт разработка "Нового ТОМа"? Уже 2 месяца как-то тихо тут.

ASBer написал(а):

Основные отличия от старого ТОМа:
технические:
- полная поддержка UNICODE на уровне движка;
- смена компилятора на gcc, отказ от Borland.
идеологические:
- новый усовершенствованный парсер;
- использование одного и того же парсера для обработки ИЯ/ЕЯ;
- возможность писать смешанный код на искусственном и естественном языках;
- остальное пока раскрывать не буду...

Насколько я понял, Вы переписываете программу заново. Какие из задумок уже сделаны? Приведённый пример "дать Маше мяч если у неё его нет" был предполагаемым или он уже реально работал? Когда можно будет "пощупать" тестовую версию "Нового ТОМа"? Или он уже называется "ТОМ 2"...

10

Alexandr написал(а):

Как идёт разработка "Нового ТОМа"? Уже 2 месяца как-то тихо тут.

Ну я и не обещал что сделаю быстро... для примера старый том делался несколько лет.

Alexandr написал(а):

Насколько я понял, Вы переписываете программу заново. Какие из задумок уже сделаны?

- переписан интерфейс движка (экспортные ф-ции dll в ANSI и UNICODE вариантах)
- сделана основа нового парсера (ея и ия в одном флаконе)
- несколько словарей залиты в базу на MYSQL и объеденены вместе, пытаюсь их переварить.
Вобщем показать пока нечего...

Alexandr написал(а):

Приведённый пример "дать Маше мяч если у неё его нет" был предполагаемым или он уже реально работал?

Предполагаемый.
Даже при наличии готового движка, для разбора подобных выражений (а не только озвученного) необходима огромная работа по наполнению словаря и разработке стандартных библиотек.
(прошу меня простить, если создал впечатление что данный пример уже реально работает)

Alexandr написал(а):

Когда можно будет "пощупать" тестовую версию "Нового ТОМа"?

Сроки озвучивать не возьмусь... еще год как минимум, а там как пойдет.

Alexandr написал(а):

Или он уже называется "ТОМ 2"...

Вопрос интересный, с названиями и версиями я еще и сам пока не определился :)

11

ASBer написал(а):

необходима огромная работа по наполнению словаря

Может я чем-нибудь смогу помочь в этом плане? Люблю копаться в словарях.

ASBer написал(а):

Для кодирования на ЕЯ будут нужны специальные подключаемые библиотеки.

Я так понимаю, эти библиотеки будут содержать правила перевода фраз на ЕЯ во внутренний язык комманд. Основой словарей должны быть глаголы и описание того, что делает каждый глагол. Например
"дать X(кому/чему) Y(кого/что)" означает "поместить Y внутрь X"
"переместить X(кого/что) в Y(куда)" - "поместить X в локацию Y"
Каждый глагол обладает индивидуальными (локальными) "слотами" (это X и Y в примерах), в которые можно поместить объекты и другие конструкции. Также есть общие (глобальные) слоты, которые можно прилепить к любому глаголу. Например время действия можно указать в каждой команде. "дать Маше мяч через 2 минуты (хода/такта или как там время измеряется в ТОМе)". Ещё одним примером может послужить цель действия: "переместить Машу в кухню, чтобы она взяла молоко"...
Вот писал этот текст и ЭВРИКА! Я долго мучался подбирая фразы и думаю, что использование команд в таком формате очень неудобно для использования и реализации в движке. Фраза "дать Маше мяч, если у неё его нет" ещё как то воспринимается, но попробуйте сложить другие фразы. Допустим как на ЕЯ заставить Машу пойти на кухню? "Переместить Машу на кухню"? Глупо звучит, правда? Мы берём Машу за косичку и перемещаем... Я думаю, что лучше зделать как нибудь по другому. Как вариант предлагаю строить не команды а описание действий в нейтральном времени. Например "Маша берёт мяч, если у неё его нет". Т.е. не мы пихаем ей в руки мяч, а она САМА берёт его! "Маша идёт на кухню и берёт молоко со стола" - всё понятно и никакого употребления других глаголов вместо нужных ("берёт" вместо "дать", "идёт" вместо "переместить"). Так и фразы с глобальными слотами (из предыдущего абзаца) проще и изящнее строятся: "если Маша хочет пить, то через 2 хода она идёт на кухню и берёт молоко". Часть "через 2 хода" можно отбросить, т.к. я не вижу способа реализовать её в движке.
Что Вы об этом думаете?

ASBer написал(а):

Сроки озвучивать не возьмусь... еще год как минимум, а там как пойдет.

Очень жаль.  :'(

12

Alexandr написал(а):

Может я чем-нибудь смогу помочь в этом плане? Люблю копаться в словарях.

От помощи не откажусь, но опять таки это дело отдаленного будущего.

Alexandr написал(а):

Я так понимаю, эти библиотеки будут содержать правила перевода фраз на ЕЯ во внутренний язык комманд.

Скорее описания языковых структур и правила приведение их к структурам значений ТОМа. (Структуры команд в том числе).

Alexandr написал(а):

Основой словарей должны быть...

Нее, это слишком уж упрощенно, в словаре а хочу хранить именно слова и их свойства (слоты глаголов в том числе).
Словарь должен быть заточен под работу с парсером. Как это будет реализовано конкретно пока не знаю.

Alexandr написал(а):

Я долго мучался подбирая фразы и думаю, что использование команд в таком формате очень неудобно для использования и реализации в движке. Фраза "дать Маше мяч, если у неё его нет" ещё как то воспринимается, но попробуйте сложить другие фразы. Допустим как на ЕЯ заставить Машу пойти на кухню? "Переместить Машу на кухню"?

Вы забываете про ООП :)
Команды на ЕЯ выполняются для объекта, как если бы это объект был ГГ и мы писали ему команду в командной строке. Примерно так:

Код:
object Маша
{ ОтправитьНаКухню()
  {
    иди на кухню. //команда для объекта this
  }
}

13

ASBer написал(а):
Alexandr написал(а):

Или он уже называется "ТОМ 2"...

Вопрос интересный, с названиями и версиями я еще и сам пока не определился

С версиями вроде как проясняется:
1. Новый ТОМ действительно будет иметь версию 2.0 (если конечно дотянет когда-нибудь до релиза)
2. Версия 0.9.3.1 beta официально считается последней стабильной рекомендованной версией.
3. Версии 0.9.4.х получаются скрещиванием 0.9.3.1 с наработками от 2.0 и из-за этого пока нестабильны.
    Используются для обкатки новых технологий, но игры от 0.9.3.1 проигрывать должны.

Возврашение к старому движку вызвано сложностями в тестировании - гораздо легче обкатать агрегат с одним новым и исправно работающими остальными узлами, чем полностью состоящий из новых узлов.

14

Схемка отображает текущее состояние разработки и связи между версиями.

15

Alexandr написал(а):

Что-то после НГ совсем тихо стало на форуме.

Постепенно возвращаюсь к жизни в 2011 году  %-)
Параллельно делаю несколько дел:

версия движка 0.9.4.11
  - дорабатывается загрузка плагинов;
  - правильные пути для загрузки фоновых картинок;
  - небольшие улучшения парсера, необходимые для новых фичь стандартной библиотеки.

стандартная библиотека
  - расширение шаблонов существующих действий;
  - разрабатывается действие "выйти"/"выйти из ..."

экспериментальная версия 0.10.0.0
  - эксперименты...

Как что-то будет готово - сразу опубликую...  :yep:

16

Тем не менее разработка ТОМ-2 не стоит на месте.
И хотя до полноценной платформы еще ооочень далеко, прототип ядра системы - интерпретатор, работающий на смешанное естественном + искусственной языке, вероятно в ближайшее время (ближайшее во временных масштабах этого форума) я смогу продемонстрировать.

В основе лежит совершенно новый парсер, общий для ЕЯ и ИЯ. Какие-либо выводы делать преждевременно, но получается что-то интересное...

17

Пришла в голову аналогия:
Стратегия, применяемая мной при разработке ТОМа, напоминает сверление отверстий в толстой металлической пластине. Сначала сверлится тонким сверлом на всю глубину, затем рассверливается свёрлами с постепенным увеличением диаметра до нужного размера.

P.S. ловлю себя на мысли что этот форум в последнее время стал напоминать блог Этена  :D :D :D

18

ASBer написал(а):

P.S. ловлю себя на мысли что этот форум в последнее время стал напоминать блог Этена

Ничуть! Как по мне, так хорошая аналогия :-)

19

ASBer, это ты или просто фотография в тему?

20

Alexandr написал(а):

ASBer, это ты или просто фотография в тему?

А может это Этен???  :huh:  :D

21

NooS написал(а):

А может это Этен???

:D

22

обновлённая карта модулей

23

Как я не оттягивал этот момент, пришло время рефакторинга :)
Код парсера, написанный полгода назад, весьма хаотичный и добавление новых синтаксических конструкций стало затруднительным.
Зато после рефакторинга всё будет логично, быстро, системно, ну по крайней мере до следующего рефакторинга :)

24

Рефакторинг как и ремонт нельзя завершить, но можно прекратить. Временно прекратил :)
Начал делать отношения. Очень многое в последствии будет построено на отношениях.

25

В следующий апдейт включу словарь на MySQL.
SQL вариант словаря нужен в первую очередь разработчику стандартной библиотеки (т.е. мне) для набивки слов.
Игрокам и игроделам нужен файловый вариант, который в перспективе будет выгружаться из SQL-базы.
Было бы мега-жёстко требовать от игроков установки MySQL сервера :D, но пока файлового словаря нет, выложу то что есть.

26

К следующему релизу постараюсь из SQL выгрузить словарь в файловом формате, чтобы не отпугивать возможных авторов :)
Хоря работа со словарём в SQL - это просто песня! я в восторге :)

27

Думается мне что бета уже близко :)
Есть масса идей, которые хочется попробовать сделать, но их вполне можно отложить на 2.1, 2.2, и так далее.
Есть несколько вещей, которые совершенно необходимо сделать к релизу 2.0 (например сохранение игры), но в бете пока и без этого можно обойтись.
Так что скоро будем прощаться с альфой :)

28

Дальнейшие направления работ:
1. Наполнение словаря:
1.1 расширение словарной базы, добавление слов
1.2 кодирование стандартных классов и объектов
2. Сжатие файла словаря.
3. Доработка платформы.

29

Разработка опять ушла в глубокий длительный рефакторинг.
Перерабатываются основы движка, а следовательно и весь код, базирующийся сверху.
Большая часть алгоритмов останется неизменной, но код придется адаптировать к новой среде.
В настоящее время переписано примерно 5% кода.

Из наиболее заметных новшеств - добавляется отладчик с возможностью трассировки, и другими вкусными плюшками.

30

15%