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

Объявление

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

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

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



vTOM2

Сообщений 61 страница 90 из 90

61

Соберём все последние данные в табличку:

Элемент

Пространство имён

Содержание

Наследование

Прикрепление

Class / Класс

1. Классы

Имя, Ключ, Свойства, Секции

Класс

Класс

Word / Слово

2. Слова

Имя, Ключ, Формы

Класс

нет

Preposition / Предлог

2. Слова

Имя, Альт.форма, Описание

нет

нет

Location / Локация

3. Объекты

Имя, Ключ, Свойства, Секции

Класс

Класс

Object / Объект

3. Объекты

Имя, Ключ, Свойства, Секции

Класс

Класс

Attribute / Атрибут

3. Объекты

Имя, Ключ, Свойства, Секции

Класс, Атрибут

Класс, Атрибут

Expression / Выражение

НЕТ

Секции

НЕТ

Класс, Выражение

Fact / Факт

НЕТ

Секции

НЕТ

Класс, Факт

Action / Действие

НЕТ

Секции

НЕТ

Класс, Акт, Действие

Act / Акт

3. Объекты

Имя, Ключ, Свойства, Секции

Класс, Акт

Класс, Акт

Variable / Переменная

НЕТ

Имя, Значение

НЕТ

Значение

62

Упс!
Хотел ответить, нечаянно исправил твой пост  :dontknow:

63

Ладно, так сойдёт :)
Даже столбик "Наследование" разнёс на два. Ок, будет хоть на что ориентироваться, а то вслепую сложно всё увязать.

64

Что касается переменных и act_sin в библиотеке - и то и другое здесь синонимы.

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

act_sin действует похоже - добавляет существующему действию еще один шаблон для вызова.

65

В содержании забыли ещё указать какие элементы могут содержать конструктор.

Код:
  <preposition>в
    <code>object Вп Сп; через Вп //пройди в дверь
word Вп Ап; в ПпМу
word ПпМу Лп; в ПпМу
</code>

Вот например неожиданный конструктор в предлоге О_о

У меня сейчас конструктор могут содержать эти объекты: класс, локация, объект. Ещё кто-то кроме предлога может содержать его внутри себя?

И ещё, когда в выгрузку будут попадать формы слов и правила предлогов?

66

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

Вот например неожиданный конструктор в предлоге О_о

Вообще, предлог это единственный объект не имеющий конструктора :)
Всё что у предлога внутри {} это не код, а описания подстановки и правила объединения с другими словами.
В твоём примере это как раз и есть правила объединения.

Все прочие объекты потенциально могут иметь конструктор.

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

И ещё, когда в выгрузку будут попадать формы слов и правила предлогов?

Ну раз уже надо, значит скоро сделаю ;)

67

https://cloud.mail.ru/public/1590f4308e90/tomdicXML.rar
Свежая база с формами слов и предлогов.

68

Со словами то она куда больше места занимает.

69

Рефакторинг углубляется всё глубже и глубже. Уже переделал внутреннее устройство дерева страниц свойств. Внешне ничего не должно отличаться (всё то-же дерево папок со страницами свойств), но внутри сильно переделал, чтобы можно было отображать наследованные свойства, а так-же чтобы была возможность свойствам и секциям перекрывать друг-друга.
Сейчас вот пришёл к выводу, что уже пора делать редактирование объектов "на месте". Раньше при открытии формы редактирования, в ней изменялась как-бы копия объекта, а все изменения применялись только после нажатия на кнопку "Ок". Редактировать несколько объектов таким образом было невозможно. Сейчас же все изменения будут применяться сразу после внесения их в какое-либо поле ввода в окне редактирования. Кнопок "Ок" и "Отмена" тоже не будет, а будет одна кнопка "Закрыть". Всё это позволит редактировать сразу несколько объектов (держать открытыми несколько форм редактирования. Но из-за этого нельзя будет отменить изменения, если вдруг ошибся. О возможности отмены последних изменений я пока не думаю, слишком сложно.

70

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

Разве нельзя поместить локацию внутрь другой локации?

Описание локации можно пометить внутри конструктора другой локации, но на её расположение это ни как не повлияет.
Поэтому совершенно бессмысленно.

Кхм...
В версии 2.a.4.1 размещение локаций внутри друг-друга неожиданно получило новый смысл. Это по-прежнему никак не влияет на их пространственное расположение, но управляет отношениями входов и выходов.
Проход во внутреннюю локацию считается входом, и в неё можно войти из внешней локации.
Проход во внешнюю локацию считается выходом, и в неё можно выйти из внутренней локации.
При этом физически внутренняя локация не обязана целиком находиться во внешней локации, достаточно чтобы там находился её вход. (например, комнаты в коридоре).

71

Свежая выгрузка с синонимами:
https://cloud.mail.ru/public/1590f4308e90/tomdicXML.rar

72

Как продвигается рефакторинг? есть прогресс?
;)

73

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

74

Понятно =)
Секции еще раз предлагаю показывать в одном списке со свойствами. Ведь по сути своей секция - это вычисляемое свойство.

75

Можешь выгрузить последнюю версию библиотеки в XML? Только что-бы она была совместима с последним ТОМ-ом.

76

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

77

Обновил выгрузку: https://cloud.mail.ru/public/496be4c092 … ic_xml.rar

78

Класс "@том" заменился на "тема". Можно поинтересоваться, что за тема? Как интерпретировать название главного класса стандартной библиотеки?

79

Класс "тема" нужен для разговоров с NPC. А так как темой разговора может быть что угодно, получается что тема стала корневым классом для всех остальных.
Класс "@том" был искусственным классом, и не нес никакой смысловой нагрузки кроме объединения всех классов в одно дерево. Его потеря ни на что не повлияла.

80

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

81

У объекта @дверь в стандартной библиотеке тело выглядит так:

Код:
закрытое 
не открытое 
не запертое

Первый вопрос. Обязательно указывать информацию так избыточно ("закрытое" и "не открытое")?
Второй вопрос. Как лучше реализовать отображение этого в редакторе? Сейчас это выглядит так:
http://se.uploads.ru/t/n4rxF.png
Хочется, чтобы это выглядело как свойства:
http://se.uploads.ru/t/ARsZ2.png
Но ведь это не свойства.

82

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

Первый вопрос. Обязательно указывать информацию так избыточно ("закрытое" и "не открытое")?

Да, к сожалению пока именно так.
Все признаки объекта являются независимыми и ТОМ не умеет соотносить их друг с другом.
Вполне возможен казус когда дверь открыта и закрыта одновременно. Разрешить это можно только на уровне кода, присваивая противоположные значения двум признакам сразу.
В будущем признаки должны стать более "умными", но пока так как есть.

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

Второй вопрос. Как лучше реализовать отображение этого в редакторе? Сейчас это выглядит так:
Хочется, чтобы это выглядело как свойства:
Но ведь это не свойства.

Почему не свойства?
Признак это особый вид свойства, способный принимать только булевы значения.

(Вторую картинку не понял)

83

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

(Вторую картинку не понял)

Я к тому, что пользователю будет удобнее в своём объекте, унаследованном от двери например, менять значения таких "свойств" галочками, нежели писать код в конструкторе.

84

С галочками всё понятно, это хорошо.
Я не понял расположение признаков на этой странице: закрытое - открытое на одной строчке? почему?

85

Это не то как есть на самом деле. Это так хотелось бы видеть редактирование признаков. Чтобы пользователь не заморачивался с написанием кода, а просто ставил галочки.
А закрытое-открытое на одной строке видимо не получится сделать, пока признаки не взаимосвязаны.

86

Пятая альфа версия редактора: тут
Не претендует на полноценный редактор. Только для "потыкать по кнопкам".

Крупные нововведения:
* возможность работать со стандартной библиотекой (создавать объекты из классов простым перетаскиванием, просматривать содержимое объектов стандартной библиотеки...)
* добавление атрибутов к объектам (унаследованные атрибуты пока не отображаются).
Крупные изменения:
* свойства и секции наконец нормально перекрывают друг-друга (за исключением встроенных синонимичных имён, таких как parsing/парсинг, check/проверка...)
* упрощена структура папок и вкладок в дереве свойств и секций.

В качестве примера при запуске открывается проект Demo.vtom, почти полностью соответствующий игре Demo.tom из версии ТОМ 2.а.4.5

Внимание! В связи с большими изменениями кода, примерно половина элементов интерфейса не работает или работает не корректно. Не пытайтесь делать настоящие проекты в редакторе.

87

Пока сложно что-то сказать, работает, компилирует, игры запускает, и это хорошо =)

Несколько пожеланий:
- папку tom2 переименовать в bin (для формирования списка игр);
- секцию локаций "описание" переименовать в "_сцена";
- секцию локаций "вход" переименовать в "_вход";
- секцию локаций "выход" переименовать в "_выход".

88

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

- секцию локаций "описание" переименовать в "_сцена";
- секцию локаций "вход" переименовать в "_вход";
- секцию локаций "выход" переименовать в "_выход".

Это потому, что я использовал XML-выгрузку стандартной библиотеки от версии 2.а.4.1. Скинь, как будет возможность, новую выгрузку.

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

- папку tom2 переименовать в bin (для формирования списка игр);

Думаю, что при отладке список игр не будет нужен. Если переименовать папку в bin, то можно подумать, что её содержимое - часть редактора. А это не так.

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

Пока сложно что-то сказать, работает, компилирует, игры запускает, и это хорошо =)

Компилирует то компилирует, вот только не правильно. В демо-игре после этого даже команда "Старт" не срабатывает.

89

Свежая выгрузка:
https://cloud.mail.ru/public/KrZp/Agc5yWvZ6

90

Комментарии в начале игры будут использоваться в списке игр:
1-я строка должна содержать название игры;
2-я строка должна содержать категорию игры - "ИГРЫ", "ПРИМЕРЫ", "УРОКИ" и т.п.