509 игр не запускались шесть лет. Играют 499

Играют 499 игр из 509 — 98,0% каталога

Аудит и восстановление Роль
2026 Год
WordPress, PHP 8.3, nginx, Ruffle, Playwright Стек

Задача

Портал на WordPress с 509 играми. Последняя публикация — февраль 2014, все игры не запускаются с декабря 2020, когда Flash отключили во всех браузерах. Рекламы на сайте не было ни строки, то есть остатки трафика не монетизировались вообще.

Вопрос стоял не «как переделать», а стоит ли вкладываться: если файлы за годы растерялись или не заработают в эмуляторе, затея бессмысленна.

Ограничение, определившее весь подход

Доступа к файловой системе сервера не было — только сайт по HTTP. Проверить предстояло 509 файлов на 886 МБ, и скачивать их все ради описи бессмысленно.

Решение нашлось в структуре: имя файла игры совпадало с идентификатором записи в системе управления сайтом. Этого хватило, чтобы составить полную опись через публичный интерфейс и частичные запросы, не загрузив ни одного файла целиком. Все 509 оказались на месте.

Главный риск и как он снимался

Больше половины игр были упакованы в рекламный модуль, сервис которого мёртв с 2014 года. Опасение: игра стартует, упирается в недоступный сервер и висит. Проверять это рассуждением бессмысленно — сделал пилот на 20 играх из обеих групп. Запустились 18, обращений к мёртвому домену не было ни одного.

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

Как росла точность оценки

  • 60–85% — прикидка по версии формата файла
  • 90% — пилот на 20 играх
  • 98,0% — полный прогон всех 509

Решение о вложениях принималось на последней цифре, а не на первой.

Что сделал

Подключил эмулятор отдельным плагином, а не правкой шаблона: в теме 2009 года часть значений зашита в код, и наследование потянуло бы за собой её ошибки. Добавил серверную часть — типы файлов, кэширование, современный протокол. Проверил на настоящей странице сайта, в браузере, на компьютере и на телефоне.

Затем прогнал весь каталог и разобрал каждый из десяти провалов поимённо. Ни один не связан с эмуляцией: у всех внешние зависимости на домены, которых больше не существует. Игр физически нет — и это важное различие, потому что оно означает, что доработка эмулятора ничего не даст.

Находка, которой не искали

Отдельным этапом скачал все 509 боевых страниц и сравнил с тем, что отдают главная и разделы. Выяснилось, что каждая страница игры приходит обрезанной: главная — 82 КБ целиком, страница игры обрывается на 14 КБ, без подвала, боковой колонки и закрывающих тегов. Обрыв идентичен на всех 509 страницах, значит это не таймаут и не память, а конкретная ветка кода. Шесть лет поисковый робот видел именно это.

На выборке такое не находится — только на полном проходе.

Срок: два рабочих дня. Собственный проект.

Похожая задача?

Опишите в двух предложениях — скажу, сколько это займёт и из чего складывается цена.