Не проходит и дня, чтобы какой-нибудь разработчик ретро-систем не совершил технического подвига, граничащего с невероятным. OpenStrike — очередной безумный проект, создающий доказательство концепции — переосмысление культовой Counter-Strike для Sony PlayStation Portable (PSP), 22-летней системы, которой, по идее, не место для запуска такой игры.
Порт был создан Ифэном Ваном (известным как doodlestrike), который, судя по всему, создал собственный 3D-движок на Rust под названием Pocket3D для этой задачи, а также движок JavaScript PocketJS для игровых правил и интерфейса. Несмотря на статус proof-of-concept, Ван сообщает, что матчи на уничтожение с ботами уже играбельны, хотя знаменитые этапы покупки оружия пока не работают. Полный набор из восьми оригинальных карт Counter-Strike уже протестирован, и заинтересованные моддеры смогут без труда создавать свои собственные.
Движку удаётся запускать игру с ботами при стабильных 60 FPS в родном разрешении PSP 480×272 — благодаря предварительной обработке графических ресурсов с прямым запеканием карт освещения в цвета вершин (вместо расчётов в реальном времени или при запуске). Интересно, что Ван сохранил старомодный метод рендеринга BSP (двоичное разбиение пространства) для отсечения невидимых областей, вместо использования более современного алгоритма, что подтверждает принцип «не чини то, что не сломано».
Игра также работает на PS Vita — системе с разрешением в 4 раза выше оригинального (960×544), с использованием нативной графики, без масштабирования как 3D-рендеринга, так и 2D-ресурсов. Проект можно запустить и как обычную десктопную игру, и, разумеется, он играбелен на популярном эмуляторе PPSSPP. Для запуска проекта потребуется собственная копия ресурсов Counter-Strike — аналогично использованию оригинальных WAD-файлов Doom в многочисленных портах.
Вся техническая архитектура проекта впечатляет: Ван вышел далеко за рамки задачи «сделать 3D-движок, загружающий карты». Оба движка — Pocket3D и PocketJS 2D — являются универсальными, а OpenStrike — лишь первый «продукт», использующий их. Код построен на архитектуре сервер/клиент/события, и обработка событий (например, стрельба) отделена от ядра рендеринга, что предотвращает неприятные просадки FPS. Игру можно тестировать офлайн, и почти всё легко поддаётся модификации. Если вам интересно, загляните в репозиторий OpenStrike.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Bruno Ferreira




