Спустя почти два десятилетия после выхода Sony PSP моддеры умудрились запихнуть шутер от первого лица в стиле Counter-Strike на устаревшую портативную консоль. Группа под названием PocketJS выпустила OpenStrike — проект с открытым исходным кодом, который переносит основную петлю геймплея с закладкой бомбы и командными боями на портативную консоль, вышедшую в 2004 году. Оригинальная PlayStation Portable, дебютировавшая в Японии 12 декабря 2004 года, а по всему миру — в 2005-м, на тот момент была техническим чудом: широкоформатный дисплей 4,3 дюйма и кастомный MIPS-процессор с частотой 333 МГц. Но отсутствие двух аналоговых стиков делало традиционные шутеры от первого лица на ней печально известными в плане управления, вынуждая разработчиков полагаться на единственный аналоговый стик и кнопки для прицеливания.

OpenStrike — не прямой порт классики Valve. Это самостоятельная реконструкция, написанная с нуля на кастомном движке на языке программирования Rust. Этот движок отвечает за перемещение, обнаружение коллизий, поведение ботов, оружие и рендеринг. Пользовательский интерфейс и подсчёт очков написаны на TypeScript и JavaScript и работают на движке QuickJS. Выбор Rust примечателен тем, что это современный системный язык, известный безопасностью памяти и производительностью, но он редко используется для homebrew на устаревших консолях. То, что PocketJS удалось скомпилировать код на Rust для работы на архитектуре MIPS консоли PSP, само по себе техническое достижение, требующее кастомной цепочки инструментов и скриптов компоновщика.

В результате игра работает на оригинальной модели PSP-1000 со стабильными 60 кадрами в секунду. Она использует всего 12 МБ памяти и рендерит в нативном разрешении консоли 480 x 272 пикселя. Модели упрощены, но визуальные подсказки — вооружённые персонажи, пыльные карты, внутриигровая таблица счёта — мгновенно знакомы любому, кто играл в Counter-Strike. Моддеры также добавили ИИ ботов, позволяя игрокам тренироваться против противников под управлением компьютера. Арсенал оружия, судя по всему, ограничен, но включает узнаваемые замены для AK-47 и M4A1, адаптированные под ограниченную раскладку кнопок PSP.

PocketJS CS2

Технический подвиг OpenStrike на 22-летней портативной консоли

Достижение здесь столько же об оптимизации, сколько о ностальгии. PSP, несмотря на то что была знаковым устройством своего времени, по современным меркам severely underpowered. Её процессор работает на частоте 333 МГц, а графический процессор — это чип с фиксированной функцией, лишённый программируемых шейдеров. Чтобы любой шутер от первого лица работал на ней плавно, требуется тщательное управление памятью и урезанные ассеты. PocketJS удалось этого добиться, сохранив низкое количество полигонов и положившись на лёгкий бэкенд на Rust. Объём памяти игры всего в 12 МБ впечатляет, учитывая, что у PSP всего 32 МБ оперативной памяти (из которых 24 МБ доступны для игр после системных резервов). Это оставляет место для будущих расширений, таких как дополнительные карты или модели оружия.

Что мод даёт на практике

По словам моддеров, OpenStrike включает ИИ ботов, простую систему оружия и базовый подсчёт очков — достаточно, чтобы воспроизвести лёгкий опыт в стиле Counter-Strike в автобусе или в зале ожидания. Официальная поддержка онлайн-мультиплеера в релизе не упоминается, но проект имеет открытый исходный код, а значит, сообщество может его расширить. Управление игры адаптировано под PSP: аналоговый стик для перемещения, кнопки для прицеливания, а плечевые кнопки назначены на огонь и перезарядку. Эта схема управления похожа на другие шутеры для PSP, такие как Medal of Honor: Heroes или SOCOM: U.S. Navy SEALs Fireteam Bravo, которым удавалось обеспечивать достойный опыт FPS, несмотря на ограничения аппаратного обеспечения.

  • Движок написан на Rust: отвечает за перемещение, коллизии, ботов, оружие и рендеринг
  • UI и система подсчёта очков построены на TypeScript/JavaScript на движке QuickJS
  • Стабильные 60 FPS на оригинальной модели PSP-1000 при использовании 12 МБ памяти
  • Нативное разрешение 480×272 с упрощёнными, но узнаваемыми моделями персонажей и оружия

Почему это важно за пределами железа

OpenStrike выходит в момент, когда сцена моддинга PSP остаётся активной: homebrew-софт и кастомные прошивки всё ещё разрабатываются почти два десятилетия после релиза консоли. Проект показывает, что даже спустя столько лет разработчики готовы раздвигать её пределы. Он также подчёркивает растущий тренд на использование Rust в геймдеве — даже для таких ограниченных платформ, как PSP. Хотя игра слишком проста для соревновательного уровня, она служит доказательством концепции применения современных техник программирования к ретро-железу. Открытый исходный код проекта означает, что начинающие разработчики могут изучить его, чтобы понять, как оптимизировать Rust для встраиваемых систем или как написать базовый движок FPS с нуля.

Особенность Детали
Консоль Sony PSP-1000 (2004)
Целевой FPS 60 FPS (стабильно)
Использование памяти 12 МБ
Разрешение 480×272 (нативное)
Язык движка Rust
Языки интерфейса TypeScript, JavaScript

PocketJS не объявляла о планах выпустить полноценный мультиплеер или портировать проект на другие старые консоли. Исходный код доступен в их репозитории на GitHub для всех, кто хочет покопаться в нём или скомпилировать его для своей PSP. Пока же OpenStrike остаётся технической диковинкой — взглядом на то, как могла бы выглядеть Counter-Strike, если бы когда-нибудь официально вышла на старой портативной консоли Sony. Это также напоминание о том, что сообщество моддеров продолжает вдохать новую жизнь в забытое железо, превращая то, что многие считают устаревшим, в холст для экспериментальной разработки игр.