Forum.iFiction.Ru

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

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

Вы не зашли.

5    0    #1
23.03.2019 12:28

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

Спящая красавица (+ новый движок Quazatron Adventure)

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

Вот, собственно, игра https://eidolonzx.github.io/quazatron-adventure/, а вот сайт движка https://quazatron.ru/.

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

P.S. Я не умею в графику, поэтому скрины из всем знакомой игры)
https://quazatron.ru/img/screenshot.jpg

Отредактировано Михаил Соловьёв (23.03.2019 12:30)

Неактивен

0    0    #2
23.03.2019 14:36

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

Re: Спящая красавица (+ новый движок Quazatron Adventure)

Спасибо за обратную связь!
Сокращения добавлю, да. Очевидное "о" пропустил.
Глаголы - в словаре два варианта, и "возьми", и "взять", можно играть так, как привычнее.
Насчёт словарей - делал всё в одном, чтобы не усложнять и так сложную работу будущему игрописателю. Но, согласен, имеет смысл разделить, подумаю над этим.
Документация будет, это следующий шаг.
Насчёт лицензии - пока выбрал некоммерческую, возможно, в будущем поменяю. Пока не совсем понимаю, насколько такой движок был бы восстребован, какое у него могло бы быть будущее, т.к. писал под себя, чтобы а) набить руку в ES6 и вообще в JS б) закрыть гештальт и сделать несколько ремейков игр, в которые играл на спектруме (ту же Rebel Planet)))

А что вы имеете в виду под предвычислениями?

Неактивен

2    0    #3
23.03.2019 15:20

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

Re: Спящая красавица (+ новый движок Quazatron Adventure)

johnbrown написал:

Если тебе интересно, можешь глянуть на мою разработку smile

Спасибо, посмотрю!

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

Сделать демку на Парсерфест - это будет отличной мотивацией сделать новую игру, а то желание есть, инструмент вот тоже есть smile

Неактивен

0    0    #4
23.03.2019 15:40

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

Re: Спящая красавица (+ новый движок Quazatron Adventure)

Enola написал:

Версия для телефонов будет?
И overflow: hidden; не надо для всей страницы делать (в игре).
Команды "взять всё" и "положить всё" - слово "всё" воспринимается, как отдельный предмет: "Вы не можете это взять." и "У меня нет этого."
Не понимает: "Осмотреться", "Ждать".
Отмена предыдущей команды не помешала бы.

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

Неактивен

0    0    #5
23.03.2019 15:41

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

Re: Спящая красавица (+ новый движок Quazatron Adventure)

И overflow: hidden; не надо для всей страницы делать (в игре).

Это не мой мотоцикл smile Спрошу у человека, который верстал

Неактивен

1    0    #6
26.03.2019 16:32

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

Re: Спящая красавица (+ новый движок Quazatron Adventure)

Спасибо за критику! Рад, что игра и движок оставили положительное впечатление.
Отвечу по пунктам:

1. С фокусом я пока проблему не решил, но знаю как, занёс к себе это в todo
2. Насчёт монеты - тут по-другому не знаю, как реализовать логику. У нас в игре две разных монеты, и если обе их идентифицировать как "монета", то возникнут казусы, например, когда обе монеты в локации, ты пишешь "возьми монету" - какую брать? я согласен, замороченно постоянно писать "серебряную монету", но пока решения не придумал. Есть идеи?
3. С монстрами вот какая штука. В оригинальной игре героя убивали за любой проступок - его и тролль убивал, и старушка, которая на самом деле оказывалась колдуньей, и в пропасть можно было свалиться, и так далее. Но в процессе написания игры я оставил на самый последний момент логику, связанную с отработкой проигрыша игрока и ВООБЩЕ убрал возможность умереть. Затем, когда эта отработка появилась, я повесил возможность умереть на ситуацию, когда игрок есть гнилую рыбу, ну, просто для демонстрации возможности движка. С тестером в итоге сошлись на том, что игра для новичков, должна быть простой и не убивать игрока.
Хотя, в принципе, более логичным было бы сделать смерти так, как это было в оригинальной игре, благо, перспектив умереть в игре много smile В ближайшее время, наверное, приближу чуть больше к оригиналу, и верну возможность умереть от старушки и тролля, а также убить принцессу и заполучить злую концовку.
4. Про сокращения знаю. Можете сориентировать, где вообще можно посмотреть/почитать про общепринятые сокращения? Я тут человек новый, не знаю, как принято в современных парсерных играх, так, "о" для "осмотреть" стало для меня открытием недавно))
5.

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

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

 спойлер…

Отредактировано Михаил Соловьёв (26.03.2019 16:32)

Неактивен

0    0    #7
27.03.2019 07:56

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

Re: Спящая красавица (+ новый движок Quazatron Adventure)

Вводим в игре:
> Положить ледяную лестницу на горячую печку
Получаем:
- Ок, положил

Обычно это не приводит к проблемам, но бывает такое, что пытаешься сделать что-то одно, а получается нечто неожиданное.

Да, теперь понял.
Ну это вопрос скорее к игре, чем к движку. Я решил не заморачиваться и упростить такие конструкции. На парсерфест игру сделаю поприличнее smile
Движок позволяет задать конструкцию типа "ПОЛОЖИТЬ ЛЕСТНИЦУ НА ПЕЧКУ", и это будет отличаться от "ПОЛОЖИТЬ ЛЕСТНИЦУ".
Собственно, в игре такая штука есть

 спойлер…

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

Неактивен

0    0    #8
27.03.2019 07:57

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

Re: Спящая красавица (+ новый движок Quazatron Adventure)

Модератору - может, имеет смысл эту тему в технический раздел про движки перенести? Или здесь она тоже уместна?

Неактивен

0    0    #9
27.03.2019 15:40

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

Re: Спящая красавица (+ новый движок Quazatron Adventure)

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

Неактивен

2    0    #10
30.03.2019 08:10

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

Re: Спящая красавица (+ новый движок Quazatron Adventure)

Спасибо! Использовал в игре сокращения. Также починил фокус (теперь при нажатии любой клавиши фокус возвращается в строку ввода), а также сделал кучу мелких фиксов.

В ближайших планах:
* Прокачать логику игры в сторону более реалистичных реакций окружения на действия игрока
* Добавить команды "ПОВТОР", "ОТМЕНА", "ЖДАТЬ"
* Сделать возможность возврата к предыдущим набранным командам
* Улучшить логику работы команд "ВЗЯТЬ" и "ПОЛОЖИТЬ" (спасибо qwerty за подсказку)
* Сделать более гибкой работу с прилагательными
* Сделать возможность отключения графической части (text only mode)
* Добавить в парсер возможность определения команды по первым её буквам

Отредактировано Михаил Соловьёв (30.03.2019 13:39)

Неактивен

0    0    #11
30.03.2019 13:37

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

Re: Спящая красавица (+ новый движок Quazatron Adventure)

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

Для начала я хочу сделать так, чтобы правильно работали команды "ВЗЯТЬ" и "ПОЛОЖИТЬ". Например, я думаю, что "ПОЛОЖИТЬ" и "БРОСИТЬ" должны обрабатываться одинаково по умолчанию (когда команда представляет собой глагол+объект). В сложных ситуациях (когда нужно положить что-то куда-то или бросить что-то в кого-то) нужен свой обработчик.
--
Если же рассмотреть пример с ослиными ушами, то как на них реагировать? "Я НЕ ПОНИМАЮ, ЧТО ТАКОЕ ОСЛИНЫЕ УШИ"? Или игра должна знать, что игрок захочет изучить свои уши? Можно мне нормальный пример реакции программы или, ещё лучше, пример существующей игры, в которой всё это реализовано?
Про лестницу с облаком - я писал выше, что сделал такие упрощения, как, например "ПРИСТАВЬ ЛЕСТНИЦУ" в локации с деревом только для упрощения задачи игроку. Мне ничего не стоит запрограммировать, чтобы команда "ПРИСТАВИТЬ ЛЕСТНИЦУ К ДЕРЕВУ" срабатывала, а "ПРИСТАВИТЬ ЛЕСТНИЦУ" или "ПРИСТАВИТЬ ЛЕСТНИЦУ К **ЧЕМУ-ТО ДРУГОМУ** выдавала другой ответ.
В конце концов, это демонстрационная игра, которая, кажется, уже хорошо выполняет свою задачу. Одно из её предназначений - получить критику и сделать так, как лучше smile
--
Стек команд я сделаю, занёс в TODO
--
Где-то здесь на форуме встречал мнение, что это хорошая правильная фича - распознавать команду по первым буквам. Хотя, применительно к пошаговой браузерной игре может это и лишнее, я ж не MUD делаю, где важно быстро вводить команды.

Неактивен

2    0    #12
04.04.2019 17:34

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

Re: Спящая красавица (+ новый движок Quazatron Adventure)

gloomy, спасибо за добрые слова!
---

Я тут поработал над игрой и движком и рад представить вашему вниманию бета-версию. Сейчас игру можно пройти, но глаз замыливается, и буду рад, если потестируете и покритикуете.
https://eidolonzx.github.io/quazatron-adventure/

Что нового в игре:
* Игра переделана в сторону усложнения. В частности, добавилась возможность умереть несколькими способами - а что вы хотели от места, кишащего монстрами?
* Добавлена злая альтернативная концовка
* Добавлены часы как демонстрация игрового счётчика

Что нового в движке:
* Парсер теперь сообщает игроку о том, что не понимает какого-либо введённого им слова. Чтобы парсер "понимал" (а, точнее, пропускал) предлоги и наречия, добавлен дополнительный список таких слов
* Добавлены команды "ВЗЯТЬ ВСЁ" и "ПОЛОЖИТЬ ВСЁ"
* Исправлена логика работы команд "ВЗЯТЬ", "ПОЛОЖИТЬ" и "ОСМОТРЕТЬ". Теперь движок различает, когда игрок хочет просто выбросить предмет, и когда игрок хочет положить предмет куда-то или бросить в кого-то
* Исправлена логика работы команды "ИДИ", теперь нормально работают команды типа "ИДИ НА СЕВЕР"
* Добавлено множество аббревиатур и сокращений к командам и объектам. Некоторые команды сокращены до одной буквы (и - инвентарь, б - брать(взять), п - положить, о - осмотреть, ж - ждать, г - говорить, поговорить, у - ударить, р - рубить)
* Добавлена возможность разработчику задавать команды, которые будут срабатывать в обход парсера (например, чтобы избежать ограничений движка - глагол должен быть первым в пользовательском вводе и так далее)
* Добавлена возможность разработчику задавать дефолтные описания к любым игровым объектам
* Добавлен дополнительный синтаксис, позволяющий более простым способом выделять цветом важные игровые объекты
* Оптимизированы свойства объектов в словарях, теперь ненужные разработчику свойства можно просто не прописывать
* Исправлена куча мелких багов, в частности, потеря фокуса командной строки (если потерялся, достаточно нажать любую кнопку)

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

После этого буду пилить новую игру на какой-нибудь из конкурсов.

Неактивен

2    0    #13
05.04.2019 07:48

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

Re: Спящая красавица (+ новый движок Quazatron Adventure)

johnbrown написал:

Движок не понимает сокращения ВВ для ВВЕРХ и ВН для ВНИЗ

А слона-то я и не заметил smile Добавил!

Да, двоеточие лишнее, убрал.

Насчёт тролля - да, она застревает у него в черепе, и он убегает вместе с ней.

Что вы подразумеваете под стандартной библиотекой? Чтобы в движке по-умолчанию были предусмотрены все распространённые команды, которые игра будет понимать, и неважно, играют ли они роль в игре или нет (на них будет давать дефолтный ответ)? Видел, что вы делали так в протопарсере, но детально не вникал.

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

Над улучшением ВЗЯТЬ ВСЁ / ПОЛОЖИТЬ ВСЁ поработаю, да, отличная идея.

Спасибо!

Неактивен

0    0    #14
05.04.2019 08:38

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

Re: Спящая красавица (+ новый движок Quazatron Adventure)

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

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

Неактивен

1    0    #15
05.04.2019 13:18

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

Re: Спящая красавица (+ новый движок Quazatron Adventure)

johnbrown написал:

По игре

 спойлер…

Рад, что понравилось!

 спойлер…

Отредактировано Михаил Соловьёв (05.04.2019 13:21)

Неактивен

2    0    #16
18.04.2019 17:10

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

Re: Спящая красавица (+ новый движок Quazatron Adventure)

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

Что сделано в последней версии:
* добавил стек команд и, соответственно, возможность откатывать игру назад на любое количество ходов вплоть до начала с помощью команды "ОТМЕНА" ("ОТМ");
* добавил возможность повторения последней команды командой "ПОВТОР" (сокращённо "П");
* добавил возможность отключения графической составляющей (для разработчика);
* добавил кучу стандартных глаголов и их форм (для простоты использования в дальнейших играх), теперь игра понимает 68 команд;
* добавил мультизапись и мультизагрузку, теперь можно сохраняться в разные ячейки (для этого после СОХР или ЗАГР указывается номер ячейки). Количество ячеек ограничено только размером хранилища браузера (которого должно хватить для сотен сохранений).
* добавил краткое руководство игрока, а также подробный (ну, я надеюсь на это) мануал для разработчика с пошаговой инструкцией на примере написания мини-игры.

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

Все ссылки добавил на сайт движка https://quazatron.ru/

Немного отдохну и буду делать новую, свою собственную игру. Всем, кто откликнулся, большое спасибо за советы и критику!

Отредактировано Михаил Соловьёв (18.04.2019 17:18)

Неактивен

0    0    #17
23.04.2019 06:37

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

Re: Спящая красавица (+ новый движок Quazatron Adventure)

Vladimir написал:

В приглашении написано "Что будете делать?". Логичная запись ввода для этого приглашения ВОЗЬМУ ЛЕСТНИЦУ. Но игра не понимает слово ВОЗЬМУ.
Нет слова ВЛЕЗТЬ в игре, только ЗАЛЕЗТЬ

Спасибо за замечания, поправлю!

Неактивен

Powered by PunBB
© copyright 2001–2019 iFiction.Ru