소니 PSP가 출시된 지 거의 20년이 지난 지금, 모더들이 노후한 휴대용 콘솔에 Counter-Strike 스타일의 1인칭 슈터를 밀어 넣었습니다. PocketJS로 알려진 팀은 폭탄 해체와 팀 전투의 핵심 루프를 2004년에 출시된 휴대용 콘솔로 가져오는 오픈 소스 프로젝트 OpenStrike를 공개했습니다. 2004년 12월 12일 일본에서 출시되어 2005년 전 세계에 출시된 오리지널 PlayStation Portable은 당시 4.3인치 와이드스크린 디스플레이와 맞춤형 333MHz MIPS 프로세서를 자랑하는 기술적 경이로움이었습니다. 하지만 듀얼 아날로그 스틱이 없어 전통적인 1인칭 슈터를 플레이하기가 악명 높게 어려웠고, 개발자들은 조준을 위해 하나뿐인 아날로그 노브와 페이스 버튼에 의존해야 했습니다.
OpenStrike는 Valve의 클래식 게임을 직접 이식한 것이 아닙니다. 대신 Rust 프로그래밍 언어로 작성된 맞춤형 엔진을 사용해 처음부터 새로 만든 독립형 재현물입니다. 이 엔진은 이동, 충돌 감지, 봇 행동, 무기, 렌더링을 처리합니다. 사용자 인터페이스와 점수 추적은 TypeScript와 JavaScript로 작성되어 QuickJS 엔진에서 실행됩니다. Rust를 선택한 것은 메모리 안전성과 성능으로 유명한 현대적인 시스템 언어이지만 레거시 콘솔의 홈브루에는 거의 사용되지 않기 때문에 주목할 만합니다. PocketJS가 Rust 코드를 PSP의 MIPS 아키텍처에서 실행되도록 컴파일하는 데 성공했다는 사실 자체가 맞춤형 툴체인과 링커 스크립트가 필요한 기술적 성과입니다.
결과물은 오리지널 PSP-1000 모델에서 안정적인 60프레임으로 실행됩니다. 12MB의 메모리만 사용하며 콘솔의 기본 해상도인 480 x 272 픽셀로 렌더링합니다. 모델은 단순화되었지만 무장한 캐릭터, 먼지 쌓인 맵, 게임 내 스코어보드 같은 시각적 단서는 Counter-Strike를 해본 사람이라면 누구나 즉시 익숙하게 느낄 것입니다. 모더들은 컴퓨터 제어 상대와 연습할 수 있는 봇 AI도 포함했습니다. 무기 목록은 제한적으로 보이지만 AK-47과 M4A1을 연상시키는 대체품이 포함되어 있으며 PSP의 제한된 버튼 레이아웃에 맞게 조정되었습니다.

22년 된 휴대용 콘솔에서 이룬 OpenStrike의 기술적 성과
이 성과는 향수만큼이나 최적화에 관한 것입니다. PSP는 당대의 획기적인 기기였음에도 현대 기준으로는 심각하게 성능이 부족합니다. CPU는 333MHz로 작동하고 GPU는 프로그래머블 셰이더가 없는 고정 기능 칩입니다. 여기서 1인칭 슈터를 부드럽게 실행하려면 신중한 메모리 관리와 축소된 에셋이 필요합니다. PocketJS는 폴리곤 수를 낮게 유지하고 간결한 Rust 백엔드에 의존하여 이를 해냈습니다. PSP의 총 RAM이 32MB(시스템 예약 후 게임에 사용 가능한 24MB)에 불과하다는 점을 고려하면 게임의 12MB 메모리 사용량은 인상적입니다. 이는 추가 맵이나 무기 모델 같은 향후 확장을 위한 여지를 남깁니다.
이 모드가 실제로 제공하는 것
모더들에 따르면 OpenStrike에는 봇 AI, 간단한 무기 시스템, 기본 점수 기능이 포함되어 버스나 대기실에서 캐주얼한 Counter-Strike 같은 경험을 재현하기에 충분합니다. 출시 내용에는 공식 온라인 멀티플레이어 지원이 언급되지 않았지만 프로젝트가 오픈 소스이므로 커뮤니티가 확장할 수 있습니다. 게임의 조작은 PSP에 맞게 조정되어 아날로그 스틱으로 이동하고 페이스 버튼으로 조준하며 어깨 버튼은 발사와 재장전에 매핑되었습니다. 이 조작 방식은 하드웨어 한계에도 불구하고 유능한 FPS 경험을 제공했던 Medal of Honor: Heroes나 SOCOM: U.S. Navy SEALs Fireteam Bravo 같은 다른 PSP 슈터와 유사합니다.
- Rust로 작성된 엔진: 이동, 충돌, 봇, 무기, 렌더링 처리
- QuickJS 엔진에서 TypeScript/JavaScript로 구축된 UI 및 점수 시스템
- 오리지널 PSP-1000 모델에서 12MB 메모리 사용으로 안정적인 60 FPS
- 480×272의 네이티브 해상도와 단순화되었지만 알아볼 수 있는 캐릭터 및 무기 모델
하드웨어를 넘어서 이것이 중요한 이유
OpenStrike는 콘솔 출시 후 거의 20년이 지난 지금도 홈브루 소프트웨어와 커스텀 펌웨어가 개발되는 등 PSP 모딩 신이 여전히 활발한 시기에 등장했습니다. 이 프로젝트는 이렇게 오랜 시간이 지난 후에도 개발자들이 그 한계를 밀어붙일 의지가 있음을 보여줍니다. 또한 PSP와 같이 제약이 많은 플랫폼에서도 게임 개발에 Rust를 사용하는 증가하는 추세를 부각시킵니다. 이 게임은 경쟁 플레이에 너무 단순하지만, 레트로 하드웨어에 적용된 현대 코딩 기법의 개념 증명 역할을 합니다. 프로젝트의 오픈 소스 특성은 야심 찬 개발자들이 코드를 연구하여 임베디드 시스템용 Rust 최적화 방법이나 기본 FPS 엔진을 처음부터 작성하는 방법을 이해할 수 있게 해줍니다.
| 특집 | 세부 정보 |
|---|---|
| 콘솔 | Sony PSP-1000 (2004) |
| FPS 목표 | 60 FPS (안정적) |
| 메모리 사용량 | 12 MB |
| 해상도 | 480×272 (네이티브) |
| 엔진 언어 | Rust |
| UI 언어 | TypeScript, JavaScript |
PocketJS는 전체 멀티플레이어 출시나 다른 레거시 콘솔로의 이식 계획을 발표하지 않았습니다. 소스 코드는 GitHub 저장소에서 확인할 수 있으며, 누구나 코드를 만지거나 자신의 PSP용으로 컴파일할 수 있습니다. 현재 OpenStrike는 기술적 호기심의 대상으로 남아 있습니다 — Counter-Strike가 Sony의 오래된 휴대용 콘솔에 공식적으로 출시되었다면 어땠을지 보여주는 한 조각입니다. 또한 모딩 커뮤니티가 잊힌 하드웨어에 계속 새로운 생명을 불어넣어, 많은 이들이 구식이라고 생각하는 것을 실험적인 게임 개발의 캔버스로 바꾸고 있다는 것을 상기시켜 줍니다.
댓글