Appearance
Космические рейнджеры: планетарные квесты
Все 149 оригинальных планетарных квестов из «Космических рейнджеров» (2003) и «Космических рейнджеров 2: Доминаторы» (2008), извлечённых из игровых файлов и перенесённых в браузер: текст, выбор, картинки сцен и музыка — как в оригинале. Интерактивная версия — компонент
<SpaceRangers />внизу страницы (движок:components/space_rangers/useSpaceRangersGame.ts).
Цель: пройти квесты и собрать «победные» концовки. Каждый квест — граф сцен: читай текст, выбирай одно из действий, игра ведёт в следующую сцену или в концовку (победа / нейтрально / провал).
Состав каталога
| Категория | Квестов |
|---|---|
| КР 1 | 26 |
| КР 2 Доминаторы | 37 |
| Перезагрузка | 21 |
| HD Революция | 15 |
| Фанатские | 15 |
| English | 35 |
В меню — поиск по названию и описанию, фильтр по категории и сортировка по сложности.
Как это устроено
- Вся логика работает на стороне клиента: без сервера.
- Каталог (
data/quests/index.json) — лёгкий манифест; сам квест (data/quests/<id>.json) подгружается только когда ты жмёшь «Играть», а не все 149 разом. - Терминал помнит историю хода: прожитые сцены остаются в логе, выбранный вариант подсвечивается. Сцены с оригинальной графикой показывают картинку.
- Оригинальная музыка играет фоном, звуки (выстрелы, сигналы) — в сценах. Кнопка «♪» в шапке терминала включает/выключает звук.
- Выбор мышью или клавишами 1–9 (номер варианта).
- Прогресс (лучшая концовка по каждому квесту) — в
localStorageбраузера; ранги концовок: победа > нейтрально > провал, даунгрейд не происходит. - «Заново» — перезапуск квеста, «К каталогу» — выход в меню.
Структура данных
Весь контент хранится рядом с этой страницей, в папке игры:
text
space_rangers/
data/
quests/
index.json # манифест: id, file, title, origin, lang, difficulty, short
<id>.json # по одному файлу на квест (149 файлов)
media/
img/ # 521 картинка сцен (jpg)
track/ # 18 фоновых треков (mp3)
sound/ # 9 звуковых эффектов (mp3)
components/ # Vue-движок игры
tests/ # проверки целостности данныхФайл квеста:
json
{
"id": "gobsaur",
"title": "Gobsaur",
"origin": "КР 1",
"lang": "rus",
"difficulty": 10,
"start": "intro",
"nodes": {
"intro": {
"text": "Текст задания.",
"choices": [{ "label": "Начать квест", "next": "1" }]
},
"1": {
"text": "Текст сцены.",
"img": "gobsaur_03.jpg",
"track": "questsoundtrack.forquest_cosmic.mp3",
"sound": "shot0.mp3",
"choices": [
{ "label": "Идти по следам", "next": "3" },
{ "label": "Улетать!", "next": "2" }
]
},
"2": { "text": "Финал.", "end": "lose" }
}
}Примечание: в двух квестах — boat и megatest (авторский тестовый) — оригинальная концовка срабатывает по игровому времени и формулам, которые статический конвертер не эмулирует; эти квесты — замкнутые циклы без явной сцены-концовки (играются, просто не дают бейдж).
Правила сцены: поле text обязательно; далее именно одно из двух — choices (массив { "label", "next" }, минимум один вариант) или end ("win" | "lose" | "neutral"). Поля img / track / sound — опциональные имена файлов в data/media/…; картинка показывается в терминале, трек играет по кругу, звук — один раз.
Чтобы добавить свой квест: положи data/quests/my_quest.json в нужном формате и допиши строку { "id": "my_quest", "file": "my_quest.json", "title": "…", "origin": "Свои", "lang": "rus", "difficulty": 50, "short": "…" } в массив quests манифеста data/quests/index.json. Движок в режиме разработки проверяет граф: битый next, недостижимая сцена или сцена без выбора выдаст предупреждение в консоли; тесты в tests/ проверяют все файлы.
Источник данных
- Каталог и медиафайлы игры: веб-раздача проекта spacerangers.gitlab.io (оригинальные
.qm-квесты, изображения и музыка). - Формат квестов
.qmи парсер — проект roginvs/space-rangers-quest (лицензия MIT). Квесты сконвертированы в JSON скриптом: локация = сцена, переходы = варианты, текст подставлен по строкам квеста (планеты, звёзды, деньги; неопределённые значения — нейтральными).
Веб-компонент игры
Кнопка «⛶ Весь экран» в правом верхнем углу компонента разворачивает игру на весь экран пользователя (навигация сайта закрывается), чтобы интерфейс терминала было удобно использовать; выход — «✕ Свернуть» или клавиша Esc.