
2026/08/25 22:04
EVE Online が Python 3 に移行
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
CCP は「EVE Evolved」のイニシアチブを開始し、2003 年にスタックレス Python(2010 年に 2.5 から 2.7 へアップグレード)で起動し、2020 年の End-of-Life 以来 Python 2.7 に依存していた EVE Online を Python 3 に移行させる取り組みを開始します。この移行の目的は、コードベースの近代化、デバッグツールの向上、パフォーマンスの改善、および新機能の実現を図ることであり、初期段階ではプレイヤーには目立たない形で進められます。Python 3 の優れたテキスト/整数処理能力、ライブラリ間の一貫した動作、そして現代のツール링が移行を後押しする要因となっています。コードベースは約 240 万行(約 2 万ファイル)に及んでいます。両方のインタープリターに対するスキャンでは、ブロックされる問題として約 3,300 件のみが発見されました(その内訳:レガシーの print ステートメントが約 1,500 件、「long」リテラルが約 800 件、廃止された例外句が約 600 件、<> オペレータが 50 件)——これにより移行は概ね実現可能であることが示唆されています。約 2 万行は両バージョンでコンパイル可能ですが、意味論的な差異が存在します(例:整数除算が désormais フLOAT を返すなど)。本計画は 2 つの段階から構成され、第 1 段階ではランタイム動作を変更せずに機械的な構文の違いを削除し、今後の段階では Singularity(7 月末に実施された)でテストを行った後、Tranquility サーバーへの展開が行われます。EVE Frontier が 12 のマイナーバージョンおよび 23 年のコードの基盤の上に成功をおさめたことを踏まえ、この移行は数十年前の技術に対して安定した基盤を構築します。プレイヤーは通常のゲームプレイを継続するよう求められますが、Python 3 の意味論的な変化から生じるかもしれない予期せぬ結果については報告することを検討してください。
本文
EVE Online の Python 3 への大規模マイグレーションを開始しました
イニシアチブの概要
- 「EVE Evolved」イニシアチブの一環として、ゲームのコードベースにスポットライトが当てられています。
- EVE Online のゲートジャンプ、マーケット注文、艦隊戦闘などの全ての機能を支えているのは膨大な量の Python コードです。
- 20 年以上にわたり New Eden を支えてきたこのコードは、ついに Python 3 への移行を開始しました。
- この移行が目指す成功の定義はシンプルです:
- 日常使用においてはユーザーが変化を感じないこと。
- システムが時折、よりスムーズに動作すること。
古くさいコードベースからのスタート
- EVE は 2003 年にリリースされ以来、軽量な「タスケット」機能により単一サーバーで何千ものパイロットを管理することを可能にした Stackless Python に基づいて構築されました。
- Python バージョンの変更履歴:
- 2007 年:Stackless Python 2.5 へのアップグレード。
- 2010 年:Stackless Python 2.7 への移行。
- その後は長期間、バージョンを維持していましたが、Python 2.7 は 2020 年に公式な End of Life (EOL) を迎えました。
- カーボンエンジン(Carbon engine)の進化もありましたが、現在は時代の流れに合わせ、前進する時が来ました。
なぜ今、Python 3 のか?
Python 2 に留まることはゲームの足かせとなります。移行によるメリットは以下の通りです:
- パフォーマンスの向上
- 最近の Python 3 リリースは歴史的最大の速度向上を達成しました。
- 長期的にはより高速な EVE が実現可能になります(具体的な数値は今すぐ断言はできません)。
- エコシステムの進化
- モダンなライブラリ、デバッガー、プロファイラーはすべて Python 3 を前提に設計されています。
- Python 2 への維持コストが高まることで改善活動から維持活動へ時間を使いがちでしたが、移行によりツールが手元に戻り、問題発見・修正が加速します。
- 言語の簡素化
- テキスト処理が一貫した文字列タイプに統一され、ローカライゼーションの信頼性が向上します。
- 整数(Integer)はサイズ制限を持たず、必要に応じて自動的に増加します。
- クラスシステムが統合され、レガシーな挙動が排除されてオブジェクト指向コードが洗練されました。
重要: EVE のすべての文字、スキルポイント、資産、ISK は Python 2 コードで記述されています。これら全てが Python 3 で読み込まれた際にも 元通りの正確性を維持しなければなりません。
- EVE Frontier が既にカーボンエンジンと Python 3 を組み合わせ運用に成功しているため、この目標は達成可能です。
- Tranquility サーバーには 23 年間に蓄積された 240 万行ものコードと実際のプレイヤーデータがあります。これを 24 時間中 23 時間 45 分稼働させながら移行するのは大きな挑戦です。
マイグレーションの進め方:注意深く・段階的に
コードベースは約 240 万行あり、その多くは Python 3 が完全にパース(解析)できない古い形式(Python 2.3 や 2.5 時代)で記述されています。
第 1 段階:自動ツールの活用と構造的変更
- 目標: コードを依然として Python 2.7 で動作させつつ、Python 3 に対応する準備を整えること。
- ツール:
を使用。これは Python 標準の「2to3」に基づいたコード書き換えマシンです。Python-Future - 処理内容:
- 自動的なフィキサー(修正プログラム)を適用し、陳腐なパターンを現代形式へ書き換えます(両バージョンで動作する形式)。
- 検出された変更量: コンパイル自体の問題は比較的少なく、以下が主な対象でした。
ステートメント(約 1,500 行)print- 「long」型数値リテラル:
など(約 800 行)123L - 廃止された構文を持つ例外節(約 600 行)
- 古式ゆかしい不等価記法
(50 件)<>
今後の課題:振る舞いの差異の是正
パースは完了しましたが、コンパイルはできても動作が異なるコードが約 20,000 行存在します。これが真に困難な作業です。
- 具体例: 割算処理
- Python 2:
は1 / 2
(整数割り算)0 - Python 3:
は1 / 2
(浮動小数点割り算)0.5
- Python 2:
- EVE においてこれらの数値はダメージ量や ISK、座標等重要なデータとなります。
- 対応方針: 機械的な修正ではなく、人間の判断によりそれぞれの行について丁寧に修正を行います。
この移行がプレイヤーに意味すること
- 短期的には変化なし: 第 1 段階の変更は不可視化されており、プレイ体验に影響ありません。これは意図的な設計です。
- 長期的なメリット:
- 艦隊戦闘やマーケットハブを駆動する高速インタープリターの実現。
- バグ発見・修正の早期化を実現するモダンなツールの提供。
- 新開発者がより生産的に取り組めるコードベースによる新機能の迅速な実装。
- これは EVE Online の今後 20 年を見据えたインフラストラクチャー整備となります。
コミュニティへのご支援とお願い
- 「何も感じないこと」こそがゴールです。皆様のご協力が達成のために必要です。
- シンギュラリティでのテスト: 7 月末に最初のセットの変更点をプレイテストしてくださった皆様への感謝を表します。
- Tranquility サーバーでの運用:
- 通常通りプレイを続けてください。
- もし何か違和感を感じた場合は、必ず バグ報告を filing してご連絡ください。
- エージェントミッションのバックエンドも Python 3 対応に向けて準備を進めています。
次のステップ
- 機械的なごみ取りは比較的簡単な部分でした。**本当に困難な作業(行ごとに手動で確認・修正)**はまだ先に行われています。
- 今後の詳細テストについては、公式チャネルにて情報を注視してください。
- もし「EVE の Python 3 移行」のお手伝いをしてみたいというパートナーの方がいましたら、これがチャンスです!
whichever version of Python you find yourself on, fly safe.