XOPS 0.975t を完全再現するゲームの開発に成功しました

これはXOPSのファンにより再現されたプロジェクトであり、公式のものではありません。

SATチームは数ヶ月にわたる本家XOPSのプログラム解析の結果、XOPS 0.975t を完全に再現するゲームの開発に成功しました。

注: 本件は[-_-;](みかん)氏の「OpenXOPS」と関係はなく、OpenXOPSのコードも含んでいません。

(上記動画では本家XOPSと異なることをわかりやすくするため、追加で実装したデバッグ情報の描画機能を利用しています。)

今後の計画について

今回XOPSのプログラム解析により得られたソースコードは非公開です。ただ、このコードを参考に一からコードを書き直し、オープンソース版XOPSを開発・公開します。なお、本家XOPS開発者のnine-two氏よりXOPSを再現するプロジェクトの開発とそれに伴うプログラム解析について了承いただいております。

スケジュール(目標)

  1. 2022年内-2023年初頭: C++ & DirectX 9版 XOPSオフライン
    (この時代にあえてDirectX 9を採用する理由は、本家XOPSが使用している固定機能パイプラインが使える最後のDirectXのバージョンのためです。)
  2. 2023年内: ゲームエンジン使用 XOPSオフライン
    (ゲームエンジンに移植する理由は、改造にかかるコスト(技術力・時間)を削減させるためです。)
  3. 2023年~: ゲームエンジン版XOPSにオンライン機能(チームデスマッチ、CO-OP)を追加
    (XOPSOLT 1.9f2 を解析することはせずに独自で対戦機能を追加することを検討中です。)

余裕があればオープンソース版のブロック・ポイントエディタも開発したいと考えています。

補足事項

実際は「完全再現」というのはやや誇張気味で、現時点でいくつかの差異があります。

  • 謎人間などの未定義動作を利用したミッションの再現に失敗します。オープンソース版では可能な限り再現を試みる予定です。
  • 解析のミスに起因する本家の挙動との差異が存在する可能性があります。
  • 浮動小数点数の扱いの違いで本家とわずかに誤差が発生しますが、コンパイラの最適化にも起因する上、誤差はプレイヤーが認識することができないレベルのため修正しません。

未知の挙動について

解析の過程で、未知と思われる興味深い発見がありました。

  • pd1から読み込めるポイント数は最大256個
    SATメンバーのyosiがすでに公表しています。
  • ゾンビの誘導性能が4種類すべて微妙に異なる
  • ブロックの着弾音はhit1.wavが流れる可能性が2/3、hit3.wavは1/3