Skip to content

Космические рейнджеры: планетарные квесты ​

Все 149 оригинальных планетарных квестов из «Космических рейнджеров» (2003) и «Космических рейнджеров 2: Доминаторы» (2008), извлечённых из игровых файлов и перенесённых в браузер: текст, выбор, картинки сцен и музыка — как в оригинале. Интерактивная версия — компонент <SpaceRangers /> внизу страницы (движок: components/space_rangers/useSpaceRangersGame.ts).

Цель: пройти квесты и собрать «победные» концовки. Каждый квест — граф сцен: читай текст, выбирай одно из действий, игра ведёт в следующую сцену или в концовку (победа / нейтрально / провал).

Состав каталога ​

КатегорияКвестов
КР 126
КР 2 Доминаторы37
Перезагрузка21
HD Революция15
Фанатские15
English35

В меню — поиск по названию и описанию, фильтр по категории и сортировка по сложности.

Как это устроено ​

  • Вся логика работает на стороне клиента: без сервера.
  • Каталог (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.