
2026/09/19 0:01
スターズ4X用カスタムバーチャルマシン
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
「Stars!」という愛される 1995 年製の 4X 戦略ゲーム(当初は 16 ビット Windows 3.1 向けに設計)の保存において最も重要な進展は、"Stars!VM"というカスタムソリューションのリリースであり、このソフトウェアを現代システム上でネイティブに実行することを可能にします。アーキテクチャ互換性の問題とコピープロテクションの問題に対応するため、Stars!VM は 80286 エミュレーターを埋め込み、ポインタのマッピング、構造体の marshal、DOS インタラプトのサービス、OS レベルのブリッジを通じたセキュリティチェックの回避を含む Win16 から Win32 のブリッジを組み合わせています。このプロジェクトは GitHub 上で単一のスタンドアロン EXE ファイル(32 ビットビルドには SSE2 が要求)として配布しており、ネイティブなオーディオサポートと調整可能なスクリーンスケールを提供することで、複雑な仮想マシンや手動セットアップの必要をなくしています。
パフォーマンスはターゲットされた技術的最適化により大幅に向上しました:ホットなルーチン(例:L'Ecuyer MCG PRNG)を C として書き直し、新しい 80286 インストラクションに変換することで約 2 倍のスピードアップを実現し、I/O バッファリングにより Win32 の読み書きオーバーヘッドをターン生成時間の約 5% から改善し、レスポンシブネスを向上させました。エミュレータは Microsoft の
WaveMix.dll インターフェースをネイティブに実装することで外部 DLL に依存せず動作し、オリジナルのアートアセット(約 3MB)をカスタム LZ ベースのアルゴリズムで圧縮して 32 ビットバージョンのサイズを約 1.5MB に削減しています。エミュレーション精度を確保するために、実装は JIT ホスト実行との比較を通じてインストラクションを検証する差分ファッザーを使用しています。また、キー再使用によるコピープロテクションペナルティを防ぐために固定シリアルコードとハードウェアシグネチャの注入がデフォルトであり、具体的な例として CLONEMUM、CROSSNUT、EGGSWAIN、GHOSTKIN が挙げられます。監視は Model Context Protocol(MCP)を通じてサポートされています。このアプローチは、過時化されたプロセッサアーキテクチャ、暗号化の壁、バイナリ互換性に関する障壁を克服することで、陳腐化したソフトウェアの保存において価値ある先例を設定します。本文
1995 年名作「スターズ!」を現代 Windows で快適にプレイできる新プロジェクト『Stars!VM』発表
2026 年 9 月 17 日、nullprogram.com より、1995 年の 4X シミュレーション戦略ゲーム**「スターズ!(Stars!)」**を現代的な環境で遊ぶための新プロジェクトが発表されました。
📌 プロジェクト概要
- 対象ゲーム: 1995 年発売の 16 ビット版 Windows 3.1 アプリ。「Explore, Expand, Exploit, Exterminate」の 4X メカニクスを備える。
- 従来の課題:
- x64 Windows では 16 ビットアプリを実行できず、レトロなハードウェアやOTVDm、DOSBox(Wine と組み合わせる場合あり)が必要だった。
- 近年ではプレイが極めて困難になっていた。
- 「スターズ!VM」の仕組み:
- カスタム実装の80286 エミュレーターと、Win16 から Win32 をつなぐブリッジを内蔵。
- ネイティブな Win32 アプリとして動作するため、見た目や挙動は当初そのままに保たれる。
- 現代風ファイルダイアログの採用および4K スケーリングに対応し、快適性を向上。
- 実行ファイル内にオリジナルゲームを埋め込み、本物との区別がつかないレベルで忠実に再現。
💾 インストールと互換性
- 入手方法: GitHub の署名済みリリースから圧縮されたオリジナルゲームを単一 EXE ファイルでダウンロード(インストール不要)。
- 提供されるビルド:
- 32 ビット版(SSE2 サポート)
- 64 ビット版(特にメリットなしのため推奨されない)
- ※ほぼすべての環境(16 ビット Windows のみ除く)で動作。
- 利点:
- OS を介したブリッジにより、安定性向上、タスクバー連携、DOS インタープトの適切な処理を実現。
- オリジナルの 32 ビット版 Windows 起動よりも安定でセキュリティも高い。
🔌 実装の詳細・技術的アプローチ
エミュレーションと検証
- アーキテクチャ対応: x86 / x86-64 のみサポート。
- 浮動小数点演算: x87 ハードウェアを直接利用し、ソフトウェア側での処理を避けることでシンプル・高速・高精度を実現。
- 正しさの検証: 差分型ファッザ(Fuzzer)を使用。ランダムな命令生成とホスト上の JIT 実行結果を比較し、エラーを検出。
ブリッジと制御
- Win16→Win32 接続: 16 ビットハンドルをホストハンドルに対応付け、構造体レイアウト調整、データ転送を実装。
- MCP(Model Context Protocol)連携:
- AI エージェントが UI の DOM 構築過程を監視・操作可能。
- イベントポンプへの合成イベント注入で UI を制御。
- ゲストメモリの読み書きも可能。
- Opus 5AI が MCP を通じて完全なゲームプレイを達成し、新たな「スターズ!ベンチ」の基礎となった。
パフォーマンス最適化(ターン生成速度向上)
- ボトルネック特定: 「ターン生成」(計算処理)が主要な遅延要因。
- リバースエンジニアリング: Fable 5.1 を用いて熱い共通ルーチン(例:L'Ecuyer MCG ランダム数発生器)を特定し、C で再実装・マッピング。
- 結果: ターン生成速度がほぼ約 2 倍に向上。JIT の性能を手に入れつつ、複雑さを排除した実装。
I/O 処理の効率化
- オリジナルゲームは多数の小規模な読み書き命令を直接発行しており、Win32 で処理するとターン生成時間の**約 5%**を消費(現代ではさらに悪化のリスク)。
- 解決策: エミュレーターが I/O をバッファリングし、I/O 呼び出しの非同期化を実現。
サウンドとアセットの圧縮
- サウンド: WaveMix.dll のインターフェースをネイティブ実装し、DLL 読み込み不要化(リリース版にも埋め込み済み)。
- 容量削減:
- オリジナル EXE は未圧縮アセットで約3MB。
- 「スターズ!VM」では特別設計のLZ ベース圧縮アルゴリズムを採用。
- リリース版サイズは**元の約半分(約 1.5MB)**に抑えられ、オリジナルとの区別がつかない。
🔐 コピー保護とシリアルコード
- 従来の制限:
- 英数字 8 文字のシリアルコード入力必須(コピー保護)。
- チェック失敗時のペナルティ:
- 1 回目警告音
- 2 回目「簒奪者」として判定され、ゲームが損傷する(例: "あなたの国民があなたが簒奪者だと疑っている")。
- PBEM(ネット対戦)ではハードウェアシグネチャーが保存されるため、マシン違いで同じコードを使うと全員ペナルティ受ける。
- 新機能:
- 初回実行時に固定シリアルコードを自動注入。
- コマンドラインオプション
で無効化可能。--prompt-serial - VM は固定ハードウェアシグネチャーを発行するため、ユーザー全員が「同じマシン」に見える→キー再利用ペナルティなし。
- 趣味の逸脱: チェック突破により面白いコードを見つけた(例:
,CLONEMUM
,CROSSNUT
,EGGSWAIN
など)。GHOSTKIN
🚀 無限の可能性:フックとモディファイ
- ゲーム内に適切な場所にフックを追加すれば、簡単なモディファイが可能になる。
- ただし著者はエンジニア志向であり、むしろモッドラーではないという姿勢。
- プロジェクトは週末開発ながら驚異的な成果を収め、ゲームの再活性化だけでなく、**「自分の意に任せるプレイ体験」**を実現した。
💡 遊び方とリソース
- 検索キーワード:
または公式サイトでの詳細参照。stars 4x - 関連リソース:
- ゲーム内チュートリアル(包括的)
- ウィキ、公式戦略ガイド
- AutoHost(メールによるプレイサービス)
- ビルドツール: ソースコードから自分でビルドしたい方は**
**が最適(必要な環境全て含まれる)。w64devkit - ゲーム本体:
に含まれる。stars27jrc3.zip
「かつて興味を持たれた方もいらっしゃるかと思いますが、今まさにプレイする絶好の機会です。」
当時の検索エンジンが存在せず、より魅力的なタイトルになっただろうと著者が語るこの名作は、現代技術によって再び蘇り、さらに快適に体験できる時代に生まれ変わりました。