Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

8    0    #1
03.05.2018 09:37

protoparser.js – простой веб-движок для парсерных игр

Protoparser.js – легковесный веб-движок (фреймворк) для интерактивных текстовых игр с вводом команд («парсеров»).

Приставка «прото» в названии движка, в переводе с древнегреческого, означает «первый». Интерфейс командной строки протопарсера оперирует всего двумя понятиями: ГЛАГОЛ и СУЩЕСТВИТЕЛЬНОЕ. В этом он похож на первые текстовые игры-приключения. Основная цель проекта, в первую очередь, – не достичь возможностей каких-то существующих парсерных движов, а создать инструмент, который бы ни в чем не  ограничивал автора, был максимально простым и открытым, при этом, оставался бы незаметным.

Основные особенности и возможности protoparser.js:

  • Protoparser.js платформонезависимый. Вы можете запускать и писать игры на любом устройстве, в котором есть браузер с поддержкой JavaScript. Не нужно компилировать исходники, устанавливать интерпретаторы, библиотеки, и пр. Все, что нужно, чтобы начать писать игру – любая программа в которой можно набрать и сохранить текст. Протопарсер работает даже на старых устройствах.


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


  • Законченную игру можно выложить на сайт, где она будет доступна онлайн. Вы также можете запускать ее локально.


  • В протопарсере есть система автотестирования, которая избавит вас от необходимости после каждой правки вручную вбивать команды и проверять как все работает. Кроме того, благодаря наличию во многих современных браузерах «режима разработчика» вы можете в реальном времени проверять и изменять состояние игровых объектов.


  • Если вы даже не собираетесь писать игры на протопарсере, вы, тем не менее, можете использовать его как инструмент для быстрого прототипирования.


  • Protoparser.js написан на чистом JavaScript'е, и, кроме эмулятора терминала terminal.js, не использует иных библиотек или зависимостей. Protoparser.js является одним из самых легковесных парсерных движков на сегодняшний день. Его размер составляет всего несколько десятков килобайт.


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


  • Поскольку protoparser.js является веб-приложением вы можете использовать все возможности HTML, CSS и JS в своих играх: вставлять картинки, музыку, звуки, видео; устанавливать стили оформления; подключать дополнительные js-библиотеки, и многое другое.


  • Protoparser.js выполняется полностью на стороне клиента, и там же хранит все данные.


  • Protoparser.js поддерживает мульти-сохранение и загрузку игр.


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


  • Protoparser.js позволяет автору создавать новые команды и менять параметры стандартных команд.


  • Protoparser.js распространяется на условиях лицензии MIT. Вы можете изменять и использовать его в своих проектах.


Protoparser.js можно скачать из репозитория на гитлабе. Там же есть руководство по созданию игр и демо-игра.

Для ознакомления с возможностями движка можно прямо сейчас поиграть в демонстрационную игру «Фантазия» онлайн. Кстати, игра участвует в Парсерфесте-2018 wink

Отредактировано johnbrown (27.09.2018 10:40)

Неактивен

7    0    #2
05.05.2018 13:18

Антон Ласточкин
Участник (+279, -9)
Зарегистрирован: 18.09.2015
Сообщений: 131

Re: protoparser.js – простой веб-движок для парсерных игр

По особенностям:
Protoparser.js платформонезависимый. Вы можете запускать и писать игры на любом устройстве, в котором есть браузер с поддержкой JavaScript. Не нужно компилировать исходники, устанавливать интерпретаторы, библиотеки, и пр. Все, что нужно, чтобы начать писать игру – любая программа в которой можно набрать и сохранить текст. Протопарсер работает даже на старых устройствах.
>Согласен. Только вот на небольшом экране смартфона, при включении поля ввода получается дикий масштаб и надо потом уменьшать экран, чтобы увидеть результат.

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

>Это прикольно

В протопарсере есть система автотестирования, которая избавит вас от необходимости после каждой правки вручную вбивать команды и проверять как все работает.
>Автотестирование это громко сказано. Скорее система проигрывания записанных команд, как в тадс и информ. Нашел случайно в исходниках как включить - в var game, свойство tests поставить true. Может описать эту процедуру в помощи + создание рядом скрипта команд?

Кроме того, благодаря наличию во многих современных браузерах «режима разработчика» вы можете в реальном времени проверять и изменять состояние игровых объектов.
Если вы даже не собираетесь писать игры на протопарсере, вы, тем не менее, можете использовать его как инструмент для быстрого прототипирования.
Protoparser.js написан на чистом JavaScript'е, и, кроме эмулятора терминала terminal.js, не использует иных библиотек или зависимостей.
Поскольку protoparser.js является веб-приложением вы можете использовать все возможности HTML, CSS и JS в своих играх: вставлять картинки, музыку, звуки, видео; устанавливать стили оформления; подключать дополнительные js-библиотеки, и многое другое.
Protoparser.js выполняется полностью на стороне клиента, и там же хранит все данные.

>Нормально

Protoparser.js поддерживает мульти-сохранение и загрузку игр.
>Как это сделать? Нет реакции на сохранить, загрузить игру.


Посмотрел код, это скорее библиотека для JS, позволяющая организовать парсерную игру, чем целая платформа. Потому что без знания javascript не получиться написать игру для авторами. Понятно, что по описанию она не стремится тягаться со "взрослыми" парсерными платформами, однако есть некий минимум для обработки - больше двух слов. Надо разрешить такие конструкции как "поговорить со стариком", "залезть на дерево". Ну и прописывать вручную склонения немного утомительно, может будут подвижки в этом направлении.
Что меня привлекает в платформе: клиентский код в браузере, легковесный.
Что меня отталкивает: лично я не стал бы пользоваться этой платформой. Дело даже не в том, что сырая. Не виден вектор развития. ТАДС и Информ давно покрыли текущий функционал и планируемый в части моделирования мира и обработки команд. Нужны годы, чтобы дойти до такого же уровня на JS, но тогда движок станет совсем не легковесным, а тяжёлым, уже не уверен что будет хорошо и быстро на клиенте работать, пропадёт первая цель. Мне было бы интересно воспользоваться каким-то спец-движком, например: парсерный движок для текстовых стратегий, тайм-менеджемтов и т.п. Он бы имел внутри себя модель предметной области и автор вводит только настройки модели и получает на выходе игру определённого жанра, потому что зачастую приходиться эту модель вводить с нуля.

Вцелом работа интересная, думаю, автор повысил свой левел в JS-пока писал её smile
PS: а куда можно отправить лог по игре фантазия?

Неактивен

3    0    #3
05.05.2018 17:35

Re: protoparser.js – простой веб-движок для парсерных игр

Привет Антон! Спасибо за интерес к проекту.

>Согласен. Только вот на небольшом экране смартфона, при включении поля ввода получается дикий масштаб и надо потом уменьшать экран, чтобы увидеть результат.

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

Автотестирование это громко сказано. Скорее система проигрывания записанных команд, как в тадс и информ. Нашел случайно в исходниках как включить - в var game, свойство tests поставить true. Может описать эту процедуру в помощи + создание рядом скрипта команд?

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

>Как это сделать? Нет реакции на сохранить, загрузить игру.

Реакция должна быть. Хотя бы "Ошибка при загрузке/сохранении". Пишите "сохранить названиефайласохранения", например: сохранить фантазия1

Посмотрел код, это скорее библиотека для JS, позволяющая организовать парсерную игру, чем целая платформа. Потому что без знания javascript не получиться написать игру для авторами

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

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

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

Что меня привлекает в платформе: клиентский код в браузере, легковесный.

< 30 КБ smile

PS: а куда можно отправить лог по игре фантазия?

Логи можно слать в личку. Кстати, спасибо.

Неактивен

2    0    #4
11.05.2018 21:04

Sonic
Автор ЯРИЛ (+81, -4)
Откуда: Россия, Краснодар
Зарегистрирован: 24.08.2001
Сообщений: 241
Вебсайт

---

Re: protoparser.js – простой веб-движок для парсерных игр

Движок интересный. Будут новые релизы - пиши сюда, что важное в них. smile И жду новых демо-игр. wink

PS. Может даже попробую свою игру написать.

Неактивен

2    0    #5
12.05.2018 08:33

Re: protoparser.js – простой веб-движок для парсерных игр

Sonic написал:

Движок интересный. Будут новые релизы - пиши сюда, что важное в них. smile И жду новых демо-игр. wink

PS. Может даже попробую свою игру написать.

Спасибо! smile Да, конечно, о релизах буду сообщать. Думаю, новые фичи буду просто добавлять в Фантазию.

Неактивен

3    0    #6
24.05.2018 11:58

Re: protoparser.js – простой веб-движок для парсерных игр

Версия 2(93)

  • для вывода текста можно использовать функцию p (t.print тоже работает).
  • для существующих команд добавлены синонимы: счёт, смотреть, см, восстановить.
  • команда "заново" работает, даже если localStorage недоступен.
  • новое свойство предметов - examined. Оно добавляется автоматически всем предметам, которые осматривал игрок. Содержит значение - «число осмотров» предмета.
  • добавлены новые стандартные команды (функции-обработчики): купить (buy), продать (sell), открутить (unscrew) и прикрутить (screw).
  • добавлен новый метод onLoad объекта events. Он позволяет писать инструкции, которые выполнятся сразу после начала игры.
  • если введено больше двух слов или пустая строка, движок сообщает об этом.
  • новое свойство noSaveLoad объекта game для установки запрета на сохранение и загрузку игры.
  • добавилась возможность переопределять стандартные сообщения системы. Новые свойства объекта game, содержащие стандартные сообщения системы: longCommandMsg, emptyCommandMsg, unknownCommandMsg, noScoreMsg, overburdenMsg, confirmRestartMsg, cancelRestartMsg, savedMsg, notSavedMsg, loadedMsg, notLoadedMsg, noThingMsg, winMsg, lostMsg, saveForbiddenMsg, loadForbiddenMsg.
  • внутриигровая справка стала информативнее.
  • в функциях lock, unlock исправлены офрографические ошибки при выводе.
  • исправлена ситуация, когда лог игры доходил до низа окна и строка ввода скрывалась наполовину.
  • исправлены синтаксические ошибки в игре и руководстве.
  • руководство автора обновлено.
  • демонстрационная игра «Фантазия» обновлена.

Полный список изменений

 спойлер…

Неактивен

2    0    #7
08.06.2018 10:56

Re: protoparser.js – простой веб-движок для парсерных игр

ВЕРСИЯ 3(104)

Так получилось, что третий релиз, в основном, посвящен работе над ошибками и улучшению внутренней логики программы. Из-за этого не получилось добавить те фичи, которые я изначально планировал. Зато появились фичи, которые я вообще не планировал smile Итак, что нового:

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

- теперь у автора появилась возможность установить символьное представления курсора, частоту и режим мигания;

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

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

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

В руководство добавились несколько новых разделов; информация в имеющихся обновлена, в соответствии с последними изменениями. Также обновлена игра «Фантазия». Все изменения можно протестировать прямо в ней.

Полный список изменений:

 спойлер…

Неактивен

2    0    #8
13.06.2018 07:23

Korwin
Гоблин, зеленый от недосыпа (+168, -14)
Откуда: Екатеринбург
Зарегистрирован: 27.11.2007
Сообщений: 783
Вебсайт

У трав, растущих на мягкой земле - слабые корни. (с)Korwin

Re: protoparser.js – простой веб-движок для парсерных игр

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

В самой игре нашел несколько опечаток:

 спойлер…

Неактивен

0    0    #9
13.06.2018 09:52

Re: protoparser.js – простой веб-движок для парсерных игр

стало играть проще

Это здорово, это то, чего я добивался smile

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

Михаил уже завел тикет.

 спойлер…

Неактивен

0    0    #10
26.07.2018 10:38

Re: protoparser.js – простой веб-движок для парсерных игр

ВЕРСИЯ 4(114)

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

  • Во-первых, и это главное изменение, по многочисленными просьбам, добавлена история команд. Команды, которые вводит пользователь теперь сохраняются (в т.ч. между игровыми сессиями). Их можно вызвать с помощью стрелок курсора (вверх-вниз). Выбранные команды, перед вводом, по-желанию, можно отредактировать. По-умолчанию, в истории хранится 10 команд, но автор может устанавливать любое значение, в т.ч. вообще отключить эту функцию (но зачем?). Не все команды попадают в историю. Например, если команда уже присутствует в ней или она некорректна, то такая команда не будет сохранена.
  • Появилась новая метакоманда 'повторить' ('п' или горячая клавиша '+'). Она автоматически выполняет последнюю сохраненную в истории команду.
  • Наконец-то появилась возможность задавать названия для локаций (свойство head объектов типа room). Почему эта функция не была реализована раньше для меня самого загадка smile
  • Теперь можно указать о своей игре чуть больше информации: лицензию (game.license), год публикации (game.year), возрастной рейтинг (game.ageRating).
  • В довесок, появилась возможность задавать начальное значение счета (game.score) и номера хода (game.turn).

Большинство изменений  можно посмотреть в демо-игре "Фантазия".

П.С. Руководство тоже обновлено smile

Полный список изменений

 спойлер…

Неактивен

0    0    #11
29.08.2018 10:38

Re: protoparser.js – простой веб-движок для парсерных игр

ВЕРСИЯ 5(127)

В пятую юбилейную версию protoparser.js вошло несколько очень важных нововведений.

  • Теперь у авторов появилась возможность создавать новые команды и менять параметры стандартных. Напомню, до сих пор можно было менять поведение команд через замену стандартной функции своей, либо заменой стандартного сообщения своим. Все это и сейчас доступно, но, главное, теперь можно создать абсолютно новые команды! Кроме того, можно изменять параметры вызова стандартных команд, например добавить или убрать глагол из списка синонимов, сделать существительное необязательным, даже удалить неугодную вам команду теперь очень просто;
  • Решена проблема с логом. До сих пор игровой лог можно было получить, сохранив страницу с игрой или выполнив хитрые манипуляции мышью. Теперь у игрока появилась специальная команда ЛОГ (она же клавиша F8). При вызове команды в браузере открывается отдельное окно с логом. Текст внутри окна можно выделять и копировать. Полный лог игры всегда доступен пользователю, даже если игровой экран будет очищен или пользователь восстановит сохраненную игру. Разумеется, возможность сохранить страницу с игрой осталась;
  • Добавлена команда advice (подсказка). С помощью нее автор может давать игроку подсказки и советы;
  • С помощью свойства game.helpMsg можно легко заменить стандартную справку на свою;
  • У объектов типа thing появилось новое свойство hiddenPossession. Если вы добавите объекту данное свойство он не будет отображаться в инвентаре. В остальном, его свойства не изменятся, т.е. его можно будет осмотреть, бросить, и т.д. И, да, предмет в инвентаре все еще будет занимать место (если установлено ограничение на количество предметов);
  • У объектов thing и player появилось свойство hidden. Теперь, по-умолчанию, все объекты выводятся в описании локации. Если вы не хотите, чтобы объект упоминался в локации просто добавьте ему это свойство;
  • Новое свойство sceneDesc у объектов thing и player. Задает описание объекта в локации. Если раньше, когда мы оставляли в комнате яблоко игра писала «Здесь есть: яблоко», то теперь, задав яблоку свойство sceneDesc мы можем сделать текст более литературным, например «Длинное-длинное описание локации. Ярко-красный плод под твоими ногами напоминает о том, что ты сегодня еще не завтракал». Кстати, строка «Здесь есть...» теперь выводится отдельным абзацем, что, на мой взгляд, гораздо удобнее;
  • Добавлены новые команды: думать, проснуться, перепрыгнуть, целовать; // ... и хорошо провести время smile
  • Исправлены баги в движке и тестовом скрипте игры «Фантазия»;
  • Обновлено руководство и демо-игра «Фантазия» в которой, как обычно, можно посмотреть новые фичи.

Полный список изменений

 спойлер…

Неактивен

4    0    #12
27.09.2018 10:56

Re: protoparser.js – простой веб-движок для парсерных игр

ВЕРСИЯ 6(145)

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

  • Появилась команда ЛОКАЦИИ. Это что-то вроде автоматического блокнота. В него записываются локации в которых побывал игрок и осмотренные предметы, которые в ней находились на момент последнего посещения. Вот как это работает:

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

    > о дверь
    Тяжелая дубовая дверь, кажется, помнит еще те времена, когда слово «рыцарь» было не просто красивым эпитетом.

    > вв
    После полумрака коридора яркий дневной свет на несколько секунд ослепляет вас. Открывшаяся вашему взору картина завораживает.

    Башня
    Открытая площадка башни позволяет видеть округу на много километров. В отдалении на севере блестит небольшое озеро и виднеется выход из парка. Вниз ведет лестница.

    Здесь есть: шляпа.

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

    > локации
    1. Длинный коридор
    Вы осмотрели: дверь.
    2. Башня
    Вы осмотрели: шляпу.

  • Движок теперь умеет самостоятельно определять род и число объекта. Алгоритм простой, но достаточно эффективный (логика описана в руководстве). В некоторых случаях требуется явно указать род / число, добавив объекту свойство gend. Кстати, хороший способ проверить как работает ваша игра — написать тест.


  • Игроку теперь не обязательно вводить существительное полностью:

    > о доспех
    Ничем не примечательный доспех.

    > о дос
    Ничем не примечательный доспех.

    > о до
    Ничем не примечательный доспех.

    И, даже так
    > о пех
    Ничем не примечательный доспех.

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



  • Появился простой механизм для вывода статичных сообщений, не требующий написания (переопределения) функции — т.н. «виртуальные функции». Достаточно лишь добавить в объект game свойство с именем требуемой функции, а в качестве значения ввести текст сообщения.

    Было

    Код:

    function sleep() {
        t.print('Вам не хочется спать.')  
    }

    Стало

    Код:

    var game = {
       // свойство 1
       sleep: 'Вам не хочется спать.'
       // свойство n
    }



  • Добавлены команды: «тереть» (функция rub), «отрезать» (функция cut), «привязать» (функция tie), «развязать» (функция untie), «зажечь» (функция burn), «поклониться» (функция bow).


  • В руководстве появился раздел «Сниппеты». В него предполагается добавлять небольшие примеры кода, которые можно использовать в своих играх. Тема этого выпуска «взять все» smile


  • Изменены дефолтные настройки стиля. Убран скроллбар и сделано выравнивание текста по ширине.

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

Полный список изменений

 спойлер…

Неактивен

5    0    #13
20.12.2018 18:42

Nikita
Модератор (+396, -130)
Зарегистрирован: 29.10.2016
Сообщений: 134

Re: protoparser.js – простой веб-движок для парсерных игр

Двухочковый "Плащ тьмы" на protoparser.js 6(145):

Есть два нетривиальных момента, обусловленных ограничениями платформы: реализация суррогатной тёмной комнаты (см. events.beforeAll и foyer.walk) и реализация суррогатной поверхности в пазле для получения первого очка (см. events.beforeAll и cloak.hang).

Неактивен

0    0    #14
21.12.2018 10:06

Re: protoparser.js – простой веб-движок для парсерных игр

Это шикарно! Целых две концовки, даже больше, чем в "Фантазии" smile

Огромное спасибо за работу! У самого были мысли реализовать эту игру, но как-то руки не дошли...

Никита, можно включить ваш скрипт в дистрибутив протопарсера?

Неактивен

0    0    #15
21.12.2018 14:26

ASBer
Модератор (+159, -20)
Откуда: Москва
Зарегистрирован: 19.07.2007
Сообщений: 816
Вебсайт

Эники-Бэники
ели вареники,
а Джоники-Мнемоники
ели психотроники.

Re: protoparser.js – простой веб-движок для парсерных игр

Плащ шикарен.
Вот еще бы хоть немного синонимов к глаголам; "вешать плащ" - это разве по-русски? smile)

Неактивен

2    0    #16
21.12.2018 15:40

Nikita
Модератор (+396, -130)
Зарегистрирован: 29.10.2016
Сообщений: 134

Re: protoparser.js – простой веб-движок для парсерных игр

johnbrown написал:

Никита, можно включить ваш скрипт в дистрибутив протопарсера?

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

ASBer написал:

Вот еще бы хоть немного синонимов к глаголам; "вешать плащ" - это разве по-русски? smile)

Вешать это всего лишь дублирующий синоним. Основным и наиболее естественным вариантом команды я считаю "повесить".

Код:

        gameCommands.hang = ['hang', ['повесить', 'вешать'], 1]

Вообще обычно в реализациях "Плаща тьмы" на различных платформах крючок является поверхностью, а "повесить" добавляется просто синонимом к команде "положить", но поскольку protoparser.js не имеет встроенной функциональности поверхностей и контейнеров, то здесь мы пишем всё с нуля, бросая плащ в локации, но посредством дополнительной обработки флага прямой видимости делаем вид, что он на крючке. В "Фантазии" такой же условный контейнер - это доспехи, из которых выпадает ключ, только там это разовая реакция, поэтому реализовать чуть проще, а с плащом пришлось сделать имитацию для многоразового использования.

Неактивен

1    0    #17
28.12.2018 22:46

Madzi
Участник (+5)
Зарегистрирован: 11.09.2017
Сообщений: 5

Re: protoparser.js – простой веб-движок для парсерных игр

@johnbrown, посмотри пожалуйста что получилось после того, как я убрал библиотеку

Код:

terminal.js

Неактивен

0    1    #18
29.12.2018 14:27

Re: protoparser.js – простой веб-движок для парсерных игр

Навскидку, что успел заметить:

- game.commandTemplate, game.cursor, game.fireCursorInterval, game.prompt, game.shouldBlinkCursor - интерфейс командной строки отсутствует. При надевании часов вместо > должно было появится текущее время. Хотелось бы сохранить возможность кастомизации командной строки.

- после загрузки страницы нет никакой игровой информации, кроме строки ввода. Она появляется только если обновить страницу

- по команде "лог" открывается пустая страница

- при переходе из коридора в башню и обратно не происходит смены темы

Тестировал на android 8.1.0, браузер Chrome 68.0.3440.91

Хотелось бы ещё попробовать запустить оффлайн. 6 версия у меня на телефоне не запустилась.

Пока то, что заметил. Буду тестировать дальше. К сожалению, пока только с телефона.

Отредактировано johnbrown (29.12.2018 14:45)

Неактивен

0    0    #19
29.12.2018 21:19

Madzi
Участник (+5)
Зарегистрирован: 11.09.2017
Сообщений: 5

Re: protoparser.js – простой веб-движок для парсерных игр

johnbrown написал:

Навскидку, что успел заметить:

- game.commandTemplate, game.cursor, game.fireCursorInterval, game.prompt, game.shouldBlinkCursor - интерфейс командной строки отсутствует. При надевании часов вместо > должно было появится текущее время. Хотелось бы сохранить возможность кастомизации командной строки.

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

johnbrown написал:

- после загрузки страницы нет никакой игровой информации, кроме строки ввода. Она появляется только если обновить страницу

Очевидно произошла ошибка. Что в консоле браузера?

johnbrown написал:

- по команде "лог" открывается пустая страница

Есть такое дело. Пока не разбирался. Возможно лог лучше выдавать в консоль?

johnbrown написал:

- при переходе из коридора в башню и обратно не происходит смены темы

Ну так теперь это не "терминальный" вариант. Изменение темы придётся переписать, с учётом того, что теперь тема состоит из большего числа элементов... шрифты, фоны, цвета (основной, вторичный, третичный и т.п.)...

johnbrown написал:

Тестировал на android 8.1.0, браузер Chrome 68.0.3440.91

Хотелось бы ещё попробовать запустить оффлайн. 6 версия у меня на телефоне не запустилась.

Пока то, что заметил. Буду тестировать дальше. К сожалению, пока только с телефона.

С телефонами пока есть некоторые проблемы.

Неактивен

0    0    #20
30.12.2018 07:58

Re: protoparser.js – простой веб-движок для парсерных игр

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

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

Очевидно произошла ошибка. Что в консоле браузера?

Не уверен, что в мобильном хроме есть режим разработчика. Приложил скрин.
Похоже, ошибка возникает только, если в настройке включена "мобильная версия".

Возможно лог лучше выдавать в консоль?

Потеряется форматирование. И потом это не очень user-friendly. Если только как дополнительный вариант.

Отредактировано johnbrown (30.12.2018 08:02)


Прикрепленные файлы:
Screenshot_2018-12-30-07-47-23-243_com.android.chrome.png, Размер: 28,469 байт, Скачано: 52

Неактивен

0    0    #21
30.12.2018 21:05

Madzi
Участник (+5)
Зарегистрирован: 11.09.2017
Сообщений: 5

Re: protoparser.js – простой веб-движок для парсерных игр

Только теперь это видимо будет задаваться через стили.

Как раз этого хотелось бы избежать. Я подумаю как лучше это сделать.

Неактивен

0    0    #22
07.01.2019 17:37

Re: protoparser.js – простой веб-движок для парсерных игр

Кстати, если terminal.js больше не планируется использовать, нужно добавить в движок обработчик  хоткеев.

Отредактировано johnbrown (07.01.2019 17:38)

Неактивен

0    1    #23
07.01.2019 19:06

Nikita
Модератор (+396, -130)
Зарегистрирован: 29.10.2016
Сообщений: 134

Re: protoparser.js – простой веб-движок для парсерных игр

Madzi написал:

@johnbrown, посмотри пожалуйста что получилось после того, как я убрал библиотеку

Код:

terminal.js

Не сочтите за злонамеренную девальвацию ценности вашего вклада, но может быть использовать менее хипстерский JS, а то поддержка старых браузеров отваливается, например, Internet Explorer 11, который не может отрисовать такую страницу? С terminal.js всё работало даже в IE. Всё-таки это олдскульная текстовая игра, а не продвинутый браузерный 3D shooter, чтобы отцеплять старые браузеры, особенно если их поддержка дорого не обходится. Даже поисковый робот Google до сих пор ходит с движком Chrome 41 внутри и как сможет увидеть под ним, так и сохраняет в индекс, так что не все уж такие прогрессивные в реальном мире. Кому, как не авторам текстовых игр, заботиться о ретроградах?

johnbrown написал:

Кстати, если terminal.js больше не планируется использовать, нужно добавить в движок обработчик  хоткеев.

Кстати, по поводу горячих клавиш... Решение по перехвату многих из них игрой представляется не самым удачным. Например, в Windows F6 - это перемещение по панелям интерфейса, образующим отдельные кластеры клавиатурной навигации, в том числе во всех основных браузерах, и с многими другими командами также. То есть ряд стандартных горячих клавиш protoparser.js сейчас блокирует целый блок нативных команд, являющихся конвенцией на уровне операционной системы. Например, можно было бы по умолчанию добавить ко всем командам модификатор Alt, чтобы избежать этих неприятных коллизий.

Отредактировано Nikita (07.01.2019 19:07)

Неактивен

0    1    #24
07.01.2019 20:31

Re: protoparser.js – простой веб-движок для парсерных игр

Не сочтите за злонамеренную девальвацию ценности вашего вклада, но может быть использовать менее хипстерский JS, а то поддержка старых браузеров отваливается, например, Internet Explorer 11, который не может отрисовать такую страницу?

Хорошее предложение. Когда я писал пп, то всегда тестировал его на своем старом HTC с андроидом 2.3.6. Там тоже было не все гладко, но хотя бы играть можно было. Согласен с тем, что нужно сохранить максимальную совместимость с большинством браузеров. Возможно, хорошей идеей будет прогнать код через какой-нибудь babel. С другой стороны,  тот код, который есть сейчас требует серьезного рефакторинга, а мои познания в современном js весьма скромны. Очень хорошо, что человек взялся за это дело.

Решение по перехвату многих из них игрой представляется не самым удачным

Интересная мысль, я об этом не задумывался. Наверное потому, что никогда не использую эти клавиши. А многие ли используют? А если у человека какой-нибудь Autohotkey запущен? Вариант с дополнительной клавишей мне не очень нравится, это неудобно.

Ещё хочу вот что добавить. Пп - такое же приложение, как Word или Excel, только ОС для него браузер. Ворд и Эксель не волнует, что там думает Windows или Mac по поводу F1. Почему с пп должно быть по-другому? Никто не запрещает пользователю переключиться в другую вкладку и сделать свои дела.

Отредактировано johnbrown (07.01.2019 21:03)

Неактивен

0    0    #25
07.01.2019 22:16

Nikita
Модератор (+396, -130)
Зарегистрирован: 29.10.2016
Сообщений: 134

Re: protoparser.js – простой веб-движок для парсерных игр

johnbrown написал:

Пп - такое же приложение, как Word или Excel, только ОС для него браузер. Ворд и Эксель не волнует, что там думает Windows или Mac по поводу F1. Почему с пп должно быть по-другому? Никто не запрещает пользователю переключиться в другую вкладку и сделать свои дела.

F1 в Windows - это резервированная команда для вызова справки именно приложения, так что с этим проблем особых как раз нет, если трактовать protoparser.js как приложение, но какой-нибудь F6 - это более тяжёлый случай. F6 - это один из нескольких распространённых способов попасть в адресную строку с клавиатуры во всех основных браузерах, а также перейти к избранному, закладкам и прочим общим элементам управления, важным на каждой вкладке. То есть клавиатурное управление protoparser.js блокирует ряд базовых пользовательских сценариев в браузере, например, когда я поиграл и теперь хочу пойти на ifiction.ru и написать комментарий, нажав F6 и введя адрес. По-моему это всё-таки слишком резко для web-приложения. Я понимаю позицию "лично я никогда этим не пользовался, но она не самая правильная в продуктовой разработке, там всё-таки надо соблюдать конвенции операционной системы, потому что кто-нибудь обязательно этим пользуется, если это стандартный способ управления. К тому же горячими клавишами в игре, в первую очередь, будут пользоваться как раз те, кто вообще по жизни привык с ними работать, так что этим пользователям с большой долей вероятности будут нужны и F6, и многое другое.

F3 занята функцией "Искать далее", F4 в ряде браузеров открывает адресную строку, F5 везде обновляет страницу, F6 в Windows переходит по панелям приложения, F7 в ряде браузеров отвечает за дополнительную клавиатурную навигацию, F8 в ряде браузеров управляет выделением, F10 в Windows является одним из способов для входа в строку меню приложения, F11 в ряде браузеров отвечает за включение и выключение полноэкранного режима, F12 в ряде браузеров открывает панель разработчика. Я бы не советовал ломать ничего из этого. Фактически безболезненно доступны только F2 и F9, ну и в какой-то мере F1, по крайней мере, я ничего такого там для браузеров не помню, так что в крайнем случае можно перейти на них, например, выбросив непомещающуюся команду "версия" с F2, для которой горячая клавиша всё равно не очень нужна.

Неактивен

0    0    #26
07.01.2019 22:40

Re: protoparser.js – простой веб-движок для парсерных игр

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

Например, есть у нас эмулятор какого-нибудь условного Спектрума на js. Естественно, там будут работать ф-клавиши. Не думаю, что кого-то это сильно смутит. В разных программах ф-клавиши, да и вообще горячие клавиши ведут себя по-разному. Есть какие-то негласные соглашения, что F1 это справка, а F5 обновить. Но, если человеку нужно попасть в режим разработчика, значит этот человек знает на что идёт ) и он и без F12 туда попадет.

Отредактировано johnbrown (07.01.2019 23:03)

Неактивен

0    0    #27
08.01.2019 07:35

Re: protoparser.js – простой веб-движок для парсерных игр

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

Вот, кстати, насчёт эмулятора. Интересно, а как у Инстеда в онлайне работают ф-клавиши? smile

P.S. ну, и для ясности: клавиши F3, F4, F5, F10, F11, F12 я не переопределял.

Отредактировано johnbrown (08.01.2019 08:02)

Неактивен

0    0    #28
08.01.2019 11:26

techniX
Участник (+92, -12)
Зарегистрирован: 17.11.2015
Сообщений: 27

Re: protoparser.js – простой веб-движок для парсерных игр

Онлайновый инстед перехватывает все F-клавиши, которые может (потому что хром, например, некоторые F-клавиши перехватывать не позволяет).
Но там по-другому сделать в принципе нельзя, т.к. instead-em - это скомпилированный в JS код десктопного инстеда, и он максимально повторяет функциональность десктопного приложения.

UPD: что касается горячих клавиш, я бы рекомендовал вместо F1-F12 использовать комбинации Alt+[что-то]. Типа Alt+L - просмотр логов.

Отредактировано techniX (08.01.2019 11:30)

Неактивен

0    0    #29
08.01.2019 17:24

Oreolek
Модератор (+419, -168)
Откуда: Кемерово
Зарегистрирован: 02.11.2009
Сообщений: 620
Вебсайт

Re: protoparser.js – простой веб-движок для парсерных игр

Есть 3 стандарта клавиатурных сокращений для веба (для ссылок, но здесь не важно), выбирайте по вкусу: http://htmlbook.ru/html/a/accesskey

Отредактировано Oreolek (08.01.2019 17:57)

Неактивен

1    0    #30
08.01.2019 18:07

Nikita
Модератор (+396, -130)
Зарегистрирован: 29.10.2016
Сообщений: 134

Re: protoparser.js – простой веб-движок для парсерных игр

Oreolek написал:

Есть 3 стандарта клавиатурных сокращений для веба (для ссылок, но здесь не важно), выбирайте по вкусу: http://htmlbook.ru/html/a/accesskey

Нет, в данном случае это не подходит. Атрибут accesskey должен быть привязан к какому-то существующему в DOM элементу страницы, так что для реализации горячей клавиши для вывода истории команд по простому нажатию использован быть не может. Для этого нужно где-то на странице делать ссылку или кнопку для целевого действия, которой и назначать accesskey. Кроме того, реализация горячих клавиш через accesskey имеет дополнительные недостатки: во-первых, в разных браузерах такие команды обрабатываются по-разному (где-то элемент сразу активируется, а где-то только фокусируется, так что активировать его надо будет дополнительным нажатием Enter или Space), а во-вторых, срабатывание accesskey зависит от раскладки, то есть accesskey="x" не сработает при активной русской раскладке, так что относительно удобно и предсказуемо для пользователя можно использовать только 10 цифр.

Хотя если вы имеете ввиду просто взять за ориентир набор модификаторов, то да. Но лично я бы предпочёл самый простой - только Alt, как уже здесь предлагалось.

Кстати, с F8 я вчера погорячился - в браузерах она также свободна, так что её в принципе можно занимать. Выделение с её помощью - это локальная история из области Microsoft Office и браузеры не затрагивает.

Отредактировано Nikita (08.01.2019 18:20)

Неактивен

1    0    #31
08.01.2019 19:36

Re: protoparser.js – простой веб-движок для парсерных игр

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

Неактивен

1    2    #32
08.02.2019 17:06

Vladimir
Участник (+155, -184)
Откуда: Владивосток
Зарегистрирован: 01.09.2012
Сообщений: 275
Вебсайт

Re: protoparser.js – простой веб-движок для парсерных игр

Поиграл в Плащ тьмы. Всё нормально, но есть неудобство: когда вводишь команды ВОЗЬМИ КРЮЧОК, ПОВЕСЬ ПЛАЩ, то парсер не понимает это, а жаль...

Неактивен

1    1    #33
08.02.2019 20:11

Re: protoparser.js – простой веб-движок для парсерных игр

Vladimir написал:

Поиграл в Плащ тьмы. Всё нормально, но есть неудобство: когда вводишь команды ВОЗЬМИ КРЮЧОК, ПОВЕСЬ ПЛАЩ, то парсер не понимает это, а жаль...

Работают команды

Код:

> взять крючок
> повесить плащ

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

Отредактировано johnbrown (08.02.2019 20:14)

Неактивен

0    0    #34
09.02.2019 16:25

Re: protoparser.js – простой веб-движок для парсерных игр

johnbrown написал:

Глаголы в повелительном наклонении я не включал в стандартную библиотеку и не планирую...

Добавил задачу. Спасибо за замечание.

Неактивен

3    0    #35
09.02.2019 20:33

Nikita
Модератор (+396, -130)
Зарегистрирован: 29.10.2016
Сообщений: 134

Re: protoparser.js – простой веб-движок для парсерных игр

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

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

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

Отредактировано Nikita (09.02.2019 20:37)

Неактивен

0    0    #36
09.02.2019 21:40

Re: protoparser.js – простой веб-движок для парсерных игр

Nikita написал:

Вообще повелительное наклонение имеет смысл, если платформа поддерживает функциональность управления персонажами,

В тадсе 2 это работает и для управления протагонистом, на других платформах не проверял.

Nikita написал:

В ситуации базового управления и типового повествования от второго лица мы командами в инфинитиве отвечаем на вопрос "что делать?", а не отдаём приказ персонажу, так как персонаж - это мы сами.

Я примерно также думал вначале, но, переспав с этим ночь, решил не загонять игрока в рамки "традиций". Ещё вопрос на сколько игрок готов ассоциировать себя с персонажем, но это тема отдельного топика.

Неактивен

1    1    #37
09.02.2019 22:15

Nikita
Модератор (+396, -130)
Зарегистрирован: 29.10.2016
Сообщений: 134

Re: protoparser.js – простой веб-движок для парсерных игр

johnbrown написал:

В тадсе 2 это работает и для управления протагонистом, на других платформах не проверял.

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

Неактивен

0    0    #38
23.03.2019 16:00

Михаил Соловьёв
Участник (+17)
Зарегистрирован: 23.03.2019
Сообщений: 18

Re: protoparser.js – простой веб-движок для парсерных игр

Поиграл в Фантазию, интересный подход. Сейчас полезу изучать код.
Скажите, а как относитесь к тому, что игрок в любой момент может заглянуть в исходный код JS-игры в браузере и найти все ему нужные подсказки в прохождении. Никак защищать / обфусцировать не пробовали? Теряется элемент хардкорности же.

Неактивен

1    0    #39
23.03.2019 17:56

Re: protoparser.js – простой веб-движок для парсерных игр

Парсеры сами по себе хардкор smile Мысли такие проскальзывали, но, практически, в эту сторону не копал. Я, вообще, за открытость кода. А, кроме того, шифрование, наверняка потребует подключения дополнительных библиотек, чего бы мне не хотелось. Мне нравится идея минималистичности пп. smile

Неактивен

1    0    #40
23.03.2019 18:28

gloomy
Модератор (+231, -56)
Зарегистрирован: 21.02.2009
Сообщений: 395

http://instead.syscall.ru

Re: protoparser.js – простой веб-движок для парсерных игр

Я по ошибке не туда написал сообщение. smile
Но протопарсер тоже рулит! Жду новых игр на нем.

Про инстед, так можно сказать уже. Есть чат боты, Борис Тимофеев пилит стендалон приложение на андроиде... Есть минимальная консольная версия.

Отредактировано gloomy (23.03.2019 18:29)

Неактивен

0    0    #41
23.03.2019 18:32

Re: protoparser.js – простой веб-движок для парсерных игр

gloomy написал:

Я по ошибке не туда написал сообщение. smile
Про инстед, так можно сказать уже. Есть чат боты, Борис Тимофеев пилит стендалон приложение на андроиде...

Ok, разобрался smile Нет, я имел в виду на js. Типа instead.js только без node. Но, это, наверное, вопрос к Technix.

МП для андроида это интересно. Дашь знать когда выйдет? smile

Отредактировано johnbrown (23.03.2019 18:34)

Неактивен

0    0    #42
23.03.2019 18:43

gloomy
Модератор (+231, -56)
Зарегистрирован: 21.02.2009
Сообщений: 395

http://instead.syscall.ru

Re: protoparser.js – простой веб-движок для парсерных игр

Уже оффтопим. smile.Да, по идее не проблема облегченный js сделать сугубо для мп. Ну нужен человек, кто этим занимается. Сам я такое не умею. Про андроид тут на форуме напишу в ветке с инстедом/мп.

Неактивен

Powered by PunBB
© copyright 2001–2019 iFiction.Ru