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

Объявление

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


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

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

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



Альфа

Сообщений 121 страница 144 из 144

121

Alexandr, режим отладки еще не смотрел?

122

Порт 80 однозначно надо сделать изменяемым. Но если дело движется к апачу, то webtom можно не трогать. Сам я с апачем дел не имел, только с denwer игрался когда-то.
Разделением на сессии занимается tom.dll или webtom.exe? Насколько сложно будет написать примитивный аналог webtom, только для работы в качестве веб-сервера (без apache), с разделением на сессии? Куда будут попадать сохранения?

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

Alexandr, режим отладки еще не смотрел?

Очень любопытный режим! Прям редактор.

123

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

Разделением на сессии занимается tom.dll или webtom.exe?

Основная нагрузка на tom.dll.
webtom.exe занимается веб-ориентированными вещами, такими как управление куками например.

Насколько сложно будет написать примитивный аналог webtom, только для работы в качестве веб-сервера (без apache), с разделением на сессии?

Более примитивный аналог написать невозможно, так как в webtom и так всё по минимуму.
В принципе, ничего сложного там нет, интерфейс к tom.dll я опишу как только он окончательно устаканится, исходники опубликую.

Куда будут попадать сохранения?

В папке каждой игры будет каталог "Save".
Файлы сохранений будут иметь вид <кука>.save, т.е. для каждого пользователя отдельный файл.

124

Анонс версии 2.a.4.9 альфа

- Полностью переделан поиск слов в библиотеке, добавлена поддержка кросс-статей, весь код из библиотечного плагина убран внутрь tom.dll. В результате библиотека стала немного компактнее и более функциональной. Также сократилось время сборки библиотеки, что существенно при её активном редактировании.

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

- Усовершенствован и расширен веб-отладчик. Теперь видно больше информации об объектах, добавлен просмотр библиотечных статей, виден разбор введенной игровой команды.

- ТОМ теперь свободно запускается на linux под wine, что само по себе очень здорово.

- Документация, к сожалению, доработана не так сильно как хотелось бы, но всё же там добавилось несколько статей.

- Исправлено много ошибок.

Следующий релиз 2.a.4.10 скорее всего будет посвящен исправлению ошибок, доработке и расширению стандартной библиотеки и написанию документации. Серьёзные переделки архитектуры пока отложу в сторону.

125

версия 2.a.4.9 альфа

Описание изменений смотрите постом выше.

126

версия 2.a.4.10 альфа

Очередная версия.

- Добавлено логирование прохождения игры, логи для нераспознанных команд и слов.

127

- Для классов и признаков добавлен новый механизм:
Выражение "A это не Б" теперь не только удаляет Б из родителей А, а еще и запоминается и в дальнейшем применяется к объектам, к которым применён класс или признак А.

Пример:
закрытое это не открытое;
открытое это не закрытое;
@мужчина это не @мальчик;

Далее, когда объекту будет присвоен признак:
сундук.открытое = да;
признак "закрытое" будет автоматически удалён из сундука.

Аналогично можно реализовать взросление мальчика:
Вася это @мужчина;
автоматически уберёт класс "@мальчик" из объекта "Вася".

128

версия 2.a.4.11 альфа

Очередная версия.

Много изменений, подробнее распишу завтра.

Онлайн-версия также обновлена.

129

Новое в версии 2.a.4.11 альфа:

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

Веб-редактор
Много мелких доработок. Из крупных нововведений стоит отметить карту и расширенный анализ синтаксиса команд:
http://s2.uploads.ru/aRQnj.png
http://sh.uploads.ru/t/in8B5.png
http://s2.uploads.ru/t/XAQ2N.png
Тем не менее, обе формы нуждаются в дальнейшей доработке.

Движок tom.dll
- Внесены изменения в структуру локаций и объектов. Теперь допускается размещение объектов снаружи локации, при этом объект становится внешним и виден в двух локациях одновременно. Очень удобно для дверей, ворот, окон и заборов между локациями. Раньше такие объекты приходилось дублировать. Для примера см. дверь в башне.
- Изменен ключ расположения объекта на месте: #Вм - объект виден в этом месте, #Дм - доступен в этом месте, #!м - отсутствует в этом месте. Это необходимо для поддержки прозрачных контейнеров. Для примера см. розу в витрине на башне.
- также много исправлений ошибок и мелких доработок.

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

130

Почему-то не запускается тестовый пример forms.tom. Пишет "Ошибка платформы! Файл: ...forms.tom". Остальные примеры вроде запускаются.

И веб-редактора в последнем архиве я не нашёл. Нашёл в папке bin\webtom

Отредактировано Alexandr (2017-03-19 12:13:56)

131

Версия 2.a.4.12 альфа

Очередной релиз.
Много доработок и исправленных ошибок. Словарь дополнен новыми словами.
Верстка страниц модернизирована благодаря RealPeha, за что ему спасибо огромное.
Каких-либо особых изменений в релизе нет, просто всё стало работать немного лучше.

132

Версия 2.a.5.0

Очередной релиз.
Изменена внутренняя структура парсера, добавлена поддержка NPC.

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

webtom
- добавлено отображение ударений в выводимом тексте;
- добавлены дополнительные настройки, в частности возможность отключать ударения и буквицы;
- добавлен запуск в режиме сервера (без открытия игрового окна).
- добавлены стандартные буквицы \TOM2_v2.a.5.0\bin\webtom\letters\ (для начала алфавита)
Возможно, кто-нибудь возьмётся дорисовать или полностью переделать стандартные буквицы?

тесты
- добавлен тест для просмотра стандартных буквиц.

движок tom.dll
- изменена структура парсера и принцип сбора ошибок парсинга; внешне это не сильно заметно, но тем не менее возможны непредусмотренные ошибки, надо еще потестить.
- добавлена поддержка NPC на уровне парсера.
- исправлены старые ошибки и добавлены новые.

133

Поддержка NPC

Команда для NPC имеет следующий формат:

npc_name, команда

или

команда, npc_name

где npc_name - обращение к NPC, отделенное запятой;
а команда - любая команда, воспринимаемая или не воспринимаемая парсером.

В роли NPC может выступать любой объект в игре.
Для проверки объекта вызывается метод _check_npc; далее возможно 4 варианта:
- метод _check_npc у объекта отсутствует или возвращает null или false - это не NPC и выполнять команды объект не может.
- метод _check_npc возвращает ошибку, например false, "объект мёртв" - это NPC, но в данный момент в "нерабочем" состоянии.
- метод _check_npc возвращает строку, например "не хочу, не буду!" - эта строка будет выведена от имени NPC, а команда будет проигнорирована.
- метод _check_npc возвращает true - это означает что NPC вас слышит и готов принять команду.

Далее, после того как мы определились с NPC, меняются речевые роли:
speaker = actor //действующее лицо превращается в говорящего, т.к. именно он обращается к NPC;
actor = NPC      //NPC становится действующим лицом, т.к. именно он будет выполнять команду;
addreesse = NPC//и он же становится адресатом, т.к. именно к нему обращена речь говорящего.

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

Далее команда парсится и выполняется как обычно, только вместо персонажа, управляемого игроком, команду выполняет NPC.

134

Анонс изменений в интерфейсе версии 2.a.5.1

В синтаксический анализ добавлена расшифровка ключей:
http://se.uploads.ru/t/6GkYy.png

Список свойств объекта теперь включает унаследованные свойства и методы:
http://s9.uploads.ru/t/b16Wt.png
(1) - собственные свойства и методы объекта;
(2) - свойства и методы, унаследованные от классов;
(3) - унаследованные свойства, рекомендованные к переопределению.

Для 3-го пункта в синтаксис введено новое ключевое слово - template (шаблон), сокращенно tmp, которое работает аналогично property, но рекомендует переопределение этого свойства у потомков.

135

Анонс изменений в словаре версии 2.a.5.1

Добавлены или изменены следующие действия:
- вооружаться, надевать, одевать, снимать, давать;
- атаковать/нападать;

Добавлены временные заглушки для действий:
- сделать, приготовить, пожарить, сварить, сшить, построить.

И также сделано много различных исправлений в коде стандартной библиотеки.

136

Очередная Версия 2.a.5.1

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

Поэтому просто пойдите, найдите в подземелье гоблина и УБЕЙТЕ его! если сможете...

137

Убил. Как демонстрация боевой системы, хорошо. Но с точки зрения мотивации это было совершенно бессмысленно. Гоблин не пытался нападать первым, не вредил мне в прошлом, и вообще для героя не было никакого смысла его убивать. По боёвке: гоблин вообще не мог пробить броню (я надел её перед боем) и не нанёс ни одного повреждения. А ещё я дал гоблину арбалет, но он не воспользовался им. После гибели гоблина нельзя осмотреть его инвентарь и забрать его вещи.

138

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

Убил. Как демонстрация боевой системы, хорошо. Но с точки зрения мотивации это было совершенно бессмысленно.

А мотивации нет ни у ГГ ни у NPC. Нужна система отношений, хотя бы простенькая.

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

А ещё я дал гоблину арбалет, но он не воспользовался им.

он спокойно положил его в инвентарь :D попробуй вооружить гоблина ;)

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

После гибели гоблина нельзя осмотреть его инвентарь и забрать его вещи.

Можно обыскать гоблина, но это действие всё еще не доделано...

139

Анонс версии 2.a.5.2 alpha

Как всегда проделано много важной и очень внутренней и внешне совершенно незаметной работы:
- полностью переделан обмен между IDE и движком, теперь в отладке платформа работает гораздо устойчивее, а то раньше на карте постоянно падала;
- полностью переделан подбор объектов для парсера; все декорации в локации теперь доступны без исключений;
- усовершенствован расчет значений признаков;
- и самое заметное - к играм теперь можно добавлять красивую титульную страничку.
- а самое главное - парсер научился работать со списками объектов; сейчас списки формируются по обобщающим словам - "возьми еду", "сними одежду" и т.п.
- также найдено и ликвидировано множество старых ошибок.

К релизу планируется:
- объединение в команде объектов союзами И и ИЛИ, которые также будут работать через и-списки и или-списки;
- расширить подбор аргументов к функциям, разрешив подбирать объекты по их признакам (сейчас только по типу и классу).

Дизклеймер: списки работаю пока очень плохо - там еще много работы, но это уже потом.

140

Очередная Версия 2.a.5.2

Основные изменения смотрите постом выше.
Демо-игра расширена, и помимо прочего более или менее заработало действие "обыскать".

А еще есть версия с музыкой: https://cloud.mail.ru/public/MKgU/xM3PRAa9X (24 мегабайта)

141

Анонс версии 2.a.5.3 alpha

За время, прошедшее от прошлого релиза, сделано много.  Но сказать, что же главное, пожалуй трудно.
Сделано много исправлений по всем фронтам, и все они примерно одинаковой важности.
Большая часть модификаций возникла в результате разбора логов с сайта. Это просто бесценный ресурс, как оказалось.
Игроки четко делятся на профессиональных парсерщиком и тех кто никогда в парсеры не играл.
Первые обычно пробуют на зуб стандартную библиотеку, почти сразу находят нереализованные действия и выходят. При этом практически не выходят из шаблона игры в стиле рТАДСа/рИнформа.
Вторые значительно интереснее, потому что непредсказуемы. Как правило не проходят дальше первой локации, но зато там успевают столько всего ввести, что обязательно удивляют и меня, и парсер ))) При этом каким-то чудом они находят общий язык с парсером, иногда очень извращенным способом. Это действительно удивительно. В грядущем релизе многое ориентированно именно на таких игроков, и именно они моя целевая аудитория.
Самое печальное в логах - это тотальная безграмотность. В русском языке слова имеют только один вариант правильного написания; а всё остальное не имеет права к существованию. А у таких игроков даже мысли не возникает, что его не поняли из-за его безграмотности, это же игра глупая а не я))

Теперь еще 1-2 недели на подчистку хвостов, а там и релиз.

142

Выпущена очередная версия 2.a.5.3 (альфа).

Большая часть доработок ориентированна на новичков незнакомых с парсером:
- существенно переделаны реакции на ошибки;
- добавлена реакция на ругань;
- добавлена реакция на вопросы;
- команда "помощь" добавлена в стандартную библиотеку;
- добавлена команда "выходы";
- добавлена команда "счет";
- налажена работа системных локаций "смерть" и "победа";
- в словарь добавлено много новых слов;
- переделан алгоритм js на стороне браузера.

а также много других исправлений и усовершенствований.

P.S. Версия с музыкой https://cloud.mail.ru/public/YqRX/Sgt4Tsqhy

P.P.S. Версия на сайте также обновлена.

143

парсер поддерживает сокращения как в МАДах? А то вводить слова целиком утомляет, дело усложняется ещё тем, что надо учитывать склонение. Например в демо игре про гоблина, «открыть витрина» не получиться, а надо именно витрину. А хотелось бы вообще написать «отк вит», и/или автодополнением по TAB.

Ещё вопрос: а это нормально что ТОМ такой задумчивый?

Отредактировано satorkain (2018-09-10 21:03:26)

144

Нет, сокращения не поддерживаются. Для их поддержки придётся переписать парсер с самого низа.
И если делать сокращения, то тогда будет интересно разрешать коллизии не в пользу игрока, а против него =) так как первые буквы могут относиться к самым различным объектам.

Сам ТОМ вполне шустрый, это веб-реализация работает с искусственными задержками, т.к. у некоторых медленный интернет и возможны накладки команд друг на друга. Хотя да, наверное можно было бы сделать более умно.