ガジェット

PSPでCounter-Strikeクローンが60fps、Rust製エンジンで実現

モッダーが22年前のPSP向けにCounter-Strikeクローン「OpenStrike」を開発。独自のRust製3DエンジンPocket3Dにより480×272解像度で60fpsを達成。PS Vitaでも動作可能。

6分で読める SINGULISM 編集チームが確認・編集

PSPでCounter-Strikeクローンが60fps、Rust製エンジンで実現
Photo by EasyLife Designs on Unsplash

Tom’s HardwareのBruno Ferreiraの報道によれば、モッダーのYifeng Wang(doodlestrike)が、22年前に発売されたSony PlayStation Portable(PSP)向けにCounter-Strikeのクローン「OpenStrike」を開発し、60fpsでの動作を実現した。このプロジェクトは単なる移植ではなく、独自のRustベース3Dエンジン「Pocket3D」とJavaScriptエンジン「PocketJS」を新規に作成するという、技術的に野心的な取り組みである。

プロジェクトの概要

OpenStrikeは、Counter-StrikeのコンセプトをPSP上で再現する概念実証(Proof-of-Concept)プロジェクトだ。Wangは自身のブログとGitHubリポジトリで詳細を公開しており、現在はボットとの対戦モードがプレイ可能な状態にある。武器購入ステージなど一部機能は未実装だが、オリジナルの8つのマップ全てが動作確認済みであり、コミュニティによるカスタムマップ作成も容易と見られる。

このエンジンの特筆すべき点は、PSPの限られたリソース(RAM約12MB)で60fpsを維持しながら、480x272のネイティブ解像度で動作することだ。グラフィックアセットは事前処理によりライトマップを頂点カラーに直接ベイクする方式を採用し、リアルタイム計算を排除している。また、レンダリングには旧来のBSP(Binary Space Partitioning)方式を用い、現代的なアルゴリズムではなく「壊れていないものは直さない」アプローチを取っている。

技術アーキテクチャ

Wangは「単にマップを読み込む3Dエンジン」という範囲を超え、汎用的なフレームワークを構築した。Pocket3Dは3Dレンダリングを担当し、PocketJSはゲームルールとUIを処理する2Dエンジンとして機能する。両エンジンはOpenStrikeのためだけに作られたものではなく、今後の別プロジェクトでも利用可能な設計だ。

アーキテクチャはサーバー/クライアント/イベント方式を採用しており、射撃などのイベント処理はレンダリングコアから分離されている。この設計により、FPS低下の主要原因である処理のボトルネックを防止している。ゲームはオフラインでもテスト可能で、JavaScript APIによる完全なモッド対応がなされている。

対応プラットフォーム

OpenStrikeはPSP本体だけでなく、PS Vitaでも動作する。PS VitaではPSPの4倍にあたる960x544の実効解像度で表示され、3Dレンダリングと2Dアセットの両方でアップスケーリングなしのネイティブグラフィックスが利用可能だ。また、デスクトップPC上でも動作し、人気のPPSSPPエミュレータでもプレイできる。

プロジェクトを動作させるには、ユーザー自身がCounter-Strikeのアセットデータを用意する必要がある。これはDoomのWADファイルをポートで使用するのと同様の方法だ。

編集部の見解

短期的に見れば、このプロジェクトはレトロゲームコミュニティに新たな興奮をもたらすだろう。PSPのハードウェア能力を限界まで引き出す試みは、モッディングシーンにおける技術的リファレンスとして機能する。特にRustのようなモダンな言語でレガシーシステム向けエンジンをゼロから構築する手法は、組み込み開発の文脈でも参考になる可能性がある。

長期的には、このようなクリーンルーム実装のアプローチがゲーム保存の新たな標準になり得る。ただし、オリジナルアセットの入手が必要な点や、未実装機能の拡充には開発者の継続的なコミットメントが不可欠だ。エンジン自体の汎用性を考えると、OpenStrike以外のゲームへの応用も期待されるが、著作権問題が常に付きまとう。

編集部としては、こうした個人開発者の成果が商業的な圧力に晒されずに公開され続ける環境の重要性を改めて認識する。同時に、PSPのようなレガシープラットフォームに新たな命を吹き込む試みが、ゲーム史の理解や技術教育にどのような示唆を与えるかが問われている。

参考

よくある質問

OpenStrikeを動作させるには何が必要か?
PSP本体またはPS Vita、PPSSPPエミュレータ、そして独自に入手したCounter-Strikeのアセットデータが必要。リポジトリからソースコードをダウンロードし、アセットを適切なフォルダに設定することで起動できる。
武器購入機能はいつ実装されるのか?
現時点では未実装。開発者のWangは概念実証段階であることを明言しており、今後のアップデートで追加される可能性はあるが、具体的なロードマップは公開されていない。
このエンジンは他のゲームにも流用可能か?
可能。Pocket3DとPocketJSは汎用的なフレームワークとして設計されており、同じアーキテクチャ上で別のFPSゲームを構築できる。JavaScript APIによるモッド対応も実装済みだ。
出典: Tom's Hardware

コメント

← トップへ戻る