Roginvs

Пикабушник
Дата рождения: 18 июня 1987
поставил 1702 плюса и 192 минуса
Награды:
5 лет на Пикабу
766 рейтинг 6 подписчиков 3 подписки 1 пост 1 в горячем

Квесты из Космических Рейнджеров в браузере

Квесты из Космических Рейнджеров в браузере Космические рейнджеры, Программное обеспечение, Javascript, Веб-разработка

Представляю вам веб плеер квестов из игры Космические Ренджеры

https://vasiliy0.gitlab.io


Плеер написан на TypeScript, работает целиком в браузере, не требует бэкэнда. Содержит квесты из TGE (КР1) и КР2.


Началось всё с того, что я поставил Space Rangers Quests на свой телефон. Мелкий текст с пятидюймового экрана я еле разглядел, увеличил шрифт, и всё равно еле разглядел. Это и натолкнуло меня на мысли, что мобильная версия квестов должна быть какой-то другой. Опорной точкой для меня стал файл lastqm.txt с примерным описанием .qm формата, и этого было достаточно, чтобы начать работу над собственным плеером. Как это обычно бывает в хобби проектах, я не ставил перед собой каких-то больших целей, делал просто потому, что было интересно делать. Где-то через пару недель был готов прототип, стало ясно, что это может работать, и я неспешно продолжил разработку в свободное от работы время. Т.к. сам lastqm.txt файл не был полностью корректным, то далее основным источником информации для меня стал инструмент разработки квестов TGE. Много времени ушло (собственно, как и в любом реверс-инжиниринге) на осознание того, как же оно всё-таки работает и попытки сделать код, который бы работал так же. Очень сильно помогли автотесты для плеера - можно было смелее менять его код, не так сильно переживая что где-то что-то отломается из того что уже работает.


Когда первая веб-версия была готова, я вдруг обнаружил, что последние версии КР2 используют .qmm формат, описание которого нигде не было. Поначалу пришлось доставать .qm из промежуточной версии КР2 где еще квесты были в .qm, и только потом, через некоторое время, я осилил посмотреть, что же там такое в .qmm. Выяснилось, что .qmm даже в чем-то проще, потому как там отсутствуют неясные значения. Так что сейчас плеер может играть и .qm, и .qmm.


На сайте можно нажать "install", и тогда будет установлен serviceWorker с оффлайн версией кода сайта и квестами. Т.е. после этого можно заходить на сайт без интернета (правда, без интернета не будет картинок и музыки - мобильники не очень много места позволяют сохранить). Можно добавить сайт на главный экран, и тогда он будет выглядеть как приложение (указания браузеру в manifest.json). Несмотря на то, что сейчас сайты в интернете в наглую ставят свои serviceWorker-ы, я всё-таки считаю что это должно происходить только по запросу пользователя. Возможно что в будущем браузеры будут запрашивать разрешения у пользователя при попытке сайта установиться, так же как это сейчас происходит, к примеру, с запросом медиа или уведомлений.


Основная ветка кода находится на https://github.com/roginvs/space-rangers-quest , буду признателен за issues (если таковые есть), stars, pull requests. Сама веб-версия хостится на gitlab pages в том числе потому что у GitLab-а удобный continues integration - он сам собирает и тестит проект после каждого push-а. В планах надо бы срефакторить код регистрации serviceWorker-а, переделать логику меню игры, возможно, добавить React Hash Router, может быть, руки дойдут как-нибудь до всего этого. Думаю что, может быть, даже и осилю сделать веб-редактор .qmm файлов, по-крайней мере не вижу сейчас с этим сложностей, кроме как отсутствие большого количества свободного времени.

Показать полностью
Отличная работа, все прочитано!